我正在尝试制作一个更具互动性的游戏,基本上,我想让它使得如果一只乌龟靠近另一只乌龟,它会增加一个变量(在这种情况下,变量是分数)。
代码在这里
import turtle
import random
import time
screen = turtle.Screen()
mapmaker = turtle.Turtle()
turtler = turtle.Turtle()
mapmaker.shape('classic')
turtler.shape('turtle')
turtler.penup()
turtler.forward(10)
colours = ["red", "orange", "yellow", "green", "blue", "violet", "indigo"]
for i in range(360):
mapmaker.color(colours[i % 7])
mapmaker.width(i / 100 + 1)
mapmaker.forward(i + 10)
mapmaker.right(270)
mapmaker.speed(100000000000000000000000000000000000000)
move_speed = 10
turn_speed = 10
def forward():
turtler.forward(move_speed)
def backward():
turtler.backward(move_speed)
def right():
turtler.right(turn_speed)
def left():
turtler.left(turn_speed)
screen.onkey(forward, "up")
screen.onkey(backward, "down")
screen.onkey(left, "left")
screen.onkey(right, "right")
screen.listen()
screen.onkey(forward, "w")
screen.onkey(backward, "s")
screen.onkey(left, "a")
screen.onkey(right, "d")
fruit = turtle.Turtle()
fruit.shape('square')
x = random.randint(-175,175)
y = random.randint(-175,175)
score = 0
random_time = random.randint(2,5)
while score < 10:
if turtler.distance(fruit) < 15:
score + 1
fruit.penup()
fruit.goto(x,y)
if score > 10:
print("Congratulations, you have won!")
screen.bye()
有谁知道怎么做,如果乌龟离它很近,它会做什么让另一只乌龟移动到随机位置并增加分数?
答案 0 :(得分:1)
您的碰撞检测:
if turtler.distance(fruit) < 15:
是正确的,是您的其余代码有问题。例如: score + 1
孤立地什么都不做; fruit.goto(x,y)
仅在您每次更改 x
和 y
时才有意义,而不仅仅是在循环之前更改一次;您的代码的结构使其可以锁定输入事件。以下是您可以在其上构建的代码的简化工作版本:
from turtle import Screen, Turtle
from random import randint
MOVE_SPEED = 10
TURN_ANGLE = 10
def forward():
turtle.forward(MOVE_SPEED)
check_collision()
def backward():
turtle.backward(MOVE_SPEED)
check_collision()
def right():
turtle.right(TURN_ANGLE)
def left():
turtle.left(TURN_ANGLE)
score = 0
def check_collision():
global score
if score < 10:
if turtle.distance(fruit) < 15:
score += 1
x = randint(-175, 175)
y = randint(-175, 175)
fruit.goto(x, y)
else:
print("Congratulations, you have won!")
screen.bye()
screen = Screen()
fruit = Turtle()
fruit.shape('square')
fruit.penup()
x = randint(-175, 175)
y = randint(-175, 175)
fruit.goto(x, y)
turtle = Turtle()
turtle.shape('turtle')
turtle.penup()
screen.onkey(forward, 'Up')
screen.onkey(backward, 'Down')
screen.onkey(left, 'Left')
screen.onkey(right, 'Right')
screen.listen()
screen.mainloop()