Not a member of Pastebin yet?
                        Sign Up,
                        it unlocks many cool features!                    
                - import pygame
 - import math
 - import os
 - import random
 - import time
 - class PJ_StaticHost: pass
 - def sm_PJImage__loadFromFile(path):
 - return PJImage(path, 0, 0)
 - def sm_PJImage__createBlank(width, height):
 - return PJImage(None, width, height)
 - class PJImage:
 - def __init__(self, filepath, width, height):
 - self.width = 0
 - self.height = 0
 - if filepath == None:
 - self.width = width
 - self.height = height
 - self.pgImage = pygame.Surface((width, height))
 - else:
 - self.pgImage = pygame.image.load(filepath.replace("/", os.sep).replace("\\", os.sep))
 - self.width = self.pgImage.get_width()
 - self.height = self.pgImage.get_height()
 - def blit(self, img, x, y):
 - self.pgImage.blit(img.pgImage, (x, y))
 - def sm_PJEvent__convertKeyCode(rawKeyCode):
 - if sh_PJEvent.keyCodeMapping == None:
 - sh_PJEvent.keyCodeMapping = { pygame.K_SPACE: "space", pygame.K_RETURN: "enter", pygame.K_TAB: "tab", pygame.K_UP: "up", pygame.K_DOWN: "down", pygame.K_LEFT: "left", pygame.K_RIGHT: "right", pygame.K_LALT: "alt", pygame.K_RALT: "alt", pygame.K_LCTRL: "ctrl", pygame.K_RCTRL: "ctrl", pygame.K_LSHIFT: "shift", pygame.K_RSHIFT: "shift", pygame.K_a: "a", pygame.K_b: "b", pygame.K_c: "c", pygame.K_d: "d", pygame.K_e: "e", pygame.K_f: "f", pygame.K_g: "g", pygame.K_h: "h", pygame.K_i: "i", pygame.K_j: "j", pygame.K_k: "k", pygame.K_l: "l", pygame.K_m: "m", pygame.K_n: "n", pygame.K_o: "o", pygame.K_p: "p", pygame.K_q: "q", pygame.K_r: "r", pygame.K_s: "s", pygame.K_t: "t", pygame.K_u: "u", pygame.K_v: "v", pygame.K_w: "w", pygame.K_x: "x", pygame.K_y: "y", pygame.K_z: "z", pygame.K_0: "0", pygame.K_1: "1", pygame.K_2: "2", pygame.K_3: "3", pygame.K_4: "4", pygame.K_5: "5", pygame.K_6: "6", pygame.K_7: "7", pygame.K_8: "8", pygame.K_9: "9", pygame.K_F1: "F1", pygame.K_F2: "F2", pygame.K_F3: "F3", pygame.K_F4: "F4", pygame.K_F5: "F5", pygame.K_F6: "F6", pygame.K_F7: "F7", pygame.K_F8: "F8", pygame.K_F9: "F9", pygame.K_F10: "F10", pygame.K_F11: "F11", pygame.K_F12: "F12" }
 - return sh_PJEvent.keyCodeMapping.get(rawKeyCode, None)
 - sh_PJEvent = PJ_StaticHost()
 - sh_PJEvent.keyCodeMapping = None
 - class PJEvent:
 - def __init__(self, type, keycode):
 - self.type = None
 - self.keycode = None
 - self.keyCodeMapping = None
 - self.type = type
 - self.keycode = keycode
 - class PJGame:
 - def __init__(self, postInit, updater, renderer, screenWidth, screenHeight, targetFps):
 - self.postInit = postInit
 - self.updater = updater
 - self.renderer = renderer
 - self.width = screenWidth
 - self.height = screenHeight
 - self.fps = targetFps
 - self.quitAttempt = False
 - def start(self):
 - pygame.init()
 - screen = pygame.display.set_mode((self.width, self.height))
 - self.postInit()
 - self._screen = PJImage(None, self.width, self.height)
 - self._screen.pgImage = screen
 - sm_PJEvent__convertKeyCode(pygame.K_a)
 - self.pressedKeys = {}
 - for key in sh_PJEvent.keyCodeMapping.values():
 - self.pressedKeys[key] = False
 - while True:
 - start = time.time()
 - self.tick()
 - if self.quitAttempt:
 - return
 - end = time.time()
 - diff = end - start
 - delay = 1.0 / self.fps - diff
 - if delay > 0:
 - time.sleep(delay)
 - def tick(self):
 - events = []
 - for ev in pygame.event.get():
 - myEvent = None
 - if ev.type == pygame.QUIT:
 - self.quitAttempt = True
 - elif ev.type == pygame.KEYDOWN:
 - keycode = sm_PJEvent__convertKeyCode(ev.key)
 - myEvent = PJEvent("keydown", keycode)
 - self.pressedKeys[keycode] = True
 - if keycode == 'F4' and self.pressedKeys['alt']:
 - self.quitAttempt = True
 - elif ev.type == pygame.KEYUP:
 - keycode = sm_PJEvent__convertKeyCode(ev.key)
 - myEvent = PJEvent("keyup", keycode)
 - self.pressedKeys[keycode] = False
 - if myEvent != None:
 - events.append(myEvent)
 - self.updater(events, self.pressedKeys)
 - self._screen.pgImage.fill((0, 0, 0))
 - self.renderer(self._screen)
 - pygame.display.flip()
 - def sm_Util__getImage(path):
 - if not (((path) in sh_Util.images)):
 - sh_Util.images[path] = sm_PJImage__loadFromFile(path)
 - return sh_Util.images[path]
 - sh_Util = PJ_StaticHost()
 - sh_Util.images = {}
 - class Util:
 - def __init__(self):
 - self.images = {}
 - class Program:
 - def __init__(self):
 - self.renderCounter = 0
 - self.activeScene = None
 - self.gameInstance = None
 - def init(self):
 - self.gameInstance = PJGame(self.postInit, self.update, self.render, 640, 480, 60)
 - self.gameInstance.start()
 - def postInit(self):
 - self.activeScene = SceneBase()
 - def update(self, events, pressedKeys):
 - self.activeScene.update(events, pressedKeys)
 - def render(self, screen):
 - self.activeScene.render(screen, self.renderCounter)
 - self.renderCounter = self.renderCounter + 1
 - class SceneBase:
 - def __init__(self):
 - self.next = None
 - self.img = None
 - self.x = 0
 - self.y = 0
 - self.next = self
 - self.img = sm_Util__getImage("images/test.png")
 - self.x = 100
 - self.y = 100
 - def update(self, events, pressedKeys):
 - v = 3
 - if pressedKeys["left"]:
 - self.x = self.x - v
 - if pressedKeys["right"]:
 - self.x = self.x + v
 - if pressedKeys["up"]:
 - self.y = self.y - v
 - if pressedKeys["down"]:
 - self.y = self.y + v
 - def render(self, screen, renderCounter):
 - screen.blit(self.img, self.x, self.y)
 - app = Program()
 - app.init()
 
Advertisement
 
                    Add Comment                
                
                        Please, Sign In to add comment