我正在尝试制作像原始蛇一样的游戏,我希望“食物”去随机的地方,但我不确定如何让它在课堂上使用它。代码中还有一些其他错误,但现在想要关注播放器和食物。
import turtle
import random
"""-------"""
t=turtle.Turtle()
s=turtle.Screen()
cube=turtle.Turtle
"""------------"""
WIDTH, HEIGHT=300, 300
DISTANCE=5
"""--------------"""
s.setup(WIDTH,HEIGHT)
"""------------"""
t.width(1)
s.bgcolor("dark green")
"""-----------------"""
class Border():
def check():
x, y = t.position()
if not -WIDTH / 2 < x < WIDTH / 2 or not -HEIGHT / 2 < y < HEIGHT / 2:
t.undo() # undo error
t.speed(0)
t.left(180) # turn around
t.forward(10) # redo movement but in new direction
t.speed(3)
"""-------------"""
randint=random.randint
x=random.randint(cube.xcor, 0)
y=random.randint(0,cube.ycor)
"""---------------"""
class Food():
def block():
cube.color("red")
for i in range(4):
cube.goto(x, -x, y, -y)
cube.begin_fill()
cube.forward(20)
cube.right(90)
cube.end_fill()
"""---------------"""
class Player():
def move_up():
player=False
while player==False:
for i in range(1):
t.forward(DISTANCE)
t.clear()
def move_left():
t.speed(0)
t.left(90)
t.speed(3)
def move_right():
t.speed(0)
t.right(90)
t.speed(3)
"""------------"""
collistion_check=Border()
player1=Player()
s.onkey(Player.move_up,"up")
s.onkey(Player.move_left,"left")
s.onkey(Player.move_right,"right")
s.listen()
一般来说,你的程序是一场灾难。至于你随机数的直接问题,这个代码有一个问题:
randint=random.randint
x=random.randint(cube.xcor, 0)
y=random.randint(0,cube.ycor)
语法方面,这应该更像是:
from random import randint
...
x = randint(cube.xcor(), 0)
y = randint(0, cube.ycor())
即不清楚为什么你设置变量randint
,因为你不使用它,xcor()
和ycor()
是方法,需要括号。
如果您的目标是在屏幕上随机找到食物,我会选择:
x = randint(cube.xcor()/2 - WIDTH/2, WIDTH/2 - cube.xcor()/2)
y = randint(cube.ycor()/2 - HEIGHT/2, HEIGHT/2 - cube.ycor()/2)
根据需要添加变量以减少冗余。我在代码的其余部分看到的最大问题是这个方法:
def move_up():
player=False
while player==False:
for i in range(1):
t.forward(DISTANCE)
t.clear()
目前还不清楚player
是如何成为True
所以一旦你击中向上箭头,你就会陷入无限循环。但是,一旦你解决了食物问题,我认为你会专注于此。