分享

我用pygame实现了垃圾分类小游戏,最终获得了《校级二等奖》!

 O听_海_轩O 2020-09-17

 作者:Vincentish

 原文链接:http:///5DKdLs

文末获取本文完整代码!

本文是作者的一个参赛作品,他当时仅仅是一个大一新生,仅自学Python才一个月,就可以完成如此漂亮的一个案例,我觉得对我们过来人来说是一个鼓励,我们应该有信心能够坚持学好某一门编程语言。

基于此,经过作者授权将这个案例分享给大家学习参考,希望对大家有帮助。在观看这篇文章之前,大家可以提前看看这篇文章的效果展示,录制的视频如下。

项目简介

本项目是报名参加了“兖州中材杯”武汉理工大学第十一届环保创意大赛艺术理念组的比赛。其中组员共三名,本人负责代码实现部分,一人负责项目策划,另外一人负责场景人物绘制。

项目背景

小组中负责策划的同学,经过一定的调研之后,发现我校在校生普遍缺乏垃圾分类方面的知识。经过讨论后,我们决定把游戏方向定位于“垃圾分类”,游戏类型定位于像素风游戏。由于本人水平和时间有限,只能将玩法设计得尽量简单,感谢另外两位组员,他们的努力掩盖了我水平上的不足。

玩法介绍

控制一名角色在操场背景上移动,垃圾桶在操场边上,捡起垃圾丢进相应的垃圾桶内,若全部正确投放则游戏成功,否则游戏失败。游戏期间,若有不清楚该作何分类的垃圾,则可以点击图书馆的按钮,进入图书馆查询。图书馆提供垃圾图鉴和分类标准两种信息。垃圾图鉴帮助玩家分辨自己捡到的垃圾,而分类标准指每种垃圾的定义及举例。

项目成果

本项目在“兖州中材杯”武汉理工大学第十一届环保创意作品大赛艺术理念组比赛中,最终排名第五,获得了二等奖的好成绩,距离第四名仅差0.5分。

项目实现

写这个项目时,本人仅自学了一个月的Python,且是一个大一新生,对计算机科学的基础知识了解甚少,若代码让你觉得风格幼稚、愚蠢,还望读者见谅。

模块划分

游戏按场景分为以下几个模块:开始游戏界面游戏说明界面人物选择界面操场界面(主要游戏场地)图书馆外界面图书馆内界面游戏结束界面

1. 开始游戏界面:背景(像素化的学校建筑),游戏标题,三个按钮(开始、游戏说明、退出)。
2. 游戏说明界面:背景(与开始界面相同),游戏说明文字,返回按钮。
3. 人物选择界面:背景,提示(选择人物),两个可选人物。
4. 操场界面:背景,人物,垃圾桶,随机产生的垃圾,图书馆按钮。
5. 图书馆外界面:背景(我校图书馆的像素风绘制)、操场按钮(会到操场)、进入按钮(进入图书馆内部)。
6. 图书馆内界面:背景(我校图书馆内部),各类垃圾图标按钮(厨余垃圾、可回收垃圾、有害垃圾、其他垃圾),垃圾图鉴按钮,返回按钮。子界面:各类垃圾信息界面,垃圾图鉴界面,返回按钮。
7. 游戏结束界面:胜利界面,失败界面。

代码实现

限于文章篇幅,我这里只展示部分代码,完整代码可以在文末直接获取,我相信受到这个文章的启发,你也能够写出很好玩儿的项目来。

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, (00))
    man = py.image.load('Files\\choose_player\\man.png')
    man = py.transform.smoothscale(man,(123325))
    man_button = screen.blit(man,(200200))
    man_button = Button(man_button)
    woman = py.image.load('Files\\choose_player\\woman.png')
    woman = py.transform.smoothscale(woman,(113325))
    woman_button = screen.blit(woman,(687200))
    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, (00))
    start_game = py.image.load('Files\\start\\start_game.png')
    start_game = py.transform.smoothscale(start_game,(140149))
    start_button = screen.blit(start_game,(150330))
    start_button = Button(start_button)
    game_help = py.image.load('Files\\start\\game_help.png')
    game_help = py.transform.smoothscale(game_help,(280182))
    help_button = screen.blit(game_help,(380320))
    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,(680330))
    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()

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多