import pygame
import sys
import random
import feiji
import diji
def key_kong(hero):
for shi_jian in pygame.event.get():
if shi_jian.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif shi_jian.type == pygame.KEYDOWN:
if shi_jian.key == pygame.K_a :
hero.move_left()
elif shi_jian.key == pygame.K_d :
hero.move_right()
elif shi_jian.key == pygame.K_j:
hero.fashe()
elif shi_jian.key == pygame.K_b:
hero.zhanji_boom()
def zhu():
pygame.init()
chuangkou = pygame.display.set_mode((400, 700))
pygame.display.set_caption("飞机大战")
bei_jing = pygame.image.load("图片/background.png")
feiji1 = feiji.feiji(chuangkou)
diji_ku = []
pygame.key.set_repeat(1,1)
while True:
chuangkou.blit(bei_jing, (0, 0))
feiji1.show()
b = random.randint(1,300)
if b == 5:
diji_ku.append(diji.diji(chuangkou))
for diji1 in diji_ku:
diji1.show()
diji1.move()
diji1.fashe()
if diji1.yuejie():
diji_ku.remove(diji1)
for diji2 in diji_ku:
if diji2.x<feiji1.x+100 and diji2.x+51>feiji1.x:
if diji2.y<feiji1.y+124 and diji2.y+39>feiji1.y:
feiji1.zhanji_boom()
key_kong(feiji1)
print("---")
pygame.display.update()
if __name__ == '__main__':
zhu()
import pygame
import zidan
import random
"""
敌机类:
属性:飞机位置 ,飞机图片,飞机名字,飞机窗口
方法:移动,开火
"""
class diji():
def __init__(self,ck):
self.name="diji"
self.x = random.randint(0,400)
self.y = 0
self.picture = pygame.image.load("图片/enemy-1.gif")
self.zidan_ku=[]
self.chuangkou = ck
self.fang_xiang = "right"
def show(self):
self.chuangkou.blit(self.picture,(self.x,self.y))
for dan_ge_zidan in self.zidan_ku:
dan_ge_zidan.show()
dan_ge_zidan.move__djfd()
if dan_ge_zidan.yuejie2():
self.zidan_ku.remove(dan_ge_zidan)
def move(self):
self.y += 1
def fashe(self):
a = random.randint(1,100)
if a==2:
self.zidan_ku.append(zidan.zidan(self.chuangkou, self.x + 0, self.y +0, "图片/bullet.png"))
def yuejie(self):
if self.y > 700:
return True
else:
return False
import pygame
import zidan
import time
import sys
class feiji():
def __init__(self, ck):
self.name = "hero"
self.x = 200
self.y = 400
self.chuangkou = ck
self.picture = pygame.image.load("图片/hero1.png")
self.zidan_ku = []
self.boom = False
self.boom_picture = []
self.jiaru_boom_picture()
self.boom_picture_num = 0
self.image_index = 0
def jiaru_boom_picture(self):
self.boom_picture.append(pygame.image.load("图片/hero_blowup_n1.png"))
self.boom_picture.append(pygame.image.load("图片/hero_blowup_n2.png"))
self.boom_picture.append(pygame.image.load("图片/hero_blowup_n3.png"))
self.boom_picture.append(pygame.image.load("图片/hero_blowup_n4.png"))
def show(self):
if self.boom == True:
self.chuangkou.blit(self.boom_picture[self.boom_picture_num], (self.x, self.y))
self.image_index += 1
if self.image_index == 70:
self.image_index = 0
self.boom_picture_num += 1
if self.boom_picture_num > 3:
time.sleep(2)
pygame.quit()
sys.exit()
else:
self.chuangkou.blit(self.picture, (self.x, self.y))
for dan_ge_zidan in self.zidan_ku:
dan_ge_zidan.show()
dan_ge_zidan.move__fd()
if dan_ge_zidan.yuejie():
self.zidan_ku.remove(dan_ge_zidan)
def move_left(self):
self.x -= 20
if self.x < -25:
self.x = 5
def move_right(self):
self.x += 20
if self.x >= 330:
self.x = 330
def fashe(self):
self.zidan_ku.append(zidan.zidan(self.chuangkou, self.x + 48, self.y - 10, "图片/bullet.png"))
self.zidan_ku.append(zidan.zidan(self.chuangkou, self.x + 14, self.y + 25, "图片/bullet1.png"))
self.zidan_ku.append(zidan.zidan(self.chuangkou, self.x + 80, self.y + 25, "图片/bullet2.png"))
def zhanji_boom(self):
self.boom = True
import pygame
class zidan():
def __init__(self, ck, x, y, zidan_tupian):
self.x = x
self.y = y
self.window = ck
self.picture = pygame.image.load(zidan_tupian)
def show(self):
self.window.blit(self.picture, (self.x, self.y))
def move__fd(self):
self.y = self.y - 1
def move__djfd(self):
self.y = self.y + 2
def yuejie(self):
if self.y < -100:
return True
else:
return False
def yuejie2(self):
if self.y > 700:
return True
else:
return False