基本信息
源码名称:python开发的飞机大战 游戏源码
源码大小:35.38M
文件格式:.zip
开发语言:Python
更新时间:2018-06-25
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
飞机大战
飞机大战
import pygame
import sys
from pygame.locals import *
from random import *
import traceback
import plane
import bullet
import enemy
def main():
pygame.init()
pygame.mixer.init()
life_image = 'image/life.png'
bg_music = 'music/game_music.ogg'
background = "image/background.png"
bomb_music = 'music/use_bomb.wav'
about_me = 'image/about_me.png'
about_me_image = pygame.image.load(about_me)
about_me_rect = about_me_image.get_rect()
MyLife = pygame.image.load(life_image)
Mybackground1 = pygame.image.load(background)
life_rect = MyLife.get_rect()
bg_size = 480, 700
screen = pygame.display.set_mode(bg_size)
pygame.display.set_caption("飞机大战")
MyBullet = []
Enemy = []
kill = []
score = 0
score_font = pygame.font.Font("font/font.ttf", 36)
num = 5
num1 = 0
num2 = 0
num3 = 0
harm = 1
pygame.key.set_repeat(100, 100)
clock = pygame.time.Clock()
MyPlane = plane.Plane(bg_size)
Enemy_group = pygame.sprite.Group()
bg_music = pygame.mixer.Sound(bg_music)
bomb_sound = pygame.mixer.Sound(bomb_music)
bg_music.play(-1)
super_Bullet = False
running = True
again = False
My_Protection_cover = plane.Protection_cover(bg_size)
paused = False
pause_nor_image = pygame.image.load("image/pause_nor.png").convert_alpha()
pause_pressed_image = pygame.image.load("image/pause_pressed.png").convert_alpha()
resume_nor_image = pygame.image.load("image/resume_nor.png").convert_alpha()
resume_pressed_image = pygame.image.load("image/resume_pressed.png").convert_alpha()
again_image = pygame.image.load("image/again.png").convert_alpha()
gameover_image = pygame.image.load("image/gameover.png").convert_alpha()
me_image = pygame.image.load('image/me.png').convert_alpha()
me_rect = me_image.get_rect()
gameover_rect = gameover_image.get_rect()
again_rect = again_image.get_rect()
paused_rect = pause_nor_image.get_rect()
paused_rect.left, paused_rect.top = bg_size[0] - paused_rect.width - 10, 10
paused_image = pause_nor_image
tnt_num = 10
while running:
if MyPlane.dead == True:
MyPlane = plane.Plane(bg_size)
MyPlane.not_dead = not MyPlane.not_dead
MyPlane.life_num = oldLife
again = True
num4 = 0
for event in pygame.event.get():
if event.type == QUIT:
bg_music.stop()
pygame.quit()
sys.exit()
if event.type == KEYDOWN and MyPlane.dead == False:
if event.key == K_TAB:
MyPlane.not_dead = not MyPlane.not_dead
if event.key == K_RETURN:
if harm < 11:
harm = 1
if harm >= 11 :
harm = 1
if event.key == K_SPACE:
if tnt_num > 0:
bomb_sound.play()
for each in Enemy:
kill.append(each)
score = each.score
Enemy.clear()
Enemy_group = pygame.sprite.Group()
tnt_num -= 1
if event.type == MOUSEBUTTONDOWN:
if event.button == 1 and paused_rect.collidepoint(event.pos):
paused = not paused
if paused:
bg_music.stop()
else:
bg_music.play(-1)
if event.type == MOUSEMOTION:
if paused_rect.collidepoint(event.pos) == True:
if paused == True:
paused_image = resume_pressed_image
if paused == False:
paused_image = pause_pressed_image
else:
if paused == True:
paused_image = resume_nor_image
if paused == True:
paused_image = pause_nor_image
screen.blit(Mybackground1, (0, 0))
key = pygame.key.get_pressed()
if MyPlane.dead == False and paused == False:
if key[K_w] or key[K_UP]:
MyPlane.move([0, -1])
if key[K_s] or key[K_DOWN]:
MyPlane.move([0, 1])
if key[K_a] or key[K_LEFT]:
MyPlane.move([-1, 0])
if key[K_d] or key[K_RIGHT]:
MyPlane.move([1, 0])
if key[K_j] or key[K_1]:
if num1 == num:
temp = bullet.Bullet(MyPlane.rect.centerx, MyPlane.rect.top, harm)
music = pygame.mixer.Sound(temp.music)
music.play()
MyBullet.insert(0, temp)
num1 = 0
num1 = 1
for each in Enemy:
if each.disappear == True:
Enemy.remove(each)
elif paused == False:
each.move()
if each.Enemytype == 'BigEnemy' and each.hit == False:
if num3 >= 5:
screen.blit(each.default_image[0], each.rect)
elif num3 <= 5:
screen.blit(each.default_image[1], each.rect)
elif each.hit == False:
screen.blit(each.default_image[0], each.rect)
else:
screen.blit(each.hit_image[0], each.rect)
for each in MyBullet:
if each.disappear == True:
MyBullet.remove(each)
elif paused == False:
each.move()
screen.blit(each.image, each.rect)
for x in MyBullet:
for y in Enemy:
if pygame.sprite.collide_rect(x, y):
MyBullet.remove(x)
y.life -= harm
break
if MyPlane.not_dead == False:
enemies_down = pygame.sprite.spritecollide\
(MyPlane, Enemy_group, False, pygame.sprite.collide_mask)
else:
enemies_down = pygame.sprite.spritecollide\
(My_Protection_cover, Enemy_group, False, pygame.sprite.collide_mask)
if enemies_down:
if MyPlane.not_dead == False and MyPlane.dead == False:
MyPlane.life_num -= 1
oldLife = MyPlane.life_num
kill.append(MyPlane)
MyPlane.dead = True
tnt_num = 10
for each in enemies_down:
Enemy_group.remove(each)
score = each.score
try:
Enemy.remove(each)
except:
pass
each.dead()
kill.append(each)
if (num2 % 30) == 0 and num2 != 0:
x = randint(0, bg_size[0])
temp = enemy.SmallEnemy(bg_size)
temp.init_image()
temp.init_pos(randint(0, bg_size[0]), 0)
Enemy.append(temp)
Enemy_group.add(temp)
if (num2 % 90) == 0 and num2 != 0:
x = randint(0, bg_size[0])
temp = enemy.MidEnemy(bg_size)
temp.init_image()
temp.init_pos(randint(0, bg_size[0]), 0)
Enemy.insert(0, temp)
Enemy_group.add(temp)
if (num2 % 250) == 0 and num2 != 0:
x = randint(0, bg_size[0])
temp = enemy.BigEnemy(bg_size)
temp.init_image()
temp.init_pos(randint(0, bg_size[0]), 0)
Enemy.append(temp)
Enemy_group.add(temp)
num2 = 0
for k in kill:
if len(k.dead_image) <= 0:
kill.remove(k)
continue
else:
screen.blit(k.dead_image[0], k.rect)
del k.dead_image[0]
for each in Enemy:
if each.life <= 0:
each.dead()
Enemy.remove(each)
Enemy_group.remove(each)
kill.append(each)
score = each.score
continue
if each.life <= each.hitLife / 2 and each.hit == False:
each.hit = True
if num3 >= 10:
num3 = 0
num2 = 1
num3 = 1
if MyPlane.not_dead == True and paused == False:
My_Protection_cover.move\
(MyPlane.rect.centerx,MyPlane.rect.centery)
screen.blit(\
My_Protection_cover.image,\
My_Protection_cover.rect)
if MyPlane.dead == False:
if num3 <= 5:
screen.blit(MyPlane.default_image[0], MyPlane.rect)
elif num3 > 5:
screen.blit(MyPlane.default_image[1], MyPlane.rect)
score_text = score_font.render("Score : %s" % str(score), True, (255, 0, 0))
screen.blit(score_text, (10, 5))
for i in range(0, MyPlane.life_num):
screen.blit(MyLife, (0 (life_rect.w * i),bg_size[1]-life_rect.h))
if MyPlane.life_num <= 0:
game_over_text = score_font.render\
("Game Over" , True, (0, 0, 0))
game_over_rect = game_over_text.get_rect()
screen.blit(Mybackground1, (0, 0))
Enemy.clear()
running = False
bg_music.stop()
is_about_me = False
again_rect.left, again_rect.top =\
((bg_size[0]- again_rect.width) // 2, bg_size[1]//2-gameover_rect.height)
gameover_rect.left , gameover_rect.top =\
((bg_size[0] - gameover_rect.width) // 2, bg_size[1]//2)
about_me_rect.left, about_me_rect.top = \
((bg_size[0] - about_me_rect.width) // 2, bg_size[1]//2 about_me_rect.height)
me_rect.left ,me_rect.top = (bg_size[0] - me_rect.width)//2, (bg_size[1]//2-me_rect.height-about_me_rect.height)
while True:
for event in pygame.event.get():
if event.type == QUIT:
bg_music.stop()
pygame.quit()
sys.exit()
if event.type == MOUSEBUTTONDOWN:
pos = pygame.mouse.get_pos()
if again_rect.left < pos[0] < again_rect.right and \
again_rect.top < pos[1] < again_rect.bottom:
main()
elif gameover_rect.left < pos[0] < gameover_rect.right and \
gameover_rect.top < pos[1] < gameover_rect.bottom:
pygame.quit()
sys.exit()
elif about_me_rect.left < pos[0] < about_me_rect.right and \
about_me_rect.top < pos[1] < about_me_rect.bottom:
is_about_me = not is_about_me
game_over_rect = game_over_text.get_rect()
screen.blit(Mybackground1, (0, 0))
screen.blit\
(game_over_text,((bg_size[0] - game_over_rect.width) // 2, bg_size[1]//2-100))
if is_about_me == True:
screen.blit(me_image, me_rect)
screen.blit(score_text,(0, 10))
screen.blit(again_image, again_rect)
screen.blit(gameover_image, gameover_rect)
screen.blit(about_me_image, about_me_rect)
pygame.display.flip()
clock.tick(60)
if again == True:
num4 = 1
if num4 == 600:
del num4
again = False
MyPlane.not_dead = False
pos = pygame.mouse.get_pos()
if paused_rect.left < pos[0] < paused_rect.right and \
paused_rect.top < pos[1] < paused_rect.bottom:
if paused == True:
paused_image = resume_pressed_image
if paused == False:
paused_image = pause_pressed_image
else:
if paused == True:
paused_image = resume_nor_image
if paused == False:
paused_image = pause_nor_image
screen.blit(paused_image, paused_rect)
pygame.display.flip()
clock.tick(60)
if __name__ == '__main__':
try:
main()
except SystemExit:
pass
except:
traceback.print_exc()
pygame.quit()
input()