def test_game_creation(self):
        """Test that Game instances are instantiated correctly."""

        game = Game(players=4, turn=0)

        self.assertTrue(isinstance(game, Game))
        self.assertEqual(str(game), 'The game is not currently active.')
        self.assertEqual(game.player_count(), 4)

        game = Game(players=2, turn=2)
        self.assertTrue(isinstance(game, Game))
        self.assertEqual(str(game), 'It is Swindle_2\'s turn.')
        self.assertEqual(game.player_count(), 2)
Beispiel #2
0
    def test_next_game(self):
        game = Game(name="test")
        game.save()
        game.create_next_game()
        self.assertEqual("test 2", game.next_game.name)
        game = game.next_game
        game.create_next_game()
        self.assertEqual("test 3", game.next_game.name)
        long_name = ''.join([str(i % 10)for i in range(29)]) + 'a'
        game = Game(name=long_name)
        game.save()
        game.create_next_game()

        self.assertEqual(long_name[2:]+" 2", game.next_game.name)
Beispiel #3
0
    def create_game(self, request, *args, **kwargs):
        body = json.loads(request.body)
        api_key = body.get('api_key')
        allowed_users = body.get('allowed_users')

        if not valid_user(request, api_key):

            return self.create_response(request, {
                'status': False,
                'Message': 'Invalid Credentials'
            })

        else:
            # Fetch quiz object for creator user
            user_id = fetch_id(api_key)
            quiz = Quiz.objects.get(created_by=user_id)

            game = Game(quiz=quiz)
            game.save()

            for name in allowed_users:
                user = Users.objects.get(name=name)
                game.allowed_users.add(user)

            # Returns the link to created Quiz
            return self.create_response(
                request, {
                    'status':
                    True,
                    'Message':
                    'Game created at - https://127.0.0.1:8000/api/v2/play/game/'
                })
Beispiel #4
0
def new_game(request,pk):
    if request.method=='GET':
        player = Player.objects.get(pk=pk)
        players = Player.objects.all()
        genres  = Genre.objects.all()
        return render(request,'player/new_game.html',{'players':players,'genres':genres,'player':player})
    else:
        print '## Adding New Game ##'
        game = Game(name = request.POST['name'],date = timezone.now(),active=False)
        genres = request.POST.getlist('genres')
        game.save()
        for genre in genres:
            game.genres.add(Genre.objects.get(pk=genre))
        game.save()
        print '## Saved Game ID: %s with name %s ##' % (game.id,game.name)
        player = Player.objects.get(pk=pk)
        PG = Player_Game(game = game, player = player, score = 0,accepted = True, declined = False)
        print '## The first player in the game is %s with ID %s ##' % (player.name, player.id)
        PG.save()
        players = request.POST.getlist('players')
        for p in players:
            player = Player.objects.get(pk = int(p))
            PG = Player_Game(game = game, player = player, score = 0, accepted = False, declined = False)
            PG.save()
            print '## Player %s with ID %s was invited to this game ##' % (player.name,player.id)
        return HttpResponseRedirect("/player/%s/"%pk)
Beispiel #5
0
    def test_init(self):
        me = Player(123, "", 0, False, [])
        others = [Player(222, "", 0, False, []), Player(111, "", 0, False, [])]
        game = Game(0, 0, me.id, [me] + others, None, None, [])

        self.assertEqual(me, game.me)
        self.assertEqual(others, game.enemies)
Beispiel #6
0
def Questions(request):

    if request.method == "GET":
        cat_id = None,
        num_quest = 1,
        difficulty = None,
        quest_type = 'multiple'
        questions_raw = services.get_questions(cat_id, num_quest,
                                               difficulty, quest_type)

        if questions_raw['response_code'] != 0:
            return JsonResponse({"error retriving questions":
                                 "POST request required."}, status=400)
        else:
            questions_cln = []
            for record in questions_raw['results']:
                all_answers = record['incorrect_answers']
                all_answers.append(record['correct_answer'])

                # Rearrange potential answers in random order
                all_answers = list(set(all_answers))
                record['choice1'] = all_answers[0]
                record['choice2'] = all_answers[1]
                record['choice3'] = all_answers[2]
                record['choice4'] = all_answers[3]
                del record['incorrect_answers']

                # decode text
                record_cln = {k: pybase64.b64decode(v, validate=True)
                              .decode("utf-8") for k, v in record.items()}

                # appened to a master list
                questions_cln.append(record_cln)

                # append historical data to the dataset
                total_score = (Game.objects.aggregate(
                        Sum('score')))['score__sum']
                total_quest = Game.objects.aggregate(
                        Sum('max_questions'))['max_questions__sum']

                avg_score = round((total_score/total_quest), 2) \
                    if total_quest > 0 else 0
                questions_cln[0]['avg_score'] = avg_score

                num_games = Game.objects.count()
                questions_cln[0]['num_games'] = num_games

            return JsonResponse(questions_cln, safe=False)

    elif request.method == "POST":
        data = json.loads(request.body)
        game = Game(score=data["score"], max_questions=data["max_questions"])
        game.save()
        return HttpResponse(status=204)

    # Email must be via GET or PUT
    else:
        return JsonResponse({
            "error": "GET or PUT request required."
        }, status=400)
Beispiel #7
0
def create(request):
    """ User will create games.

        Keyword arguments:
        request -
    """
    if request.method == 'POST':
        form = GameForm(request.POST)
        if form.is_valid():
            sport = Sport.objects.get(sport=form.cleaned_data['sport'])
            #player = Player.objects.get(user=request.user) # unused var

            game = Game()
            game.sport = sport
            game.owner = request.user
            game.start_date_and_time = datetime.combine(
                form.cleaned_data['start_date'],
                form.cleaned_data['start_time'])
            game.address = form.cleaned_data['address']
            game.minimum_players = form.cleaned_data['minimum_players']
            game.restrictions = form.cleaned_data['restrictions']
            game.active = True

            if request.POST['lng'] and request.POST['lat']:
                game.longitude = request.POST['lng']
                game.latitude = request.POST['lat']
                game.save()

                return HttpResponseRedirect('/game/%s/' % game.id)

    else:
        form = GameForm()
    return render(request, 'create.html', {'form': form})
Beispiel #8
0
def new_game(request, session_id):
    form = NewGame()

    # Форма по созданию игры
    if request.method == 'POST':
        form = NewGame(request.POST)
        if form.is_valid() and form['number'].value():
            if not Player.objects.filter(player_id=session_id):
                Player(player_id=session_id).save()
            Game(game_id=session_id, number=form['number'].value()).save()
            PlayerGameInfo(player_id=Player.objects.filter(
                player_id=session_id).values('id')[0]['id'],
                           game_id=Game.objects.order_by('-id').filter(
                               game_id=session_id).values('id')[0]['id'],
                           is_owner=True).save()
            return redirect('game_created',
                            game_id=Game.objects.order_by('-id').filter(
                                game_id=session_id).values('id')[0]['id'])

    return render(
        request,
        'new_game.html',
        {
            'form': form,
        },
    )
    def test_play_second(self):
        "The second play is O"

        game = Game(board="X        ")
        game.play(1)
        self.assertEqual(game.board, "XO       ")
        self.assertEqual(game.next_player, "X")
    def test_play_error_square_taken(self):
        "You can't play a square that is taken."

        game = Game(board="XOX      ")
        with self.assertRaises(ValueError):
            game.play(1)
            game.play(2)
    def test_play_first(self):
        "X always goes first"

        game = Game()
        game.play(0)
        self.assertEqual(game.board, "X        ")
        self.assertEqual(game.next_player, "O")
Beispiel #12
0
 def test_cover_image_extension(self, name, cover_image, version,
                                official_repository, errors_dict):
     game = Game(name=name,
                 cover_image=cover_image,
                 version=version,
                 official_repository=official_repository)
     validation_test(game, errors_dict)
Beispiel #13
0
 def _add_game(self, number=1):
     for i in range(number):
         game = Game()
         game.name = 'name%d' % (i)
         game.description = 'description%d' % (i)
         game.url = 'https://notexisturl%d.fi' % (i)
         game.save()
Beispiel #14
0
 def create(self, validated_data):
     player_1 = Player.objects.get(name=validated_data['player_1']['name'])
     player_2 = Player.objects.get(name=validated_data['player_2']['name'])
     # Now we must create the game between the two players
     game = Game(player_1=player_1, player_2=player_2)
     game.save()
     return game
Beispiel #15
0
def game(request):
    """
    receive a player name in a POST to create a new game
    return the newly created game object
    """
    if request.method == 'POST':  #create a new game
        game = Game()
        code = game.new_game()
        playername = request.data['player_name']
        player = Player(name=playername)
        player.join_game(code)

        game_serializer = GameSerializer(game)
        player_serializer = PlayerSerializer(player)

        #return a json object containing both the game and the player's object
        return Response({
            'game': game_serializer.data,
            'player': player_serializer.data
        })

    elif request.method == 'GET':  #retrieve info for an existing game
        if 'access_code' in request.query_params:
            game = Game.objects.get(
                access_code=request.query_params['access_code'])
            serializer = GameSerializer(game)
            return Response(serializer.data)
        else:
            return Response()
Beispiel #16
0
    def test_update_game_calls_send_actions(self):
        cells = [
            Cell(0, 5, 10, Vec2(0, 0), Vec2(1, 1)),
            Cell(1, 5, 10, Vec2(0, 0), Vec2(1, 1)),
            Cell(2, 5, 10, Vec2(0, 0), Vec2(1, 1))
        ]
        player = Player(0, "", 10, True, cells)
        game = Game(0, 0, 0, [player], Resources([], [], []), Map(0, 0), [])

        cells[0].target = Vec2(2, 2)
        cells[0].burst()

        cells[1].split()
        cells[1].trade(3)

        class MockApi:
            def send_actions(self, game_id, actions):
                self.actions = actions

        api = MockApi()

        update_game(api, game, lambda x: None)

        self.assertEqual(len(api.actions), 2)
        self.assertTrue(api.actions[0].target.almost_equals(Vec2(2, 2)))
        self.assertTrue(api.actions[0].burst)

        self.assertTrue(api.actions[1].split)
        self.assertEqual(3, api.actions[1].trade)
 def test_play_auto_computer_human(self):
     "At the start of the game, computer starts."
     random.seed(0)
     game = Game(player_o='human', player_x='game.players.RandomPlayer')
     game.play_auto()
     self.assertEqual(game.board, "       X ")
     self.assertEqual(game.next_player, "O")
    def test_play_error_index(self):
        "You can't pass in an invalid index."

        game = Game()
        with self.assertRaises(IndexError):
            game.play(-1)
            game.play(9)
            game.play(10)
 def test_play_auto_computer_to_computer(self):
     "Two computers playing against themselves."
     random.seed(0)
     game = Game(player_o='game.players.RandomPlayer',
                 player_x='game.players.RandomPlayer')
     game.play_auto()
     self.assertEqual(game.board, "OOXOX OXX")
     self.assertEqual(game.is_game_over, 'O')
Beispiel #20
0
 def _add_game(self, team_arr, stage, i, faker):
     game_teams = [team_arr[i], team_arr[i + 1]]
     winning_team = [random.choice(game_teams)]
     loose_team = list(set(game_teams).symmetric_difference(set(winning_team)))[0]
     game = Game(winner=winning_team[0], stage=stage, host_date=faker.date(), looser=loose_team)
     game.save()
     game.teams.set(game_teams)
     return winning_team
Beispiel #21
0
def start_db(room):
    game = Game(room_id=room.id, started=room.started)
    for p in room.players:
        user = User.query.filter_by(username=p.name).first()
        game.players.append(user)
    db.session.add(game)
    db.session.commit()
    return
Beispiel #22
0
    def setUp(self):
        self.new = Game(name="newgame")
        self.new.save()

        self.perfect = Game(name="perfect")
        self.perfect._rolls = ("[10, 10, 10, 10, 10, 10,"
                               " 10, 10, 10, 10, 10, 10]")
        self.perfect.save()

        self.incomplete = Game(name="incomplete")
        self.incomplete._rolls = ("[10, 3, 4, 5, 5, 10, 2, 4, 0, 0]")
        self.incomplete.save()

        self.regular = Game(name="regular")
        self.regular._rolls = ("[5, 4, 6, 4, 10, 2, 3, 1, 4,"
                               " 4, 0, 7, 2, 8, 0, 10, 2, 3]")
        self.regular.save()
Beispiel #23
0
 def test_create_game(self):
     game = mixer.blend(Game)
     Game().create_game(game.winner_id, game.round, game.team1_id,
                        game.team2_id, game.is_final)
     new_game = Game.objects.filter(winner=game.winner,
                                    team1=game.team1,
                                    is_final=game.is_final).first()
     assert game.is_final == new_game.is_final
     assert game.winner == new_game.winner
Beispiel #24
0
 def _add_game(self, number=1):
     for i in range(number):
         game = Game()
         game.owner = self.user
         game.name = 'name%d' % (i)
         game.description = 'description%d' % (i)
         game.url = 'https://notexisturl%d.fi' % (i)
         game.price = Decimal("1." + str(i))
         game.save()
Beispiel #25
0
    def test_random(self):
        "Basic testing."

        random.seed(0)  # For testing
        game = Game()
        p1 = RandomPlayer()

        game.play(p1.play(game))
        self.assertEqual(game.board, "      X  " if six.PY3 else "       X ")
 def save(self, user):
     newgame = Game(title=self.cleaned_data["gametitle"],
                    current_round=1,
                    max_rounds=self.cleaned_data["max_rounds"],
                    player1=user,
                    open=True,
                    finished=False,
                    player1wins=0,
                    player2wins=0)
     newgame.save()
Beispiel #27
0
    def create_game(name):
        """Create game and it's decks"""

        game = Game(name=name)
        game.save()
        deck = Deck(game=game)
        deck.save()
        deck.fill_deck()
        Discard(game=game).save()
        return game
Beispiel #28
0
    def start(self):
        c = int(self.count / 10)

        for i in range(c):
            t1 = Team(
                name='team_{}'.format(i),
                games=self.count,
            )
            t2 = Team(
                name='team_{}'.format(i),
                games=self.count,
            )
            t1.save(using='db1')
            t2.save(using='db2')
            for j in range(10):
                u = User(username='******'.format(j + 10 * i),
                         email='ivan@ivan{}.ru'.format(j + 10 * i))
                u.set_password('ivan123')
                u.first_name = 'ivan{}'.format(j + 10 * i)
                u.last_name = 'ivanov{}'.format(j + 10 * i)
                ran_db = random.randint(1, 2)
                u.id = int(get_pk() + str(ran_db))
                print(u.id)
                u.save(using='db' + str(ran_db))
                if ran_db == 1:
                    tu = UserTeam(
                        user=u,
                        team=t1,
                    )
                else:
                    tu = UserTeam(
                        user=u,
                        team=t2,
                    )
                tu.save(using='db' + str(ran_db))
        cc = int(self.count / 100)

        for i in range(cc):
            t = Turn(name='turn{}'.format(i))
            t.save(using='db1')
            t.save(using='db2')
            for j in range(10):
                m = Match(name='match{}'.format(j + 10 * i), turn_id=t.id)
                m.save(using='db1')
                m.save(using='db2')
                for l in range(10):
                    g = Game(name='game___{}'.format(l + 10 * j + 100 * i),
                             match_id=m.id)
                    ran_db = random.randint(1, 2)
                    g.id = int(get_pk() + str(ran_db))
                    g.save(using='db' + str(ran_db))
                    tm = Team.objects.using('db' + str(ran_db)).filter(
                        name='team_{}'.format(j + 10 * i))[0]
                    gt = GameTeam(game=g, team=tm)
                    gt.save(using='db' + str(ran_db))
Beispiel #29
0
 def codetosetmanually(self):
     from game.models import Game
     from django.contrib.auth.models import User
     user = User.objects.get(pk=1)
     p = Game(owner=user,
              name='No Game',
              description='desc',
              url="http://url.fi",
              price=2.30,
              available=True)
     p.save()
Beispiel #30
0
    def post(cls, request, game_id=None):
        game = request.data
        challenges = request.data['challenges']

        if game_id:
            g = get_object_or_404(Game, pk=game_id)
        else:
            g = Game()

        for k, v in game.items():
            if k in ['pk', 'challenges', 'author', 'options']:
                continue
            setattr(g, k, v)

        g.author = request.user
        g.add_extra('options', game.get('options', []))
        g.save()

        pkch = {}
        for ch in challenges:
            pk = ch['pk']
            if pk < 0:
                # negative pk will create the challenge
                c = Challenge()
            else:
                c = Challenge.objects.get(pk=pk)

            for k, v in ch.items():
                if k in ['pk', 'game', 'options', 'child_challenges', 'depends']:
                    continue
                setattr(c, k, v)

            c.add_extra('options', ch.get('options', []))
            c.save()
            g.challenges.add(c)
            g.save()
            pkch[pk] = c

        for ch in challenges:
            c = pkch[ch['pk']]

            # child challenges
            c.child_challenges.clear()
            for cc in ch.get('child_challenges', []):
                c.child_challenges.add(pkch[cc['pk']])

            # depends
            c.depends.clear()
            for dep in ch.get('depends', []):
                c.depends.add(pkch[dep['pk']])

            c.save()

        return Response({'status': 'ok'})