I am making a game for android in pygame here is my code:
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()
Could any one give me a link to resources where I could learn pygame.
Say in my game when I press "q" then it pauses the game and when I press it again it unfreezes could any one give me a advice as how to do this. I now this is a bit vague however so what is mean is whenever the "q" key is presses it stops the character from moving and everything stops.
Free ebooks (PDF)
Pause make more or less like this:
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()
EDIT:
You don't have code in classes so you have to use PAUSED
without self.
Working code with paused screen and keyboard and with text "PAUSED"
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()
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()
EDIT:
Version (more or less) with classes
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()
http://www.pygame.org/wiki/tutorials looks like a great place for some tutorials. I'm not sure how advanced your looking for, so they might be a bit basic. At a first glance this looks pretty good: http://programarcadegames.com/index.php?chapter=bitmapped_graphics_and_sound&lang=en#section_12
It's probably a very clunky way of doing it, but you could create an infinite loop that repeats until you press the q key again:
if <q key pressed>:
while 1:
sleep(1)
if <q key pressed>:
break
is a rather simplified version.
The default Punch the chimp tutorial is a pretty good place to start. Specifically, you should look at their usage of pygame.time.Clock.tick to limit framerate.
Once you have a game loop, the easiest way to pause is to use "event.wait()", which stops and waits until an event happens. You just use this to wait until the unpause is pressed, and continue the event loop.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.