猫史档案馆


您好,大家好

用户:爱因斯坦的弟子爱因斯坦的弟子查看:4 回复:5 评论:4 创建时间:2018-04-27T18:12:29


求帮助我要做一个环保的编程


回复

上一页1 页 / 共 1下一页
鸽者无罪鸽者无罪

https://contest.codemao.cn/contest/noc/works/583

点个赞好


点赞0


评论


爱因斯坦的弟子爱因斯坦的弟子

什么

点赞0


评论


概念X概念X

传送门:https://ide.codemao.cn/we/5425256

点赞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()

 

点赞0


评论


爱因斯坦的弟子爱因斯坦的弟子

大家哈喽emotion_星能猫_hi

我是爱因斯坦的弟子

今天我们来讲高难度的飞机大战

速收藏!!!

萌新请慎入!!

里面包含爱弟的讲解视频,独家珍藏啊!

温馨提示(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

 

点赞0


评论