openKylin论坛

 找回密码

Pygame写游戏, 从入门到精通(二点一) [复制链接]

上次我们试着写了一个最简单的Pygame程序并且解释了一个大概的框架,这次就Pygame中也是游戏中最关键(……好吧,也许并不是关键,但绝对是至关重要的一项)的事件来展开。
此图为一个用Pygame开发的游戏,或许有些简陋,但是只要你有爱,什么都能出来!

理解事件事件是什么,其实从名称来看我们就能想到些什么,而且你所想到的基本就是事件的真正意思了。我们上一个程序,会一直运行下去,直到你关闭窗口而产生了一个QUIT事件,Pygame会接受用户的各种操作(比如按键盘,移动鼠标等)产生事件。事件随时可能发生,而且量也可能会很大,Pygame的做法是把一系列的事件存放一个队列里,逐个的处理。

事件检索上个程序中,使用了pygame.event.get()来处理所有的事件,这好像打开大门让所有的人进入。如果我们使用pygame.event.wait(),Pygame就会等到发生一个事件才继续下去,就好像你在门的猫眼上盯着外面一样,来一个放一个……一般游戏中不太实用,因为游戏往往是需要动态运作的;而另外一个方法pygame.event.poll()就好一些,一旦调用,它会根据现在的情形返回一个真实的事件,或者一个“什么都没有”。下表是一个常用事件集:
事件产生途径参数
QUIT用户按下关闭按钮none
ATIVEEVENTPygame被激活或者隐藏gain, state
KEYDOWN键盘被按下unicode, key, mod
KEYUP键盘被放开key, mod
MOUSEMOTION鼠标移动pos, rel, buttons
MOUSEBUTTONDOWN鼠标按下pos, button
MOUSEBUTTONUP鼠标放开pos, button
JOYAXISMOTION游戏手柄(Joystick or pad)移动joy, axis, value
JOYBALLMOTION游戏球(Joy ball)?移动joy, axis, value
JOYHATMOTION游戏手柄(Joystick)?移动joy, axis, value
JOYBUTTONDOWN游戏手柄按下joy, button
JOYBUTTONUP游戏手柄放开joy, button
VIDEORESIZEPygame窗口缩放size, w, h
VIDEOEXPOSEPygame窗口部分公开(expose)?none
USEREVENT触发了一个用户事件code如果你想把这个表现在就背下来,当然我不会阻止你,但实在不是个好主意,在实际的使用中,自然而然的就会记住。我们先来写一个可以把所有方法输出的程序,它的结果是这样的。

我们这里使用了wait(),因为这个程序在有事件发生的时候动弹就可以了。还用了font模块来显示文字(后面会讲的),下面是源代码:

import pygame
from pygame.locals import *
from sys import exit

pygame.init()
SCREEN_SIZE = (640, 480)
screen = pygame.display.set_mode(SCREEN_SIZE, 0, 32)

font = pygame.font.SysFont("arial", 16);
font_height = font.get_linesize()
event_text = []

while True:

    event = pygame.event.wait()
    event_text.append(str(event))
    #获得时间的名称
    event_text = event_text[-SCREEN_SIZE[1]/font_height:]
    #这个切片操作保证了event_text里面只保留一个屏幕的文字

    if event.type == QUIT:
        exit()

    screen.fill((255, 255, 255))

    y = SCREEN_SIZE[1]-font_height
    #找一个合适的起笔位置,最下面开始但是要留一行的空
    for text in reversed(event_text):
        screen.blit( font.render(text, True, (0, 0, 0)), (0, y) )
        #以后会讲
        y-=font_height
        #把笔提一行

    pygame.display.update()

楼主
发表于 2013-7-3 09:54:41
回复

使用道具 举报

Pygame写游戏, 从入门到精通(二点一) [复制链接]

{:3_54:}道长,图片里的游戏是您老人家做的么!?
沙发
发表于 2013-7-3 10:21:00
回复

使用道具 举报

Pygame写游戏, 从入门到精通(二点一) [复制链接]

Jiaowen520Li 发表于 2013-7-3 10:21
道长,图片里的游戏是您老人家做的么!?

显然不是啊,这风格配不上我的称呼  我要做肯定是仙侠风的  哈哈
板凳
 楼主| 发表于 2013-7-3 14:00:31
回复

使用道具 举报

Pygame写游戏, 从入门到精通(二点一) [复制链接]

ShineHuang 发表于 2013-7-3 14:00
显然不是啊,这风格配不上我的称呼  我要做肯定是仙侠风的  哈哈

{:3_52:}我也这么认为!那道长赶紧上自己做的游戏截图给俺们看看呀~
地板
发表于 2013-7-3 14:03:04
回复

使用道具 举报

openKylin

GMT+8, 2024-5-4 17:08 , Processed in 0.017829 second(s), 17 queries , Gzip On.

Copyright ©2022 openKylin. All Rights Reserved .

ICP No. 15002470-12 Tianjin

快速回复 返回顶部 返回列表