コード例 #1
0
    def do_POST(self):
        """
        Paths:
            /action/createNewGame
                --> create a new game and set playerId cookie
            /action/joinGame
                --> join a game and set playerId cookie
        """

        if self.path == '/action/createNewGame':
            msg = self.rfile.read(int(self.headers.getheader('content-length')))
            post_data = parse_qs(msg)
            name = ''
            if 'name' in post_data:
                name = post_data['name']
            playerId = GameHandler.createNewGame(name)
            self.send_response(303)
            self.send_header('Location', '/')
            self.send_header('Set-Cookie', 'playerId='+playerId+'; Path=/')
            self.end_headers()
            return None
        if self.path == '/action/joinGame':
            msg = self.rfile.read(int(self.headers.getheader('content-length')))
            post_data = parse_qs(msg)
            name = ''
            if ('name' in post_data):
                name = post_data['name']
            gamePattern = re.compile(r"http://.*/(?P<gameId>[a-zA-Z0-9]{24})")
            gameMatch = gamePattern.search(self.headers.getheader('referer'))
            if not gameMatch:
                self.send_error(400, 'No gameId given')
                return None
            try:
                playerId = GameHandler.joinGame(name, gameMatch.group('gameId'))
            except ValueError as e:
                self.send_error(404, str(e))
            else:
                self.send_response(303)
                self.send_header('Location', '/')
                self.send_header('Set-Cookie', 'playerId='+playerId+'; Path=/')
                self.end_headers()
            return None
        postpattern = re.compile(r"^/action/(?P<action>[a-zA-Z]+?)$")
        postmatch = postpattern.search(self.path)
        if (postmatch):
            self.send_error(404, 'General path')
            return None
        """ Default action """
        self.send_error(400, 'Incorrect post path')
        return None
コード例 #2
0
ファイル: Snake.py プロジェクト: Adri22/Snake
def main(argv):
    game = GameHandler()
    game.start()
コード例 #3
0
    def do_GET(self):
        """
        Paths:
            /
                --> www/index.html
            /style.css
                --> style.css
            /favicon.ico
                --> www/images/favicon.ico
            /images/[filename]
                --> images/[filename]
            /[gameId]
                --> Pattern match for /[gameId]
                    
                           Game Playing?|         |
                                        |   Yes   |   No
                    Player in a game?   |         |    
                    --------------------+---------+---------
                                        |         |
                                  Yes   | Watch(1)|  Join(1,2)
                                        |         |
                    --------------------+---------+---------
                                        |         |
                                  No    |  Watch  |  Join
                                        |         |
                    
                    (1) Check if player is in this game, if so go to path: '/'
                    (2) Special case of join. Leave other game.
        """

        if self.path == '/':
            try:
                CookieRead = CookieJar(self.headers)
            except TypeError:
                sendFile('www/index.html', 'text/html', self)
            else:
                try:
                    game = GameHandler.getPlayerDict(CookieRead.playerId)
                except ValueError as e:
                    self.send_error(400, str(e))
                else:
                    sendReplace('www/game'+game['gameState']+'.html', 'text/html', game, self)
            return None
        if self.path == '/style.css':
            sendFile('www/style.css', 'text/css', self)
            return None
        if self.path == '/favicon.ico':
            sendFile('www/images/favicon.ico', 'image/x-icon', self)
            return None
        imagepattern = re.compile(r"^/images/(?P<title>[a-zA-Z0-9 ]+?).(?P<type>(jpg|png))$")
        imgmatch = imagepattern.search(self.path)
        if imgmatch:
            sendFile('www/images/' + imgmatch.group('title') + '.' + imgmatch.group('type'), 'image/'+imgmatch.group('type'), self)
            return None
        gamepattern = re.compile(r"^/(?P<gameId>[a-zA-Z0-9]{24})$")
        gamematch = gamepattern.search(self.path)
        if gamematch:
            if GameHandler.gameExists(gamematch.group('gameId')):
                try:
                    CookieRead = CookieJar(self.headers)
                except:
                    CookieRead = None
                if  CookieRead and GameHandler.playerInGame(gamematch.group('gameId'), CookieRead.playerId):
                    sendFile('www/playerInLobby.html', 'text/html', self)
                    return None
                if GameHandler.gamePlaying(gamematch.group('gameId')):
                    sendFile('www/watchGame.html', 'text/html', self)
                else:
                    if CookieRead:
                        sendFile('www/forceJoinGame.html', 'text/html', self)
                    else:
                        sendFile('www/joinGame.html', 'text/html', self)
            else:
                self.send_error(404, 'Game doesn\'t exist.')
            return None
        """ Default action """
        self.send_error(404)
        return None
コード例 #4
0
# Color constants
screen_clear_color = (0, 0, 0)

# Variables
is_game_running = True

# Initialize PyGame
pygame.init()
pygame.font.init()

# Setup the program window
pygame.display.set_caption("Snake Game")

# Initialize the screen
game_screen = pygame.display.set_mode(screen_size, screen_flags, screen_depth)
game_handler = GameHandler.GameHandler(game_screen)

# Create the game clock
game_clock = pygame.time.Clock()

# Main game loop
while is_game_running:
    # Process events
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            is_game_running = False
        if event.type == pygame.KEYDOWN:
            game_handler.process_event(event)

    # Do game logic
    game_handler.game_logic()
コード例 #5
0
import requests
import json
base_url = 'http://localhost:3000/api'

import GameHandler
gameHandler = GameHandler.GameHandler()


def test_createGame():
    req_body = {'playerName': 'test'}
    res = requests.post(base_url + '/creategame', data=req_body).json()
    if 'error' in res:
        return 'Server error: ' + res['error']
    return 0


def test_joingame():
    gameData = gameHandler.create_game()
    req_body = {'playerName': 'test2', 'gameCode': gameData['gameCode']}
    res = requests.post(base_url + '/creategame', data=req_body).json()
    if 'error' in res:
        return 'Server error: ' + res['error']
    elif 'gameToken' not in res:
        return 'No gameToken'
    return 0


def test_getGameStatus_newGameReturns0():
    gameData = gameHandler.create_game()
    req_body = {'gameToken': gameData['gameToken']}
    res = requests.post(base_url + '/gamestatus', data=req_body).json()
コード例 #6
0
ファイル: Main.py プロジェクト: skyvlan/CursesHangmanPy
def Game():
    renderer.erase()
    Hangman = GameEngine.RenderObject()
    Answer = GameEngine.RenderObject()
    border = GameEngine.RenderObject()
    input = GameEngine.InputHandler()
    health = GameEngine.RenderObject()
    debugObj = GameEngine.RenderObject()
    hangmanState = GameEngine.RenderObject()
    GameObject = GameHandler.Game()
    score = GameEngine.RenderObject()
    hangmanBox = GameEngine.RenderObject()
    lose = False
    while(lose == False):
        currentWord = FileHandler.getWord()
        GameObject.setCurrentWord(currentWord)
        UnansweredWord = GameObject.unanswered
        spaceIndex = [i for i, x in enumerate(GameObject.wordList) if x == " "]
        for l in spaceIndex:
            UnansweredWord[l] = " "

        while(GameObject.checkifAnswerCorrect() == False):
            border.drawBorder(GameEngine.WR)
            if cheat == True:
                cheatStr = "word: {}"
                score.drawObject(1, 1, cheatStr.format(GameObject.word), GameEngine.WR)
            HighscoreStr = "SCORE : " + str(GameObject.score)
            UnansweredStr = " ".join(UnansweredWord)
            hangmanArt = GameObject.hangman[GameObject.hangmanState].splitlines()
            for yPos, lines in enumerate(hangmanArt):
                Hangman.drawObject(15, (renderer.yBorder//2) - 4 + yPos, lines, GameEngine.WR)
            hangmanBox.drawRect(28, (renderer.yBorder//2)-4 , 12, 10)
            score.drawObject(renderer.xBorder//2 - len(HighscoreStr)//2, 1, HighscoreStr, GameEngine.WR)
            #health.drawObject(2,2, str(GameObject.health), GameEngine.WR)
            #hangmanState.drawObject(2,3, str(GameObject.hangmanState), GameEngine.WR) #DEBUG
            Answer.drawObject((renderer.xBorder // 2), (renderer.yBorder // 2) - 5, UnansweredStr.upper(), GameEngine.WR)
            renderer.refresh()
            ans = chr(input.getInput())
            #index = GameObject.wordList.index(ans)
            index = [i for i, x in enumerate(GameObject.wordList) if x == ans]
            if index == []:
                GameObject.damagePlayer()
            for j in index:
                UnansweredWord[j] = ans
                GameObject.score += len(ans) * 10
            #debugObj.drawObject(2, 5, str(UnansweredWord), GameEngine.WR)
            renderer.refresh()
            renderer.updateFrame()
            if (GameObject.health == 0):
                border.drawBorder(GameEngine.WR)
                HighscoreStr = "SCORE : " + str(GameObject.score)
                UnansweredStr = " ".join(GameObject.word)
                hangmanArt = GameObject.hangman[GameObject.hangmanState].splitlines()
                for yPos, lines in enumerate(hangmanArt):
                    Hangman.drawObject(15, (renderer.yBorder // 2) - 4 + yPos, lines, GameEngine.WR)
                hangmanBox.drawRect(28, (renderer.yBorder // 2) - 4, 12, 10)
                score.drawObject(renderer.xBorder // 2 - len(HighscoreStr) // 2, 1, HighscoreStr, GameEngine.WR)
                Answer.drawObject((renderer.xBorder // 2), (renderer.yBorder // 2) - 5, UnansweredStr.upper(),
                                  GameEngine.WR)
                renderer.refresh()
                renderer.updateFrame()
                time.sleep(5)
                return GameObject.score


        GameObject.score += 100