def game_init(host=None, port=None, nickname=None): clock = pygame.time.Clock() background = pygame.image.load(os.path.join('assets', 'montreal.jpg')) screen = pygame.display.set_mode(RES) bgManager = scroll_bgmanager.BackgroundManager(screen, background) session = Session() # serverClient = ServerClient() port = reactor.listenUDP(0, ServerClient(host, PORT)) get_players = {'command': 'get_players'} # serverClient.sendMessage(json.dumps(get_players)) port.write(json.dumps(get_players), (host, PORT)) print session.players print "checking in session about player %s" % nickname print "player exists: %s" % session.player_exists(nickname) if session.player_exists(nickname): sys.exit(0) local_group = scroll_group.ScrollSpriteGroup(bgManager) session.set_scroll_group(local_group) player = session.create_player(nickname) session.set_local_player(player) local_group.add(player) bgManager.BlitSelf(screen) pygame.display.flip() def _loop(): # serverClient.sendMessage(player.get_status()) port.write(player.get_status()) clock.tick(FPS) for p in session.get_players(): if p != player: if pygame.sprite.collide_rect(player, p): player.speed = 0 for event in pygame.event.get(): if not hasattr(event, 'key'): continue down = event.type == KEYDOWN if event.key == K_RIGHT: player.k_right = down * -5 player.k_down = down * -0.2 elif event.key == K_LEFT: player.k_left = down * 5 player.k_down = down * -0.2 elif event.key == K_UP: player.k_up = down * 0.2 elif event.key == K_DOWN: player.k_down = down * -0.4 elif event.key == K_ESCAPE: status = {'status': 'disconnected', 'name': player.name} # serverClient.sendMessage(json.dumps(status)) port.write(json.dumps(status)) # reactor.stop() pygame.quit() sys.exit(0) bgManager.NotifyPlayerSpritePos(player.rect) local_group.clear(screen) local_group.update() changedRects = local_group.draw(screen) pygame.display.update(changedRects) reactor.callLater(1. / FPS, _loop) status = {'status': 'connected', 'name': nickname} # serverClient.sendMessage(json.dumps(status)) port.write(json.dumps(status)) _loop()