Создаю игру, похожую на змею, но она не становится длиннее, и когда я использую свой метод обнаружения, она всегда считыPython

Программы на Python
Ответить
Anonymous
 Создаю игру, похожую на змею, но она не становится длиннее, и когда я использую свой метод обнаружения, она всегда считы

Сообщение Anonymous »

Код должен определить местоположение игрока и фруктов, а затем проверить, находятся ли они достаточно близко, и завершить команду. Но когда я запускаю программу, она каждый раз определяет только расстояние между игроком и фруктом, равное 0.
#---imports---
import turtle as trtl
import random as rand
#---making the turtles---
player = trtl.Turtle()
fruits = trtl.Turtle()
wn = trtl.Screen()
player.shape("classic")
#---variables---
fruit = ["circle", "square", "triangle", "arrow", "circle", "square", "triangle", "arrow"]
colors = ["red", "blue", "green", "purple"]
score = -1

#---game commands---
def move():
player.penup()
player.forward(5)
print(abs(player.ycor()-fruits.ycor()))

def turn_up():
player.setheading(90)

def turn_right():
player.setheading(0)

def turn_left():
player.setheading(180)

def turn_down():
player.setheading(270)

def spawn():
new_ycor=rand.randint(-150, 150)
new_xcor=rand.randint(-150, 150)
fruits.penup()
fruits.setpos(new_xcor,new_ycor)
fruits.shape(rand.choice(fruit))
fruits.color(rand.choice(colors))

def collision():
xDist = abs(player.xcor()-fruits.xcor())
yDist = abs(player.ycor()-fruits.ycor())
if xDist < 10 and yDist < 10:
spawn()
print("Collision!")
#---game events---
collision()
wn.onkeypress(turn_up, "w")
wn.onkeypress(turn_right, "d")
wn.onkeypress(turn_left, "a")
wn.onkeypress(turn_down, "s")
wn.onkeypress(move, "space")
wn.listen()
wn.mainloop()'

Команда spawn() должна вызывать появление фруктов в другом месте при каждом запуске. А команда Collision() должна определить местоположение фрукта и игрока, а затем вычесть их, чтобы увидеть, не находятся ли они слишком близко. Но независимо от того, что я делаю, он определяет расстояние только как 0.
def spawn():
new_ycor=rand.randint(-150, 150)
new_xcor=rand.randint(-150, 150)
fruits.penup()
fruits.setpos(new_xcor,new_ycor)
fruits.shape(rand.choice(fruit))
fruits.color(rand.choice(colors))
def collision():
xDist = abs(player.xcor()-fruits.xcor())
yDist = abs(player.ycor()-fruits.ycor())
if xDist < 10 and yDist < 10:
spawn()
print("Collision!")


Подробнее здесь: https://stackoverflow.com/questions/756 ... -detection
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»