|
作者:Vincentish 原文鏈接:http:///5DKdLs 文末獲取本文完整代碼!
本文是作者的一個參賽作品,他當(dāng)時僅僅是一個大一新生,僅自學(xué)Python才一個月,就可以完成如此漂亮的一個案例,我覺得對我們過來人來說是一個鼓勵,我們應(yīng)該更有信心能夠堅持學(xué)好某一門編程語言。 基于此,經(jīng)過作者授權(quán)將這個案例分享給大家學(xué)習(xí)和參考,希望對大家有幫助。在觀看這篇文章之前,大家可以提前看看這篇文章的效果展示,錄制的視頻如下。
 項目簡介 本項目是報名參加了“兗州中材杯”武漢理工大學(xué)第十一屆環(huán)保創(chuàng)意大賽藝術(shù)理念組的比賽。其中組員共三名,本人負責(zé)代碼實現(xiàn)部分,一人負責(zé)項目策劃,另外一人負責(zé)場景人物繪制。 項目背景 小組中負責(zé)策劃的同學(xué),經(jīng)過一定的調(diào)研之后,發(fā)現(xiàn)我校在校生普遍缺乏垃圾分類方面的知識。經(jīng)過討論后,我們決定把游戲方向定位于“垃圾分類”,游戲類型定位于像素風(fēng)游戲。由于本人水平和時間有限,只能將玩法設(shè)計得盡量簡單,感謝另外兩位組員,他們的努力掩蓋了我水平上的不足。 玩法介紹 控制一名角色在操場背景上移動,垃圾桶在操場邊上,撿起垃圾丟進相應(yīng)的垃圾桶內(nèi),若全部正確投放則游戲成功,否則游戲失敗。游戲期間,若有不清楚該作何分類的垃圾,則可以點擊圖書館的按鈕,進入圖書館查詢。圖書館提供垃圾圖鑒和分類標(biāo)準(zhǔn)兩種信息。垃圾圖鑒幫助玩家分辨自己撿到的垃圾,而分類標(biāo)準(zhǔn)指每種垃圾的定義及舉例。 項目成果 本項目在“兗州中材杯”武漢理工大學(xué)第十一屆環(huán)保創(chuàng)意作品大賽藝術(shù)理念組比賽中,最終排名第五,獲得了二等獎的好成績,距離第四名僅差0.5分。 項目實現(xiàn) 寫這個項目時,本人僅自學(xué)了一個月的Python,且是一個大一新生,對計算機科學(xué)的基礎(chǔ)知識了解甚少,若代碼讓你覺得風(fēng)格幼稚、愚蠢,還望讀者見諒。 模塊劃分 游戲按場景分為以下幾個模塊:開始游戲界面、游戲說明界面、人物選擇界面、操場界面(主要游戲場地)、圖書館外界面、圖書館內(nèi)界面、游戲結(jié)束界面。 1. 開始游戲界面:背景(像素化的學(xué)校建筑),游戲標(biāo)題,三個按鈕(開始、游戲說明、退出)。 2. 游戲說明界面:背景(與開始界面相同),游戲說明文字,返回按鈕。 3. 人物選擇界面:背景,提示(選擇人物),兩個可選人物。 4. 操場界面:背景,人物,垃圾桶,隨機產(chǎn)生的垃圾,圖書館按鈕。  5. 圖書館外界面:背景(我校圖書館的像素風(fēng)繪制)、操場按鈕(會到操場)、進入按鈕(進入圖書館內(nèi)部)。 6. 圖書館內(nèi)界面:背景(我校圖書館內(nèi)部),各類垃圾圖標(biāo)按鈕(廚余垃圾、可回收垃圾、有害垃圾、其他垃圾),垃圾圖鑒按鈕,返回按鈕。子界面:各類垃圾信息界面,垃圾圖鑒界面,返回按鈕。      7. 游戲結(jié)束界面:勝利界面,失敗界面。  代碼實現(xiàn) 限于文章篇幅,我這里只展示部分代碼,完整代碼可以在文末直接獲取,我相信受到這個文章的啟發(fā),你也能夠?qū)懗龊芎猛鎯旱捻椖縼怼?/span> import pygame as py import sys import random from pygame.locals import *
#==========================選擇人物=========================
def choose_role(): background = py.image.load('Files\\choose_player\\background.jpg') background = py.transform.smoothscale(background,(1000,650)) screen.blit(background, (0, 0)) man = py.image.load('Files\\choose_player\\man.png') man = py.transform.smoothscale(man,(123, 325)) man_button = screen.blit(man,(200, 200)) man_button = Button(man_button) woman = py.image.load('Files\\choose_player\\woman.png') woman = py.transform.smoothscale(woman,(113, 325)) woman_button = screen.blit(woman,(687, 200)) woman_button = Button(woman_button) py.display.flip() while True: for event in py.event.get(): if event.type == QUIT: sys.exit() if event.type == MOUSEBUTTONDOWN: pos = py.mouse.get_pos() if man_button.has(pos): return 'man' if woman_button.has(pos): return 'woman'#========================開始游戲界面========================
def start(): background = py.image.load('Files\\start\\background.jpg') background = py.transform.smoothscale(background,(1000,650)) screen.blit(background, (0, 0)) start_game = py.image.load('Files\\start\\start_game.png') start_game = py.transform.smoothscale(start_game,(140, 149)) start_button = screen.blit(start_game,(150, 330)) start_button = Button(start_button) game_help = py.image.load('Files\\start\\game_help.png') game_help = py.transform.smoothscale(game_help,(280, 182)) help_button = screen.blit(game_help,(380, 320)) help_button = Button(help_button) quit_game = py.image.load('Files\\start\\quit_game.png') quit_game = py.transform.smoothscale(quit_game,(200,160)) quit_button = screen.blit(quit_game,(680, 330)) quit_button = Button(quit_button) py.display.flip() while True: for event in py.event.get(): if event.type == QUIT: sys.exit() if event.type == MOUSEBUTTONDOWN: pos = py.mouse.get_pos() if start_button.has(pos): role = choose_role() playground(role) break elif help_button.has(pos): help_page() break elif quit_button.has(pos): sys.exit() break start() start()
|