python学习日记第五天(飞机大战)

main.py

import pygame
import time
from pygame.locals import *
from plane import *

def start(): #开始游戏
#创建一个窗口,用来显示内容
screen=pygame.display.set_mode((480,890),0,32)
#创建一个和窗口大小的图片,用来充当背景
image_file_path='./beijing.jpg'
background=pygame.image.load(image_file_path).convert() #
#创建一个飞机的对象
hero_plane=HeroPlane(screen,"hero")
enemy_plane=EnemyPlane(screen,"enemy")
#把背景图片放到窗口中显示
while True:
screen.blit(background,(0,0))
hero_plane.display()
enemy_plane.display()
enemy_plane.move()
enemy_plane.launch_bullet()
#判断是否点击了退出按钮
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")
hero_plane.move_left()
elif event.key == K_d or event.key == K_RIGHT:
print("right")
hero_plane.move_right()
elif event.key == K_w or event.key == K_UP:
print("up")
hero_plane.move_up()
elif event.key == K_s or event.key == K_DOWN:
print("down")
hero_plane.move_down()
elif event.key == K_SPACE:
print("space")
hero_plane.launch_bullet()
time.sleep(0.01)
pygame.display.update()

if __name__=='__main__':
start()



plane.py
import pygame
import random
from bullet import*
class Plane(object):
def __init__(self,screen,name):
#设置飞机的默认位置
self.name=name
#设置要显示内容的窗口
self.screen =screen
#用来保存玩家的图片
#根据图像名称生成飞机图片
self.image=pygame.image.load(self.image_name).convert()
self.bullet_list=[]
def display(self):
self.screen.blit(self.image,(self.x,self.y))
need_def_list=[]
for i in self.bullet_list:
if i.judge():
need_def_list.append(i)
for i in need_def_list:
self.bullet_list.remove(i)
for bullet in self.bullet_list:
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 move_down(self):
self.y+=10
def launch_bullet(self):
new_bullet=PublicBullet(self.x,self.y,self.screen,self.name)
self.bullet_list.append(new_bullet)
class HeroPlane(Plane):
def __init__(self,screen,name):
#设置飞机的默认位置
self.x=230
self.y=600
self.image_name = "./11/1 (13).png"
super().__init__(screen,name)
class EnemyPlane(Plane):
def __init__(self,screen,name):
self.x=0
self.y=0
self.image_name = "./11/1 (6).png"
super().__init__(screen,name)
self.direction="right"
def move(self):
if self.direction == "right":
self.x+=2
elif self.direction=="left":
self.x-=2
if self.x>480-50:
self.direction="left"
elif self.x<0:
self.direction="right"
def launch_bullet(self):
number=random.randint(1,100)
if number == 88:
super().launch_bullet()

bullet.py
import pygame
class PublicBullet(object):
def __init__(self,x,y,screen,plane_name):
self.screen=screen
self.plane_name=plane_name
self.image = pygame.image.load("./11/1 (8).png").convert()
if plane_name=="hero":
self.x = x + 40
self.y = y - 20
elif plane_name=="enemy":
self.x=x+30
self.y=y+30
def move(self):
if self.plane_name == "hero":
self.y -= 2
elif self.plane_name == "enemy":
self.y +=2
def display(self):
self.screen.blit(self.image,(self.x,self.y))
def judge(self):
if self.y<0:
return True
else:
return False

# class Bullet(object):
# def __init__(self,x,y,screen):
# self.x=x+40
# self.y=y-20
# self.screen=screen
# self.image=pygame.image.load("./11/1 (8).png").convert()
# def display(self):
# self.screen.blit(self.image,(self.x,self.y))
# def move(self):
# self.y-=2
# def judge(self):
# if self.y<0:
# return True
# else:
# return False
# class EnemyBullet(object):
# def __init__(self,x,y,screen):
# self.x=x+30
# self.y=y+30
# self.screen=screen
# self.image=pygame.image.load("./11/1 (8).png").convert()
# def move(self):
# self.y+=2
# def display(self):
# self.screen.blit(self.image,(self.x,self.y))
# def judge(self):
# if self.y > 890:
# return True
# else:
# return False

猜你喜欢

转载自www.cnblogs.com/hz-garden/p/12815510.html