日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

使用pygame實現垃圾分類小游戲功能(已獲校級二等獎)

瀏覽:27日期:2022-07-16 14:38:07

項目簡介

本項目報名參加了“兗州中材杯”武漢理工大學第十一屆環保創意作品大賽藝術理念組比賽。組員共三名,本人負責代碼實現部分,其余兩人分別負責項目策劃與場景人物繪制。

項目背景

小組中負責策劃的同學經過一定的調研之后發現,我校在校學生普遍缺乏垃圾分類方面的知識。經過討論后,我們把游戲方向定位于“垃圾分類”,游戲類型定位于像素風游戲,由于本人水平和時間有限,只能將玩法設計得盡量簡單。感謝另外兩位組員,他們的努力掩蓋了我水平上的不足。

玩法介紹

家控制一名角色在操場背景上移動,垃圾桶在操場邊上。撿起垃圾丟進相應的垃圾桶內,若全部正確投放則游戲成功,否則游戲失敗。游戲期間,若有不清楚該作何分類的垃圾,則可以點擊圖書館的按鈕,進入圖書館查詢。圖書館提供垃圾圖鑒和分類標準兩種信息。垃圾圖鑒幫助玩家分辨自己撿到的垃圾,而分類標準指每種垃圾的定義及舉例。

項目成果

本項目在“兗州中材杯”武漢理工大學第十一屆環保創意作品大賽藝術理念組比賽中最終獲得了第五名、二等獎的成績,距第四名僅差0.5分。

項目實現

寫項目時本人僅自學了一個月的Python,且本人是大一新生,對計算機科學的基礎知識了解甚少,若代碼風格幼稚、愚蠢,還望讀者見諒。

模塊劃分

游戲按場景分為以下幾個模塊:開始游戲界面游戲說明界面人物選擇界面操場界面(主要游戲場地)、圖書館外界面圖書館內界面游戲結束界面

開始游戲界面:背景(像素化的學校建筑),游戲標題,三個按鈕(開始、游戲說明、退出)。

使用pygame實現垃圾分類小游戲功能(已獲校級二等獎)

游戲說明界面:背景(與開始界面相同),游戲說明文字,返回按鈕。

使用pygame實現垃圾分類小游戲功能(已獲校級二等獎)

人物選擇界面:背景,提示(選擇人物),兩個可選人物。

使用pygame實現垃圾分類小游戲功能(已獲校級二等獎)

操場界面:背景,人物,垃圾桶,隨機產生的垃圾,圖書館按鈕。

使用pygame實現垃圾分類小游戲功能(已獲校級二等獎)使用pygame實現垃圾分類小游戲功能(已獲校級二等獎)

圖書館外界面:背景(我校圖書館的像素風繪制)、操場按鈕(會到操場)、進入按鈕(進入圖書館內部)。

使用pygame實現垃圾分類小游戲功能(已獲校級二等獎)

圖書館內界面:背景(我校圖書館內部),各類垃圾圖標按鈕(廚余垃圾、可回收垃圾、有害垃圾、其他垃圾),垃圾圖鑒按鈕,返回按鈕。子界面:各類垃圾信息界面,垃圾圖鑒界面,返回按鈕。

使用pygame實現垃圾分類小游戲功能(已獲校級二等獎)使用pygame實現垃圾分類小游戲功能(已獲校級二等獎)使用pygame實現垃圾分類小游戲功能(已獲校級二等獎)使用pygame實現垃圾分類小游戲功能(已獲校級二等獎)使用pygame實現垃圾分類小游戲功能(已獲校級二等獎)使用pygame實現垃圾分類小游戲功能(已獲校級二等獎)

游戲結束界面:勝利界面,失敗界面。

使用pygame實現垃圾分類小游戲功能(已獲校級二等獎)使用pygame實現垃圾分類小游戲功能(已獲校級二等獎)

代碼實現

直接上代碼:

import pygame as pyimport sysimport randomfrom pygame.locals import *#===========================================================#========================前期準備===========================py.init()#注:游戲需要的所有文件(圖片等)都放在同游戲目錄的'Files'目錄下。#定義一個按鈕類class Button(py.rect.Rect): def __init__(self, obj): super().__init__(obj) def has(self, pos): if self.right >= pos[0] >= self.left and self.bottom >= pos[1] >= self.top: return True else: return Falsescreen = py.display.set_mode((1000, 650))#===========================================================#=========================圖書館內==========================def knowledge(selection): path = ’Filesinside_liberaryknowledge’ + str(selection) + ’.jpg’ know = py.image.load(path) know = py.transform.smoothscale(know,(1000,650)) screen.blit(know,(0,0)) exits = py.image.load(’Filesinside_liberaryback.jpg’) exits = py.transform.smoothscale(exits,(72,72)) exit_button = screen.blit(exits,(918, 570)) exit_button = Button(exit_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 exit_button.has(pos): selection = 0 break if not selection: breakdef inside_Liberary(): ilib = py.image.load(’Filesinside_liberaryInside.jpg’) ilib = py.transform.smoothscale(ilib,(1000,650)) screen.blit(ilib,(0,0)) #退出圖書館的按鈕 exits = py.image.load(’Filesinside_liberaryexit.jpg’) exits = py.transform.smoothscale(exits,(72,81)) exit_button = screen.blit(exits,(5, 560)) exit_button = Button(exit_button) #廚余垃圾按鈕 rubbish1 = py.image.load(’Filesinside_liberaryrubbish1.jpg’) rubbish1 = py.transform.smoothscale(rubbish1,(150,298)) rubbish1_button = screen.blit(rubbish1, (80,150)) rubbish1_button = Button(rubbish1_button) #可回收垃圾按鈕 rubbish2 = py.image.load(’Filesinside_liberaryrubbish2.jpg’) rubbish2 = py.transform.smoothscale(rubbish2,(150,298)) rubbish2_button = screen.blit(rubbish2, (310,150)) rubbish2_button = Button(rubbish2_button) #有害垃圾按鈕 rubbish3 = py.image.load(’Filesinside_liberaryrubbish3.jpg’) rubbish3 = py.transform.smoothscale(rubbish3,(150,298)) rubbish3_button = screen.blit(rubbish3, (540,150)) rubbish3_button = Button(rubbish3_button) #不可回收垃圾按鈕 rubbish4 = py.image.load(’Filesinside_liberaryrubbish4.jpg’) rubbish4 = py.transform.smoothscale(rubbish4,(150,298)) rubbish4_button = screen.blit(rubbish4, (770,150)) rubbish4_button = Button(rubbish4_button) #圖鑒按鈕 rubbish5 = py.image.load(’Filesinside_liberaryrubbish5.jpg’) rubbish5 = py.transform.smoothscale(rubbish5,(82, 72)) rubbish5_button = screen.blit(rubbish5, (903,560)) rubbish5_button = Button(rubbish5_button) py.display.flip() selection = -1 #進入事件循環 while True: for event in py.event.get(): if event.type == QUIT: sys.exit() if event.type == MOUSEBUTTONDOWN: pos = py.mouse.get_pos() #點擊離開圖書館 if exit_button.has(pos): selection = 0 break #點擊廚余垃圾 if rubbish1_button.has(pos): selection = 1 break #點擊可回收垃圾 if rubbish2_button.has(pos): selection = 2 break #點擊有害垃圾 if rubbish3_button.has(pos): selection = 3 break #點擊不可回收垃圾 if rubbish4_button.has(pos): selection = 4 break #點擊圖鑒 if rubbish5_button.has(pos): selection = 5 break if selection != -1: break if selection: knowledge(selection) inside_Liberary()#===========================================================#=========================圖書館外==========================def outside_Liberary(): olib = py.image.load(’Filesoutside_liberaryOutside.jpg’) olib = py.transform.smoothscale(olib,(1000,650)) screen.blit(olib,(0,0)) #進入圖書館的按鈕 enter = py.image.load(’Filesoutside_liberaryenter_lib.jpg’) enter = py.transform.smoothscale(enter,(72, 72)) enter_button = screen.blit(enter,(470,550)) enter_button = Button(enter_button) #退出圖書館的按鈕 exits = py.image.load(’Filesoutside_liberaryplayground.jpg’) exits = py.transform.smoothscale(exits,(72, 51)) exit_button = screen.blit(exits,(5, 590)) exit_button = Button(exit_button) py.display.flip() selection = -1 #進入事件循環 while True: for event in py.event.get(): if event.type == QUIT: sys.exit() if event.type == MOUSEBUTTONDOWN: pos = py.mouse.get_pos() #點擊返回操場 if exit_button.has(pos): selection = 0 break #點擊進入圖書館 if enter_button.has(pos): selection = 1 break if selection != -1: break if selection: inside_Liberary() outside_Liberary()#===========================================================#==========================游戲幫助=========================def help_page(): background = py.image.load(’Fileshelpbackground.jpg’) background = py.transform.smoothscale(background,(1000,650)) screen.blit(background,(0,0)) #返回按鈕 exits = py.image.load(’Fileshelpback.jpg’) exits = py.transform.smoothscale(exits,(72,57)) exit_button = screen.blit(exits,(5, 585)) exit_button = Button(exit_button) py.display.flip() back = 0 while True: for event in py.event.get(): if event.type == QUIT: sys.exit() if event.type == MOUSEBUTTONDOWN: pos = py.mouse.get_pos() if exit_button.has(pos): back = 1 break if back: break #===========================================================#==========================游戲結束=========================def game_over(result): path = ’Filesgame_overresult’ + str(result) + ’.jpg’ background = py.image.load(path) background = py.transform.smoothscale(background,(1000,650)) screen.blit(background,(0,0)) py.display.flip() temp = 0 while True: for event in py.event.get(): if event.type == QUIT: sys.exit() if event.type == MOUSEBUTTONDOWN: temp = 1 break if temp: break#===========================================================#==========================操場環節=========================choices = [’01’, ’02’, ’11’, ’12’, ’21’, ’22’, ’31’]class Rubbish(): def __init__(self, sort): self.sort = sort self.img = py.image.load(’Filesplayground’ + sort + ’.jpg’) x = random.randint(100, 1400) y = random.randint(110, 900) self.position = self.img.get_rect() self.position = self.position.move((x, y)) screen.blit(self.img, self.position)class Role(): def __init__(self, role): self.r_side = py.image.load(’Filesplayground’ + role + ’1.jpg’) self.r_walk = py.image.load(’Filesplayground’ + role + ’2.jpg’) self.l_side = py.transform.flip(self.r_side, True, False) self.l_walk = py.transform.flip(self.r_walk, True, False) self.img = self. r_side self.position = self.img.get_rect() screen.blit(self.img, self.position) self.rubbish = None def move(self, key): if key == K_UP: if self.position.top <= 200: return (0, 2) else: self.position = self.position.move(0, -2) return 0 if key == K_DOWN: if self.position.bottom >= 450: return (0, -2) else: self.position = self.position.move(0, 2) return 0 if key == K_RIGHT: if self.position.right >= 800: return (-2, 0) else: self.position = self.position.move(2, 0) return 0 if key == K_LEFT: if self.position.left <= 200: return (2, 0) else: self.position = self.position.move(-2, 0) return 0 class Trash_can(): def __init__(self, num): self. num = num self.img = py.image.load(’Filesplayground’ + str(num) + ’.jpg’) self.img = py.transform.smoothscale(self.img,(100, 92)) self.position = self.img.get_rect() self.position = self.position.move((100 + num*200, 0)) screen.blit(self.img, self.position)def playground(selection): background = py.image.load(’FilesplaygroundPlayground.jpg’) screen.blit(background, [0, 0]) lib = py.image.load(’Filesplaygroundliberary.jpg’) lib = py.transform.smoothscale(lib, (78, 72)) lib_button = screen.blit(lib, (900, 10)) lib_button = Button(lib_button) trash_can = [] for num in range(0, 4): trash_can.append(Trash_can(num)) role = Role(selection) rubbish = [] for sort in choices: rubbish.append(Rubbish(sort)) py.display.flip() down = 0 go = None move_bg = [0, 0] temp = 0 while True: for event in py.event.get(): if event.type == QUIT: sys.exit() if event.type == MOUSEBUTTONDOWN: pos = py.mouse.get_pos() if lib_button.has(pos): outside_Liberary() if event.type == KEYDOWN and event.key in (K_UP, K_DOWN, K_RIGHT, K_LEFT): if event.key == K_RIGHT: role.img = role.r_side elif event.key == K_LEFT: role.img = role.l_side down = 1 go = event.key if event.type == KEYUP and event.key == go: if event.key == K_RIGHT: role.img = role.r_side elif event.key == K_LEFT: role.img = role.l_side down = 0 take = role.position.collidelist([each.position for each in rubbish]) if take >= 0 and not role.rubbish: role.rubbish = rubbish[take].sort[0] del rubbish[take] put = role.position.collidelist([each.position for each in trash_can]) if put >= 0 and role.rubbish: if role.rubbish == str(trash_can[put].num): role.rubbish = None if not len(rubbish): game_over(1) break else: game_over(2) break if down: moved = role.move(go) temp += 1 if not temp % 20: if role.img == role.r_side: role.img = role.r_walk elif role.img == role.r_walk: role.img = role.r_side elif role.img == role.l_side: role.img = role.l_walk else: role.img = role.l_side if moved: if 0 >= moved[0] + move_bg[0] >= -497 and 0 >= moved[1] + move_bg[1] >= -326: for i in range(2): move_bg[i] += moved[i] for each in rubbish: each.position = each.position.move(moved) for each in trash_can: each.position = each.position.move(moved) elif role.position.left - moved[0] >= 0 and role.position.right - moved[0] <= 1000 and role.position.top - moved[1] >= 0 and role.position.bottom - moved[1] <= 650: role. position = role.position.move([-i for i in moved]) screen.blit(background, move_bg) lib = py.image.load(’Filesplaygroundliberary.jpg’) lib = py.transform.smoothscale(lib, (78, 72)) lib_button = screen.blit(lib, (900, 10)) lib_button = Button(lib_button) for each in trash_can: screen.blit(each.img, each.position) for each in rubbish: screen.blit(each.img, each.position) screen.blit(role.img, role.position) py.display.flip()#===========================================================#==========================選擇人物=========================def choose_role(): background = py.image.load(’Fileschoose_playerbackground.jpg’) background = py.transform.smoothscale(background,(1000,650)) screen.blit(background, (0, 0)) man = py.image.load(’Fileschoose_playerman.jpg’) man = py.transform.smoothscale(man,(123, 325)) man_button = screen.blit(man,(200, 200)) man_button = Button(man_button) woman = py.image.load(’Fileschoose_playerwoman.jpg’) 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(’Filesstartbackground.jpg’) background = py.transform.smoothscale(background,(1000,650)) screen.blit(background, (0, 0)) start_game = py.image.load(’Filesstartstart_game.jpg’) 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(’Filesstartgame_help.jpg’) 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(’Filesstartquit_game.jpg’) 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()

游戲效果

游戲演示如下:

使用pygame實現垃圾分類小游戲功能(已獲校級二等獎)

點此觀看視頻:垃圾分類小游戲

總結

這個游戲是本人第一次寫出一百行以上的代碼,寫完后沒來得及進行進一步的優化就提交了項目。

到此這篇關于使用pygame實現垃圾分類小游戲功能(已獲校級二等獎)的文章就介紹到這了,更多相關pygame垃圾分類小游戲內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: pygame
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩一区二区三区在线看| 亚洲综合激情在线| 在线精品视频一区| 日韩超碰人人爽人人做人人添| 久久麻豆精品| 久久婷婷亚洲| 欧美另类专区| 青草国产精品| 精品久久久久久久| 欧美片第1页| 久久久久国产精品一区三寸| 激情综合网站| 欧美影院精品| 久久精品亚洲| 日韩精品午夜| 日韩av一区二区三区四区| 日韩综合一区二区| 91精品韩国| 国产精品婷婷| 精品高清久久| 在线亚洲成人| 国产一区二区三区亚洲综合| 91久久中文| 国产精品一站二站| 99成人在线| 蜜桃av一区二区三区电影| 麻豆精品在线视频| 尹人成人综合网| 国产精品一区二区三区av| 久久蜜桃精品| 久久国产人妖系列| 不卡在线一区| 美女福利一区二区三区| 日日摸夜夜添夜夜添国产精品| 久久99国产精品视频| 久久成人亚洲| 欧美激情99| 偷拍亚洲精品| 丝袜美腿成人在线| 午夜精品一区二区三区国产| 国产精品网址| 免费成人在线影院| 九一精品国产| 国产日韩欧美三区| 另类亚洲自拍| 亚洲作爱视频| 国产精品高潮呻吟久久久久| 亚洲免费观看| 日韩久久精品| 久久久久久黄| 美女福利一区二区三区| 久久精品99国产精品日本| 日韩欧美一区二区三区在线观看 | 久久国产电影| av免费不卡国产观看| 久久99国产精品视频| 国产精品入口久久| 午夜亚洲福利| 国产欧美一区二区三区米奇| 国产日本亚洲| 国产精品一区2区3区| 自拍自偷一区二区三区| 日本不良网站在线观看| 欧洲激情综合| 欧美精品一卡| 日韩精品一级| 鲁鲁在线中文| 极品av在线| 欧美精品一二| 亚洲精品精选| 国产欧美精品久久| 欧美激情麻豆| 黄在线观看免费网站ktv| 日韩精品一卡| 亚洲视频播放| 国产乱人伦丫前精品视频| 无码日韩精品一区二区免费| 日本一区二区中文字幕| 卡一卡二国产精品| 免费久久精品视频| 婷婷亚洲成人| 国产精品xxxav免费视频| 午夜精品亚洲| 欧美日本久久| 国产精品巨作av| 欧美日韩国产综合网| 国产日韩欧美| 在线国产一区二区| 欧美日韩精品一区二区三区视频 | 中文字幕人成乱码在线观看| 精品不卡一区| 欧美网站在线| 国产一区二区三区黄网站| 亚洲欧美日韩专区| 你懂的国产精品| 亚洲免费毛片| 久久亚洲成人| 国产精品99久久久久久董美香| 成人免费电影网址| 国产精品一卡| 视频在线在亚洲| 日韩精品一区二区三区免费观看| 国产劲爆久久| 快she精品国产999| 色黄视频在线观看| 男人操女人的视频在线观看欧美| 97久久精品| 免费看日韩精品| 国产亚洲毛片在线| 88xx成人免费观看视频库| 亚洲免费资源| 成人美女视频| 日本中文字幕视频一区| 欧美 日韩 国产一区二区在线视频 | 久久精品超碰| 蜜桃tv一区二区三区| 日韩中文字幕无砖| 国产一区观看| 麻豆精品视频在线观看视频| 亚洲综合中文| 日韩中文字幕不卡| 欧洲在线一区| 久久精品国产亚洲夜色av网站| 日韩欧美三区| 国产精品videosex极品| 免费看的黄色欧美网站| 免费看日韩精品| 久久亚洲电影| 黄色亚洲精品| 中文不卡在线| 一区二区三区四区精品视频| 亚洲精品电影| 视频一区二区三区入口| 欧美日韩中文一区二区| 亚洲午夜视频| 免费av一区二区三区四区| 欧美日韩国产欧| 亚洲v天堂v手机在线| 久久亚洲不卡| 尹人成人综合网| 天堂俺去俺来也www久久婷婷| 老鸭窝毛片一区二区三区| 午夜宅男久久久| 午夜久久av| 国产精品magnet| 精品久久久久中文字幕小说| 国模大尺度视频一区二区| 国产自产自拍视频在线观看| 福利一区二区三区视频在线观看| 国产精品密蕾丝视频下载| 欧美精品91| 日韩精品电影| 一区二区国产精品| 精品中文字幕一区二区三区| 国产欧美日韩一级| 国产亚洲人成a在线v网站| 在线精品亚洲欧美日韩国产| 蜜桃伊人久久| 精品免费av| 久久不射网站| 欧美黄色精品| 亚洲人成亚洲精品| 国产一区二区精品福利地址| 亚洲福利国产| 国产精品一区二区美女视频免费看| 日韩欧美中文字幕电影| 999视频精品| 动漫av一区| 日本a级不卡| 欧美国产三级| 蜜臀av性久久久久蜜臀aⅴ四虎| 97精品一区| 国产视频一区二| 亚洲影视一区| 青青青免费在线视频| 日韩三级视频| 每日更新成人在线视频| 中文av在线全新| 国产探花一区| 欧美中文字幕| 欧美日韩精品一区二区视频| 国产欧美日韩亚洲一区二区三区| 欧美日韩一区二区三区视频播放| 日韩中文字幕无砖| 成人午夜网址| 国产日韩欧美| 国产极品一区| 国产欧美日韩亚洲一区二区三区| 久久久久久久久久久妇女| 日韩高清中文字幕一区| 国产精品腿扒开做爽爽爽挤奶网站| 高清一区二区三区av| 国产精品久久久久久av公交车| 99综合视频| 一本色道精品久久一区二区三区| 亚洲www啪成人一区二区| 亚洲国产成人二区| a天堂资源在线| 国产极品久久久久久久久波多结野| 欧美在线网站|