Advertisement
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
Advertisement