代码在 Python 中不适用于 turtle 模块
Code does not work in Python with turtle module
我在 python 中使用 turtle 创建游戏时遇到错误。游戏的 objective 是移动你的坦克并射击敌方坦克。我还没说完。我添加了一个白色边框,但是当我试图对坦克进行编程以使其不能超出边界时,它不起作用。这是我的代码:
#Import modules
import turtle
import time
import random
#Create screen
map = turtle.Screen()
map.bgcolor("limegreen")
#Create player tank
tank = turtle.Turtle()
tank.shape("triangle")
tank.color("blue")
tank.speed(0)
tank.penup()
tank.setposition(0, 0)
tank.setheading(90)
#Create border
borderPen = turtle.Turtle()
borderPen.speed(0)
borderPen.hideturtle()
borderPen.penup()
borderPen.setposition(-300, -300)
borderPen.color("white")
borderPen.pendown()
for sides in range(4):
borderPen.fd(600)
borderPen.lt(90)
#Define update coords function
global playerX
global playerY
global playerHeading
global tankSpeed
tankSpeed = 5
def update_coords():
playerX = tank.xcor()
playerY = tank.ycor()
playerHeading = tank.heading()
#Define player movement functions
def move_forward():
tank.fd(5)
update_coords();
if playerX > 300 or playerX == 300:
tank.setx(playerX - 5)
update_coords();
elif playerX < -300 or playerX == -300:
tank.setx(playerX + 5)
update_coords();
elif playerY > 300 or playerY == 300:
tank.sety(playerY - 5)
update_coords();
elif playerY < -300 or playerY == -300:
tank.sety(playerY + 5)
update_coords();
def turn_left():
tank.lt(10)
def turn_right():
tank.rt(10)
#Allow player movement
map.listen()
map.onkey(move_forward, "Up")
map.onkey(turn_left, "Left")
map.onkey(turn_right, "Right")
#Create bullet
bullet = turtle.Turtle()
bullet.penup()
bullet.speed(0)
bullet.color("black")
bullet.hideturtle()
如果您知道为什么代码不起作用,请回复。谢谢!
当您初始化变量 playerX
和 playerY
时,您没有指定它们是全局变量,因此该函数试图设置一个不存在的局部变量的值。
要在 update_coords
函数的开头解决此问题,请添加 global playerX, playerY
这告诉计算机 playerX
和 playerY
是您之前创建的全局变量。
新函数如下所示:
def update_coords():
global playerX, playerY
playerX = tank.xcor()
playerY = tank.ycor()
playerHeading = tank.heading()
我在 python 中使用 turtle 创建游戏时遇到错误。游戏的 objective 是移动你的坦克并射击敌方坦克。我还没说完。我添加了一个白色边框,但是当我试图对坦克进行编程以使其不能超出边界时,它不起作用。这是我的代码:
#Import modules
import turtle
import time
import random
#Create screen
map = turtle.Screen()
map.bgcolor("limegreen")
#Create player tank
tank = turtle.Turtle()
tank.shape("triangle")
tank.color("blue")
tank.speed(0)
tank.penup()
tank.setposition(0, 0)
tank.setheading(90)
#Create border
borderPen = turtle.Turtle()
borderPen.speed(0)
borderPen.hideturtle()
borderPen.penup()
borderPen.setposition(-300, -300)
borderPen.color("white")
borderPen.pendown()
for sides in range(4):
borderPen.fd(600)
borderPen.lt(90)
#Define update coords function
global playerX
global playerY
global playerHeading
global tankSpeed
tankSpeed = 5
def update_coords():
playerX = tank.xcor()
playerY = tank.ycor()
playerHeading = tank.heading()
#Define player movement functions
def move_forward():
tank.fd(5)
update_coords();
if playerX > 300 or playerX == 300:
tank.setx(playerX - 5)
update_coords();
elif playerX < -300 or playerX == -300:
tank.setx(playerX + 5)
update_coords();
elif playerY > 300 or playerY == 300:
tank.sety(playerY - 5)
update_coords();
elif playerY < -300 or playerY == -300:
tank.sety(playerY + 5)
update_coords();
def turn_left():
tank.lt(10)
def turn_right():
tank.rt(10)
#Allow player movement
map.listen()
map.onkey(move_forward, "Up")
map.onkey(turn_left, "Left")
map.onkey(turn_right, "Right")
#Create bullet
bullet = turtle.Turtle()
bullet.penup()
bullet.speed(0)
bullet.color("black")
bullet.hideturtle()
如果您知道为什么代码不起作用,请回复。谢谢!
当您初始化变量 playerX
和 playerY
时,您没有指定它们是全局变量,因此该函数试图设置一个不存在的局部变量的值。
要在 update_coords
函数的开头解决此问题,请添加 global playerX, playerY
这告诉计算机 playerX
和 playerY
是您之前创建的全局变量。
新函数如下所示:
def update_coords():
global playerX, playerY
playerX = tank.xcor()
playerY = tank.ycor()
playerHeading = tank.heading()