第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

當(dāng)我射擊時(shí)烏龜停止

當(dāng)我射擊時(shí)烏龜停止

MMTTMM 2021-11-30 10:35:02
我遇到了一個(gè)問題,即我射擊時(shí)敵方烏龜會(huì)停下來(lái)。我對(duì) python 比較陌生,所以我知道我的代碼很糟糕。我似乎無(wú)法發(fā)現(xiàn)為什么會(huì)發(fā)生這種情況,但我假設(shè)它與 while 循環(huán)有關(guān)。這是代碼:(我添加了注釋,因此很容易跳到其中的重要部分)import turtleimport os#wn is window#bp = borderbullet = 'ready'#screen setupwn = turtle.Screen()wn.bgcolor('black')wn.title('SPACE.INVADERS')#borderbp = turtle.Turtle()bp.speed(0)bp.color('green')bp.penup()bp.setposition(-300,-300)bp.pendown()count=0while count != 5:    count= (count+1)    bp.fd(600)    bp.lt(90)bp.hideturtle()#playerp = turtle.Turtle()p.color('red')p.shape('triangle')p.penup()p.speed(0)p.setposition(0,-250)p.setheading(90)#enemye = turtle.Turtle()e.penup()e.speed(0)e.shape('square')e.shapesize(1.25,1.25)e.color('orange')e.setpos(-250,250)e.speed(1)#p = player#ps = player speedps = 15#moving left and rightdef left_mov():    x = p.xcor()    x -= ps    p.setx(x)def right_mov():    x = p.xcor()    x += ps    p.setx(x)#shootingdef shoot():    global bullet    if bullet == 'ready':        bullet = 'fire'        shot= turtle.Turtle()        shot.penup()        shot.speed(0)        shot.goto(p.pos())        shot.color('white')        shot.shape('triangle')        shot.shapesize(0.5)        shot.lt(90)        shot.speed(1)        shot.fd(550)        bullet = 'ready'#bindingsturtle.listen()turtle.onkey(left_mov, 'Left')turtle.onkey(right_mov, 'Right')turtle.onkey(shoot, 'space')#enemy movementwhile True:    e.fd(500)    e.rt(90)    e.fd(25)    e.rt(90)    e.fd(500)    e.lt(90)    e.fd(25)    e.lt(90)
查看完整描述

1 回答

?
瀟湘沐

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個(gè)贊

我假設(shè)它與 while 循環(huán)有關(guān)


是的,它不應(yīng)該在那里!在像烏龜這樣的事件驅(qū)動(dòng)的世界中,永遠(yuǎn)不應(yīng)該有while True:循環(huán)。相反,我們需要一個(gè)定時(shí)事件,它定期觸發(fā),對(duì)運(yùn)動(dòng)中的對(duì)象(敵人和子彈)進(jìn)行增量更新,使它們看起來(lái)同時(shí)移動(dòng)。以下是我使用計(jì)時(shí)器事件重新編寫的代碼:


from turtle import Screen, Turtle


# moving left and right

def left_move():

    player.setx(player.xcor() - player_speed)


def right_move():

    player.setx(player.xcor() + player_speed)


# screen setup

screen = Screen()

screen.bgcolor('black')

screen.title('SPACE.INVADERS')


# border

border = Turtle(visible=False)

border.speed('fastest')

border.color('green')


border.penup()

border.setposition(-300, -300)

border.pendown()


for _ in range(4):

    border.forward(600)

    border.left(90)


# player

player = Turtle('triangle')

player.speed('fastest')

player.color('red')


player.penup()

player.setposition(0, -250)

player.setheading(90)


player_speed = 15


# enemy

enemy = Turtle('square')

enemy.speed('fast')

enemy.shapesize(1.25)

enemy.color('orange')

enemy.penup()


enemy.setpos(-250, 250)


enemy_speed = 6  # enemy speed

enemy_direction = 1  # enemy direction


# bullet

bullet = Turtle('triangle', visible=False)

bullet.speed('fastest')

bullet.color('white')

bullet.shapesize(0.5)

bullet.penup()

bullet.left(90)


bullet_speed = 9  # bullet speed


# shooting


def shoot():

    if not bullet.isvisible():

        bullet.goto(player.position())

        bullet.showturtle()


def move():

    global enemy_direction


    if bullet.isvisible():

        if bullet.ycor() > 275:

            bullet.hideturtle()

        else:

            bullet.forward(bullet_speed)


    # enemy movement


    enemy.forward(enemy_direction * enemy_speed)

    enemy.settiltangle(enemy.tiltangle() + 3)  # just for fun


    x, y = enemy.position()


    if x > 250 or x < -250:

        enemy_direction *= -1

        enemy.sety(y - 25)


    screen.ontimer(move, 50)


# bindings

screen.onkey(left_move, 'Left')

screen.onkey(right_move, 'Right')

screen.onkey(shoot, 'space')

screen.listen()


move()


screen.mainloop()

這應(yīng)該為您提供前進(jìn)所需的基本功能,并添加碰撞檢測(cè)(子彈到敵人、敵人到玩家、玩家到墻壁)和得分。


另請(qǐng)注意,海龜是全局實(shí)體,因此每次需要時(shí)都創(chuàng)建一個(gè)新項(xiàng)目符號(hào)是一個(gè)壞主意。即使您最終允許重疊項(xiàng)目符號(hào),也要為此目的保留一組可重復(fù)使用的項(xiàng)目符號(hào)。


查看完整回答
反對(duì) 回復(fù) 2021-11-30
  • 1 回答
  • 0 關(guān)注
  • 182 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)