pygame系列_游戲中的事件


先看一下我做的demo:

hongten_pygame

當玩家按下鍵盤上的:上,下,左,右鍵的時候,后台會打印出玩家所按鍵的數字值,而圖形會隨之移動

這是客觀上面存在的現象。

那么啥是事件呢?

你叫我做出定義,我不知道,我只能舉個例子說明,例如接下來的代碼中,列出來一些關於游戲中的事件

'''
    事件                         產生途徑                            參數
    QUIT                       用戶按下關閉按鈕                    none
    ATIVEEVENT                 Pygame被激活或者隱藏                    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
    VIDEORESIZE                Pygame窗口縮放                    size, w, h
    VIDEOEXPOSE                Pygame窗口部分公開(expose)            none
    USEREVENT                  觸發了一個用戶事件                    code
'''

如鼠標按下事件,鼠標放開事件,鍵盤按下事件.....

這些事件的發生都伴隨着一個動作的發生,正是因為有動作的發生,所以我們才可以撲捉到這些動作,從而做出相應的反應

如,我們按下鍵盤的左鍵,圖片就向左移動一段距離...

================================================

代碼部分:

================================================

 1 #handle the key event
 2 
 3 import pygame
 4 from pygame.locals import *
 5 from sys import exit
 6 
 7 '''
 8     事件                         產生途徑                            參數
 9     QUIT                 用戶按下關閉按鈕                    none
10     ATIVEEVENT                 Pygame被激活或者隱藏                    gain, state
11     KEYDOWN                 鍵盤被按下                            unicode, key, mod
12     KEYUP                 鍵盤被放開                            key, mod
13     MOUSEMOTION                 鼠標移動                            pos, rel, buttons
14     MOUSEBUTTONDOWN         鼠標按下                            pos, button
15     MOUSEBUTTONUP         鼠標放開                            pos, button
16     JOYAXISMOTION         游戲手柄(Joystick or pad)移動           joy, axis, value
17     JOYBALLMOTION         游戲球(Joy ball)?移動            joy, axis, value
18     JOYHATMOTION         游戲手柄(Joystick)?移動            joy, axis, value
19     JOYBUTTONDOWN         游戲手柄按下                            joy, button
20     JOYBUTTONUP                 游戲手柄放開                            joy, button
21     VIDEORESIZE                 Pygame窗口縮放                    size, w, h
22     VIDEOEXPOSE                 Pygame窗口部分公開(expose)            none
23     USEREVENT                 觸發了一個用戶事件                    code
24 '''
25 __author__ = {'name' : 'Hongten',
26               'mail' : 'hongtenzone@foxmail.com',
27               'blog' : 'http://www.cnblogs.com/hongten',
28               'QQ'   : '648719819',
29               'Version' : '1.0'}
30 
31 BG_IMAGE = 'C:\\test\\1.gif'
32 
33 pygame.init()
34 screen = pygame.display.set_mode((500, 500), 0, 32)
35 bg = pygame.image.load(BG_IMAGE).convert()
36 
37 x, y = 0, 0
38 move_x, move_y = 0, 0
39 
40 while 1:
41     for event in pygame.event.get():
42         #print(event.type)
43         if event.type == QUIT:
44             exit()
45         if event.type == KEYDOWN:
46             print(event.key)
47             #event.key返回的是一個數字值,而K_LEFT,K_UP,K_RIGHT,K_DOWN等都是常量,
48             #他們代表的也是一個數字值,這些數字值可以用:print(event.key)獲取到
49             #如:K_LEFT = 276
50             #   K_UP = 273
51             #所以下面的代碼可以替換為:
52             #if event.key == 276:
53             #    move_x = -10
54             if event.key == K_LEFT:
55                 move_x = -10
56             elif event.key == K_UP:
57                 move_y = -10
58             elif event.key == K_RIGHT:
59                 move_x = 10
60             elif event.key == K_DOWN:
61                 move_y = 10
62         elif event.type == KEYUP:
63             move_x = 0
64             move_y = 0
65 
66         x += move_x
67         y += move_y
68         #print(x, y)
69 
70         screen.fill((0, 0, 0))
71         screen.blit(bg, (x, y))
72         pygame.display.update()

參考資料:

http://eyehere.net/2011/python-pygame-novice-professional-2/

 

========================================================

More reading,and english is important.

I'm Hongten

 

大哥哥大姐姐,覺得有用打賞點哦!多多少少沒關系,一分也是對我的支持和鼓勵。謝謝。
Hongten博客排名在100名以內。粉絲過千。
Hongten出品,必是精品。

E | hongtenzone@foxmail.com  B | http://www.cnblogs.com/hongten

========================================================


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM