Python利用pygame实现飞机大战游戏

这篇具有很好参考价值的文章主要介绍了Python利用pygame实现飞机大战游戏。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章目录:

一:运行效果

1.演示

2.思路和功能

二:代码

文件架构

Demo


必备知识:python图形化编程pygame游戏模块

一:运行效果

1.演示

效果图◕‿◕✌✌✌

Python利用pygame实现飞机大战游戏运行演示


参考:【Python游戏】1小时开发飞机大战游戏-Pygame版本(1小时40分钟)

博主提取资源: 提取

2.思路和功能

通过方向键移动飞机,按空格键射出子弹,击毁迎面而来的敌机获取积分



在主循环内调用封装的函数对象

二:代码

文件架构

Python利用pygame实现飞机大战游戏,# Python,pygame,游戏,python文章来源地址https://www.toymoban.com/news/detail-844814.html

Demo

import pygame		#pip install pygame
import random		#随机
import math 		#引入数学模块

#------------------------------------------------------------------#初始化界面
pygame.init()
screen = pygame.display.set_mode((800, 600))		#屏幕宽和高
pygame.display.set_caption('飞机大战')				#设置标题
# 引入UFO游戏左上角的游戏图标图片
icon = pygame.image.load('ufo.png')					#外部加载图像
pygame.display.set_icon(icon)						#设置左上角的游戏图标,图标尺寸大小为32*32
# 背景图片
bgImg = pygame.image.load('bg.png')
#------------------------------------------------------------------#初始化界面

#------------------------------------------------------------------#添加音乐音效
#背景音乐
pygame.mixer.music.load('bg.wav')
pygame.mixer.music.play(-1) #单曲循环
#射中音效
bao_sound = pygame.mixer.Sound('exp.wav')
#------------------------------------------------------------------#添加音乐音效

#------------------------------------------------------------------#引入飞机图片
playerImg = pygame.image.load('player.png')
playerX = 400 	#玩家的X坐标
playerY = 500 	#玩家的Y坐标
playerStep = 0 	#玩家移动的速度
#------------------------------------------------------------------#引入飞机图片

#------------------------------------------------------------------#分数
# 初始化分数
score = 0
# 字体	自带的
font = pygame.font.Font('freesansbold.ttf', 32)
#font = pygame.font.SysFont('simsunnsimsun',32) #宋体

# 显示分数
def show_score():
	text = f'Score: {score}'
	# 渲染文本的 Surface 对象
	score_render = font.render(text, True, (255,0,0))
	# 将一个图像(Surface 对象)绘制到另一个图像上
	screen.blit(score_render, (10,10))
#------------------------------------------------------------------#分数

#------------------------------------------------------------------#游戏结束
# 默认是开启游戏的
is_over = False
# 字体
over_font = pygame.font.Font('freesansbold.ttf', 64)
# 判断游戏是否结束
def check_is_over():
	if is_over:
		text = "Game Over"
		# 渲染文本的 Surface 对象
		render = over_font.render(text, True, (255,0,0))
		# 将一个图像(Surface 对象)绘制到另一个图像上
		screen.blit(render, (200,250))
#------------------------------------------------------------------#游戏结束

#------------------------------------------------------------------#两个点之间的距离
def distance(bx, by, ex, ey):
	a = bx - ex
	b = by - ey
	return math.sqrt(a*a + b*b) #开根号
#------------------------------------------------------------------#两个点之间的距

#-----------------------------------------------------------------------------------------------------------#敌人
#初始化敌人的数量
number_of_enemies = 6
#------------------------------------------------------------------#敌人类
class Enemy():
	def __init__(self):
		# 添加敌人
		self.img = pygame.image.load('enemy.png')

		self.x = random.randint(200, 600)
		self.y = random.randint(50, 250)
		# 敌人移动的速度
		self.step = random.randint(2, 6)

	#重置位置:当被射中时,恢复位置
	def reset(self):
		self.x = random.randint(200, 600)
		self.y = random.randint(50, 200)
#------------------------------------------------------------------#敌人类

#保存所有的敌人
enemies = []
for i in range(number_of_enemies):
	enemies.append(Enemy())		#调用敌人类Enemy()

#------------------------------------------------------------------#显示敌人
def show_enemy():
	global is_over
	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 += 40
			# 判断游戏是否结束
			if e.y > 450:
				# 显示结束状态	print("游戏结束啦")
				is_over = True
				enemies.clear()
# ------------------------------------------------------------------#显示敌人
#-----------------------------------------------------------------------------------------------------------#敌人

#-----------------------------------------------------------------------------------------------------------#子弹
#------------------------------------------------------------------#子弹类
class Bullet():
	def __init__(self):
		# 画出子弹
		self.img = pygame.image.load('bullet.png')
		self.x = playerX + 16 #(64-32)/2
		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):		#子弹和敌人位置较近
				#射中啦
				bao_sound.play()		# 射中音效

				bullets.remove(self)	# 移除该子弹
				e.reset()				# 调用重置位置函数reset()

				#添加分数
				score += 1
#保存现有的子弹
bullets = []
#------------------------------------------------------------------#子弹类

#------------------------------------------------------------------#显示并移动子弹
def show_bullets():
	for b in bullets:
		# 显示图片到什么地方
		screen.blit(b.img, (b.x, b.y))
		# 看看是否击中了敌人:调用hit()函数
		b.hit()
		# 移动子弹:向上
		b.y -= b.step
		#判断子弹是否出了界面,如果出了就移除掉
		if b.y < 0:
			bullets.remove(b)
#------------------------------------------------------------------#显示并移动子弹
#-----------------------------------------------------------------------------------------------------------#子弹



#------------------------------------------------------------------#移动飞机防止飞机出界
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()
	# 返回当前的所有事件
	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 = 5
			elif event.key == pygame.K_LEFT:		# 左键
				playerStep = -5
			elif event.key == pygame.K_SPACE:		# 空格
				#创建一颗子弹
				bullets.append(Bullet())			# 调用子弹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利用pygame实现飞机大战游戏的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【python】 pygame学习示例 --飞机大战小游戏制作

    python版本:3.8.5 所需模块:pygame random os pygame版本:20.1 开发环境:pycharm专业版 硬件环境:win11 8G内存以上 使用python的第三方库–pygame 制作飞机大战小游戏 小游戏的内容包括: 玩家player的移动 子弹的发射 陨石的随机掉落(包括旋转 大小 下落角度) 玩家 子弹 陨石的碰撞交互

    2024年02月04日
    浏览(43)
  • 回忆童年游戏,完美利用Python制作飞机大战(爷青回~)

    名字:阿玥的小东东 学习:python、C/C++ 博客链接:阿玥的小东东的博客_CSDN博客-pythonc++高级知识,过年必备,C/C++知识讲解领域博主 目录 pygame包的安装 添加python环境变量 创建飞机大战窗口 飞机照片

    2024年02月08日
    浏览(29)
  • 第一篇【传奇开心果系列】Python的游戏库pygame技术点案例示例:深度解读实战开发飞机大战经典游戏案例

    开发飞机大战游戏不仅能满足广大玩家的娱乐需求,提供寓教于乐的学习机会,也是技术实践、创新实验和商业探索的重要载体,具有多维度的社会与经济价值。 开发飞机大战游戏具有多方面的意义,涵盖娱乐、教育、技术实践与创新等多个层面: 娱乐价值 : 休闲娱乐 :

    2024年04月23日
    浏览(65)
  • 基于Python的飞机大战游戏的设计与实现

    收藏关注不迷路    飞机大战是一种非常传统的电脑游戏,也是非常经典的游戏之一,经常可以在电脑,手机,以及各类便携式游戏机中见到。传统的老式飞行游戏以平面,灰白画面为主。而现在,随着计算机性能的飞速发展,我们目前可以在计算机上见到种类更加繁多的

    2024年02月04日
    浏览(31)
  • python小游戏毕设 飞机大战设计与实现

    🔥 Hi,各位同学好呀,这里是L学长! 🥇今天向大家分享一个今年(2022)最新完成的毕业设计项目作品 飞机大战小游戏设计与实现 🥇 学长根据实现的难度和等级对项目进行评分(最低0分,满分5分) 难度系数:3分 工作量:3分 创新点:3分 利用Python制作的一个简易版类\\\"飞机大

    2024年02月10日
    浏览(45)
  • python+pygame之飞机大战-第一版源代码分析

    目录 一、源代码 二、源代码梳理分析: (一)代码的主要结构 1、引用需要的模块 2、定义的类 3、定义main()函数:主程序 (二)代码分析收获 最好的学习方法是学习别人的代码,加上自己以前比较喜欢雷电这款游戏,所以就从飞机大战入手了,从网上下的源代码和图片素材

    2023年04月10日
    浏览(29)
  • python---简单游戏制作(飞机大战)

    1.开发软件 pycharm 编程软件 pygame 第三方库 sprite Group 2.技术介绍      pycharm: PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供

    2024年02月12日
    浏览(38)
  • python——飞机大战小游戏

    目录 1、导入模块 2、窗口操作 3、事件操作 4、长按事件 5、添加游戏背景 6、添加英雄飞机 7、获取飞机的图片矩形 8、基本游戏窗口 9、添加游戏窗口图片 10、英雄飞机登场 11、英雄飞机装备子弹并发射 1、enemy_plane 2、game_main 3、game_map 4、game_score 5、hero_plane 6、plane_bullet 先安

    2024年02月03日
    浏览(54)
  • Python飞机大战小游戏

    游戏规则:键盘上下左右键控制飞机移动 游戏展示图片: 源码: 第一个py命名为:plane_main.py 第二py命名为:plane_sprites.py 素材图片image关注私信我获取!!!

    2024年02月10日
    浏览(38)
  • python小游戏开发(飞机大战)

    目录 一:背景       1. pygame 模块初识 二.项目设计内容 开发一款飞机大战游戏,要求: (1)实现飞机的移动、子弹发射,对本次游戏有一个初步的编写及认识。 (2)飞机的持续按键移动和飞机自爆优化。 (3)进行基类的抽取,使代码更具有层次性和简化重复代码。 (

    2024年02月16日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包