import pygame
from bullet import Bullet
from enemy import Enemy
from pygame.sprite import *
from random import *
import sys
from time import sleep
def keydown(event, plane, bullets, screen, gameSet):
if event.key == pygame.K_SPACE:
spaceClick(bullets, gameSet, screen, plane)
if event.key == pygame.K_RIGHT:
plane.moveRight = True
if event.key == pygame.K_LEFT:
plane.moveLeft = True
if event.key == pygame.K_UP:
plane.moveUp = True
if event.key == pygame.K_DOWN:
plane.moveDown = True
if event.key == pygame.K_ESCAPE:
sys.exit()
def spaceClick(bullets, gameSet, screen, plane):
if len(bullets) <= gameSet.bulletCapacity:
newBullet = Bullet(screen, plane)
bullets.add(newBullet)
def keyup(event, plane):
if event.key == pygame.K_RIGHT:
plane.moveRight = False
if event.key == pygame.K_LEFT:
plane.moveLeft = False
if event.key == pygame.K_UP:
plane.moveUp = False
if event.key == pygame.K_DOWN:
plane.moveDown = False
def event(plane, bullets, screen, gameSet,stats,play_button):
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
keydown(event, plane, bullets, screen, gameSet)
elif event.type == pygame.KEYUP:
keyup(event, plane)
elif event.type ==pygame.MOUSEBUTTONDOWN:
mouse_x, mouse_y = pygame.mouse.get_pos()
check_play_button(play_button, mouse_x, mouse_y, stats)
def check_play_button(play_button,mouse_x,mouse_y,stats):
if play_button.rect.collidepoint(mouse_x,mouse_y):
pygame.mouse.set_visible(False)
stats.game_active=True
def creatEnemy(screen, enemies, gameSet, plane):
newEnemy = Enemy(screen)
enemyWidth = newEnemy.rect.width
enemyHeight = newEnemy.rect.height
numberx = countNum_x(gameSet, enemyWidth)
numbery = conuntNum_y(plane, gameSet, enemyHeight)
for numy in range(numbery + 1):
for numx in range(numberx + 1):
enemyCreate_xy(screen, numy, numx, enemyHeight, enemies, enemyWidth)
# 计算x轴能容纳多少敌机
def countNum_x(gameSet, enemyWidth):
enemyNumx = int((gameSet.height - enemyWidth * 2) / (enemyWidth * 2))
return enemyNumx
def conuntNum_y(plane, gameSet, enemyHeight):
enemyNumy = int((gameSet.height - plane.rect.height - 8 * enemyHeight) / (2 * enemyHeight))
return enemyNumy
# x轴和y轴结合,创建敌机组群
def enemyCreate_xy(screen, numy, numx, enemyHeight, enemies, enemyWidth):
newEnemy = Enemy(screen)
everyEnemy_x = enemyWidth + 2 * numx * enemyWidth
newEnemy.rect.x = everyEnemy_x
everyEnemy_y = enemyHeight + numy * enemyHeight
newEnemy.rect.y = everyEnemy_y
enemies.add(newEnemy)
def updateScreen(plane, bullets, gameSet, enemies, screen,play_button,stats,sbd):
plane.screen.blit(plane.image, plane.rect)
enemies.draw(screen)
sbd.show_score()
sbd.show_final_score()
# stats.level = 0
# sbd.prep_level()
sbd.level_show()
if stats.game_active==False:
sbd.prep_score()
sbd.prep_level()
stats.level = 0
stats.score=0
play_button.draw_button()
# for b in enemies.sprites():
# b.y+=gameSet.enemySpeed
# b.rect.top=b.y
# b.updateEnemy()
pygame.display.flip()
# def bulletRemove(bullets):
# for b in bullets.copy():
# if b.rect.bottom <= 0:
# bullets.remove(b)
# # print(bullets)
def check_bianyuan(gameSet, enemies):
for enemy in enemies.sprites():
if enemy.check_edges():
change_direction(gameSet,enemies)
break
# else:
# gameSet.enemyDirection *= -1
def change_direction(gameSet,enemies):
for enemy in enemies.sprites():
enemy.rect.y+=gameSet.enemydownSpeed
gameSet.enemyDirection*=-1
def enemy_update(enemies, gameSet,plane,stats,screen,bullets):
check_bianyuan(gameSet, enemies)
enemies.update(gameSet)
if pygame.sprite.spritecollideany(plane,enemies)!=None:
plane_hit(gameSet,stats,screen,plane,enemies,bullets)
check_enemy_bottom(gameSet, stats, screen, plane, enemies, bullets)
def plane_hit(gameSet,stats,screen,plane,enemies,bullets):
if stats.plane_left>0:
stats.plane_left-=1
enemies.empty()
bullets.empty()
creatEnemy(screen, enemies, gameSet, plane)
plane.plane_center()
sleep(1)
if stats.plane_left<=0:
gameSet.chushi()
pygame.mouse.set_visible(True)
stats.plane_left=gameSet.heartCount
stats.game_active=False
def bullet_update(bullets,gameSet, enemies, plane,screen,stats,sbd):
for a in bullets.sprites():
a.update(gameSet)
# bullets.update(gameSet)
for b in bullets.copy():
if b.rect.bottom <= 0:
bullets.remove(b)
print(bullets)
removeCount = pygame.sprite.groupcollide(bullets, enemies, True, True)
if removeCount:
for enemies in removeCount.values():
stats.score +=5*len(enemies)
sbd.prep_score ()
if stats.score>=stats.final_score:
stats.final_score=stats.score
sbd.prep_final_score()
else:
stats.final_score=stats.final_score
sbd.prep_final_score()
if len(enemies) == 0:
# bullets.empty()
# sbd.level_show()
gameSet.increase_speed()
stats.level += 1
sbd.prep_level()
creatEnemy(screen, enemies, gameSet, plane)
def check_enemy_bottom(gameSet,stats,screen,plane,enemies,bullets):
screen_rect=screen.get_rect()
for a in enemies.sprites():
if a.rect.bottom>screen_rect.bottom:
plane_hit(gameSet, stats, screen, plane, enemies, bullets)
break
没有合适的资源?快使用搜索试试~ 我知道了~
飞机大战PlaneGame.zip
共23个文件
py:9个
png:5个
xml:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 84 浏览量
2024-05-12
19:30:07
上传
评论
收藏 84KB ZIP 举报
温馨提示
五子棋游戏想必大家都非常熟悉,游戏规则十分简单。游戏开始后,玩家在游戏设置中选择人机对战,则系统执黑棋,玩家自己执白棋。双方轮流下一棋,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes
资源推荐
资源详情
资源评论
收起资源包目录
飞机大战PlaneGame.zip (23个子文件)
manualType.properties 10B
item.pdf 6B
PlaneGame-master
plane.py 1KB
gameSetting.py 628B
button.py 766B
bullet.py 469B
integral.py 2KB
.idea
PlaneGame.iml 398B
vcs.xml 183B
misc.xml 201B
inspectionProfiles
profiles_settings.xml 174B
modules.xml 270B
.gitignore 39B
rungame.py 2KB
game_qingkuang.py 230B
enemy.py 995B
images
dan.png 29KB
plane.jpg 29KB
bullet.png 794B
enemy.png 3KB
飞船.png 11KB
plane.png 17KB
CheckEvent.py 6KB
共 23 条
- 1
资源评论
枫蜜柚子茶
- 粉丝: 6345
- 资源: 4732
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功