【发布时间】:2020-04-02 15:33:26
【问题描述】:
我正在制作一个蟒蛇龟游戏,你必须在其中捉老鼠。当我靠近鼠标时,它应该会消失,但它并没有完全完成。问题是当我去抓老鼠时,我的乌龟能够逃脱我的游戏边界,而通常当我不追鼠标时,我的乌龟不会离开边界。我不知道为什么。谁能帮帮我?
我是 python 的初学者,所以我的代码有点乱,而且效率可能不太高。对不起 这是我的代码:
import turtle
import os
import math
import random
from turtle import *
#Screen
wn = turtle.Screen()
wn.bgcolor("green")
wn.title("Catch and run")
#wn.bgpic("background.gif")
#scene
border_pen = turtle.Turtle()
border_pen.speed(0)
border_pen.color("white")
border_pen.penup()
border_pen.setposition(-300,-200)
border_pen.pensize(3)
border_pen.pendown()
for side in range(2):
border_pen.fd(600)
border_pen.lt(90)
border_pen.fd(405)
border_pen.lt(90)
#border coordinates:
#x: -300 - 300
#y: -190 - 200
border_pen.hideturtle()
#player
player = turtle.Turtle()
player.color("black")
player.shape("triangle")
player.penup()
player.speed(0)
player.setposition(0,90)
player.lt(90)
player_speed = 15
#movment
def right():
if player.xcor() < 280:
player.setheading(360)
x = player.xcor()
x += player_speed
player.setx(x)
def left():
if player.xcor() > -280:
player.setheading(180)
x = player.xcor()
x -= player_speed
player.setx(x)
def up():
if player.ycor() < 185:
player.setheading(90)
y = player.ycor()
y += player_speed
player.sety(y)
def down():
if player.ycor() > -170:
player.setheading(270)
y = player.ycor()
y -= player_speed
player.sety(y)
#mouse
mouse = turtle.Turtle()
mouse.color("white")
mouse.shape("circle")
mouse.penup()
mouse.speed(0)
mouse.setposition(100,150)
mouse.lt(90)
mouse.shapesize(0.5,0.5)
mouse_speed = 14
mouse_direction = "fd"
def move_mouse():
global mouse_direction
distance = math.sqrt(math.pow(player.xcor()-mouse.xcor(),2) + math.pow(player.ycor()-mouse.ycor(),2))
if distance < 80:
x = mouse.xcor()
y = mouse.ycor()
if x < -290:
mouse_direction = "rt"
elif x > 290:
mouse_direction = "lt"
elif y < -180:
mouse_direction = "fd"
elif y > 190:
mouse_direction = "dw"
if mouse_direction == "fd":
y += mouse_speed
elif mouse_direction == "dw":
y -= mouse_speed
elif mouse_direction == "lt":
x -= mouse_speed
else:
x += mouse_speed
mouse.setx(x)
mouse.sety(y)
#key binding
turtle.listen()
turtle.onkey(right,"Right")
turtle.onkey(left, "Left")
turtle.onkey(up, "Up")
turtle.onkey(down, "Down")
def game_loop():
move_mouse()
turtle.ontimer(game_loop,1)
turtle.ontimer(game_loop,1)
turtle.mainloop()
【问题讨论】:
-
for side in range(2) 用于绘制边框。
-
啊,我的错!我不认识 Turtle,我只是读了一些关于它的东西,因为它看起来很有趣。