Python +;的操作数类型不受支持:';浮动';和';列表';

Python +;的操作数类型不受支持:';浮动';和';列表';,python,pygame,Python,Pygame,我最近开始使用pygame,并尝试制作一个蛇游戏,在其中我发现了这个错误 这是我的密码 import pygame import random import time pygame.init() print("SELECT LEVEL:\n" "EASY\n" "MEDIUM\n" "HARD\n" "DIFFICULT\n") level=in

我最近开始使用pygame,并尝试制作一个蛇游戏,在其中我发现了这个错误

这是我的密码

import pygame
import random
import time

pygame.init()

print("SELECT LEVEL:\n"
      "EASY\n"
      "MEDIUM\n"
      "HARD\n"
      "DIFFICULT\n")
level=input()
if level =="easy" or "EASY":
    fps=35
elif level =="medium" or "MEDIUM":
    fps=50
elif level =="hard" or "HARD":
    fps=80
elif level =="difficult" or "DIFFICULT":
    fps=110

win=pygame.display.set_mode((600,600))
pygame.display.set_caption("SNAKE GAME")
clock=pygame.time.Clock()
x=10
y=10
dim=10
vel=5
snake_pos=[]

def snake(dim,snake_pos):
    for x in snake_pos:
        pygame.draw.rect(win, (255, 0, 0), [x[0], x[1], dim, dim])
def snakegame():
    gameover=False
    gameend=False

    x1=600/2
    y1=600/2

    x1_change=0
    y1_change=0

    snakelist=[]
    length_of_snake=1

    foodx=round(random.randrange(0,600-dim)/10.0)*10.0
    foody=round(random.randrange(0,600-dim)/10.0)*10.0


    while not gameover:
        while gameend==True:
            score=length_of_snake-1
            score_font=pygame.font.SysFont("comimsansms",45)
            value=score_font.render("Your score is:"+str(score),True,(0,0,255))
            win.blit(value,[600/3,600/5])
            pygame.display.update()

            for event in pygame.event.get():
                if event.type==pygame.QUIT:
                    gameend=False
                    gameover=True

        #win.fill((0,0,0))


        for event in pygame.event.get():
            if event.type==pygame.QUIT:
                gameover=True

            if event.type==pygame.KEYDOWN:
                if event.key==pygame.K_LEFT:
                    x1_change=-snake_pos
                    y1_change=0
                if event.key == pygame.K_RIGHT:
                    x1_change = snake_pos
                    y1_change = 0
                if event.key==pygame.K_UP:
                    y1_change=-snake_pos
                    x1_change=0
                if event.key==pygame.K_DOWN:
                    y1_change=snake_pos
                    x1_change=0

        if x1>=600 or x1<0 or y1>=600 or y1<0:
            gameend=True
        x1=x1+x1_change
        y1=y1+y1_change
        win.fill((0,0,0))
        pygame.draw.rect(win,(255,255,0),[foodx,foody,dim,dim])
        snake_head=[]
        snake_head.append(x1)
        snake_head.append(y1)
        snake_pos.append(snake_head)

        if len(snake_pos)>length_of_snake:
            del snake_pos[0]

        for x in snake_pos[:-1]:
            if x==snake_head:
                gameend=True
        snake(dim,snake_pos)
        pygame.display.update()
        if x1==foodx and y1==foody:
            foodx = round(random.randrange(0, 600 - dim) / 10.0) * 10.0
            foody = round(random.randrange(0, 600 - dim) / 10.0) * 10.0
            length_of_snake=length_of_snake+1
        clock.tick(fps)
    pygame.quit()


snakegame()
导入pygame
随机输入
导入时间
pygame.init()
打印(“选择级别:\n”
“简单\n”
“中等\n”
“硬\n”
“困难的\n”)
级别=输入()
如果级别==“容易”或“容易”:
fps=35
elif级别==“中等”或“中等”:
fps=50
elif级别==“硬”或“硬”:
fps=80
elif级别==“困难”或“困难”:
fps=110
win=pygame.display.set_模式((600600))
pygame.display.set_标题(“蛇游戏”)
clock=pygame.time.clock()
x=10
y=10
尺寸=10
水平=5
snake_pos=[]
def snake(昏暗,snake_位置):
对于snake_位置中的x:
pygame.draw.rect(赢,(255,0,0),[x[0],x[1],暗,暗])
def snakegame():
gameover=False
gameend=False
x1=600/2
y1=600/2
x1_变化=0
y1_变化=0
蛇学家=[]
蛇的长度=1
foodx=圆形(随机随机随机范围(0600 dim)/10.0)*10.0
foody=圆形(随机。随机范围(0600 dim)/10.0)*10.0
虽然没有结束:
当gameend==True时:
分数=蛇的长度\u-1
score\u font=pygame.font.SysFont(“comimsansms”,45)
value=score\u font.render(“您的分数是:”+str(分数),True,(0,0255))
win.blit(值[600/3600/5])
pygame.display.update()
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
gameend=False
gameover=True
#胜利填充((0,0,0))
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
gameover=True
如果event.type==pygame.KEYDOWN:
如果event.key==pygame.K_左:
x1_变化=-蛇_位置
y1_变化=0
如果event.key==pygame.K_RIGHT:
x1_变化=蛇_位置
y1_变化=0
如果event.key==pygame.K\u UP:
y1_变化=-蛇_位置
x1_变化=0
如果event.key==pygame.K_向下:
y1_变化=蛇_位置
x1_变化=0
如果x1>=600或x1=600或Y1蛇的长度:
德尔斯内克位置[0]
对于snake_pos[:-1]中的x:
如果x==蛇头:
gameend=True
snake(昏暗,snake_位置)
pygame.display.update()
如果x1==foodx和y1==foody:
foodx=圆形(随机随机随机范围(0600-dim)/10.0)*10.0
foody=圆形(随机随机。随机范围(0600-dim)/10.0)*10.0
蛇的长度=蛇的长度+1
时钟滴答声(fps)
pygame.quit()
蛇类游戏()
运行后,它会显示屏幕…但当我尝试移动它时…它会显示此错误消息。 什么都试过了,但什么都没用

Traceback (most recent call last):
  File "C:/pypy/projects/snakeGame.py", line 112, in <module>
    snakegame()
  File "C:/pypy/projects/snakeGame.py", line 87, in snakegame
    x1=x1+x1_change
TypeError: unsupported operand type(s) for +: 'float' and 'list'
回溯(最近一次呼叫最后一次):
文件“C:/pypy/projects/snakeGame.py”,第112行,在
蛇类游戏()
文件“C:/pypy/projects/snakeGame.py”,第87行,在snakeGame中
x1=x1+x1\u变化
TypeError:不支持+:“float”和“list”的操作数类型

我正在使用pycharm anaconda 3.7,如果有人能帮助我,我将非常高兴

您的代码正在尝试将列表添加到整数中。
x1_change
y1_change
是纯整数,但是
snake_pos
是一个。。。我想是蛇的身体部位吧

我怀疑您应该在钥匙处理代码中使用
vel
(velocity?)来移动蛇头:

    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            gameover=True

        if event.type==pygame.KEYDOWN:
            if event.key==pygame.K_LEFT:
                x1_change=-vel
                y1_change=0
            if event.key == pygame.K_RIGHT:
                x1_change = vel
                y1_change = 0
            if event.key==pygame.K_UP:
                y1_change=-vel
                x1_change=0
            if event.key==pygame.K_DOWN:
                y1_change=vel
                x1_change=0

进行此更改可以减轻该特定错误,并允许用户移动正方形。

snake\u pos
是一个列表,您可以将其指定给
x1\u change
。然后,将
x1\u change
添加到x,x是一个浮点值。