
Lv.1
隐退
签名:物竞党,努力学习微积分
在 Python【编程小讲堂】第十期 Tkinter高级实战 中回复
https://shequ.codemao.cn/community/192143
https://shequ.codemao.cn/community/192145
https://shequ.codemao.cn/community/192149
2019-08-20T12:10:10 点赞:0
在 Python【编程小讲堂】第十期 Tkinter高级实战2 中回复
本期链接集合(高中函数)
https://shequ.codemao.cn/community/192143
https://shequ.codemao.cn/community/192145
https://shequ.codemao.cn/community/192149
2019-08-20T12:11:01 点赞:0
在 Python【编程小讲堂】第十期 Tkinter高级实战3 中回复
本期链接集合(高中函数)
https://shequ.codemao.cn/community/192143
https://shequ.codemao.cn/community/192145
https://shequ.codemao.cn/community/192149
2019-08-20T12:11:30 点赞:0
在 Python【编程小讲堂】第十期 Tkinter高级实战3 中回复
第一期: https://shequ.codemao.cn/community/178600
第二期: https://shequ.codemao.cn/community/184311
第三期: https://shequ.codemao.cn/community/185418
第四期: https://shequ.codemao.cn/community/188747
第五期: https://shequ.codemao.cn/community/189560
第六期: https://shequ.codemao.cn/community/190290
第七期: https://shequ.codemao.cn/community/191070
第八期: https://shequ.codemao.cn/community/191319
https://shequ.codemao.cn/community/191320
第九期:https://shequ.codemao.cn/community/191456
第十期:
https://shequ.codemao.cn/community/192143
https://shequ.codemao.cn/community/192145
https://shequ.codemao.cn/community/192149
2019-08-20T13:00:44 点赞:0
在 您好,大家好 中回复
大家哈喽
我是爱因斯坦的弟子
今天我们来讲高难度的飞机大战
萌新请慎入!!
温馨提示:本文很长,请分天看完
主要标签:pygame
游戏的基本设定:
敌方共有大中小3款飞机,分为高中低三种速度;
子弹的射程并非全屏,而大概是屏幕长度的80%;
消灭小飞机需要 1 发子弹,中飞机需要 8 发,大飞机需要 20 发子弹;
每消灭一架小飞机得1000分,中飞机6000分,大飞机10000分;
每个30秒有一个随机的道具补给,分为两种道具,全屏喵和双倍子弹;
全屏喵最多只能存放 3 枚,双倍子弹可以维持 18 秒钟的效果;
游戏将根据分数来逐步提高难度,难度的提高表现为 飞机数量的增多以及速度的加快;
为中飞机和大飞机增加了血槽的显示,这样我们可以直观的知道敌机快被消灭了没有;
我方有三次机会,每次被敌人消灭,新诞生的飞机会有 3 秒钟的安全期;
游戏结束后会显示历史最高分数。
main.py:就是主程序;
bullet.py:就是子弹,子弹有两种,单发和双发;
enemy.py:就是敌机,共有大中小三种,并且都有不同的属性;
myplane.py:就是我的飞机;
supply.py:就是补给和装备;
record.txt:保存的最高分;
三个文件夹就是需要的素材。
第一部分:
开始编辑代码:
main部分:(主程序)
import pygame
import sys
import traceback #为了更好地退出
from pygame.locals import *
pygame.init()
pygame.mixer.init() #混音器初始化
bg_size = width, height = 480, 700
screen = pygame.display.set_mode(bg_size)
pygame.display.set_caption("飞机大战 -- Python Demo")
background = pygame.image.load("images/background.png").convert()
# 载入游戏音乐
pygame.mixer.music.load("sound/game_music.ogg")
pygame.mixer.music.set_volume(0.2)
bullet_sound = pygame.mixer.Sound("sound/bullet.wav")
bullet_sound.set_volume(0.2)
bomb_sound = pygame.mixer.Sound("sound/use_bomb.wav")
bomb_sound.set_volume(0.2)
supply_sound = pygame.mixer.Sound("sound/supply.wav")
supply_sound.set_volume(0.2)
get_bomb_sound = pygame.mixer.Sound("sound/get_bomb.wav")
get_bomb_sound.set_volume(0.2)
get_bullet_sound = pygame.mixer.Sound("sound/get_bullet.wav")
get_bullet_sound.set_volume(0.2)
upgrade_sound = pygame.mixer.Sound("sound/upgrade.wav")
upgrade_sound.set_volume(0.2)
enemy3_fly_sound = pygame.mixer.Sound("sound/enemy3_flying.wav")
enemy3_fly_sound.set_volume(0.2)
enemy1_down_sound = pygame.mixer.Sound("sound/enemy1_down.wav")
enemy1_down_sound.set_volume(0.2)
enemy2_down_sound = pygame.mixer.Sound("sound/enemy2_down.wav")
enemy2_down_sound.set_volume(0.2)
enemy3_down_sound = pygame.mixer.Sound("sound/enemy3_down.wav")
enemy3_down_sound.set_volume(0.5)
me_down_sound = pygame.mixer.Sound("sound/me_down.wav")
me_down_sound.set_volume(0.2)
def main():
pygame.mixer.music.play(-1)
clock = pygame.time.Clock()
running = True
while running:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
screen.blit(background, (0, 0))
pygame.display.flip()
clock.tick(60)
if __name__ == "__main__":
try:
main()
except SystemExit:
pass
except:
traceback.print_exc()
pygame.quit()
input()
萌新:看起来真晕啊!
爱因斯坦的弟子:别急,我来讲一讲!
先导入这几个库,pygame就是专门制作游戏的库
sys库:该模块提供对解释器使用或维护的一些变量的访问,以及与解释器强烈交互的函数。它始终可用。
导入traceback是能更好地方便程序退出
pygame.init()就是初始化pygame
pygame.mixer.init() 也就是混音器初始化
bg_size = width, height = 480, 700 设定屏幕的大小,长和宽的值
screen = pygame.display.set_mode(bg_size)将我们设定的这个值带入这里,设定屏幕的大小
pygame.display.set_caption("飞机大战 -- Python Demo")设置游戏标题“飞机大战 -- Python Demo”
background = pygame.image.load("images/background.png").convert()添加背景图片
# 载入游戏音乐
pygame.mixer.music.load("sound/game_music.ogg")我们使用混合器载入音乐,在平时我们也可以使用频道来加载音乐,之后会提到
pygame.mixer.music.set_volume(0.2)
bullet_sound = pygame.mixer.Sound("sound/bullet.wav")wav是音乐格式的一种后缀名
bullet_sound.set_volume(0.2)
bomb_sound = pygame.mixer.Sound("sound/use_bomb.wav")
bomb_sound.set_volume(0.2)
supply_sound = pygame.mixer.Sound("sound/supply.wav")
supply_sound.set_volume(0.2)
get_bomb_sound = pygame.mixer.Sound("sound/get_bomb.wav")
get_bomb_sound.set_volume(0.2)
get_bullet_sound = pygame.mixer.Sound("sound/get_bullet.wav")
get_bullet_sound.set_volume(0.2)
upgrade_sound = pygame.mixer.Sound("sound/upgrade.wav")
upgrade_sound.set_volume(0.2)
enemy3_fly_sound = pygame.mixer.Sound("sound/enemy3_flying.wav")
enemy3_fly_sound.set_volume(0.2)
enemy1_down_sound = pygame.mixer.Sound("sound/enemy1_down.wav")
enemy1_down_sound.set_volume(0.2)
enemy2_down_sound = pygame.mixer.Sound("sound/enemy2_down.wav")
enemy2_down_sound.set_volume(0.2)
enemy3_down_sound = pygame.mixer.Sound("sound/enemy3_down.wav")
enemy3_down_sound.set_volume(0.5)
me_down_sound = pygame.mixer.Sound("sound/me_down.wav")
me_down_sound.set_volume(0.2)
def main():##这里缩进不方便,看上面的代码。定义main
pygame.mixer.music.play(-1)用混合器play(-1)
clock = pygame.time.Clock()启用计时器
running = True当奔跑状态时成功时
while running: 当奔跑时
for event in pygame.event.get(): 用侦测鼠标
if event.type == QUIT:
pygame.quit()
sys.exit()
screen.blit(background, (0, 0))
pygame.display.flip()
clock.tick(60)
if __name__ == "__main__":
try:
main()
except SystemExit:
pass
except:
traceback.print_exc()
pygame.quit()
input()
2019-08-21T12:08:21 点赞:0
在 您好,大家好 中回复
大家哈喽
我是爱因斯坦的弟子
今天我们来讲高难度的飞机大战
速收藏!!!
萌新请慎入!!
里面包含爱弟的讲解视频,独家珍藏啊!
温馨提示(1):本文很长,请分天看完
温馨提示(2):所有代码为本人分析,敲代码,请勿盗取,若需转载,请附上本问
主要标签:pygame
游戏的基本设定:
敌方共有大中小3款飞机,分为高中低三种速度;
子弹的射程并非全屏,而大概是屏幕长度的80%;
消灭小飞机需要 1 发子弹,中飞机需要 8 发,大飞机需要 20 发子弹;
每消灭一架小飞机得1000分,中飞机6000分,大飞机10000分;
每个30秒有一个随机的道具补给,分为两种道具,全屏喵和双倍子弹;
全屏喵最多只能存放 3 枚,双倍子弹可以维持 18 秒钟的效果;
游戏将根据分数来逐步提高难度,难度的提高表现为 飞机数量的增多以及速度的加快;
为中飞机和大飞机增加了血槽的显示,这样我们可以直观的知道敌机快被消灭了没有;
我方有三次机会,每次被敌人消灭,新诞生的飞机会有 3 秒钟的安全期;
游戏结束后会显示历史最高分数。
main.py:就是主程序;
bullet.py:就是子弹,子弹有两种,单发和双发;
enemy.py:就是敌机,共有大中小三种,并且都有不同的属性;
myplane.py:就是我的飞机;
supply.py:就是补给和装备;
record.txt:保存的最高分;
三个文件夹就是需要的素材。
第一部分:
开始编辑代码:
main部分:(主程序)
import pygame
import sys
import traceback #为了更好地退出
from pygame.locals import *
pygame.init()
pygame.mixer.init() #混音器初始化
bg_size = width, height = 480, 700
screen = pygame.display.set_mode(bg_size)
pygame.display.set_caption("飞机大战 -- Python Demo")
background = pygame.image.load("images/background.png").convert()
# 载入游戏音乐
pygame.mixer.music.load("sound/game_music.ogg")
pygame.mixer.music.set_volume(0.2)
bullet_sound = pygame.mixer.Sound("sound/bullet.wav")
bullet_sound.set_volume(0.2)
bomb_sound = pygame.mixer.Sound("sound/use_bomb.wav")
bomb_sound.set_volume(0.2)
supply_sound = pygame.mixer.Sound("sound/supply.wav")
supply_sound.set_volume(0.2)
get_bomb_sound = pygame.mixer.Sound("sound/get_bomb.wav")
get_bomb_sound.set_volume(0.2)
get_bullet_sound = pygame.mixer.Sound("sound/get_bullet.wav")
get_bullet_sound.set_volume(0.2)
upgrade_sound = pygame.mixer.Sound("sound/upgrade.wav")
upgrade_sound.set_volume(0.2)
enemy3_fly_sound = pygame.mixer.Sound("sound/enemy3_flying.wav")
enemy3_fly_sound.set_volume(0.2)
enemy1_down_sound = pygame.mixer.Sound("sound/enemy1_down.wav")
enemy1_down_sound.set_volume(0.2)
enemy2_down_sound = pygame.mixer.Sound("sound/enemy2_down.wav")
enemy2_down_sound.set_volume(0.2)
enemy3_down_sound = pygame.mixer.Sound("sound/enemy3_down.wav")
enemy3_down_sound.set_volume(0.5)
me_down_sound = pygame.mixer.Sound("sound/me_down.wav")
me_down_sound.set_volume(0.2)
def main():
pygame.mixer.music.play(-1)
clock = pygame.time.Clock()
running = True
while running:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
screen.blit(background, (0, 0))
pygame.display.flip()
clock.tick(60)
if __name__ == "__main__":
try:
main()
except SystemExit:
pass
except:
traceback.print_exc()
pygame.quit()
input()
萌新:看起来真晕啊!
爱因斯坦的弟子:别急,我来讲一讲!
先导入这几个库,pygame就是专门制作游戏的库
sys库:该模块提供对解释器使用或维护的一些变量的访问,以及与解释器强烈交互的函数。它始终可用。
导入traceback是能更好地方便程序退出
pygame.init()就是初始化pygame
pygame.mixer.init() 也就是混音器初始化
bg_size = width, height = 480, 700 设定屏幕的大小,长和宽的值
screen = pygame.display.set_mode(bg_size)将我们设定的这个值带入这里,设定屏幕的大小
pygame.display.set_caption("飞机大战 -- Python Demo")设置游戏标题“飞机大战 -- Python Demo”
background = pygame.image.load("images/background.png").convert()添加背景图片
# 载入游戏音乐
pygame.mixer.music.load("sound/game_music.ogg")我们使用混合器载入音乐,在平时我们也可以使用频道来加载音乐,之后会提到
pygame.mixer.music.set_volume(0.2)
bullet_sound = pygame.mixer.Sound("sound/bullet.wav")wav是音乐格式的一种后缀名
bullet_sound.set_volume(0.2)
bomb_sound = pygame.mixer.Sound("sound/use_bomb.wav")pygame提供了两个加载音乐文件的方法 pygame.mixer.Sound,主要加载ogg和wav音频文件。 pygame.mixer.music,主要加载mp3音频文件。
bomb_sound.set_volume(0.2)
supply_sound = pygame.mixer.Sound("sound/supply.wav")
supply_sound.set_volume(0.2)
get_bomb_sound = pygame.mixer.Sound("sound/get_bomb.wav")
get_bomb_sound.set_volume(0.2)
get_bullet_sound = pygame.mixer.Sound("sound/get_bullet.wav")
get_bullet_sound.set_volume(0.2)
upgrade_sound = pygame.mixer.Sound("sound/upgrade.wav")
upgrade_sound.set_volume(0.2)
enemy3_fly_sound = pygame.mixer.Sound("sound/enemy3_flying.wav")
enemy3_fly_sound.set_volume(0.2)
enemy1_down_sound = pygame.mixer.Sound("sound/enemy1_down.wav")
enemy1_down_sound.set_volume(0.2)
enemy2_down_sound = pygame.mixer.Sound("sound/enemy2_down.wav")
enemy2_down_sound.set_volume(0.2)
enemy3_down_sound = pygame.mixer.Sound("sound/enemy3_down.wav")
enemy3_down_sound.set_volume(0.5)
me_down_sound = pygame.mixer.Sound("sound/me_down.wav")
me_down_sound.set_volume(0.2)
def main():##这里缩进不方便,看上面的代码。定义main
pygame.mixer.music.play(-1)用混合器play(-1),见上文
clock = pygame.time.Clock()启用计时器
running = True当奔跑状态时成功时
while running: 当奔跑时
for event in pygame.event.get(): 用侦测鼠标的方法
if event.type == QUIT:可以侦测到鼠标、键盘的操作事件(可以是多个事件)
pygame.quit()确定对事件的反馈,QUIT代表关闭窗口
sys.exit()直接退出主循环。结束所有进程
screen.blit(background, (0, 0))绘制到屏幕
pygame.display.flip()更新整个显示的内容
clock.tick(60)时间60毫秒
if __name__ == "__main__":这通常是一个模拟的程序入口
try:尝试
main()main是程序的主入口,代码是从住方法上开始执行的。写法是固定的。定义一个类中使用。如果一个类需要独立运行的时候,就需要main方法。
except SystemExit:除了系统exit之外
pass过
except:除了
traceback.print_exc()print_exc()则直接给打印出来,还可以接受file参数直接写入到一个文件。
pygame.quit()
input()
补充:
try:
do something
except:
handleexcept
2019-08-21T18:57:41 点赞:0
在 【8月优秀工作室】我在思考一个喵进来的标题 中回复
我就说猴大大什么意思啊,人家为了项目,抓紧时间写作业,还得保证质量,六点整从学校飞奔回家,加速学习,5G速度,结果……
2019-09-06T22:37:53 点赞:4
在 【少院士讲堂】来自大佬们的干货大礼包 请查收! 中回复
非少院士可以 给你们 干点啥 前提是 我没有参加过任何计算机比赛,,,童创未来我妈不让参加
,家长那个不支持,你说我学的各种语言好像都白费了
2019-09-15T08:58:25 点赞:1