用pygame实现飞机大战出了点bug,敌机不会回头(已设置方向参数)

新手上路,请多包涵

import pygame
from pygame.locals import *
import time

class HeroPlane(object):

def __init__(self, screen_temp):
    self.x=210
    self.y=600
    self.image=pygame.image.load('./feiji/hero1.png')
    self.screen=screen_temp
    self.bullet_list=[]

def display(self):
    self.screen.blit(self.image,(self.x,self.y))
    for bullet in self.bullet_list:
        bullet.display()
        bullet.move()

def move_fire(self):
    for event in pygame.event.get():
        if event.type==QUIT:
            print('exit')
            exit()
        elif event.type==KEYDOWN:
            if event.key==K_a or event.key==K_LEFT:
                print('left')
                self.x-=10
            elif event.key==K_d or event.key==K_RIGHT:
                print('rignt')
                self.x+=10
            elif event.key==K_w or event.key==K_UP:
                print('up')
                self.y-=10
            elif event.key==K_s or event.key==K_DOWN:
                print('down')
                self.y+=10
            elif event.key==K_SPACE:
                self.bullet_list.append(Bullet(self.screen,self.x,self.y))
                print('space')

class EnemyPlane(object):

def __init__(self, screen_temp):
    self.x=0
    self.y=0
    self.image=pygame.image.load('./feiji/enemy0.png')
    self.screen=screen_temp
    self.direction='right'
    #self.bullet_list=[]

def display(self):
    self.screen.blit(self.image,(self.x,self.y))

def move(self):

    if self.x<0:
        self.direction=='right'
    elif self.x>200:
        self.direction=='left'

    if self.direction=='right':
        self.x+=5
    elif self.direction=='left':
        self.x-=5

class Bullet(object):


def __init__(self, screen_temp,x,y):
    self.x=x+40
    self.y=y-20
    self.image=pygame.image.load('./feiji/bullet.png')
    self.screen=screen_temp

def display(self):
    self.screen.blit(self.image,(self.x,self.y))

def move(self):
    self.y-=20
    

def main():

screen=pygame.display.set_mode((480,752),0,32)
background=pygame.image.load('./feiji/background.png')
hero=HeroPlane(screen)
enemy=EnemyPlane(screen)

while True:
    screen.blit(background,(0,0))
    hero.display()
    enemy.display()
    enemy.move()
    pygame.display.update()
    hero.move_fire()
    time.sleep(0.05)
    #if x>400:
        #exit()

if __name__=='__main__':

main()

敌机会一直往右走,不会回头。方向参数我也设置了,为什么会这样

阅读 2.8k
1 个回答

应该是

self.direction='left'
self.direction='right'

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题