代码不能在Python中使用turtle模块
我在用python和turtle创建一个游戏时遇到了一个错误。游戏的目标是移动你的坦克并射击敌人的坦克。我还没做完。我添加了一个白色边框,但当我试图编程坦克,使它不能走出边界,它不工作。这是我的密码:代码不能在Python中使用turtle模块,python,python-3.x,turtle-graphics,Python,Python 3.x,Turtle Graphics,我在用python和turtle创建一个游戏时遇到了一个错误。游戏的目标是移动你的坦克并射击敌人的坦克。我还没做完。我添加了一个白色边框,但当我试图编程坦克,使它不能走出边界,它不工作。这是我的密码: #Import modules import turtle import time import random #Create screen map = turtle.Screen() map.bgcolor("limegreen") #Create player tank tank = tu
#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()
#导入模块
进口海龟
导入时间
随机输入
#创建屏幕
map=turtle.Screen()
地图颜色(“limegreen”)
#创建玩家坦克
坦克=乌龟。乌龟()
坦克形状(“三角形”)
坦克。颜色(“蓝色”)
坦克速度(0)
坦克
油箱设置位置(0,0)
储罐设置标题(90)
#创建边框
borderPen=海龟。海龟()
边界笔速度(0)
borderPen.hideturtle()
borderPen.penup()
边界笔设置位置(-300,-300)
颜色(“白色”)
borderPen.pendown()
对于范围(4)内的侧面:
borderPen.fd(600)
borderPen.lt(90)
#定义更新坐标函数
全球playerX
全球游戏
全球玩家主导
全球油轮航速
油箱速度=5
def update_coords():
playerX=tank.xcor()
playerY=tank.ycor()
playerHeading=坦克头()
#定义玩家移动功能
def向前移动()
油箱fd(5)
更新_坐标();
如果playerX>300或playerX==300:
坦克设置(playerX-5)
更新_坐标();
elif playerX<-300或playerX==-300:
坦克设置(playerX+5)
更新_坐标();
elif playerY>300或playerY==300:
坦克。赛蒂(游乐场-5)
更新_坐标();
elif playerY<-300或playerY==-300:
坦克。赛蒂(游戏玩家+5)
更新_坐标();
def左转()
油箱。lt(10)
def右转()
储罐rt(10)
#允许玩家移动
map.listen()
地图键(向前移动,“向上”)
地图打开键(左转,“左”)
地图打开键(右转,“右”)
#创建项目符号
子弹=乌龟。乌龟()
bullet.penup()
子弹速度(0)
项目符号颜色(“黑色”)
子弹
如果您知道代码不起作用的原因,请回复。谢谢 当您初始化变量
playerX
和playerY
时,您没有指定它们是全局变量,因此函数试图设置不存在的局部变量的值
要在update\u coords
函数的开头修复此问题,请添加global playerX,playerY
这会告诉计算机,playerX
和playerY
是您先前创建的全局变量
新函数如下所示:
def update_coords():
global playerX, playerY
playerX = tank.xcor()
playerY = tank.ycor()
playerHeading = tank.heading()
您尝试过调试吗?您从未在全局范围内定义
playerX
或playerY
。