一起来做记忆消除游戏
pygame吧
全部回复
仅看楼主
level 3
hikaso 楼主
一楼防抽
2014年04月07日 03点04分 1
level 3
hikaso 楼主
在下新人,初来乍到,吧友们请多多关照!
去年寒假开始接触pygame,学习并改编了一段记忆消除游戏的程序。这就是我仅有的一点编程经验。愚以为,分享交流也是提升自我的过程。尝试写这篇教程意在和大家分享,开始和大家一齐交流探讨,一齐进步的路程。
开始前,请容许我再谈一点废话^_^
我学习的书籍有《Beginning Game Development with Python and Pygame》和《Making Games with Python & Pygame》,其中前者的内容太冗长了,如果大家想看中文且想看最主要的内容,推荐大家阅读eyehere目光博客里的系列教程。后者介绍了10来个简短的游戏程序实例,内容更丰富,这篇教程就是根据其中的第三章所写(第一章的内容是关于Python和Pygame的安装,第二章是pygame的基础内容,下面我结合着讲)
好了,我们开始吧!
2014年04月07日 04点04分 2
level 3
hikaso 楼主
首先,让我们创造出一个游戏窗口。请快速浏览下面这段程序:
import pygame, sys
from pygame.locals import *
pygame.init()
DISPLAYSURF = pygame.display.set_mode((400, 300))
pygame.display.set_caption('Hello World!')
while True: #游戏主循环
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
看不懂?不用急,我们一条一条地理解。
1.import pygame, sys
pygame模块包含了处理图像,声音和其他的函数。
import语句导入pygame模块,这个动作也导入了pygame模块里面的模块,如pygame.images和pygame.mixer.music
2.from pygame.locals import *
导入模块后,如果我们想调用它里面的函数,我们通常会用此格式:模块名.函数名()
,但如果我们用此格式:from 模块名 import * ,我们就可以直接用此格式:函数名()
对于pygame.locals模块,这条语句使我们调用它的常变量的时候更简便。因为它的常变量的名称容易辨认,我们一看就知道它们属于pygame.locals模块,其它模块还是老老实实用import语句吧^_^
3.pygame.init()
此语句乃初始化所必须,无需理解,只需知道:它始终紧随pygame模块的调用之后,调用其它pygame函数之前。
4.DISPLAYSURF = pygame.display.set_mode((400, 300))
set_mode乃pygame模块里的display模块里的函数,它接受一个二元元组,此语句调用它返回一个pygame.Surface对象(就是400像素宽,300像素高的窗口)并储存在一个叫DISPLAYSURF的变量。
5.pygame.display.set_caption('Hello World!')
此语句接收‘Hello World!'字符串,显示为游戏窗口的名称,即游戏名。
6.while True:
这是一个游戏主循环,分为三步骤:处理事件,更新状态,绘制图像
游戏状态是指游戏中的一组变量值,比如主角的血量啊,位置啊,分数啊,谁的回合啊。比如主角去血了我们就说游戏状态改变了。
7. for event in pygame.event.get():
如果我们按下了键盘,或移动了鼠标,pygame.event.get()就产生一个对应的pygame.event.Event(当然是event模块里的其中一个对象)来记录此事件,并按顺序形成一个列表,我们再用for循环遍历列表中的事件,分别作出不同处理(这里还没有)。
8.if event.type == QUIT:
事件对象有一个属性叫做type,它告诉我们事件是属于哪类。if判断如果是QUIT(全名pygame.locals.QUIT),就执行一下代码:
9. pygame.quit()
sys.exit()
记住此顺序就好了。
最后总结这段程序在干什么:不断地检测QUIT事件,并不断地绘制一个黑色窗口。
2014年04月07日 05点04分 4
level 3
hikaso 楼主
内容不多,但很枯燥,能坚持看完实在不易,接着我们可以开始真正的制作游戏啦!
2014年04月07日 05点04分 5
level 3
hikaso 楼主
先上一下原型和自己版本的效果图(qq截图不尽人意),如你所见,它们的画面很简陋,但可以改进,让我们先注重程序的实现。
图片来自:hikaso的百度相册图片来自:hikaso的百度相册
2014年04月07日 06点04分 6
level 6
这么夭折了。
2014年05月03日 08点05分 7
这坑就等下次补完吧,最近很少能上网
2014年05月05日 10点05分
level 7
噢,我是来晚了还是来早了呢
2015年05月09日 15点05分 8
1