def Run(self): m = self.map kh = KeyHandler() while self.running: while self._wait: #lock the update pass events = kh.getEvents() m.update(events) self.running = False
def __init__(self, host, port): self.screen = SCREEN self.host = host self.port = port pygame.init() self.connectToServer() self.kh = KeyHandler() self.dx = 0 self.dy = 0 self.prevMove = (0,0) self.running = True self.sendPosCooldown = 0.0 self.prevTime = 0.0 self.speed = 0.05 self.displayMap = None # GUI self.gameGui = GameGUI(self) self.loginGui = LoginGUI(self) self.mode = "login" self.update = self.updateLogin
def __init__(self, parent_window: Window) -> None: self.parent_window: Window = parent_window self.position: int = 0 self.state_machine: StateMachine = StateMachine() self.change_state: Callable[[str, any], None] = None self.key_handler: KeyHandler = KeyHandler() self.bind_keys()
def __init__(self, escapable: bool = False): self.escapable: bool = escapable self.state_machine: StateMachine = StateMachine() self.position: int = 0 self.key_handler: KeyHandler = KeyHandler() self._caption: str = "" self.pyglet_window: pyglet.window.Window = None self.bind_keys()
def __init__(self, parent: State, title: str, value: T, type: str, callback: Callable[[Callable[[str, any], None], T, any], None], callback_args: List[any], use_key_handler: bool = True) -> None: self.parent: "Tab" = parent self.title: str = title self._value: T = value self.type: str = type self.use_key_handler: bool = use_key_handler self.callback: Callable[[Callable[[str, any], None], any, any], None] = callback self.callback_args: List[any] = callback_args self.change_state: Callable[[str, any], None] = None if self.use_key_handler: self.key_handler: KeyHandler = KeyHandler()
class Game(GameClient): def __init__(self, host, port): self.screen = SCREEN self.host = host self.port = port pygame.init() self.connectToServer() self.kh = KeyHandler() self.dx = 0 self.dy = 0 self.prevMove = (0,0) self.running = True self.sendPosCooldown = 0.0 self.prevTime = 0.0 self.speed = 0.05 self.displayMap = None # GUI self.gameGui = GameGUI(self) self.loginGui = LoginGUI(self) self.mode = "login" self.update = self.updateLogin def connectToServer(self): GameClient.__init__(self, self.host, self.port) def addPlayer(self, name, x, y): if name == "anonymous": return print "adding player to map : %s, at %s, %s" % (name, x, y) self.displayMap.addPlayer(name, x, y) def delPlayer(self, name): self.displayMap.delPlayer(name) def addMob(self, name, x=50.0, y=50.0): self.displayMap.addMob(name, 1, x, y) def delMob(self, name): self.displayMap.delMob(name) def setMap(self, mapFileName, x, y): if not self.displayMap: print "Entering map %s" % (mapFileName) self.mode = "game" self.update = self.updateGame self.name = self.loginGui.name self.displayMap = Map(mapFileName) self.addPlayer(self.name, x, y) else: if self.displayMap.filename == mapFileName: print "Warping in current map (%s)" % (mapFileName) self.displayMap.players[self.name].setPos(x, y) else: print "Changing map for %s" % (mapFileName) self.displayMap = Map(mapFileName) self.addPlayer(self.name, x, y) def getClosestMobName(self): myRect = self.displayMap.players[self.name].mapRect minDist = 2000.0 closestMob = None for mobName, mob in self.displayMap.mobs.items(): dist = getDist(mob.mapRect, myRect) if dist < minDist: minDist = dist closestMob = mobName return closestMob def sitPlayer(self): sprite = self.displayMap.players[self.name]._sprite if not sprite.sitting: self.SendSitRequest() def addDirtyRect(self, rect): if not self.displayMap: return self.displayMap.addDirtyRect(rect) def updateNetwork(self): self.Loop() def updateLogin(self): self.updateNetwork() self.loginGui.update() def updateGame(self): self.updateNetwork() #time.sleep(0.015) t = pygame.time.get_ticks() x, y = pygame.mouse.get_pos() dt = t - self.prevTime #if dt<10: # return #print "update time : dt = %s" % (dt) self.prevTime = t self.prevMove = (self.dx, self.dy) if self.name not in self.displayMap.players: #print "not connected to map" return events = pygame.event.get() self.kh.handleEvents(events) moved = False # keyboard handling # player direction #self.dx = self.kh.keyDict[KEY_RIGHT] - self.kh.keyDict[KEY_LEFT] #self.dy = self.kh.keyDict[KEY_DOWN] - self.kh.keyDict[KEY_UP] self.dx = pygame.key.get_pressed()[KEY_RIGHT] - pygame.key.get_pressed()[KEY_LEFT] self.dy = pygame.key.get_pressed()[KEY_DOWN] - pygame.key.get_pressed()[KEY_UP] if not self.gameGui.chatWindow.entry.has_focus: if (self.prevMove != (self.dx, self.dy)):# or (t>self.sendPosCooldown): self.displayMap.players[self.name].setMovement(self.dx, self.dy) #self.sendPosCooldown = t+25 #print "Player direction changed from %s to %s/%s" % (self.prevMove, self.dx, self.dy) self.SendUpdateMove(self.displayMap.players[self.name].x, self.displayMap.players[self.name].y, self.dx, self.dy) else: self.dx = 0 self.dy = 0 offx = self.displayMap.players[self.name].mapRect.x-SCREEN_WIDTH/2 offy = self.displayMap.players[self.name].mapRect.y-SCREEN_HEIGHT/2 self.displayMap.setOffset(offx, offy) self.displayMap.update(dt) for event in events: if event.type == pygame.KEYDOWN: if self.gameGui.chatWindow.entry.has_focus: continue key = event.key if key == pygame.K_ESCAPE: #print "Escape and no typing : quit" #pygame.quit() self.running = False if key == pygame.K_SPACE: #print "Starting to type text..." self.SendWarpInfoRequest() self.displayMap.warpVisible = not self.displayMap.warpVisible self.displayMap.collisionVisible = not self.displayMap.collisionVisible self.displayMap.needFullBlit = True if key == KEY_SELECT_TARGET: mobName = self.getClosestMobName() if mobName: self.displayMap.selectTarget(mobName) else: self.displayMap.unselectTarget() if key == KEY_ATTACK: if self.displayMap.selected: self.SendAttackMob(self.displayMap.selected) if key == KEY_SIT: self.sitPlayer() elif event.type == pygame.MOUSEBUTTONDOWN: if event.button == 1: self.displayMap.handleClick() elif event.type == pygame.QUIT: #pygame.quit() self.running = False self.gameGui.handleEvents(events) # graphics self.displayMap.blit(self.screen) # gui display self.gameGui.blit() pygame.display.flip()
sprite.addAnim("idle-up", imgPath, x+24, y, 24,32,1,7500) sprite.addAnim("idle-down", imgPath, x+24, y+64, 24,32,1,7500) sprite.addAnim("idle-left", imgPath, x+24, y+32, 24,32,1,7500) sprite.addAnim("idle-right", imgPath, x+24, y+32, 24,32,1,7500, True) sprite.anim["idle-up-left"]=sprite.anim["idle-left"] sprite.anim["idle-up-right"]=sprite.anim["idle-right"] sprite.anim["idle-down-left"]=sprite.anim["idle-left"] sprite.anim["idle-down-right"]=sprite.anim["idle-right"] sprite.setAnim("idle-down") return sprite if __name__ == "__main__": from utils import KeyHandler kh = KeyHandler() screen = pygame.display.set_mode((640,480)) pygame.init() s = BaseSprite("coco") s.addAnim("walk", "male0.png", 0, 0, 32,64,8,75) s.currentAnim = "walk" while(True): kh.getEvents() if kh.keyDict[pygame.K_ESCAPE]: sys.exit() t = pygame.time.get_ticks()
if not self.map:return self.map.setTile(layerName, x, y, "gggg") self.map.needFullBlit = True def setTileCode(self, code): self.currentTileCode = code def toggleTileCode(self): if self.currentTileCode == "wwww": self.setTileCode("dddd") elif self.currentTileCode == "dddd": self.setTileCode("rrrr") else: self.setTileCode("wwww") if __name__ == "__main__": from utils import KeyHandler kh = KeyHandler() m = MapEditor() m.open("maps/testmap2.txt") while kh.keyDict[pygame.K_ESCAPE]==0: events = kh.getEvents() m.update(events)