import pygame from pygame.locals import * import time def key_control(hero_temp): # 获取事件,比如按键等 for event in pygame.event.get(): # 判断是否是点击了退出按钮 if event.type == QUIT: exit() # 判断是否是按下了键 elif event.type == KEYDOWN: # 检测按键是否是a或者left if event.key == K_a or event.key == K_LEFT: hero_temp.move_left() # 检测按键是否是d或者right elif event.key == K_d or event.key == K_RIGHT: hero_temp.move_right() # 检测按键是否是空格键 elif event.key == K_SPACE: hero_temp.fire() elif event.key == K_w or event.key == K_UP: hero_temp.move_up() elif event.key == K_s or event.key == K_DOWN: hero_temp.mocve_down() #飞机类 class herofly(object): def __init__(self,screen_temp): self.x=210 self.y=450 self.screen=screen_temp self.image= pygame.image.load("./feiji/hero1.png") self.bullets=[] #存储发射出的子弹 #显示 def display(self): self.screen.blit(self.image,(self.x,self.y)) for bullet in self.bullets: bullet.display() bullet.move() #移动 def move_left(self): self.x-=10 def move_right(self): self.x+=10 def move_up(self): self.y-=10 def mocve_down(self): self.y+=10 def fire(self): self.bullets.append(bullet(self.screen,self.x,self.y)) class bullet(object): def __init__(self,screen_temp,x,y): self.x = x+40 self.y = y-20 self.screen = screen_temp self.image = pygame.image.load("./feiji/bullet.png") def display(self): self.screen.blit(self.image,(self.x,self.y)) def move(self): self.y-=60 def main(): # 1. 创建窗口 screen = pygame.display.set_mode((480, 600), 0, 32) # 2. 创建一个背景图片 background = pygame.image.load("./feiji/background.png") #创建一个飞机图片 # hero=pygame.image.load("./feiji/hero1.png") hero=herofly(screen) while True: screen.blit(background, (0,0)) hero.display() pygame.display.update() #调用函数 key_control(hero) time.sleep(0.9) if __name__ == "__main__": main()