Android Pygame暂停键

Android Pygame暂停键,android,python,2d,pygame,Android,Python,2d,Pygame,我正在pygame中为android制作一个游戏,以下是我的代码: import pygame, sys from pygame.locals import * try: import Android except ImportError: Android = None pygame.init() if Android: android.init() android.map_key(android.KEYCODE_BACK, pygame.K_ESCAPE

我正在pygame中为android制作一个游戏,以下是我的代码:

import pygame, sys
from pygame.locals import * 

try:
    import Android
except ImportError:
    Android = None

pygame.init()

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

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

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()

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() 
  • 有人能给我一个链接到我可以学习pygame的资源吗

  • 在我的游戏中,当我按下“q”键时,它会暂停游戏,当我再次按下它时,它会解冻。有谁能给我一个建议,告诉我怎么做。我现在觉得这有点模糊,但是,这意味着每当按下“q”键时,它就会停止角色移动,一切都会停止

  • 看起来是学习一些教程的好地方。我不确定你要找的东西有多高级,所以它们可能有点基本。乍一看,这看起来相当不错:

    这可能是一种非常笨拙的方法,但您可以创建一个无限循环,该循环会重复,直到再次按q键:

    if <q key pressed>:
        while 1:
            sleep(1)
            if <q key pressed>:
                 break
    
    如果:
    而1:
    睡眠(1)
    如果:
    打破
    
    是一个相当简化的版本。

    默认版本是一个非常好的开始。具体来说,您应该查看他们使用pygame.time.Clock.tick来限制帧速率

    一旦有了游戏循环,暂停的最简单方法就是使用“event.wait()”,它会停止并等待事件发生。您只需使用此按钮等待取消暂停按钮按下,然后继续事件循环。

    免费电子书(PDF)

    • -没有pygame-与上述作者相同
    暂停,大致如下所示:

    self.PAUSED = False
    
    while True:
        for event in pygame.event.get():
            if event.type==KEYDOWN:
                if event.key==K_q:
                    self.PAUSED = not self.PAUSED
    
    
        if not self.PAUSED:
    
            x+=movex
            y+=movey
            screen.fill((r,0,0))
            screen.blit(bif,(0,0))
            screen.blit(player,(x,y)) 
    
            pygame.display.update() 
    
    编辑:

    类中没有代码,因此必须使用
    PAUSED
    而不使用
    self.

    暂停屏幕和键盘以及文本“暂停”的工作代码

    编辑:

    带有类的版本(或多或少)

    import pygame, sys
    from pygame.locals import * 
    
    try:
        import Android
    except ImportError:
        Android = None
    
    
    #----------------------------------------------------------------------
    
    class Background():
    
        def __init__(self, screen):
    
            self.screen = screen
    
            self.x = 0
            self.y = 0
    
            self.r = 0
    
            filename = "maps.png" # "start_screen.jpg" #
    
            self.image = pygame.image.load(filename).convert_alpha()
    
        def draw(self):
            self.screen.fill((self.r,0,0))
            self.screen.blit(self.image, (self.x, self.y))
    
    
    #----------------------------------------------------------------------
    
    class Player():
    
        def __init__(self, screen):
    
            self.screen = screen
    
            self.x = 0
            self.y = 0
            self.movex = 0
            self.movey = 0
    
            filename = "boy.png" # "jar.png" # 
    
            self.image = pygame.image.load(filename).convert_alpha()
    
        def move(self):
            self.x += self.movex
            self.y += self.movey        
    
        def draw(self):
            self.screen.blit(self.image, (self.x, self.y))
    
        def events(self, event):
    
            if event.type == KEYDOWN:
                if event.key == K_a:
                    self.movex = -1
                elif event.key == K_d:
                    self.movex = +1
                elif event.key == K_w:
                    self.movey = -1
                elif event.key == K_s:
                    self.movey = +1
    
            if event.type==KEYUP:
                if event.key == K_a:
                    self.movex = 0
                elif event.key == K_d:
                    self.movex = 0
                elif event.key == K_w:
                    self.movey = 0
                elif event.key == K_s:
                    self.movey = 0
    
    #----------------------------------------------------------------------
    
    class Game():
    
        def __init__(self):
    
            pygame.init()
    
            if Android:
                android.init()
                android.map_key(android.KEYCODE_BACK, pygame.K_ESCAPE)
    
            self.size = self.width, self.height = 1276, 650
            self.screen = pygame.display.set_mode(self.size)
    
            pygame.display.set_caption("Pygame 2D RPG !")
    
            self.background = Background(self.screen)
            self.player = Player(self.screen)
    
            font = pygame.font.SysFont("serif", 72)
            self.text_paused = font.render("PAUSED", True, (255, 0, 0))
    
        def run(self):
    
            PAUSED = False
    
            RUNNING = True
    
            while RUNNING:
    
                # --- events ---
    
                for event in pygame.event.get():
    
                    if event.type == pygame.QUIT:
                        RUNNING = False
    
                    if event.type==KEYDOWN:
                        if event.key == K_ESCAPE:
                            RUNNING = False
                        elif event.key==K_q:
                            PAUSED = not PAUSED
    
                    if not PAUSED:
                        self.player.events(event)
    
                # --- changing values ---
    
                if not PAUSED:
                    self.player.move()
    
                # --- drawing ---
    
                self.background.draw()
                self.player.draw()
    
                if PAUSED:
                    self.screen.blit(self.text_paused, (100, 100))
    
                pygame.display.update() 
    
            pygame.quit()
            sys.exit()
    
    #----------------------------------------------------------------------
    
    if __name__ == '__main__':
        Game().run()
    
    import pygame, sys
    from pygame.locals import * 
    
    try:
        import Android
    except ImportError:
        Android = None
    
    
    #----------------------------------------------------------------------
    
    class Background():
    
        def __init__(self, screen):
    
            self.screen = screen
    
            self.x = 0
            self.y = 0
    
            self.r = 0
    
            filename = "maps.png" # "start_screen.jpg" #
    
            self.image = pygame.image.load(filename).convert_alpha()
    
        def draw(self):
            self.screen.fill((self.r,0,0))
            self.screen.blit(self.image, (self.x, self.y))
    
    
    #----------------------------------------------------------------------
    
    class Player():
    
        def __init__(self, screen):
    
            self.screen = screen
    
            self.x = 0
            self.y = 0
            self.movex = 0
            self.movey = 0
    
            filename = "boy.png" # "jar.png" # 
    
            self.image = pygame.image.load(filename).convert_alpha()
    
        def move(self):
            self.x += self.movex
            self.y += self.movey        
    
        def draw(self):
            self.screen.blit(self.image, (self.x, self.y))
    
        def events(self, event):
    
            if event.type == KEYDOWN:
                if event.key == K_a:
                    self.movex = -1
                elif event.key == K_d:
                    self.movex = +1
                elif event.key == K_w:
                    self.movey = -1
                elif event.key == K_s:
                    self.movey = +1
    
            if event.type==KEYUP:
                if event.key == K_a:
                    self.movex = 0
                elif event.key == K_d:
                    self.movex = 0
                elif event.key == K_w:
                    self.movey = 0
                elif event.key == K_s:
                    self.movey = 0
    
    #----------------------------------------------------------------------
    
    class Game():
    
        def __init__(self):
    
            pygame.init()
    
            if Android:
                android.init()
                android.map_key(android.KEYCODE_BACK, pygame.K_ESCAPE)
    
            self.size = self.width, self.height = 1276, 650
            self.screen = pygame.display.set_mode(self.size)
    
            pygame.display.set_caption("Pygame 2D RPG !")
    
            self.background = Background(self.screen)
            self.player = Player(self.screen)
    
            font = pygame.font.SysFont("serif", 72)
            self.text_paused = font.render("PAUSED", True, (255, 0, 0))
    
        def run(self):
    
            PAUSED = False
    
            RUNNING = True
    
            while RUNNING:
    
                # --- events ---
    
                for event in pygame.event.get():
    
                    if event.type == pygame.QUIT:
                        RUNNING = False
    
                    if event.type==KEYDOWN:
                        if event.key == K_ESCAPE:
                            RUNNING = False
                        elif event.key==K_q:
                            PAUSED = not PAUSED
    
                    if not PAUSED:
                        self.player.events(event)
    
                # --- changing values ---
    
                if not PAUSED:
                    self.player.move()
    
                # --- drawing ---
    
                self.background.draw()
                self.player.draw()
    
                if PAUSED:
                    self.screen.blit(self.text_paused, (100, 100))
    
                pygame.display.update() 
    
            pygame.quit()
            sys.exit()
    
    #----------------------------------------------------------------------
    
    if __name__ == '__main__':
        Game().run()