用Python和Pygame写游戏-从入门到精通(2)事件

1、理解事件

import pygame

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 == pygame.QUIT:
        pygame.quit()
        break
 
    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()


2、处理键盘事件

background_image_filename = 'sushiplate.jpg'
close = False 


import pygame
#from pygame.locals import *
from sys import exit
 
pygame.init()
screen = pygame.display.set_mode((640, 480), 0, 32)
background = pygame.image.load(background_image_filename).convert()
 
x, y = 0, 0


#move = {pygame.K_LEFT:0, pygame.K_RIGHT:0, pygame.K_UP:0, pygame.K_DOWN:0}


move_x, move_y = 0, 0
 
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
           pygame.quit()
           exit
           close = True
           
        elif event.type == pygame.KEYDOWN:
            #键盘有按下?
            if event.key == pygame.K_LEFT:
                #按下的是左方向键的话,把x坐标减一
                move_x = -1
            elif event.key == pygame.K_RIGHT:
                #右方向键则加一
                move_x = 1
            elif event.key == pygame.K_UP:
                #类似了
                move_y = -1
            elif event.key == pygame.K_DOWN:
                move_y = 1
        elif event.type == pygame.KEYUP:
#            #如果用户放开了键盘,图就不要动了
            move_x = 0
            move_y = 0
   
    # 如果不break系统会报error: display Surface quit
    if close == True:
        break
    
    #计算出新的坐标
    x+= move_x
    y+= move_y
    screen.fill((0,0,0))
    screen.blit(background, (x,y))
    #在新的位置上画图
    pygame.display.update()


"""
while True:    
    for event in pygame.event.get():
#        if event.type == QUIT:
#           exit()
        if event.type == pygame.KEYDOWN:
            if event.key in move:
                move[event.key] = 1
        elif event.type == pygame.KEYUP:
            if event.key in move:
                move[event.key] = 0
    x -= move[pygame.K_LEFT]
    x += move[pygame.K_RIGHT]
    y -= move[pygame.K_UP]
    y += move[pygame.K_DOWN]
    screen.fill((0,0,0))
    screen.blit(background, (x,y))
    pygame.display.update()
"""


#    会导致系统卡顿
#    event_quit = pygame.event.poll()
#    if event_quit.type == pygame.QUIT:
#        pygame.quit()
#        exit
#        break




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值