def setViews(self): width = self.ref_engine.screen.get_width() height = self.ref_engine.screen.get_height() self.gameView = GameView( self.ref_engine.screen, pygame.Rect(10, 10, width * 3 / 4 - 15, height - 20), self.player, self.ref_engine) self.scoreView = ScoreView( self.ref_engine.screen, pygame.Rect(width * 3 / 4 + 5, 10, width / 4 - 15, height - 20), self.player, self.ref_engine)
def __init__(self, m, n, Game): self.size = [m, n] self.Game = Game self.screenSize = [800, 600] EventManager.subscribe("MoveFinished", self.onMoveFinished) # init Tkinter self.tkInstance = Tk() self._GUISplashScreen = SplashScreenView(self.tkInstance, self) self._GUIMenu = MenuView(self.tkInstance, self) self._GUIGameBoard = GameView(self.tkInstance, self, Game) self._GUIMenu.show()
class GameController(): """ (MVC) Class that control model and view """ def __init__(self): self.game = GameModel() self.view = GameView(self) self.main_loop = None def handle_input(self, key): if key == 'f12': self.confirm_exit() else: pass def confirm_exit(self): self.game.exit_request() if self.view.confirm_exit(): raise urwid.ExitMainLoop() def refresh(self, _loop, _data): self.view.refresh_view() self.main_loop.draw_screen() self.main_loop.set_alarm_in(1, self.refresh) def get_game_mode(self): return self.game.get_game_mode() def main(self): self.main_loop = urwid.MainLoop(self.view.layout, self.view.palette, unhandled_input=self.handle_input) self.main_loop.set_alarm_in(0, self.refresh) self.main_loop.run()
def __init__(self, m, n, Game): self.size = [m,n] self.Game = Game self.screenSize = [800, 600] EventManager.subscribe("MoveFinished", self.onMoveFinished) # init Tkinter self.tkInstance = Tk() self._GUISplashScreen = SplashScreenView(self.tkInstance, self) self._GUIMenu = MenuView(self.tkInstance, self) self._GUIGameBoard = GameView(self.tkInstance, self, Game) self._GUIMenu.show()
def __init__(self, m, n, Game): self.size = [m,n] self.Game = Game self.screenSize = [800, 600] EventManager.subscribe("MoveFinished", self.onMoveFinished) # init Tkinter self.tkInstance = Tk() self.tkInstance.title("HexGame by Daniel, Jannis and Mats") self.tkInstance.after(1000, self.onUITick) self._GUIMenu = MenuView(self.tkInstance, self) self._GUIGameBoard = GameView(self.tkInstance, self, Game) self._GUIMenu.show()
from GameView import GameView from GameState import GameState import functions gamestate = GameState(player=0) gameview = GameView(gamestate) enumerations = gameview.enumerate(gamestate) print len(enumerations) functions.viewEnumerationNum(enumerations[0]) for i in range(1, 4): for j in range(6): gamestate.cards[i][j]['rank'] = 'unclear' gamestate.cards[1][0] = {'rank': 0, 'color': gamestate.cards[1][0]['color']} gameview.update(gamestate) print len(gameview.enumerations) functions.viewEnumerationNum(gameview.enumerations[0])
def __init__(self): self.game = GameModel() self.view = GameView(self) self.main_loop = None
class GameScreen(Screen): player = Player((400, 400)) gameView = None scoreView = None def __init__(self, _engine): super(GameScreen, self).__init__(_engine) self.setViews() def onScreenAvtivation(self): self.newGame() def newGame(self): self.player.rect.move_ip( self.gameView.rect.x + self.gameView.rect.width / 2 - self.player.rect.x, self.gameView.rect.y + self.gameView.rect.height - 100 - self.player.rect.y) self.player.lives = 10 self.player.score = 0 self.player.level = 1 self.gameView.newGame() # ustawia oddzielne widoki na ekranie gry (widok rozgrywki i informacji dodatkowych) def setViews(self): width = self.ref_engine.screen.get_width() height = self.ref_engine.screen.get_height() self.gameView = GameView( self.ref_engine.screen, pygame.Rect(10, 10, width * 3 / 4 - 15, height - 20), self.player, self.ref_engine) self.scoreView = ScoreView( self.ref_engine.screen, pygame.Rect(width * 3 / 4 + 5, 10, width / 4 - 15, height - 20), self.player, self.ref_engine) def render(self, _screen): _screen.fill((0, 0, 0)) self.gameView.render() self.renderBlackBars(_screen) self.scoreView.render() pygame.display.flip() def onEvent(self, _event): self.gameView.onEvent(_event) def onTick(self, _clock): super(GameScreen, self).onTick(_clock) self.gameView.onTick(_clock) # renderuje czarne prostokaty na okolo widoku rozgrywki, aby przeciwnicy mogli sie za nimi "chowac" def renderBlackBars(self, _screen): screenWidth = _screen.get_width() screenHeight = _screen.get_height() viewWidth = self.gameView.rect.width viewHeight = self.gameView.rect.height viewX = self.gameView.rect.x viewY = self.gameView.rect.y rectL = pygame.Rect(0, 0, viewX, _screen.get_height()) rectR = pygame.Rect(viewX + viewWidth, 0, screenWidth - viewX - viewWidth, screenHeight) rectU = (0, 0, screenWidth, viewY) rectD = (0, viewY + viewHeight, screenWidth, screenHeight - viewY - viewHeight) pygame.draw.rect(_screen, (0, 0, 0), rectL) pygame.draw.rect(_screen, (0, 0, 0), rectR) pygame.draw.rect(_screen, (0, 0, 0), rectU) pygame.draw.rect(_screen, (0, 0, 0), rectD)
def on_mouse_press(self, x, y, button, modifiers): game_view = GameView(self.width,self.height, self.window, 1, 0) self.window.show_view(game_view)
""" main py file to run the game """ import sys import pygame sys.path.append('./Controller') sys.path.append('./Model') sys.path.append('./View') from MainController import MainController from GameController import GameController from GameView import GameView from MenuView import MenuView if __name__ == '__main__': GameController(GameView()) MainController(MenuView()).run() for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit()
class HexGUI: def __init__(self, m, n, Game): self.size = [m, n] self.Game = Game self.screenSize = [800, 600] EventManager.subscribe("MoveFinished", self.onMoveFinished) # init Tkinter self.tkInstance = Tk() self._GUISplashScreen = SplashScreenView(self.tkInstance, self) self._GUIMenu = MenuView(self.tkInstance, self) self._GUIGameBoard = GameView(self.tkInstance, self, Game) self._GUIMenu.show() def mainloop(self): mainloop() def receiveMove(self, move): # do somehting return 0 def setFirst(self): # todo return 0 def won(self, winner): self._GUIMenu.won(winner) def onMoveFinished(self): # show the Swap Button if self.Game.moveCounter == 1: self.Game.HexGUI._GUIGameBoard.showPlayerSwap() # and hide if second hexagon is marked if self.Game.moveCounter == 2: self.Game.HexGUI._GUIGameBoard.hidePlayerSwap() self.draw() def draw(self): self._GUISplashScreen.draw() self._GUIMenu.draw() self._GUIGameBoard.draw() def openPage(self, page): if page == "splash": self._GUIMenu.hide() self._GUIGameBoard.hide() self._GUISplashScreen.show() elif page == "menu": self._GUIMenu.show() self._GUIGameBoard.hide() self._GUISplashScreen.hide() elif page == "game": self._GUIMenu.hide() self._GUIGameBoard.show() self._GUISplashScreen.hide()
class HexGUI: def __init__(self, m, n, Game): self.size = [m,n] self.Game = Game self.screenSize = [800, 600] EventManager.subscribe("MoveFinished", self.onMoveFinished) # init Tkinter self.tkInstance = Tk() self.tkInstance.after(1000, self.onUITick) self._GUISplashScreen = SplashScreenView(self.tkInstance, self) self._GUIMenu = MenuView(self.tkInstance, self) self._GUIGameBoard = GameView(self.tkInstance, self, Game) self._GUIMenu.show() # called on every GUI Clock tick def onUITick(self): if not self.Game._pause: # notify subscripts EventManager.notify("UITick") # redo this step every nth seconds self.tkInstance.after(200, self.onUITick) def mainloop(self): mainloop() def receiveMove(self, move): # do somehting return 0 def setFirst(self): # todo return 0 def won(self, winner): self._GUIMenu.won(winner) def onMoveFinished(self): # show the Swap Button if self.Game.moveCounter == 1: self.Game.HexGUI._GUIGameBoard.showPlayerSwap() # and hide if second hexagon is marked if self.Game.moveCounter == 2: self.Game.HexGUI._GUIGameBoard.hidePlayerSwap() self.draw() def draw(self): self._GUISplashScreen.draw() self._GUIMenu.draw() self._GUIGameBoard.draw() def openPage(self, page): if page == "splash": self._GUIMenu.hide() self._GUIGameBoard.hide() self._GUISplashScreen.show() elif page == "menu": self._GUIMenu.show() self._GUIGameBoard.hide() self._GUISplashScreen.hide() elif page == "game": self._GUIMenu.hide() self._GUIGameBoard.show() self._GUISplashScreen.hide() EventManager.notify("GameUILoaded")
class HexGUI: def __init__(self, m, n, Game): self.size = [m, n] self.Game = Game self.screenSize = [800, 600] EventManager.subscribe("MoveFinished", self.onMoveFinished) # init Tkinter self.tkInstance = Tk() self.tkInstance.after(1000, self.onUITick) self._GUISplashScreen = SplashScreenView(self.tkInstance, self) self._GUIMenu = MenuView(self.tkInstance, self) self._GUIGameBoard = GameView(self.tkInstance, self, Game) self._GUIMenu.show() # called on every GUI Clock tick def onUITick(self): if not self.Game._pause: # notify subscripts EventManager.notify("UITick") # redo this step every nth seconds self.tkInstance.after(200, self.onUITick) def mainloop(self): mainloop() def receiveMove(self, move): # do somehting return 0 def setFirst(self): # todo return 0 def won(self, winner): self._GUIMenu.won(winner) def onMoveFinished(self): # show the Swap Button if self.Game.moveCounter == 1: self.Game.HexGUI._GUIGameBoard.showPlayerSwap() # and hide if second hexagon is marked if self.Game.moveCounter == 2: self.Game.HexGUI._GUIGameBoard.hidePlayerSwap() self.draw() def draw(self): self._GUISplashScreen.draw() self._GUIMenu.draw() self._GUIGameBoard.draw() def openPage(self, page): if page == "splash": self._GUIMenu.hide() self._GUIGameBoard.hide() self._GUISplashScreen.show() elif page == "menu": self._GUIMenu.show() self._GUIGameBoard.hide() self._GUISplashScreen.hide() elif page == "game": self._GUIMenu.hide() self._GUIGameBoard.show() self._GUISplashScreen.hide() EventManager.notify("GameUILoaded")
def on_key_press( self, key, key_modifiers ): game_view = GameView() game_view.setup() self.window.show_view( game_view )
from PyQt5.QtWidgets import QApplication import sys from Game import Game from GameView import GameView from GameScene import GameScene from UnitCreatingController import UnitCreatingController if __name__ == '__main__': app = QApplication(sys.argv) game = Game() game_scene = GameScene() controller = UnitCreatingController() game.set_scene(game_scene) view = GameView() view.set_scene(game_scene) game_scene.tile_clicked.connect(controller.tile_clicked) view.unit_changed.connect(controller.changed_unit_type) game.unit_added_in_map.connect(view.update_after_adding_unit) game.turn_changed.connect(view.update_after_turn_change) sys.exit(app.exec_())
class HexGUI: def __init__(self, m, n, Game): self.size = [m,n] self.Game = Game self.screenSize = [800, 600] EventManager.subscribe("MoveFinished", self.onMoveFinished) # init Tkinter self.tkInstance = Tk() self._GUISplashScreen = SplashScreenView(self.tkInstance, self) self._GUIMenu = MenuView(self.tkInstance, self) self._GUIGameBoard = GameView(self.tkInstance, self, Game) self._GUIMenu.show() def mainloop(self): mainloop() def receiveMove(self, move): # do somehting return 0 def setFirst(self): # todo return 0 def won(self, winner): self._GUIMenu.won(winner) def onMoveFinished(self): # show the Swap Button if self.Game.moveCounter == 1: self.Game.HexGUI._GUIGameBoard.showPlayerSwap() # and hide if second hexagon is marked if self.Game.moveCounter == 2: self.Game.HexGUI._GUIGameBoard.hidePlayerSwap() self.draw() def draw(self): self._GUISplashScreen.draw() self._GUIMenu.draw() self._GUIGameBoard.draw() def openPage(self, page): if page == "splash": self._GUIMenu.hide() self._GUIGameBoard.hide() self._GUISplashScreen.show() elif page == "menu": self._GUIMenu.show() self._GUIGameBoard.hide() self._GUISplashScreen.hide() elif page == "game": self._GUIMenu.hide() self._GUIGameBoard.show() self._GUISplashScreen.hide()
from GameView import GameView from Game import Game #Constante boat_type_list=[5,4,4,3,3,3,2,2,2,2,1,1,1,1,1] grid_size = 20 #Set up game = Game(grid_size) game.set_up(boat_type_list) display = GameView(game) #Game display.display_grid()
def render_game1(self, button): self.root_view.window.remove(self.view.vbox) self.view = GameView(self.root_view.window) self.controller = GameController(self.view)