コード例 #1
0
ファイル: api.py プロジェクト: bpeters-cmu/Tornado-api
 def post(self, game_id=None):
     try:
         data = json_decode(self.request.body)
         game_dao = GameDao(self.redis)
         if game_id:
             player = data['player']
             location = data['location']
             game = game_dao.get_saved_game(game_id)
             move, msg = game.make_move(player, location)
             if not move:
                 self.set_status(400)
                 self.write(Game.invalid_move(msg))
                 return
             game.update_game()
             game_dao.save(game)
             self.set_status(204)
         else:
             # create new game, assign x to player1, o to player2
             player1 = data['player1'] + '-x'
             player2 = data['player2'] + '-o'
             move = 0
             board = [None for i in range(9)]
             status = Game.in_progress
             # create new game, incrementing last ID in redis to ensure unique ID
             new_game = Game(game_dao.get_next_id(), player1, player2,
                             board, status, move, Game.player1_marker)
             game_dao.save(new_game)
             self.set_status(201)
             self.write(new_game.to_json())
     except Exception as e:
         self.logger.error(str(e))
         self.set_status(400)
コード例 #2
0
def processPerfectGameTrophy(game_id):
    # We do not process the Perfect Game trophy for Fantasy game type
    gameDao = GameDao.GameDao(db)
    gameType = gameDao.getGameType(game_id)

    if (gameType == metadata.GameType.FANTASY
            or gameType == metadata.GameType.QUIZ):
        logger.info("Not processing " +
                    metadata.Trophy.trophyNames[metadata.Trophy.PERFECT_GAME] +
                    " Trophy as this is a Fantasy or Quiz game type")
        return

    perfectGameSql = '''SELECT
                            userCorrectAnswers.user
                        FROM
                            (SELECT
                                   ge.user as 'user',
                                   ge.game as 'game',
                                   SUM((IF (ps.selection = p.result, 1, 0))) AS 'correct_answers'
                            FROM
                                game_entry ge 
                                LEFT JOIN period_selection ps ON ge.`game_entry_id` = ps.`game_entry`
                                LEFT JOIN period p ON ps.`period` = p.`period_id`
                            WHERE ge.`game` = %s
                            GROUP BY ge.user, ge.game) as userCorrectAnswers
                            LEFT JOIN
                                (SELECT p.game as 'game', COUNT(1) as 'num_periods' FROM period p    WHERE p.`game` = %s) AS periods
                                ON userCorrectAnswers.game = periods.game
                        WHERE
                            userCorrectAnswers.correct_answers = periods.num_periods'''
    cursor = db.cursor()
    cursor.execute(perfectGameSql, (game_id, game_id))
    for row in cursor.fetchall():
        grantUserTrophyIfNew(row[0], metadata.Trophy.PERFECT_GAME)
    cursor.close()
コード例 #3
0
ファイル: api.py プロジェクト: bpeters-cmu/Tornado-api
 def get(self, game_id=None):
     try:
         game_dao = GameDao(self.redis)
         if game_id:
             game = game_dao.get_saved_game(game_id)
             if not game:
                 self.set_status(404)
                 return
             self.set_status(200)
             self.write(game.to_json())
         else:
             games = game_dao.get_all()
             response = {'games': games}
             self.set_status(200)
             self.write(response)
     except Exception as e:
         self.logger.error(str(e))
         self.set_status(400)
コード例 #4
0
class GameHandler(BaseHandler):
    gdao = GameDao()

    def get(self, game_id):
        game = self.gdao.get(game_id)
        
        # TODO: use flvproxy to update playPage to downloadURL
        
        self.write(json.dumps(game))
        return
コード例 #5
0
class GameVideoCollectionHandler(BaseHandler):
    gdao = GameDao()

    def get(self, game_id):
        page = int(self.get_argument('page', '1'))
        max_results = int(self.get_argument('maxResults', '20'))

        start = max_results * (page -1)
        limit = max_results

        video_all_counts = self.gdao.get_video_count(game_id)
        video_summaries = self.gdao.get_videos(game_id, start, limit)
        
        result = {
            'totalCount': video_all_counts,
            'items': video_summaries,
        }

        self.write(json.dumps(result))
        return
コード例 #6
0
 def __init__(self):
     self.__game_dao = GameDao()
     self.__board = 0
     self.__dice = Dice()
コード例 #7
0
class GameService:
    def __init__(self):
        self.__game_dao = GameDao()
        self.__board = 0
        self.__dice = Dice()

    def initialize_board(self, board_size, players_list):

        self.__game_dao.set_ladders()
        self.__game_dao.set_snakes()
        self.__board = Board(board_size)

        for player in players_list:
            self.__game_dao.add_player(player)

    def play_game(self):

        while True:

            dice_num = self.__dice.roll_dice()
            player = self.__game_dao.get_player()

            print(f'{player.get_name()} turn, dice number: {dice_num}')
            position = player.get_position()
            new_position = dice_num + position
            if new_position > self.__board.get_size():
                self.__game_dao.add_player(player)
                continue
            if new_position == self.__board.get_size():
                print(f'{player.get_name()} wins')
                player.set_is_won(True)
                break

            if self.__game_dao.get_snakes(new_position) != None:
                new_position = self.__game_dao.get_snakes(new_position)
                print(f'Snake bits, new position is {new_position}')
            elif self.__game_dao.get_ladders(new_position) != None:
                new_position = self.__game_dao.get_ladders(new_position)
                print(f'Ladder Climbed, new position is {new_position}')
            else:
                print(f'new position is {new_position}')

            player.set_position(new_position)
            self.__game_dao.add_player(player)
コード例 #8
0
from flask import (
    render_template,
    request,
    redirect,
    session,
    flash,
    url_for,
    send_from_directory,
)
from models.game import Game
from models.user import User
from dao import GameDao, UserDao
from gameflix import app, db
from helpers.game_cover import delete_game_cover, get_game_cover, upload_game_cover

game_dao = GameDao(db)
user_dao = UserDao(db)


@app.route("/")
def index():
    game_list = game_dao.list()
    return render_template("index.html", title="Gameflix", games=game_list)


@app.route("/login")
def login():
    if "logged_user" in session and session["logged_user"]:
        return redirect(url_for("index"))
    next_page = request.args.get("next")
    return render_template("login/login.html", next=next_page, title="Login")
コード例 #9
0
from flask import Flask, render_template, request, redirect, session, flash, \
    url_for
from flask_mysqldb import MySQL

app = Flask(__name__)
app.secret_key = 'testing_flask'

app.config['MYSQL_HOST'] = "172.17.0.2"
app.config['MYSQL_USER'] = "******"
app.config['MYSQL_PASSWORD'] = "******"
app.config['MYSQL_DB'] = "gamelibrary"
app.config['MYSQL_PORT'] = 3306

db = MySQL(app)

gameDao = GameDao(db)

user1 = User('gustavo', 'Gustavo Moreira', 'passwd')
user2 = User('fran', 'Francislene Patrícia', '1234')
user3 = User('nicolas', 'Nicolas', 'lol')
users = {user1.id: user1, user2.id: user2, user3.id: user3}

game1 = Game('Super Mario RPG', 'RPG', 'SNES')
game2 = Game('Tetris', 'Puzzle', 'Several')
game3 = Game('Fifa 2018', 'Sports', 'Several')
game4 = Game('Street Fighter 2', 'Fight', 'Several')
game_list = [game1, game2, game3, game4]


@app.route('/')
def index():