'''
1. 创建窗口
2.加载图片
3. 贴图
4. 刷新界面
5:英雄飞机:方法:飞机显示,飞机移动
6:键盘事件
7:英雄飞机发射子弹方法--fire:
子弹类
属性
方法:显示、向上发射
8:销毁子弹超出部分---删除子弹
删除子弹方法
'''
import pygame
from pygame.locals import *
from sys import exit
import time
width = 512
height = 768
class Bullet:
'''子弹类'''
def __init__(self,img_path,x,y,window):
self.img = pygame.image.load(img_path)
self.x = x
self.y = y
self.window = window
def display(self):
'''子弹显示'''
self.window.blit(self.img,(self.x,self.y))
def move_up(self):
self.y -= 5
class Hero_Plane:
'''英雄飞机'''
def __init__(self,img_path,x,y,window):
#加载英雄飞机图
self.img = pygame.image.load(img_path)
#初始化位置
self.x = x
self.y = y
self.window = window
self.bullets = []
def display(self):
#贴图英雄飞机
self.window.blit(self.img,(self.x,self.y))
def move_left(self):
if self.x >= 0:
self.x -= 5
def move_right(self):
if self.x <= 512 - 120:
self.x += 5
def fire(self):
'''开火方法'''
bullet = Bullet("./res/bullet_9.png",self.x+50,self.y-31,self.window)
'''创建子弹类'''
#bullet.display()
self.bullets.append(bullet)#存储子弹
def display_bullet(self):
#bullet_list = self.bullets #去除所有子弹
del_bullets = [] #定义要删除子弹
for bullet in self.bullets:
if bullet.y >= -31:
bullet.display()
bullet.move_up()
else:
del_bullets.append(bullet)#记录将要删除的子弹
for bullet in del_bullets:
self.bullets.remove(bullet)
print("len=",len(self.bullets))
def main():
#创建窗口
window = pygame.display.set_mode((width,height))
#标题
pygame.display.set_caption("飞机大战")
#加载背景图片
image = pygame.image.load("./res/img_bg_level_1.jpg")
#创建英雄飞机类
hero_plane = Hero_Plane("./res/hero2.png",196,600,window)
while True:
# 贴图(指定路径,将图片绘制到窗口)
window.blit(image, (0, 0))
#调用英雄飞机方法,显示飞机
hero_plane.display()
'''
#显示飞机如果有子弹直接可以发射
# bullet_list = hero_plane.bullets#去除所有子弹
# for bullet in bullet_list:
# bullet.display()
# bullet.move_up()
'''
hero_plane.display_bullet()
# 更新
pygame.display.update()
#获取事件
for event in pygame.event.get():
#鼠标点击关闭窗口事件
if event.type == QUIT:
print('退出窗口')
exit()
#键盘事件
if event.type == KEYDOWN:
if event.key == K_SPACE:
print("space")
'''调用英雄飞机开火方法'''
hero_plane.fire()
#长安键盘事件
pressed_key = pygame.key.get_pressed()
if pressed_key[K_a] or pressed_key[K_LEFT]:
hero_plane.move_left()
if pressed_key[K_d] or pressed_key[K_RIGHT]:
hero_plane.move_right()
time.sleep(0.05)
if __name__ == '__main__':
main()
|
模板简介:该模板名称为【python飞机大战小游戏源代码免费下载】,大小是,文档格式为.,推荐使用打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Python】栏目查找您需要的精美模板。