def test_cant_move_pawn_two_sq__after_first_move(self):
     gm = GameMaster()
     gm.set_board()
     pawn = gm.piece_at_square("D2")
     self.assertEqual(pawn.name, Piece.PAWN)
     self.assertEqual(pawn.color, Piece.WHITE)
     gm.move_piece("Pd3", Piece.WHITE)
     pawn = gm.piece_at_square("D3")
     self.assertEqual(pawn.name, Piece.PAWN)
     self.assertEqual(pawn.color, Piece.WHITE)
     gm.move_piece("Pd5", Piece.WHITE)
 def test_move_pawn_two_sq(self):
     gm = GameMaster()
     gm.set_board()
     pawn = gm.piece_at_square("D2")
     self.assertEqual(pawn.name, Piece.PAWN)
     self.assertEqual(pawn.color, Piece.WHITE)
     gm.move_piece("Pd4", Piece.WHITE)
     pawn = gm.piece_at_square("D4")
     self.assertEqual(pawn.name, Piece.PAWN)
     self.assertEqual(pawn.color, Piece.WHITE)
 def test_capture_list(self):
     gm = GameMaster()
     gm.set_board()
     # NOTE: at time of test authorship, pieces are not yet restricted by
     # intervening pieces. Thus, white queen can just hop over the pawns
     # in the way. Following TDD, this test will need updating when that
     # functionality is implemented.
     gm.move_piece("qd8", Piece.WHITE)
     self.assertEqual(len(gm.white_captures), 1)
     self.assertEqual(gm.white_captures[0], 'bQ')
Beispiel #4
0
def main():
    gm = GameMaster()
    player_turn = 1

    while gm.checkGameState() <= 3:

        os.system('clear')
        print(gm.drawBoard(player=1))

        if player_turn == 1:
            print("It is your turn to give a clue")
            print(f"Enter a clue (single word:")
            word = getStrInput("Please enter a single word",
                               lambda x: len(x.split()) == 1)
            word = word.strip()

            print(f"How many words does this clue apply to?")
            count = getIntInput()

            guesses = gm.submitClue(word, count, player=1)

            print("The computer has guessed: {}".format(" ".join(guesses)))
            print("Press enter to contine...")
            input()
            player_turn = 2
        else:
            print("It is the computer's turn to give a clue")
            print("Please wait while it thinks...")
            clue, target_count = gm.getClue()
            print("The clue is: {}".format(clue))
            if target_count > 1:
                print("It is directed at {} target words".format(target_count))
            else:
                print("It is directed at {} target word".format(target_count))

            guess_count = 0
            while guess_count < target_count:
                guess_count += 1
                print("please enter a target word to guess")
                guess = getStrInput()
                result = gm.submitGuess([guess], player=2)
                print("You guessed a {} word".format(result))
            print("Press enter to contine...")
            input()
            player_turn = 1
Beispiel #5
0
 def __init__(self, *, test=False):
     self.load()
     self.testver = test
     self.gm = GameMaster(self)
 def test_parse_input(self):
     result = GameMaster.parse_input('d2')
     self.assertEqual(result, ('d', 2))
 def test_gm_can_report_piece_at_square(self):
     gm = GameMaster()
     gm.set_board()
     piece = gm.piece_at_square('d2')
     self.assertEqual(piece.name, Piece.PAWN)
 def test_set_board__sets_board(self):
     gm = GameMaster()
     gm.chessboard = MagicMock()
     gm.set_board()
     assert gm.chessboard.set_board().called_once
def terminalfighter(screen):

    pygame.mixer.music.load("TerminalFighterPrototypeTheme.ogg")
    pygame.mixer.music.play(loops=-1)
    pygame.mixer.music.set_volume(1.1)
    print("volume is " + str(pygame.mixer.music.get_volume()))
    universe = Universe((GAME_WIDTH, GAME_HEIGHT))
    score_counter = ScoreCounter(1)
    spawn_controller = SpawnController(universe, score_counter)
    gamemaster = GameMaster(universe, spawn_controller, score_counter)
    # pygame ticks, one tick is 1/1000 second
    # 15 pygame ticks per update is approximately 30 updates per second
    FRAME_LENGTH_TICKS = 33

    prev_frame_start_time = 0

    while 1:
        frame_start_time = pygame.time.get_ticks()
        # print("Elapsed time since last update : " + str(frame_start_time - prev_frame_start_time))
        prev_frame_start_time = frame_start_time

        update_start_time = pygame.time.get_ticks()
        events = pygame.event.get()
        for event in events:
            if event.type == pygame.QUIT:
                sys.exit()
        gamemaster.update(events)
        # print("update time : " + str(pygame.time.get_ticks() - update_start_time))

        draw_start_time = pygame.time.get_ticks()
        gamemaster.draw(screen)
        # print("draw time : " + str(pygame.time.get_ticks() - draw_start_time))

        flip_start_time = pygame.time.get_ticks()
        pygame.display.flip()
        # print("flip time : " + str(pygame.time.get_ticks() - flip_start_time))
        if gamemaster.universe_.main_character().health_ <= 0:
            pygame.mixer.music.stop()

            gameover_font = pygame.font.SysFont("monospace", 120)
            gameover_label = gameover_font.render("GAME OVER", 1, WHITE)
            screen.blit(
                gameover_label,
                (screen.get_width() / 2 - gameover_label.get_width() / 2,
                 screen.get_height() / 2 - gameover_label.get_height() / 2))

            highscore_font = pygame.font.SysFont("monospace", 30)
            highscore_text = "Highscore : "
            if not highscore_service.get_highscore() or \
                highscore_service.get_highscore() < gamemaster.score_counter_.score_:
                highscore_service.update_highscore(
                    gamemaster.score_counter_.score_)
                highscore_text += str(
                    highscore_service.get_highscore()) + " NEW HIGHSCORE"
            else:
                highscore_text += str(highscore_service.get_highscore())
            highscore_label = highscore_font.render(highscore_text, 1, WHITE)
            screen.blit(
                highscore_label,
                (screen.get_width() / 2 - highscore_label.get_width() / 2,
                 screen.get_height() / 2 + gameover_label.get_height() / 2 +
                 highscore_label.get_height() / 2))

            press_any_key_font = pygame.font.SysFont("monospace", 30)
            press_any_key_label = press_any_key_font.render(
                "Press any key...", 1, WHITE)
            screen.blit(
                press_any_key_label,
                (screen.get_width() / 2 - press_any_key_label.get_width() / 2,
                 screen.get_height() / 2 + gameover_label.get_height() / 2 +
                 highscore_label.get_height() +
                 press_any_key_label.get_height() / 2))

            pygame.display.flip()
            pygame.time.delay(1000)
            pygame.event.clear()
            while 1:
                for event in pygame.event.get():
                    if event.type == pygame.QUIT:
                        sys.exit()
                    elif event.type == pygame.KEYDOWN:
                        return "MENU"

        frame_end_time = pygame.time.get_ticks()
        frame_time_elapsed = frame_end_time - frame_start_time
        if frame_time_elapsed < FRAME_LENGTH_TICKS:
            pygame.time.wait(FRAME_LENGTH_TICKS - frame_time_elapsed)
        else:
            print("WARNING: Cannot keep up with 30FPS update time!")
Beispiel #10
0
from gamemaster import GameMaster
import os

from piece import Piece

gm = GameMaster()
os.system('cls' if os.name == 'nt' else 'clear')
turn = Piece.WHITE
gm.set_board()
gm.set_turn(turn)
gm.print_board(Piece.WHITE)

movement = input()
while movement != 'quit':
    if movement == "setboard":
        gm.set_board()
        os.system('cls' if os.name == 'nt' else 'clear')
        gm.print_board(Piece.WHITE)
        movement = input()
    gm.move_piece(movement, turn)
    os.system('cls' if os.name == 'nt' else 'clear')
    turn = gm.switch_turn()
    gm.print_board(Piece.WHITE)
    movement = input()
Beispiel #11
0
from tornado import ioloop, web, websocket
import json
from gamemaster import GameMaster

gamemaster = GameMaster()
connections = []


class GameWebSocket(websocket.WebSocketHandler):
    def check_origin(self, origin):
        return True

    def open(self):
        print('socket opened')
        connections.append(self)
        self.send_open_games()

    def on_message(self, message):
        data = json.loads(message)
        print(message)
        type = data.get("type", "")

        if type == "new-game":
            game_id = gamemaster.create_game(self)
            self.send_message(type='new-game', game_id=game_id)
            self.send_open_games()

        elif type == "join_game":
            game_id = data.get('game_id')
            game_to_join = gamemaster.join_game(game_id, self)
            if game_to_join: