【问题标题】:How do I make it so that if a turtle is close to a turtle, it will increase a variable?我该如何做到,如果乌龟靠近乌龟,它会增加一个变量?
【发布时间】:2021-05-06 06:35:41
【问题描述】:

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

代码在这里

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

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

【问题讨论】:

    标签: python variables random turtle-graphics


    【解决方案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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-09
      相关资源
      最近更新 更多