代码在 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()

如果您知道为什么代码不起作用,请回复。谢谢!

当您初始化变量 playerXplayerY 时,您没有指定它们是全局变量,因此该函数试图设置一个不存在的局部变量的值。

要在 update_coords 函数的开头解决此问题,请添加 global playerX, playerY

这告诉计算机 playerXplayerY 是您之前创建的全局变量。

新函数如下所示:

def update_coords():
  global playerX, playerY
  playerX = tank.xcor()
  playerY = tank.ycor()
  playerHeading = tank.heading()