使用使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
实现垃圾分类小游戏功能(已获校级二等奖)
主要介绍了使用pygame实现垃圾分类小游戏功能(已获校级二等奖),本文通过实例代码给大家介绍的非常详
细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
项目简介
项目简介
本项目报名参加了“兖州中材杯”武汉理工大学第十一届环保创意作品大赛艺术理念组比赛。组员共三名,本人负责代码实现部
分,其余两人分别负责项目策划与场景人物绘制。
项目背景
项目背景
小组中负责策划的同学经过一定的调研之后发现,我校在校学生普遍缺乏垃圾分类方面的知识。经过讨论后,我们把游戏方向
定位于“垃圾分类”,游戏类型定位于像素风游戏,由于本人水平和时间有限,只能将玩法设计得尽量简单。感谢另外两位组
感谢另外两位组
员,他们的努力掩盖了我水平上的不足。
员,他们的努力掩盖了我水平上的不足。
玩法介绍
玩法介绍
家控制一名角色在操场背景上移动,垃圾桶在操场边上。捡起垃圾丢进相应的垃圾桶内,若全部正确投放则游戏成功,否则游
戏失败。游戏期间,若有不清楚该作何分类的垃圾,则可以点击图书馆的按钮,进入图书馆查询。图书馆提供垃圾图鉴和分类
标准两种信息。垃圾图鉴帮助玩家分辨自己捡到的垃圾,而分类标准指每种垃圾的定义及举例。
项目成果
项目成果
本项目在“兖州中材杯”武汉理工大学第十一届环保创意作品大赛艺术理念组比赛中最终获得了第五名、二等奖的成绩,距第四
名仅差0.5分。
项目实现
项目实现
写项目时本人仅自学了一个月的Python,且本人是大一新生,对计算机科学的基础知识了解甚少,若代码风格幼稚、愚蠢,
写项目时本人仅自学了一个月的
,且本人是大一新生,对计算机科学的基础知识了解甚少,若代码风格幼稚、愚蠢,
还望读者见谅。
还望读者见谅。
模块划分
游戏按场景分为以下几个模块:开始游戏界面
面面、图书馆内界面
图书馆内界面、游戏结束界面
游戏结束界面。
操场界面(主要游戏场地)、图书馆外界
图书馆外界
开始游戏界面、游戏说明界面
游戏说明界面、人物选择界面
人物选择界面、操场界面
开始游戏界面:背景(像素化的学校建筑),游戏标题,三个按钮(开始、游戏说明、退出)。
游戏说明界面:背景(与开始界面相同),游戏说明文字,返回按钮。
人物选择界面:背景,提示(选择人物),两个可选人物。
操场界面:背景,人物,垃圾桶,随机产生的垃圾,图书馆按钮。
图书馆外界面:背景(我校图书馆的像素风绘制)、操场按钮(会到操场)、进入按钮(进入图书馆内部)。
图书馆内界面:背景(我校图书馆内部),各类垃圾图标按钮(厨余垃圾、可回收垃圾、有害垃圾、其他垃圾),垃圾图鉴按
钮,返回按钮。子界面:各类垃圾信息界面,垃圾图鉴界面,返回按钮。
游戏结束界面:胜利界面,失败界面。
代码实现
代码实现
直接上代码:
import pygame as py
import sys
import random
from 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 False
screen = py.display.set_mode((1000, 650))
#===========================================================
#=========================图书馆内==========================
def knowledge(selection):
path = 'Files\\inside_liberary\\knowledge' + str(selection) + '.jpg'
know = py.image.load(path)
know = py.transform.smoothscale(know,(1000,650))
screen.blit(know,(0,0))
exits = py.image.load('Files\\inside_liberary\\back.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: