在PyCharm中运行《玛丽冒险》即可进入如图1所示的游戏主界面。
具体的操作步骤如下:
(1)游戏主窗体界面显示后,游戏的背景地图将自动加载与移动,此时会随机出现管道、导弹障碍物。当遇到障碍物时按下键盘中的空格按键,玛丽将实现跳跃,如图2所示。
(2)每当越过一次障碍时,右上角的积分将自动增加1分。如图3所示。
(3)如果玛丽在移动的过程中不小心撞到了障碍物,此时游戏主界面的中间位置将显示“Game Over”游戏结束的文字。如图4所示。
游戏结束后,再次按下空格键将重新启动游戏。
(4)如果不需要播放游戏的背景音乐时,可以单击左上角的音乐按钮,背景音乐播放时,控制按钮的运行效果如图5所示。背景音乐停止时,控制按钮的运行效果如图6所示。
部分源码如下,其余完整详见下载。
import random # 随机数 # 障碍物类 class Obstacle(): score = 1 # 分数 move = 5 # 移动距离 obstacle_y = 150 # 障碍物y坐标 def __init__(self): # 初始化障碍物矩形 self.rect = pygame.Rect(0, 0, 0, 0) # 加载障碍物图片 self.missile = pygame.image.load("image/missile.png").convert_alpha() self.pipe = pygame.image.load("image/pipe.png").convert_alpha() # 加载分数图片 self.numbers = (pygame.image.load('image/0.png').convert_alpha(), pygame.image.load('image/1.png').convert_alpha(), pygame.image.load('image/2.png').convert_alpha(), pygame.image.load('image/3.png').convert_alpha(), pygame.image.load('image/4.png').convert_alpha(), pygame.image.load('image/5.png').convert_alpha(), pygame.image.load('image/6.png').convert_alpha(), pygame.image.load('image/7.png').convert_alpha(), pygame.image.load('image/8.png').convert_alpha(), pygame.image.load('image/9.png').convert_alpha()) # 加载加分音效 self.score_audio = pygame.mixer.Sound('audio/score.wav') # 加分 # 0和1随机数 r = random.randint(0, 1) if r == 0: # 如果随机数为0显示导弹障碍物相反显示管道 self.image = self.missile # 显示导弹障碍 self.move = 15 # 移动速度加快 self.obstacle_y = 100 # 导弹坐标在天上 else: self.image = self.pipe # 显示管道障碍 # 根据障碍物位图的宽高来设置矩形 self.rect.size = self.image.get_size() # 获取位图宽高 self.width, self.height = self.rect.size # 障碍物绘制坐标 self.x = 800 self.y = self.obstacle_y self.rect.center = (self.x, self.y) # 障碍物移动 def obstacle_move(self): self.rect.x -= self.move # 绘制障碍物 def draw_obstacle(self): SCREEN.blit(self.image, (self.rect.x, self.rect.y)) # 获取分数 def getScore(self): self.score tmp = self.score; if tmp == 1: self.score_audio.play() # 播放加分音乐 self.score = 0; return tmp; # 显示分数 def showScore(self, score): # 获取得分数字 self.scoreDigits = [int(x) for x in list(str(score))] totalWidth = 0 # 要显示的所有数字的总宽度 for digit in self.scoreDigits: # 获取积分图片的宽度 totalWidth += self.numbers[digit].get_width() # 分数横向位置 Xoffset = (SCREENWIDTH - (totalWidth+30)) for digit in self.scoreDigits: # 绘制分数 SCREEN.blit(self.numbers[digit], (Xoffset, SCREENHEIGHT * 0.1)) # 随着数字增加改变位置 Xoffset += self.numbers[digit].get_width()
是任天堂出品的著名横版过关游戏,该作最早在红白机上推出,有多款后续作品,其中的主角马里奥、路易、碧奇公主、奇诺比奥等已成为任天堂的招牌人物[1]。在游戏中,玩家控制马里奥从库巴手上设法营救碧奇公主。马里奥的弟弟路易只能在游戏的多人模式中作为第二玩家加入,其角色情节与马里奥完全相同。马里奥是靠吃蘑菇成长,闻名世界的超级巨星。特征是大鼻子、头戴帽子、身穿背带工作服、还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。帽子加背带工作服、大鼻子和胡子等特征,离英雄的形象相差甚远。再加上少许肥胖的身材,稍不留神可能就会把我们的英雄马里奥当成在便利店打工的中年大叔。但是形象上所带来的个性和亲切感,却在玩家的心中根深蒂固。马里奥的诞生之父宫本茂的设计理念就是“像记号一般让人一目了然的外貌,容易表现动作的配色”。当时限于硬件的机能,无法表现精密的画面。为了清楚表现人物的动作,就把马里奥的服装设计成了背带工作服,这样可以很好地表现出手臂的动作。关于脸部的设计,当时的考虑是,就算设计得很仔细,在电视上也无法表现出来。有特点、容易辨认,才是设计的重点。所以就有了大鼻子、留胡子、戴帽子的设计。