加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 教程 > 正文

Python完美复原超级玛丽游戏附代码与视频

发布时间:2021-11-08 13:59:06 所属栏目:教程 来源:互联网
导读:目录 导语正文1)准备中1.1环境安装1.2图片素材+背景音乐+字体(可修改)2)开始敲代码2.1 运行程序:mario_level_1.py。2.2 配置音乐文字等setup.py。2.3游戏音乐设置game_sound.py。2.4取得的分数3)完整的游戏4)效果展示(仅部分)4.1 展示动态视频一波
目录
导语���正文���1)准备中���1.1环境安装���1.2图片素材+背景音乐+字体(可修改)���2)开始敲代码���2.1 运行程序:mario_level_1.py。���2.2 配置音乐文字等setup.py。���2.3游戏音乐设置game_sound.py。���2.4取得的分数���​3)完整的游戏���​4)效果展示(仅部分)���4.1 展示动态视频一波,完美。���4.2 Part 1 游戏运行界面——���​4.3 Part 2 三条命——���4.4 Part 3 吃了蘑菇的马里奥——���总结���
导语���
哈喽!哈喽!我是木木子���,今日游戏更新——超级玛丽华丽上线���啦!
 
“超级玛丽”有多少人还记得这款经典游戏?对于90、00后应该不大熟悉,但多多少少印象中见过
 
那个戴帽子的大胡子穿着背带裤的马里奥���!
 
���这款游戏1985年发售,因上手简单、情节有趣等因素迅速走红!
 
陪伴70后、80后走过了青涩难忘的童年超级玛丽成了大家心目中的经典!
 
如果你的童年也曾被魔性的 灯~灯灯~灯~灯灯~灯洗脑那就接着来怀旧一番吧~
 
今天木木子就带着大家自制一款超级玛丽游戏,还原度超高哦~还在等什么动动手就能拥有属于自
 
己的”超级玛丽“游戏呢,赶快学起来吧������‍���‍������~
 
 
 
正文���
嗯呐~写游戏Python还是用的Pygame模块啦
 
1)准备中���
1.1环境安装���
Python3、Pycharm、Pygame模块很多自带的模块等。
 
模块安装统一用的豆瓣镜像源:​
 
pip install -i https://pypi.douban.com/simple/ +模块名。
1.2图片素材+背景音乐+字体(可修改)���
 
 
2)开始敲代码���
2.1 运行程序:mario_level_1.py。���
#!/usr/bin/env python
__author__ = '超级玛丽-源码基地'
 
"""
This is an attempt to recreate the first level of
Super Mario Bros for the NES.
"""
 
import sys
import pygame as pg
from data.main import main
import cProfile
 
 
if __name__=='__main__':
    main()
    pg.quit()
    sys.exit()
2.2 配置音乐文字等setup.py。���
__author__ = 'Python源码基地'
 
"""
This module initializes the display and creates dictionaries of resources.
"""
 
import os
import pygame as pg
from . import tools
from .import constants as c
 
ORIGINAL_CAPTION = c.ORIGINAL_CAPTION
 
 
os.environ['SDL_VIDEO_CENTERED'] = '1'
pg.init()
pg.event.set_allowed([pg.KEYDOWN, pg.KEYUP, pg.QUIT])
pg.display.set_caption(c.ORIGINAL_CAPTION)
SCREEN = pg.display.set_mode(c.SCREEN_SIZE)
SCREEN_RECT = SCREEN.get_rect()
 
 
FONTS = tools.load_all_fonts(os.path.join("resources","fonts"))
MUSIC = tools.load_all_music(os.path.join("resources","music"))
GFX   = tools.load_all_gfx(os.path.join("resources","graphics"))
SFX   = tools.load_all_sfx(os.path.join("resources","sound"))
2.3游戏音乐设置game_sound.py。���
__author__ = 'Python顾木子吖'
 
import pygame as pg
from . import setup
from . import constants as c
 
class Sound(object):
    """Handles all sound for the game"""
    def __init__(self, overhead_info):
        """Initialize the class"""
        self.sfx_dict = setup.SFX
        self.music_dict = setup.MUSIC
        self.overhead_info = overhead_info
        self.game_info = overhead_info.game_info
        self.set_music_mixer()
 
 
 
    def set_music_mixer(self):
        """Sets music for level"""
        if self.overhead_info.state == c.LEVEL:
            pg.mixer.music.load(self.music_dict['main_theme'])
            pg.mixer.music.play()
            self.state = c.NORMAL
        elif self.overhead_info.state == c.GAME_OVER:
            pg.mixer.music.load(self.music_dict['game_over'])
            pg.mixer.music.play()
            self.state = c.GAME_OVER
 
 
    def update(self, game_info, mario):
        """Updates sound object with game info"""
        self.game_info = game_info
        self.mario = mario
        self.handle_state()
 
    def  handle_state(self):
        """Handles the state of the soundn object"""
        if self.state == c.NORMAL:
            if self.mario.dead:
                self.play_music('death', c.MARIO_DEAD)
            elif self.mario.invincible
                    and self.mario.losing_invincibility == False:
                self.play_music('invincible', c.MARIO_INVINCIBLE)
            elif self.mario.state == c.FLAGPOLE:
                self.play_music('flagpole', c.FLAGPOLE)
            elif self.overhead_info.time == 100:
                self.play_music('out_of_time', c.TIME_WARNING)
 
 
        elif self.state == c.FLAGPOLE:
            if self.mario.state == c.WALKING_TO_CASTLE:
                self.play_music('stage_clear', c.STAGE_CLEAR)
 
        elif self.state == c.STAGE_CLEAR:
            if self.mario.in_castle:
                self.sfx_dict['count_down'].play()
                self.state = c.FAST_COUNT_DOWN
 
        elif self.state == c.FAST_COUNT_DOWN:
            if self.overhead_info.time == 0:
                self.sfx_dict['count_down'].stop()
                self.state = c.WORLD_CLEAR
 
        elif self.state == c. TIME_WARNING:
            if pg.mixer.music.get_busy() == 0:
                self.play_music('main_theme_sped_up', c.SPED_UP_NORMAL)
            elif self.mario.dead:
                self.play_music('death', c.MARIO_DEAD)
 
        elif self.state == c.SPED_UP_NORMAL:
            if self.mario.dead:
                self.play_music('death', c.MARIO_DEAD)
            elif self.mario.state == c.FLAGPOLE:
                self.play_music('flagpole', c.FLAGPOLE)
 
        elif self.state == c.MARIO_INVINCIBLE:
            if (self.mario.current_time - self.mario.invincible_start_timer) > 11000:
                self.play_music('main_theme', c.NORMAL)
            elif self.mario.dead:
                self.play_music('death', c.MARIO_DEAD)
 
 
        elif self.state == c.WORLD_CLEAR:
            pass
        elif self.state == c.MARIO_DEAD:
            pass
        elif self.state == c.GAME_OVER:
            pass
 
    def play_music(self, key, state):
        """Plays new music"""
        pg.mixer.music.load(self.music_dict[key])
        pg.mixer.music.play()
        self.state = state
 
    def stop_music(self):
        """Stops playback"""
        pg.mixer.music.stop()

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读