飞机大战(1)
此阶段完成了飞机的移动 面向过程
面向过程(只写到移动)
导入库
1. 创建游戏窗口,用于显示游戏内容
2. 读取充当背景的图片
3. 读取飞机图片 创建飞机角色
4. 循环:
a) 背景,飞机在坐标的位置显示
b) 更新
c) 判断键盘是否按下
i. 键盘控制
主函数入口
面向对象
导入库
1、 定义飞机的类
定义飞机的方法
i. 初始x,y,image 变量
ii. 参数screen
iii. 飞机图片
iv. 存储发射出去的子弹对象的引用
b) Display
i. 显示飞机
ii. 遍历存储的子弹列表bullet_list[]
1. 子弹显示并移动
c) move_left
d) move_right
e) fire
2、 定义键盘控制的方法
a) 上下左右
b) 空格 发射子弹
3、 主程序
a) 创建游戏窗口,用于显示游戏内容
b) 读取充当背景的图片
c) 创建飞机角色
d) 循环
i. 背景图,飞机在坐标上显示
ii. 更新
4、主函数入口
源代码来自尚学堂 相信会越来越好
#!/usr/bin/python # -*- coding: UTF-8 -*- # 文件名: AirplaneWar.py # _author_ ='黑桃' import pygame from pygame.locals import * import time path='G:\\feiji\\' class HeroPlane(object): def __init__(self, screen_temp): self.x = 210 self.y = 700 self.screen = screen_temp self.image = pygame.image.load(path+"hero1.png") 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_left(self): self.x -= 5 def move_right(self): self.x += 5 def fire(self): self.bullet_list.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(path+"bullet.png") def display(self): self.screen.blit(self.image, (self.x, self.y)) def move(self): self.y -= 5 def key_control(hero_temp): # 获取事件,比如按键等 for event in pygame.event.get(): # 判断是否是点击了退出按钮 if event.type == QUIT: print("exit") exit() # 判断是否是按下了键 elif event.type == KEYDOWN: # 检测按键是否是a或者left if event.key == K_a or event.key == K_LEFT: print('left') hero_temp.move_left() # 检测按键是否是d或者right elif event.key == K_d or event.key == K_RIGHT: print('right') hero_temp.move_right() # 检测按键是否是空格键 elif event.key == K_SPACE: print('space') hero_temp.fire() def main(): # 1. 创建窗口 screen = pygame.display.set_mode((480, 852), 0, 16) # 2. 创建一个背景图片 background = pygame.image.load(path+"background.png") # 3. 创建一个飞机对象 hero = HeroPlane(screen) while True: screen.blit(background, (0, 0)) hero.display() pygame.display.update() key_control(hero) time.sleep(0.01) if __name__ == "__main__": main()