import pygame
import random
import math
#初始化界面
pygame.init()
screen = pygame.display.set_mode((800,600))
pygame.display.set_caption('BruceWayne27')
icon = pygame.image.load('ufo64.png')
pygame.display.set_icon(icon)
bgImg = pygame.image.load('bg.jpg')
#飞机
playerImg = pygame.image.load('player64.png')
playerX = 350
playerY = 500
playerStep = 0
#添加音乐
pygame.mixer.music.load('bg.mp3')
pygame.mixer.music.play(-1)
#射中音效
hitsound = pygame.mixer.Sound('hit.wav')
#Score
score = 0
font =pygame.font.Font('freesansbold.ttf',32)
def show_score():
text = f"Score:{score}"
score_render=font.render(text,True,(0,255,0))
screen.blit(score_render,(10,10))
Gameover=False
overfont =pygame.font.Font('freesansbold.ttf',64)
def check_is_over():
if Gameover:
text = "Game Over"
render = overfont.render(text,True,(255,255,0))
screen.blit(render, (200, 260))
#敌人
number_of_enemies = 10
class Enemy():
def __init__(self):
self.img = pygame.image.load('ufo64.png')
self.x = random.randint(200, 600)
self.y = random.randint(50, 260)
self.step = random.randint(2, 5)
def reset(self):#重置敌人
self.x = random.randint(200, 600)
self.y = random.randint(50, 200)
#计算距离
def distance(bx,by,ex,ey):
a = bx -ex
b = by -ey
return math.sqrt(a*a + b*b)
#子弹
class Bullet():
def __init__(self):
self.img = pygame.image.load('bullet.png')
self.x = playerX +26
self.y = playerY + 10
self.step = 10
def hit(self):
global score
for e in enemies:
if(distance(self.x , self.y , e.x , e.y) < 30):
#射中
hitsound.play()
bullets.remove(self)
e.reset()#重置敌人
score += 1
bullets = []#保存现有的子弹
enemies = []
for i in range(number_of_enemies):
enemies.append(Enemy())
def show_bullets():
for b in bullets:
screen.blit(b.img,(b.x,b.y))
b.hit()#是否击中目标
b.y -= b.step
if b.y < 0:
bullets.remove(b)
def show_enemy():
global Gameover
for e in enemies:
screen.blit(e.img,(e.x,e.y))
e.x += e.step
if (e.x > 736 or e.x < 0) :
e.step*=-1
e.y += 50
if(e.y > 450):
Gameover=True
enemies.clear()
#def process_events():
def move_player():
global playerX
playerX += playerStep
# 防止飞机出界
if playerX > 736:
playerX = 736
if playerX < 0:
playerX = 0
#游戏主循环
running = True
while running:
screen.blit(bgImg,(0,0))
show_score()
#process_events()
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 键盘事件控制 方向键
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
playerStep = 3
elif event.key == pygame.K_LEFT:
playerStep = -3
elif event.key==pygame.K_SPACE:
#发射子弹
#print("bbb")
bullets.append(Bullet())
if event.type == pygame.KEYUP:
playerStep = 0
screen.blit(playerImg,(playerX,playerY))
move_player()
show_enemy()
show_bullets()
check_is_over()
pygame.display.update()
没有合适的资源?快使用搜索试试~ 我知道了~
飞机大战小游戏 python py 需要import pygame库 pygame库需要自己安装 方向键控制 空格射击f.zip
共13个文件
png:7个
wav:1个
py:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 198 浏览量
2024-05-12
19:32:36
上传
评论
收藏 774KB 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
资源推荐
资源详情
资源评论
收起资源包目录
飞机大战小游戏 python py 需要import pygame库 pygame库需要自己安装 方向键控制 空格射击f.zip (13个子文件)
manualType.properties 10B
flyfight-py-master
ufo64.png 3KB
ufo72.png 3KB
fly.py 3KB
player96.png 5KB
ufo96.png 4KB
bg.jpg 79KB
bg.mp3 584KB
hit.wav 207KB
bullet.png 927B
player64.png 3KB
player72.png 4KB
item.pdf 6B
共 13 条
- 1
资源评论
枫蜜柚子茶
- 粉丝: 6696
- 资源: 4871
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功