爷青回

您所在的位置:网站首页 超级玛丽2教程 爷青回

爷青回

2023-07-07 09:07| 来源: 网络整理| 查看: 265

🔔 B站主页:https://space.bilibili.com/1707990930📣 欢迎🎉点赞👍收藏🌟评论📝如有错误请指正!💻 Python&Java领域博主😁 你们的支持是我最大的动力

大家好,我是爱丽

这个Python中的马里奥游戏代码是用PyGame库设计的图形用户界面(GUI)。

谈到游戏的玩法,这是一个单人游戏,玩家(马里奥)必须躲避从龙身上发出的火球。

每一关都有更多的困难,一旦关卡增加,区域就会变得越来越小。在这个超级马里奥Python教程中,你可以学习如何用Python制作超级马里奥游戏。

文章目录 🕹 Python 中的马里奥游戏:项目信息🕹 第一步:项目搭建Step 1、新建一个项目Step 2、创建一个 python 文件Step 3、命名你的 Python 文件Step 4、实际代码。 🕹 导入模块🕹 开始游戏的代码部分🕹 游戏级别🕹 主要模块🕹 游戏结束🕹 完整的源代码》》》🎁CSDN直播课&解答群《《《

要开始用Python创建一个马里奥游戏,请确保你的电脑中安装了PyCharm IDE。

顺便说一下,如果你是Python编程的新手,你不知道什么是可以使用的Python IDE,我这里有一个适合你的零基础入门到精通的教程。可以添加CSDN官方微信免费获取:

在这里插入图片描述

在这里插入图片描述

🕹 Python 中的马里奥游戏:项目信息 项目名:超级马里奥使用的语言:基于 Python (GUI)Python 版本(推荐):3.x开发工具:PyCharm数据库:没有版本:0.1x 🕹 第一步:项目搭建 Step 1、新建一个项目

首先打开Pycharm IDE,然后创建一个 “项目名称”,创建好项目名称后点击 "创建 "按钮。 在这里插入图片描述

Step 2、创建一个 python 文件

创建项目名称后,“右键单击”您的项目名称,然后单击“新建”,然后单击“ python 文件”。 在这里插入图片描述

Step 3、命名你的 Python 文件

第三次创建python文件后,在点击“输入”之后命名你的python文件。 在这里插入图片描述

Step 4、实际代码。

你可以自由复制下面给出的代码并下载下面的完整源代码。

🕹 导入模块 import pygame import sys

给出的代码正在导入所有模块。

🕹 开始游戏的代码部分 def start_game(): canvas.fill(BLACK) start_img = pygame.image.load('start.png') start_img_rect = start_img.get_rect() start_img_rect.center = (WINDOW_WIDTH/2, WINDOW_HEIGHT/2) canvas.blit(start_img, start_img_rect) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: pygame.quit() sys.exit() game_loop() pygame.display.update()

在这个模块中,这是超级马里奥的开始游戏部分。

输出: 在这里插入图片描述

🕹 游戏级别 def check_level(SCORE): global LEVEL if SCORE in range(0, 10): cactus_img_rect.bottom = 50 fire_img_rect.top = WINDOW_HEIGHT - 50 LEVEL = 1 elif SCORE in range(10, 20): cactus_img_rect.bottom = 100 fire_img_rect.top = WINDOW_HEIGHT - 100 LEVEL = 2 elif SCORE in range(20, 30): cactus_img_rect.bottom = 150 fire_img_rect.top = WINDOW_HEIGHT - 150 LEVEL = 3 elif SCORE ; 30: cactus_img_rect.bottom = 200 fire_img_rect.top = WINDOW_HEIGHT - 200 LEVEL = 4

如果你通过给定级别的挑战,则在此模块中这是游戏的级别。

🕹 主要模块 def game_loop(): while True: global dragon dragon = Dragon() flames = Flames() mario = Mario() add_new_flame_counter = 0 global SCORE SCORE = 0 global HIGH_SCORE flames_list = [] pygame.mixer.music.load('mario_theme.wav') pygame.mixer.music.play(-1, 0.0) while True: canvas.fill(BLACK) check_level(SCORE) dragon.update() add_new_flame_counter += 1 if add_new_flame_counter == ADD_NEW_FLAME_RATE: add_new_flame_counter = 0 new_flame = Flames() flames_list.append(new_flame) for f in flames_list: if f.flames_img_rect.left ;= 0: flames_list.remove(f) SCORE += 1 f.update() for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_UP: mario.up = True mario.down = False elif event.key == pygame.K_DOWN: mario.down = True mario.up = False if event.type == pygame.KEYUP: if event.key == pygame.K_UP: mario.up = False mario.down = True elif event.key == pygame.K_DOWN: mario.down = True mario.up = False score_font = font.render('Score:'+str(SCORE), True, GREEN) score_font_rect = score_font.get_rect() score_font_rect.center = (200, cactus_img_rect.bottom + score_font_rect.height/2) canvas.blit(score_font, score_font_rect) level_font = font.render('Level:'+str(LEVEL), True, GREEN) level_font_rect = level_font.get_rect() level_font_rect.center = (500, cactus_img_rect.bottom + score_font_rect.height/2) canvas.blit(level_font, level_font_rect) top_score_font = font.render('Top Score:'+str(topscore.high_score),True,GREEN) top_score_font_rect = top_score_font.get_rect() top_score_font_rect.center = (800, cactus_img_rect.bottom + score_font_rect.height/2) canvas.blit(top_score_font, top_score_font_rect) canvas.blit(cactus_img, cactus_img_rect) canvas.blit(fire_img, fire_img_rect) mario.update() for f in flames_list: if f.flames_img_rect.colliderect(mario.mario_img_rect): game_over() if SCORE ; mario.mario_score: mario.mario_score = SCORE pygame.display.update() CLOCK.tick(FPS)

在这个模块中,这是游戏的主要模块,由布尔值和其他循环和条件组成。

🕹 游戏结束 def game_over(): pygame.mixer.music.stop() music = pygame.mixer.Sound('mario_dies.wav') music.play() topscore.top_score(SCORE) game_over_img = pygame.image.load('end.png') game_over_img_rect = game_over_img.get_rect() game_over_img_rect.center = (WINDOW_WIDTH/2, WINDOW_HEIGHT/2) canvas.blit(game_over_img, game_over_img_rect) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: pygame.quit() sys.exit() music.stop() game_loop() pygame.display.update()

输出界面: 在这里插入图片描述

🕹 完整的源代码 import pygame import sys pygame.init() WINDOW_WIDTH = 1200 WINDOW_HEIGHT = 600 FPS = 20 BLACK = (0, 0, 0) GREEN = (0, 255, 0) ADD_NEW_FLAME_RATE = 25 cactus_img = pygame.image.load('cactus_bricks.png') cactus_img_rect = cactus_img.get_rect() cactus_img_rect.left = 0 fire_img = pygame.image.load('fire_bricks.png') fire_img_rect = fire_img.get_rect() fire_img_rect.left = 0 CLOCK = pygame.time.Clock() font = pygame.font.SysFont('forte', 20) canvas = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT)) pygame.display.set_caption('Mario') class Topscore: def __init__(self): self.high_score = 0 def top_score(self, score): if score ; self.high_score: self.high_score = score return self.high_score topscore = Topscore() class Dragon: dragon_velocity = 10 def __init__(self): self.dragon_img = pygame.image.load('dragon.png') self.dragon_img_rect = self.dragon_img.get_rect() self.dragon_img_rect.width -= 10 self.dragon_img_rect.height -= 10 self.dragon_img_rect.top = WINDOW_HEIGHT/2 self.dragon_img_rect.right = WINDOW_WIDTH self.up = True self.down = False def update(self): canvas.blit(self.dragon_img, self.dragon_img_rect) if self.dragon_img_rect.top ;= cactus_img_rect.bottom: self.up = False self.down = True elif self.dragon_img_rect.bottom ;= fire_img_rect.top: self.up = True self.down = False if self.up: self.dragon_img_rect.top -= self.dragon_velocity elif self.down: self.dragon_img_rect.top += self.dragon_velocity class Flames: flames_velocity = 20 def __init__(self): self.flames = pygame.image.load('fireball.png') self.flames_img = pygame.transform.scale(self.flames, (20, 20)) self.flames_img_rect = self.flames_img.get_rect() self.flames_img_rect.right = dragon.dragon_img_rect.left self.flames_img_rect.top = dragon.dragon_img_rect.top + 30 def update(self): canvas.blit(self.flames_img, self.flames_img_rect) if self.flames_img_rect.left ; 0: self.flames_img_rect.left -= self.flames_velocity class Mario: velocity = 10 def __init__(self): self.mario_img = pygame.image.load('maryo.png') self.mario_img_rect = self.mario_img.get_rect() self.mario_img_rect.left = 20 self.mario_img_rect.top = WINDOW_HEIGHT/2 - 100 self.down = True self.up = False def update(self): canvas.blit(self.mario_img, self.mario_img_rect) if self.mario_img_rect.top ;= cactus_img_rect.bottom: game_over() if SCORE ; self.mario_score: self.mario_score = SCORE if self.mario_img_rect.bottom ;= fire_img_rect.top: game_over() if SCORE ; self.mario_score: self.mario_score = SCORE if self.up: self.mario_img_rect.top -= 10 if self.down: self.mario_img_rect.bottom += 10 def game_over(): pygame.mixer.music.stop() music = pygame.mixer.Sound('mario_dies.wav') music.play() topscore.top_score(SCORE) game_over_img = pygame.image.load('end.png') game_over_img_rect = game_over_img.get_rect() game_over_img_rect.center = (WINDOW_WIDTH/2, WINDOW_HEIGHT/2) canvas.blit(game_over_img, game_over_img_rect) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: pygame.quit() sys.exit() music.stop() game_loop() pygame.display.update() def start_game(): canvas.fill(BLACK) start_img = pygame.image.load('start.png') start_img_rect = start_img.get_rect() start_img_rect.center = (WINDOW_WIDTH/2, WINDOW_HEIGHT/2) canvas.blit(start_img, start_img_rect) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: pygame.quit() sys.exit() game_loop() pygame.display.update() def check_level(SCORE): global LEVEL if SCORE in range(0, 10): cactus_img_rect.bottom = 50 fire_img_rect.top = WINDOW_HEIGHT - 50 LEVEL = 1 elif SCORE in range(10, 20): cactus_img_rect.bottom = 100 fire_img_rect.top = WINDOW_HEIGHT - 100 LEVEL = 2 elif SCORE in range(20, 30): cactus_img_rect.bottom = 150 fire_img_rect.top = WINDOW_HEIGHT - 150 LEVEL = 3 elif SCORE ; 30: cactus_img_rect.bottom = 200 fire_img_rect.top = WINDOW_HEIGHT - 200 LEVEL = 4 def game_loop(): while True: global dragon dragon = Dragon() flames = Flames() mario = Mario() add_new_flame_counter = 0 global SCORE SCORE = 0 global HIGH_SCORE flames_list = [] pygame.mixer.music.load('mario_theme.wav') pygame.mixer.music.play(-1, 0.0) while True: canvas.fill(BLACK) check_level(SCORE) dragon.update() add_new_flame_counter += 1 if add_new_flame_counter == ADD_NEW_FLAME_RATE: add_new_flame_counter = 0 new_flame = Flames() flames_list.append(new_flame) for f in flames_list: if f.flames_img_rect.left ;= 0: flames_list.remove(f) SCORE += 1 f.update() for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_UP: mario.up = True mario.down = False elif event.key == pygame.K_DOWN: mario.down = True mario.up = False if event.type == pygame.KEYUP: if event.key == pygame.K_UP: mario.up = False mario.down = True elif event.key == pygame.K_DOWN: mario.down = True mario.up = False score_font = font.render('Score:'+str(SCORE), True, GREEN) score_font_rect = score_font.get_rect() score_font_rect.center = (200, cactus_img_rect.bottom + score_font_rect.height/2) canvas.blit(score_font, score_font_rect) level_font = font.render('Level:'+str(LEVEL), True, GREEN) level_font_rect = level_font.get_rect() level_font_rect.center = (500, cactus_img_rect.bottom + score_font_rect.height/2) canvas.blit(level_font, level_font_rect) top_score_font = font.render('Top Score:'+str(topscore.high_score),True,GREEN) top_score_font_rect = top_score_font.get_rect() top_score_font_rect.center = (800, cactus_img_rect.bottom + score_font_rect.height/2) canvas.blit(top_score_font, top_score_font_rect) canvas.blit(cactus_img, cactus_img_rect) canvas.blit(fire_img, fire_img_rect) mario.update() for f in flames_list: if f.flames_img_rect.colliderect(mario.mario_img_rect): game_over() if SCORE ; mario.mario_score: mario.mario_score = SCORE pygame.display.update() CLOCK.tick(FPS) start_game() 》》》🎁CSDN直播课&解答群《《《 **》》》🎁Python学习路线汇总《《《** **》》》🎁Python必备开发工具《《《** **》》》🎁精品Python学习书籍《《《** **》》》🎁Python学习视频合集《《《** **》》》🎁一百道Python练习题《《《** 可添加微信,领取以上资料和直播、答疑辅导!

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3