Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.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/15.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 当按下一个键将海龟向上移动时,我的其他海龟都僵住了_Python_Python 3.x_Turtle Graphics_Flappy Bird Clone - Fatal编程技术网

Python 当按下一个键将海龟向上移动时,我的其他海龟都僵住了

Python 当按下一个键将海龟向上移动时,我的其他海龟都僵住了,python,python-3.x,turtle-graphics,flappy-bird-clone,Python,Python 3.x,Turtle Graphics,Flappy Bird Clone,当我运行我的代码,用空格键把我的乌龟向上移动时,所有应该移动的障碍物都停止移动。问题的原因是什么?如何解决 我不知道是什么导致了这个问题,我也尝试过谷歌搜索,但找不到任何东西。由于这是我试用Python或一般编程的第一周,我不知道我做错了什么 import turtle import math import random #starting conditions player = turtle.Turtle() player.hideturtle() player.penup() player.

当我运行我的代码,用空格键把我的乌龟向上移动时,所有应该移动的障碍物都停止移动。问题的原因是什么?如何解决

我不知道是什么导致了这个问题,我也尝试过谷歌搜索,但找不到任何东西。由于这是我试用Python或一般编程的第一周,我不知道我做错了什么

import turtle
import math
import random
#starting conditions
player = turtle.Turtle()
player.hideturtle()
player.penup()
player.shape("turtle")
player.setheading(90)
player.setpos(-200,0)
player.speed(1)
player.color("yellow")
canvas = turtle.Screen()
canvas.bgcolor("black")
canvas.title("gamescreen")
gameover = turtle.Turtle()
gameover.penup()
gameover.hideturtle()
gameover.color("red")
gameover.speed(0)
gameover.setpos(-150, 330)
scoreboard = turtle.Turtle()
scoreboard.hideturtle()
scoreboard.color("blue")
scoreboard.penup()
scoreboard.setpos(-300,320)
#borders
box = turtle.Turtle()
box.speed(0)
box.hideturtle()
box.setheading(0)
box.color("blue")
box.pensize(3)
box.penup()
box.setpos(-300,-300)
for i in range(4):
    box.pendown()
    box.forward(600)
    box.left(90)
player.showturtle()
#movement
spd = 50
def playerup():
    player.sety(player.ycor()+ spd)
    if (player.ycor()+ spd) > 287:
        player.speed(0)
        player.sety(287)
        player.speed(1)
def playerdown():
    player.sety(player.ycor()- spd)
    if (player.ycor()+ spd) < -287:
        player.speed(0)
        player.sety(-287)
        player.speed(1)
turtle.listen()
gravity = 3
obsspd = 3
#collision
def hit(t1, t2):
              xdistance = t1.xcor()-t2.xcor()
              ydistance = t1.ycor()-t2.ycor()
              if (abs(xdistance) < 20) and (abs(ydistance) < 130):
               return True

              else:
                  return False


#obstacle list
number_obstacles = 2
obstacles = []
numberslistx = list(range(-100,280))
numberslisty = list(range(143,190))  

for i in range(number_obstacles):
    obstacles.append(turtle.Turtle())
for obstacle in obstacles:
    obstacle.hideturtle()
    obstacle.speed(0)
    obstacle.color("green")
    obstacle.penup()
    obstacle.shape("square")
    obstacle.turtlesize(12,3)
    xobs = random.choice(numberslistx)
    yobs = random.choice(numberslisty)
    obstacle.setposition(xobs,yobs)
    obstacle.showturtle()
#obstacle2 list
number_obstacles2 = 2
obstacles2 = []
numberslistx = list(range(-100,280))
numberslisty = list(range(160,190))           
for i in range (number_obstacles2):
    obstacles2.append(turtle.Turtle())
for obstacle2 in obstacles2:
    obstacle2.hideturtle()
    obstacle2.speed(0)
    obstacle2.color("green")
    obstacle2.penup()
    obstacle2.shape("square")
    xobs = random.choice(numberslistx)
    yobs = random.choice(numberslisty)
    obstacle2.turtlesize(12,3)
    obstacle2.setposition(xobs,-yobs)
    obstacle2.showturtle()
    if(obstacle.xcor()-obstacle2.xcor())> 10:
        obstacle.setposition(xobs,yobs)
        obstacle2.setposition(xobs,-yobs)


#border
def fall():
    if (player.ycor()< -300):
        return True
def ceiling():
    if (player.ycor() > 300):
        return True
colors = ["red", "green","yellow","blue","purple","pink"]
points = 1
while True:
    player.sety(player.ycor()-gravity)
    xresetpos = random.choice(range(230,300))
    yresetpos = random.choice(range(140,190))

    for obstacle in obstacles:
        obstacle.setx(obstacle.xcor()-obsspd)
        if (obstacle.xcor()-obsspd) < -270:
            obstacle.hideturtle()
            obstacle.setx(xresetpos)
            obstacle.sety(yresetpos)
            obstacle.showturtle()
            obsspd+=1
            points += 1
            display = points
            scoreboard.clear()
            scoreboard.write(display)
            player.color(random.choice(colors))
            obstacle.color(random.choice(colors))


    for obstacle2 in obstacles2:
        obstacle2.setx(obstacle2.xcor()-(obsspd))
        if (obstacle2.xcor()-obsspd) < -270:
            obstacle2.hideturtle()                   
            obstacle2.setx(xresetpos)
            obstacle2.sety(-(int(yresetpos))-15)
            obstacle2.showturtle()
            player.color(random.choice(colors))
            obstacle2.color(random.choice(colors))
        if hit(player, obstacle):
            player.hideturtle()
            player.setpos(400,0)
            gameover.color("red")
            gameover.setpos(-150,-20)
            gameover.write("Game over",False,"left",("Arial",50,))
            gameover.setpos(-160,-200)
            gameover.write("Press x to play again",False,"left",("Arial",30,))
            break
        if hit(player, obstacle2):
            player.hideturtle()
            player.setpos(400,0)
            gameover.setpos(-150,-20)
            gameover.write("Game over",False,"left",("Arial",50,))
            gameover.setpos(-160,-200)
            gameover.write("Press x to play again",False,"left",("Arial",30,))
            break

    if fall():
        player.hideturtle()
        player.setpos(400,0)
        gameover.setpos(-150,-20)
        gameover.write("Game over",False,"left",("Arial",50,))
        gameover.setpos(-160,-200)
        gameover.write("Press x to play again",False,"left",("Arial",30,))
        break
    if ceiling():
        player.setycor(280)
    #if score(player,obstacle1):
     #   points += 1
     #   display = points
     #   scoreboard.clear()
      #  scoreboard.write(display)
    turtle.onkeypress(playerup, "space")
    #turtle.onkeypress(playerdown, "Down")
    #if player.xcor() is obstacle1.xcor():
     #   points += 1
     #   scoreboard.clear()
      #  scoreboard.write(points)

#balken stoppen niet als jij beweegt
导入海龟
输入数学
随机输入
#启动条件
玩家=乌龟。乌龟()
player.hideturtle()
player.penup()
玩家形状(“海龟”)
玩家设置标题(90)
player.setpos(-200,0)
速度(1)
播放器颜色(“黄色”)
canvas=turtle.Screen()
canvas.bgcolor(“黑色”)
画布标题(“游戏屏幕”)
gameover=海龟。海龟()
gameover.penup()
gameover.hideturtle()
gameover.color(“红色”)
游戏结束。速度(0)
gameover.setpos(-150330)
记分牌=海龟。海龟()
记分牌
记分牌。颜色(“蓝色”)
记分牌
记分板设置位置(-300320)
#边界
box=海龟。海龟()
速度(0)
框。隐藏()
框。设置标题(0)
框。颜色(“蓝色”)
养老金箱(3)
框。penup()
框。设置位置(-300,-300)
对于范围(4)中的i:
box.pendown()
前进框(600)
方框左(90)
player.showturtle()
#运动
spd=50
def playerup():
player.sety(player.ycor()+spd)
如果(player.ycor()+spd)>287:
玩家速度(0)
球员赛蒂(287)
速度(1)
def playerdown():
player.sety(player.ycor()-spd)
如果(player.ycor()+spd)<-287:
玩家速度(0)
player.sety(-287)
速度(1)
乌龟,听着
重力=3
OBSPD=3
#碰撞
def命中(t1、t2):
xdistance=t1.xcor()-t2.xcor()
ydistance=t1.ycor()-t2.ycor()
如果(abs(X距离)<20)和(abs(Y距离)<130):
返回真值
其他:
返回错误
#障碍清单
障碍物数量=2
障碍=[]
numberslistx=列表(范围(-100280))
numberslisty=列表(范围(143190))
对于范围内的i(障碍物数量):
障碍物。追加(turtle.turtle())
障碍物中的障碍物:
障碍物
障碍物。速度(0)
障碍物颜色(“绿色”)
障碍物
障碍物形状(“方形”)
障碍物。套袖衫尺寸(12,3)
xobs=random.choice(numberslistx)
yobs=随机选择(数字列表)
障碍物设置位置(xobs、yobs)
障碍物
#障碍2清单
数量\u障碍2=2
障碍2=[]
numberslistx=列表(范围(-100280))
numberslisty=列表(范围(160190))
对于范围内的i(编号\u障碍2):
obstacles2.append(turtle.turtle())
对于obstacle2中的obstacle2:
障碍2.hideturtle()
障碍2.速度(0)
障碍2.颜色(“绿色”)
障碍2.penup()
障碍2.形状(“方形”)
xobs=random.choice(numberslistx)
yobs=随机选择(数字列表)
障碍2.套衫尺寸(12,3)
obstacle2.设置位置(xobs,-yobs)
障碍2.showturtle()
如果(障碍物.xcor()-obstacle2.xcor())>10:
障碍物设置位置(xobs、yobs)
obstacle2.设置位置(xobs,-yobs)
#边界
def fall():
如果(player.ycor()<-300):
返回真值
def天花板():
如果(player.ycor()>300):
返回真值
颜色=[“红色”、“绿色”、“黄色”、“蓝色”、“紫色”、“粉色”]
点数=1
尽管如此:
player.sety(player.ycor()-gravity)
xresetpos=随机选择(范围(230300))
yresetpos=random.choice(范围(140190))
障碍物中的障碍物:
障碍物.setx(障碍物.xcor()-obspd)
如果(障碍物.xcor()-obspd)<-270:
障碍物
障碍物设置x(xresetpos)
障碍物。塞蒂(yresetpos)
障碍物
OBSPD+=1
点数+=1
显示=点
记分牌
记分板。写入(显示)
玩家。颜色(随机。选择(颜色))
障碍。颜色(随机。选择(颜色))
对于obstacle2中的obstacle2:
obstacle2.setx(obstacle2.xcor()-(obspd))
如果(obstacle2.xcor()-obspd)<-270:
障碍2.hideturtle()
obstacle2.setx(xresetpos)
obstacle2.sety(-(int(yresetpos))-15)
障碍2.showturtle()
玩家。颜色(随机。选择(颜色))
障碍2.颜色(随机选择(颜色))
如果击中(玩家、障碍物):
player.hideturtle()
player.setpos(400,0)
gameover.color(“红色”)
gameover.setpos(-150,-20)
gameover.write(“gameover”,False,“left”,(“Arial”,50,))
gameover.setpos(-160,-200)
gameover.write(“按x再次播放”,False,“left”,(“Arial”,30,))
打破
如果命中(玩家,障碍物2):
player.hideturtle()
player.setpos(400,0)
gameover.setpos(-150,-20)
gameover.write(“gameover”,False,“left”,(“Arial”,50,))
gameover.setpos(-160,-200)
gameover.write(“按x再次播放”,False,“left”,(“Arial”,30,))
打破
如果fall():
player.hideturtle()
player.setpos(400,0)
gameover.setpos(-150,-20)
gameover.write(“gameover”,False,“left”,(“Arial”,50,))
gameover.setpos(-160,-200)
gameover.write(“按x再次播放”,False,“left”,(“Arial”,30,))
打破
如果天花板()
游戏者:塞蒂科(280)
#如果得分(球员,障碍1):
#点数+=1
#显示=点
#记分牌
#记分板。写入(显示)
海龟。onkeypress(playerup,“空间”)
#乌龟。onkeypress(playerdown,“Down”)
#如果player.xcor()是obstacle1.xcor():
#点数+=1
#记分牌
#记分牌。写(分)
#巴尔肯·斯托彭·尼特·杰吉·贝维格特

一个问题是,您的水平运动由
控制,不同步,而True:
循环,但您的垂直运动由键盘事件同步控制。我们
from turtle import Screen, Turtle
from random import choice, randrange

COLORS = ["red", "green", "yellow", "blue", "purple", "pink"]

PLAYER_SPEED = 50

GRAVITY = 3

NUMBER_OBSTACLES_UPPER = 2
NUMBER_OBSTACLES_LOWER = 2

# movement
def playerup():
    screen.onkeypress(None, 'space')  # disable handler inside handler

    player.sety(player.ycor() + PLAYER_SPEED)

    if player.ycor() > 287:
        player.speed('fastest')
        player.sety(287)
        player.speed('slowest')

    screen.onkeypress(playerup, 'space')

# collision
def hit(t1, t2):
    xdistance = abs(t1.xcor() - t2.xcor())

    if xdistance >= 20:
        return False

    ydistance = abs(t1.ycor() - t2.ycor())

    return ydistance < 130

# border
def fall():
    return player.ycor() < -300

def ceiling():
    return player.ycor() > 300

# main program loop
def move():
    global points, obstacle_speed_upper, obstacle_speed_lower

    player.sety(player.ycor() - GRAVITY)

    for obstacle in obstacles_upper:
        obstacle.setx(obstacle.xcor() - obstacle_speed_upper)

        if obstacle.xcor() < -270:
            obstacle.hideturtle()
            obstacle.setposition(randrange(230, 300), randrange(140, 190))
            obstacle.showturtle()
            obstacle_speed_upper += 1

            points += 1
            scoreboard.clear()
            scoreboard.write(points, font=('Arial', 30,))

        if hit(player, obstacle):
            player.hideturtle()
            gameover.write("Game Over", align='center', font=('Arial', 50,))
            return

    for obstacle in obstacles_lower:
        obstacle.setx(obstacle.xcor() - obstacle_speed_lower)

        if obstacle.xcor() < -270:
            obstacle.hideturtle()
            obstacle.setposition(randrange(230, 300), - randrange(160, 190))
            obstacle.showturtle()
            obstacle_speed_lower += 1

            points += 1
            scoreboard.clear()
            scoreboard.write(points, font=('Arial', 30,))

        if hit(player, obstacle):
            player.hideturtle()
            gameover.write("Game Over", align='center', font=('Arial', 50,))
            return

    if ceiling() or fall():
        player.hideturtle()
        gameover.write("Game Over", align='center', font=('Arial', 50,))
        return

    screen.ontimer(move, 100)

# starting conditions
screen = Screen()
screen.setup(750, 750)
screen.bgcolor('black')
screen.title("Game Screen")

# borders
box = Turtle()
box.hideturtle()
box.color('blue')
box.speed('fastest')
box.pensize(3)

box.penup()
box.setpos(-300, -300)
box.pendown()

for _ in range(4):
    box.forward(600)
    box.left(90)

gameover = Turtle()
gameover.hideturtle()
gameover.color('red')
gameover.penup()
gameover.sety(-25)

points = 0

scoreboard = Turtle()
scoreboard.hideturtle()
scoreboard.color('blue')
scoreboard.penup()
scoreboard.setpos(-300, 320)
scoreboard.write(points, font=('Arial', 30,))

player = Turtle()
player.hideturtle()
player.shape('turtle')
player.speed('slowest')
player.color('yellow')
player.setheading(90)
player.penup()
player.setx(-200)
player.showturtle()

# obstacle list
obstacle_speed_upper = 3
obstacles_upper = []

for _ in range(NUMBER_OBSTACLES_UPPER):
    obstacle = Turtle()
    obstacle.hideturtle()
    obstacle.shape('square')
    obstacle.turtlesize(12, 3)
    obstacle.speed('fastest')
    obstacle.color(choice(COLORS))

    obstacle.penup()
    xobs = randrange(-100, 280)
    yobs = randrange(145, 190)
    obstacle.setposition(xobs, yobs)

    obstacle.showturtle()

    obstacles_upper.append(obstacle)

# lower obstacles list
obstacle_speed_lower = 3
obstacles_lower = []

for _ in range(NUMBER_OBSTACLES_LOWER):
    obstacle = Turtle()
    obstacle.hideturtle()
    obstacle.shape('square')
    obstacle.turtlesize(12, 3)
    obstacle.speed('fastest')
    obstacle.color(choice(COLORS))

    obstacle.penup()
    xobs = randrange(-100, 280)
    yobs = randrange(160, 190)
    obstacle.setposition(xobs, -yobs)

    obstacle.showturtle()

    obstacles_lower.append(obstacle)

screen.onkeypress(playerup, 'space')
screen.listen()

move()

screen.mainloop()