Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
代码不能在Python中使用turtle模块_Python_Python 3.x_Turtle Graphics - Fatal编程技术网

代码不能在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

我在用python和turtle创建一个游戏时遇到了一个错误。游戏的目标是移动你的坦克并射击敌人的坦克。我还没做完。我添加了一个白色边框,但当我试图编程坦克,使它不能走出边界,它不工作。这是我的密码:

#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