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

来源:互联网 发布:bose qc35淘宝假货 编辑:程序博客网 时间:2024/05/21 11:29

1、理解事件

import pygamepygame.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
原创粉丝点击