Pygame暂停键

439 阅读1分钟

在使用Pygame制作安卓游戏时,需要在游戏中添加暂停功能,当玩家按下“q”键时,游戏暂停,再按下“q”键时,游戏解除暂停。

huake_00152_.jpg

2、解决方案

1、导入必要的库和模块

import pygame, sys
from pygame.locals import * 
try:
    import Android
except ImportError:
    Android = None

2、初始化Pygame

pygame.init()

if Android:
    android.init()
    android.map_key(android.KEYCODE_BACK, pygame.K_ESCAPE)

3、创建一个游戏窗口

size = width, height = 1276,650
screen = pygame.display.set_mode(size)

4、加载游戏资源

r = 0
bif = pygame.image.load("map.png") 
pygame.display.set_caption("Pygame 2D RPG !")
x,y=0,0
movex, movey=0,0
character="boy.png"
player=pygame.image.load(character).convert_alpha()

5、创建游戏循环

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        if event.type==KEYDOWN:
            if event.key==K_a:
                movex=-1
            elif event.key==K_d:
                movex=+1
            elif event.key==K_w:
                movey=-1
            elif event.key==K_s:
                movey=+1
        if event.type==KEYUP:
            if event.key==K_a:
                movex=0
            elif event.key==K_d:
                movex=0
            elif event.key==K_w:
                movey=0
            elif event.key==K_s:
                movey=0
            elif event.type == KEYDOWN:
                if event.key == K_ESCAPE:
                    pygame.quit()
                    sys.exit()
    x+=movex
    y+=movey
    screen.fill((r,0,0))
    screen.blit(bif,(0,0))
    screen.blit(player,(x,y)) 

    pygame.display.update() 

6、添加暂停功能

在游戏循环中添加以下代码:

PAUSED = False
font = pygame.font.SysFont("serif", 72)
text_paused = font.render("PAUSED", True, (255, 0, 0))

while True:

    # --- events ---

    for event in pygame.event.get():

        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

        if event.type==KEYDOWN:
            if event.key == K_ESCAPE:
                pygame.quit()
                sys.exit()
            elif event.key==K_q:
                PAUSED = not PAUSED

        if not PAUSED:
            if event.type==KEYDOWN:
                if event.key==K_a:
                    movex=-1
                elif event.key==K_d:
                    movex=+1
                elif event.key==K_w:
                    movey=-1
                elif event.key==K_s:
                    movey=+1
            if event.type==KEYUP:
                if event.key==K_a:
                    movex=0
                elif event.key==K_d:
                    movex=0
                elif event.key==K_w:
                    movey=0
                elif event.key==K_s:
                    movey=0

    # --- changing values ---

    if not PAUSED:
        x+=movex
        y+=movey

    # --- drawing ---

    screen.fill((r,0,0))
    screen.blit(bif,(0,0))
    screen.blit(player,(x,y)) 

    if PAUSED:
        screen.blit(text_paused, (100, 100))

    pygame.display.update() 

7、运行游戏

if __name__ == '__main__':
    Game().run()

当玩家按下“q”键时,游戏将暂停,再按下“q”键时,游戏将解除暂停。