如何在python龟中使用随机模块?

问题描述 投票:0回答:1

我正在尝试制作像原始蛇一样的游戏,我希望“食物”去随机的地方,但我不确定如何让它在课堂上使用它。代码中还有一些其他错误,但现在想要关注播放器和食物。

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()
python-3.x turtle-graphics
1个回答
0
投票

一般来说,你的程序是一场灾难。至于你随机数的直接问题,这个代码有一个问题:

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所以一旦你击中向上箭头,你就会陷入无限循环。但是,一旦你解决了食物问题,我认为你会专注于此。

© www.soinside.com 2019 - 2024. All rights reserved.