摘要:模塊安裝統(tǒng)一用的豆瓣鏡像源模塊名。圖片素材背景音樂字體可修改開始敲代碼運行程序。超級瑪麗源碼基地配置音樂文字等。
哈嘍!哈嘍!我是木木子?,今日游戲更新——超級瑪麗華麗上線?啦!
“超級瑪麗”有多少人還記得這款經(jīng)典游戲?對于90、00后應(yīng)該不大熟悉,但多多少少印象中見過
那個戴帽子的大胡子穿著背帶褲的馬里奧?!
?
?這款游戲1985年發(fā)售,因上手簡單、情節(jié)有趣等因素迅速走紅!
陪伴70后、80后走過了青澀難忘的童年超級瑪麗成了大家心目中的經(jīng)典!
如果你的童年也曾被魔性的?燈~燈燈~燈~燈燈~燈洗腦那就接著來懷舊一番吧~
今天木木子就帶著大家自制一款超級瑪麗游戲,還原度超高哦~還在等什么動動手就能擁有屬于自
己的”超級瑪麗“游戲呢,趕快學起來吧???????~
嗯吶~寫游戲Python還是用的Pygame模塊啦
Python3、Pycharm、Pygame模塊很多自帶的模塊等。
模塊安裝統(tǒng)一用的豆瓣鏡像源:?
pip install -i https://pypi.douban.com/simple/ +模塊名。
#!/usr/bin/env python__author__ = "超級瑪麗-源碼基地""""This is an attempt to recreate the first level ofSuper Mario Bros for the NES."""import sysimport pygame as pgfrom data.main import mainimport cProfileif __name__=="__main__": main() pg.quit() sys.exit()
__author__ = "Python源碼基地""""This module initializes the display and creates dictionaries of resources."""import osimport pygame as pgfrom . import toolsfrom .import constants as cORIGINAL_CAPTION = c.ORIGINAL_CAPTIONos.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"))
__author__ = "Python顧木子吖"import pygame as pgfrom . import setupfrom . import constants as cclass 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()
__author__ = "源碼基地:#959755565#"import pygame as pgfrom .. import setupfrom .. import constants as cclass Digit(pg.sprite.Sprite): """Individual digit for score""" def __init__(self, image): super(Digit, self).__init__() self.image = image self.rect = image.get_rect()class Score(object): """Scores that appear, float up, and disappear""" def __init__(self, x, y, score, flag_pole=False): self.x = x self.y = y if flag_pole: self.y_vel = -4 else: self.y_vel = -3 self.sprite_sheet = setup.GFX["item_objects"] self.create_image_dict() self.score_string = str(score) self.create_digit_list() self.flag_pole_score = flag_pole def create_image_dict(self): """Creates the dictionary for all the number 圖片 needed""" self.image_dict = {} image0 = self.get_image(1, 168, 3, 8) image1 = self.get_image(5, 168, 3, 8) image2 = self.get_image(8, 168, 4, 8) image4 = self.get_image(12, 168, 4, 8) image5 = self.get_image(16, 168, 5, 8) image8 = self.get_image(20, 168, 4, 8) image9 = self.get_image(32, 168, 5, 8) image10 = self.get_image(37, 168, 6, 8) image11 = self.get_image(43, 168, 5, 8) self.image_dict["0"] = image0 self.image_dict["1"] = image1 self.image_dict["2"] = image2 self.image_dict["4"] = image4 self.image_dict["5"] = image5 self.image_dict["8"] = image8 self.image_dict["3"] = image9 self.image_dict["7"] = image10 self.image_dict["9"] = image11 def get_image(self, x, y, width, height): """Extracts image from sprite sheet""" image = pg.Surface([width, height]).convert() rect = image.get_rect() image.blit(self.sprite_sheet, (0, 0), (x, y, width, height)) image.set_colorkey(c.BLACK) image = pg.transform.scale(image, (int(rect.width*c.BRICK_SIZE_MULTIPLIER), int(rect.height*c.BRICK_SIZE_MULTIPLIER))) return image def create_digit_list(self): """Creates the group of 圖片 based on score received""" self.digit_list = [] self.digit_group = pg.sprite.Group() for digit in self.score_string: self.digit_list.append(Digit(self.image_dict[digit])) self.set_rects_for_images() def set_rects_for_images(self): """Set the rect attributes for each image in self.image_list""" for i, digit in enumerate(self.digit_list): digit.rect = digit.image.get_rect() digit.rect.x = self.x + (i * 10) digit.rect.y = self.y def update(self, score_list, level_info): """Updates score movement""" for number in self.digit_list: number.rect.y += self.y_vel if score_list: self.check_to_delete_floating_scores(score_list, level_info) if self.flag_pole_score: if self.digit_list[0].rect.y <= 120: self.y_vel = 0 def draw(self, screen): """Draws score numbers onto screen""" for digit in self.digit_list: screen.blit(digit.image, digit.rect) def check_to_delete_floating_scores(self, score_list, level_info): """Check if scores need to be deleted""" for i, score in enumerate(score_list): if int(score.score_string) == 1000: if (score.y - score.digit_list[0].rect.y) > 130: score_list.pop(i) else: if (score.y - score.digit_list[0].rect.y) > 75: score_list.pop(i)
由于代碼太多太多了如下圖所示:所以還是放在文末自己拿完整的代碼哈!
超級馬里奧動態(tài)視頻
雖然現(xiàn)在市面上沖擊著各種游戲,但在我們心目中馬里奧依舊是那個留著意式大胡子,上天盾地,
無所不能,頭頂金幣,腳踏烏龜拯救公主的超級英雄!
對游戲感興趣的小伙伴兒趕緊自己動手造一個吧~
?
你們的支持是我最大的動力!!記得三連哦~mua?歡迎大家閱讀往期的文章哦~
Python—2021 |已有文章匯總 | 持續(xù)更新,直接看這篇就夠了
?
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/123047.html
摘要:正文開心消消樂分為二部分首先是開心然后是消消樂游戲嘛嘿嘿一開心小故事三則近視聰明的學生殺手二消消樂游戲素材圖片開心消消樂語音提示環(huán)境安裝本文是由寫的小游戲。 導語 你今天消消樂了嗎? ? 哈嘍哈嘍~木木子之前不是寫過一篇百變消消樂嘛? 可能你們不記得了,沒關(guān)系——今天重溫一下,來一篇開心?...
摘要:昨天在我在國外網(wǎng)站上看到一篇文章,作者分享了他自學編程個月后找到工作的經(jīng)歷。而本文中,我主要針對想要通過學習編程找工作的角度來談。我在年月犯了一個錯誤我認為首要任務(wù)是找到一份前端開發(fā)的工作。 昨天在我在國外網(wǎng)站 reddit 上看到一篇文章,作者分享了他 自學編程 9 個月后找到工作 的經(jīng)歷。文章不到一天就得到3千多贊,2百條回復。我看了下內(nèi)容,非常中肯,其中有不少建議也是我在編程教室...
摘要:中國有自己研發(fā)的游戲主機嗎是什么樣的水準這個問題蠻有意思的,中國是有自己研發(fā)的游戲機的,早期是以仿制任天堂的為主。以上只是一個國內(nèi)主機游戲市場冷淡一個小插曲而已,真正的還是國產(chǎn)網(wǎng)游在中國游戲史上的根深蒂固。中國有自己研發(fā)的游戲主機嗎?是什么樣的水準?這個問題蠻有意思的,中國是有自己研發(fā)的游戲機的,早期是以仿制任天堂的FC為主。小霸王這個名字相信大部分80后都不陌生。下面具體分析一下。早期的小...
摘要:版社區(qū)假若本項目能給到你一點點幫助,求在線地址掃碼二維碼體驗更佳推薦滿大街的重寫,這個有什么亮點比較接近原生體驗流暢的加載過渡效果舒服細膩的樣式布局合理的列表渲染優(yōu)化為什么還要重寫版的主要是練手,熟悉全家桶超級好用組件庫,做一個最佳實踐案例 Vue2版CNode社區(qū)WebApp 假若本項目能給到你一點點幫助,求Star! Github:https://github.com/Ryqsky...
閱讀 2831·2023-04-26 02:23
閱讀 1570·2021-11-11 16:55
閱讀 3148·2021-10-19 11:47
閱讀 3351·2021-09-22 15:15
閱讀 1975·2019-08-30 15:55
閱讀 1033·2019-08-29 15:43
閱讀 1288·2019-08-29 13:16
閱讀 2188·2019-08-29 12:38