我如何做到这样,如果乌龟靠近乌龟,它会增加一个变量?

时间:2021-02-02 04:24:36

标签: python variables random turtle-graphics

我正在尝试制作一个更具互动性的游戏,基本上,我想让它使得如果一只乌龟靠近另一只乌龟,它会增加一个变量(在这种情况下,变量是分数)。

代码在这里

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()

有谁知道怎么做,如果乌龟离它很近,它会做什么让另一只乌龟移动到随机位置并增加分数?

1 个答案:

答案 0 :(得分:1)

您的碰撞检测:

if turtler.distance(fruit) < 15:

是正确的,是您的其余代码有问题。例如: score + 1 孤立地什么都不做; fruit.goto(x,y) 仅在您每次更改 xy 时才有意义,而不仅仅是在循环之前更改一次;您的代码的结构使其可以锁定输入事件。以下是您可以在其上构建的代码的简化工作版本:

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()