import pygame
import time
from pygame.locals import *
import random
class BasePlan(object):
def __init__(self,screen_temp,x,y,imageload):
self.x=x
self.y=y
self.screen=screen_temp
self.image=pygame.image.load(imageload)
self.bullet_list=[]#
def display(self):
#显示英雄飞机
self.screen.blit(self.image,(self.x,self.y))
#显示子弹
for bulet in self.bullet_list:
bulet.display()
if bulet.judge(): #如果越界删除
self.bullet_list.remove(bulet) #删除元素
bulet.move()
class BaseButten(object):
def __init__(self,screen_temp,temp_x,temp_y,imageload):
self.x = temp_x
self.y = temp_y
self.screen = screen_temp
self.image = pygame.image.load(imageload)
def display(self):
self.screen.blit(self.image, (self.x, self.y))
class HeroPlan(BasePlan):
def __init__(self,screen_temp):
BasePlan.__init__(self,screen_temp,205,500,r"F:\1a软件实验室 程序\飞机大战\feiji\hero1.png")
def move_left(self):
self.x=self.x-5
def move_right(self):
self.x=self.x+5
def plan_fire(self):
self.bullet_list.append(Butten(self.screen,self.x,self.y))
class Butten(BaseButten):
def __init__(self,screen_temp,temp_x,temp_y):
BaseButten.__init__(self,screen_temp,temp_x+40,temp_y-20,r"F:\1a软件实验室 程序\飞机大战\feiji\bullet.png")
def judge(self):
if self.y < 0:
return True
else:
return False
def move(self):
self.y=self.y-5
class Enemyplan(BasePlan):
def __init__(self,screen_temp):
BasePlan.__init__(self,screen_temp,0,0,r"F:\1a软件实验室 程序\飞机大战\feiji\enemy1.png")
self.flag=1
def move(self): #左右移动 碰撞检测
if self.flag==1:
self.x+=5
elif self.flag==2:
self.x-=5
if self.x > 410:
self.flag = 2
elif self.x < 0:
self.flag = 1
#self.plan_fire()
def plan_fire(self):
number=random.randint(1,100)
if number==8 or number==25 or number==75 or number ==100:
self.bullet_list.append(EnemyButten(self.screen, self.x, self.y))
class EnemyButten(BaseButten):
def __init__(self,screen_temp,temp_x,temp_y):
BaseButten.__init__(self,screen_temp,temp_x+25,temp_y+90,r"F:\1a软件实验室 程序\飞机大战\feiji\bullet1.png")
def judge(self):
if self.y >852:
return True
else:
return False
def move(self):
self.y=self.y+5
def key_read(plan,flag):
pygame.key.set_repeat(10)
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:
flag="left"
plan.move_left()
print('left')
# 检测按键是否是d或者right
elif event.key == K_d or event.key == K_RIGHT:
flag="right"
plan.move_right()
print('right')
# 检测按键是否是空格键
elif event.key == K_SPACE:
plan.plan_fire()
flag="fire"
print('space')
if flag=="right":
plan.move_right()
if flag == "left":
plan.move_left()
if flag=="fire":
plan.plan_fire()
return flag
def main():
#创建窗口
screen=pygame.display.set_mode((480,850),0,32)
#创建背景图片
background=pygame.image.load(r"F:\1a软件实验室 程序\飞机大战\feiji\background.png")
#创建飞机图片
plan = HeroPlan(screen)
enemyplan=Enemyplan(screen)
pygame.key.set_repeat(10)
flag="0"
while True:
#确定图片 显示的坐标
screen.blit(background,(0,0))
plan.display()
enemyplan.display()
enemyplan.move()
enemyplan.plan_fire()
#显示到屏幕
pygame.display.update()
flag=key_read(plan,flag)
time.sleep(0.01)
if __name__=="__main__":
main()
飞机大战(基类)
最新推荐文章于 2022-05-27 16:40:28 发布