作者: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, (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()
|