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)
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()
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)
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
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
def __init__(self): self.__game_dao = GameDao() self.__board = 0 self.__dice = Dice()
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)
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")
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():