Ejemplo n.º 1
0
 def get( self ):
     "Display board ready to be played"
     
     ## Pull out the requested game ID
     gameid = self.request.get( "gameid" )
     
     ## Make sure a game ID was actually provided
     if not gameid:
         self.redirect( "/error" )
     
     ## Initialize the game view
     game = GameView( gameid = gameid )
     board = game.board.serialize()
     
     ## Look up player names
     player1 = User.by_id( int( game.player1 ) )
     player2 = User.by_id( int( game.player2 ) )
     
     user_id = self.user.key().id()
     
     ## It's my turn if the game is active and i'm the player to move
     is_my_turn = game.is_my_turn( user_id )
     
     status = game.get_detailed_status( user_id )
     
     ## Display the game to the user
     self.render( "play-game.html",
                  player1 = player1.name,
                  player2 = player2.name,
                  board = board,
                  turn = game.turn,
                  is_my_turn = is_my_turn,
                  status = status )
Ejemplo n.º 2
0
    def _initNew( self, player1, player2 ):
        ## Create empty board
        self.board = Board()
        
        ## Save player info
        self.player1 = int( player1 )
        self.player2 = int( player2 )
        
        ## Save status
        self.status = "CHALLENGE"
        self.winner = None
        self.turn = 1

        ## Create new Game instance
        self.game = Game( player1 = self.player1, player2 = self.player2,
                          status = self.status, board = self.board.serialize(),
                          turn = self.turn, winner = self.winner, parent = Game.games_key() )
        
        ## Save new game to database
        key = self.game.put()
        self.gameid = key.id()
        
        ## Send an email to player 2
        player1_name = User.get_user_name( self.player1 )
        player2_user = User.by_id( self.player2 )
        HexEmail.sendChallenge( player2_user.email, player1_name )
Ejemplo n.º 3
0
    def post( self ):
        
        ## Make sure the user is logged in
        if not self.user:
            self.redirect( "/login" )
            return

        cancel = self.request.get( "cancel" )
        gameid = self.request.get( "gameid" )
        
        ## If the user hit "cancel" then refresh the board
        if cancel:
            self._cancel_move( gameid )
            return
        else:
            ## Retrieve this game from the database
            game = GameView( gameid = gameid )
            
            if game:
                
                ## Grab the move
                row = self.request.get( "row" )
                col = self.request.get( "col" )
                
                try:
                    game.update_game( user = self.user, row = int( row ), col = int( col ) )
                except WrongTurnException as e:
                    self.render( "/play?gameid=%s" % gameid, error = e.message )
                    return
                
                ## Send email to opponent telling them it's their turn
                player1_name = User.get_user_name( game.player1 )
                player2 = User.by_id( game.player2 )
                
                if player2.email and player2.move_emails:
                    HexEmail.sendMoveNotice( player2.email, player1_name )
                
                ## Redirect to homepage
                self.redirect( "/home" )
            else:
                logging.error( "That's not a valid game" )
                self.redirect( "/" )
Ejemplo n.º 4
0
 def initialize(self, *a, **kw):
     webapp2.RequestHandler.initialize(self, *a, **kw)
     uid = self.read_secure_cookie('user_id')
     self.user = uid and User.by_id(int(uid))
     if not self.user:
         self.redirect('/Admin/Login')
Ejemplo n.º 5
0
 def initialize(self, *a, **kw):
     webapp2.RequestHandler.initialize(self, *a, **kw)
     uid = self.read_secure_cookie( 'user_id' )
     self.user = uid and User.by_id( int( uid ) ) #@UndefinedVariable