Example #1
0
def SudokuFileReader(filePath):
    """Read from input file and generate gameboard."""
    with open(filePath) as f:
        lines = f.readlines()

        if len(lines) == 0:
            raise ValueError("Input file \"" + filePath + "\" was empty")
        elif len(lines) < int(lines[0].split()[0]) + 1:
            raise ValueError("Incomplete or Emtpy board for file \""
                             + filePath + "\".Please be advised.")
        else:
            board = []
            for i in range(len(lines)):
                if i == 0:
                    checkGameBoardParameters(lines[i])
                    N = int(lines[i].split()[0])
                    p = int(lines[i].split()[1])
                    q = int(lines[i].split()[2])
                else:
                    tempLine = []
                    for n in lines[i].split():
                        # print(num)
                        # print(type(num)
                        tempLine.append(ODOMETERTOINT[n])
                    board.append(tempLine)
            return gameboard.GameBoard(N, p, q, board)
def ReadFile(filePath):
    """Read from input file and generate gameboard."""
    with open(filePath, 'r') as f:
        lines = f.readlines()

        if len(lines) == 0:
            raise ValueError("Input file " + filePath + " was empty")
        elif len(lines) < int(lines[0].split()[0]) + 1:
            raise ValueError("Incomplete or Emtpy board for file " + filePath)
        else:
            board = []
            for i in range(len(lines)):
                if i == 0:
                    if len(lines[0].split()) != 3:
                        raise ValueError("Params invalid in file.")
                    N = int(lines[i].split()[0])
                    p = int(lines[i].split()[1])
                    q = int(lines[i].split()[2])
                else:
                    tempLine = []
                    for n in lines[i].split():
                        # print(num)
                        # print(type(num)
                        tempLine.append(int(n))
                    board.append(tempLine)
            return gameboard.GameBoard(N, p, q, board)
def generateRandomBoard(moves=2):
    board = gameboard.GameBoard()
    for i in xrange(moves):
        x, y = choice(board.possibleMoves())
        player = gameboard.GameBoard.O if i % 2 else gameboard.GameBoard.X
        board.addMove(player, x, y)
    return board
def _doEndOfGame(trace, player):
    final_board = gameboard.GameBoard(trace[-1])
    features = final_board.getFeatures(player)
    if final_board.isDraw():
        return (features, 0)
    elif final_board.hasWon(player):
        return (features, 100)
    return (features, -100)
Example #5
0
    def __init__(self):
        self.window_w = 400
        self.window_h = 500
        self.window = pygame.display.set_mode((self.window_w, self.window_h))

        self.num_rows = 9
        self.num_cols = 9
        self.num_mines = 10
        self.game_board = gameboard.GameBoard(self.num_rows, self.num_cols,
                                              self.num_mines)

        self.game_board_x = 25
        self.game_board_y = 125
        self.game_board_w = 350
        self.game_board_h = 350

        self.tile_w = self.game_board_w // self.num_cols
        self.tile_h = self.game_board_h // self.num_rows

        self.screen = "main_menu_screen"
        self.difficulty = "easy"
        self.openWindow = True
        self.firstTurn = True
        """
        dictionary of predefined colors
        """
        self.colors = {
            "white": (255, 255, 255),
            "black": (0, 0, 0),
            "gray1": (200, 200, 200),
            "gray2": (175, 175, 175),
            "blue1": (0, 0, 215),
            "blue2": (0, 0, 255),
            "blue3": (0, 0, 235),
            "red1": (215, 0, 0),
            "red2": (255, 0, 0),
            "red3": (235, 0, 0),
            "green1": (0, 135, 0),
            "green2": (0, 175, 0),
            "green3": (0, 155, 0)
        }
        """
        dictionary of button objects from the Button class
        """
        self.buttons = {
            "start": button.Button(100, "Start"),
            "help": button.Button(175, "Help"),
            "settings": button.Button(250, "Settings"),
            "high_scores": button.Button(325, "High Scores"),
            "help_back": button.Button(400, "Back"),
            "settings_back": button.Button(400, "Back"),
            "high_scores_back": button.Button(400, "Back"),
            "easy": button.Button(100, "Easy"),
            "medium": button.Button(175, "Medium"),
            "hard": button.Button(250, "Hard"),
            "play-again": button.Button(215, "Play Again")
        }
Example #6
0
def main():

    game_board = gameboard.GameBoard()

    def init():
        game_board.reset()
        #		initcursor=game_board.move()
        #		initcursor.init_cursor()
        return 'Game'

    def not_game(state):
        game_board.draw()
        action = useraction.get_user_action()
        response = defaultdict(lambda: state)
        response['Restart']

    def game():

        game_board.draw()
        action = useraction.get_user_action()
        if action == 'Init':
            return 'Init'
        elif action == 'Exit':
            return 'Exit'
#
        if action != 'Spawn':
            try:
                game_board.move(action)
            except:
                print("Out of range right now,Try again please")
                action = useraction.get_user_action()
                game_board.move(action)
        else:
            game_board.spawn(action)
            if game_board.Judge():
                return 'Win'


#			break
        return 'Game'

    state = 'Init'
    state_actions = {
        'Init': init,
        'Win': lambda: not_game('Win'),
        'Game': game
    }

    while state != 'Exit':
        state = state_actions[state]()
Example #7
0
def ConstraintNetworkToGameBoard(cn, n, p, q):
        # gb = gameboard.GameBoard()
    board = [[0 for j in range(n)] for i in range(n)]
    row = 0
    col = 0
    for v in cn.variables:
        board[row][col] = v.getAssignment()
        col += 1
        if col == n:
            col = 0
            row += 1
    # gb.board = board
    # gb.N = n
    # gb.p = p
    # gb.q = q
    return gameboard.GameBoard(n, p, q, board)
Example #8
0
    def gameLoop(self):
        """
        - menu system and game loop
        """
        while (self.openWindow):

            if (self.firstTurn):
                self.game_board = gameboard.GameBoard(self.num_rows,
                                                      self.num_cols,
                                                      self.num_mines)
                self.game_board.createBoard()
                self.game_board.placeMines()
                self.game_board.fillBoard()
                self.tile_w = self.game_board_w // self.num_cols
                self.tile_h = self.game_board_h // self.num_rows

            # main menu screen
            if (self.screen == "main_menu_screen"):
                self.mainMenu()

            # help screen
            elif (self.screen == "help_screen"):
                self.helpScreen()

            # settings screen
            elif (self.screen == "settings_screen"):
                self.settingsScreen()

            # high scores screen
            elif (self.screen == "high_scores_screen"):
                self.highScoreScreen()

            # play game screen
            elif (self.screen == "play_game_screen"):
                self.playGameScreen()

            # lose screen
            elif (self.screen == "lose_screen"):
                self.loseScreen()

            # win screen
            elif (self.screen == "win_screen"):
                self.winScreen()

        pygame.quit()
        quit()
Example #9
0
    def test_is_board_finished_true(self):
        board_size = 18

        gb = gameboard.GameBoard(18, self._game_colors, self._colors_color)

        # create a mock board with only red elements
        mock_board = []
        for i in range(board_size):
            row = []
            for j in range(board_size):
                row.append("r")

            mock_board.append(row)

        gb._set_board(mock_board)

        self.assertTrue(gb.is_game_finished())
Example #10
0
    def test_is_board_finished_false(self):
        board_size = 18

        gb = gameboard.GameBoard(18, self._game_colors, self._colors_color)

        # create a mock board with only red elements
        mock_board = []
        for i in range(board_size):
            row = []
            for j in range(board_size):
                row.append("r")

            mock_board.append(row)

        # set one different element
        mock_board[0][0] = "y"

        gb._set_board(mock_board)

        self.assertFalse(gb.is_game_finished())
Example #11
0
    def __init__(self, parent):
        wx.Frame.__init__(self,
                          parent,
                          size=(450, 750),
                          style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER
                          ^ wx.MAXIMIZE_BOX)

        self.Bind(wx.EVT_CLOSE, self.on_close)

        #init board.
        #load previous config if exist.
        try:
            with open(save_file, mode="rb") as f:
                config, counter_total = pickle.load(f)
        except (FileNotFoundError, EOFError, TypeError, ValueError):
            config = ge.Config()
            counter_total = 0

        #Read config about counter
        self.counter_total = counter_total
        self.counter_current = 0

        self.board = gameboard.GameBoard(self, config)
        self.board.SetFocus()

        self.SetTitle("Next Color Practice")

        #init UI
        self.sb = self.CreateStatusBar()
        self.sb.SetFieldsCount(2)
        self.sb.SetStatusWidths([-1, -1])
        self.sb.SetStatusText("Counter: " + str(self.counter_current), 0)
        self.sb.SetStatusText("Total: " + str(self.counter_total), 1)

        toolbar = self.CreateToolBar()
        ctool = toolbar.AddTool(
            wx.ID_ANY, "", wx.Bitmap(os.path.join(icon_dir, "config.png")))
        toolbar.Realize()

        self.Bind(wx.EVT_TOOL, self.on_config, ctool)
Example #12
0
    def __init__(self, parent=None):
        QMainWindow.__init__(self, parent)
        loadUi('gameboard.ui', self)
        self.setStyle(QStyleFactory.create('Fusion'))
        #___ Logs
        self.log = log.Log('Welcome to Hexapawn!')
        self.debug_log = log.Log('Hexapawn Debug -')
        self.btn_debug.clicked.connect(lambda: self.update_log(self.debug_log))
        self.btn_log_clear.clicked.connect(lambda: self.clear_logs)
        self.update_log('Player Moves First')
        #___ Tallies
        self.win_count_player = 0
        self.win_count_computer = 0
        self.win_count_draw = 0

        self.game_state = 'player turn'
        #___ Buttons and their Signals
        self.btn0.clicked.connect(lambda: self.onclick_board_btn(0))
        self.btn1.clicked.connect(lambda: self.onclick_board_btn(1))
        self.btn2.clicked.connect(lambda: self.onclick_board_btn(2))
        self.btn3.clicked.connect(lambda: self.onclick_board_btn(3))
        self.btn4.clicked.connect(lambda: self.onclick_board_btn(4))
        self.btn5.clicked.connect(lambda: self.onclick_board_btn(5))
        self.btn6.clicked.connect(lambda: self.onclick_board_btn(6))
        self.btn7.clicked.connect(lambda: self.onclick_board_btn(7))
        self.btn8.clicked.connect(lambda: self.onclick_board_btn(8))
        self.btn_list = [
            self.btn0, self.btn1, self.btn2, self.btn3, self.btn4, self.btn5,
            self.btn6, self.btn7, self.btn8
        ]
        self.btn_new_game.clicked.connect(self.new_game)
        self.btn_play_again.clicked.connect(self.play_again)
        self.btn_new_ai.clicked.connect(self.reset_ai)
        #___ Setup
        self.game_board = gameboard.GameBoard(self.btn_list)
        self.computer = AI(self.game_board, self.log, self.debug_log)
        self.play_again()
Example #13
0
import gameboard
import player

print("Welcome to the game!")
print("Instructions: ")
print("To move up: w")
print("To move down: s")
print("To move left: a")
print("To move right: d")

print("Try to get to the end! Good Luck!")
print("-----------------------------")

# TODO
# Create a new GameBoard called board
board = gameboard.GameBoard()
# Create a new Player called player starting at position 3,2
player = player.Player(3, 2)

while True:
    board.printBoard(player.rowPosition, player.columnPosition)
    selection = input("Make a move: ")
    # TODO
    # Move the player through the board
    if selection == "w":
        player.moveUp()
    elif selection == "s":
        player.moveDown()
    elif selection == "a":
        player.moveLeft()
    elif selection == "d":
Example #14
0
        pp = 1
        for i in range(pp):
            start_time = time.time()
            alg.solve(csp, True, False, False,
                      True)  #lookahead, mcv, ac3, find only one solution
            totalTime = totalTime + time.time() - start_time
        print totalTime / pp
        #print the board and ready to write into a file
        n = sudokudata.N

        def getnum(i, j):
            return (i - 1) / int(n**0.5) * int(n**0.5) + (j - 1) / int(n**
                                                                       0.5) + 1

        board = []
        for i in range(1, sudokudata.N + 1):
            table = []
            for j in range(1, sudokudata.N + 1):
                table.append(str(alg.optimalAssignment[i, j, getnum(i, j)]))
            board.append(table)
    sudokudataoutput = gameboard.GameBoard(sudokudata.N, sudokudata.p,
                                           sudokudata.q, board)
    #print(sudokudataoutput)

#    with open(sys.argv[2], "w") as outfile:
#        for line in board:
#        	for num in line:
#        		outfile.write('{}'.format(num))
#        		outfile.write('  ')
#    		outfile.write('\n')
Example #15
0
 def __init__(self):
     self.gameBoard = gameboard.GameBoard()
Example #16
0
    def mainMenu(self):

        # update pygame frame
        pygame.display.update()

        # GUI display
        self.window.fill(self.colors["gray1"])
        self.text("Minesweeper", self.window_w / 2, 50, "Impact", 48, self.colors["white"], "center")  
        self.displayButton(self.buttons["start"])
        self.displayButton(self.buttons["help"])
        self.displayButton(self.buttons["settings"])
        self.displayButton(self.buttons["high_scores"])
        self.text("Created by Kevin Henneberger, Adam Wiener,", self.window_w / 2, 425, "Impact", 16, self.colors["white"], "center")  
        self.text("Matt Aber, and Baptiste Saliba", self.window_w / 2, 450, "Impact", 16, self.colors["white"], "center")

        # event handling
        for event in pygame.event.get():
            # check if the user clicked the mouse
            if (event.type == pygame.MOUSEBUTTONDOWN):
                # get mouse x and y coordinates
                mousePosition = pygame.mouse.get_pos()
                mouseX = mousePosition[0]
                mouseY = mousePosition[1]

                # change screen
                if (self.buttons["start"].mouseOver(mouseX, mouseY)):
                    self.screen = "play_game_screen"

                    # set up the board
                    self.firstTurn = True

                    if (self.difficulty == "easy"):
                        self.num_rows = 9
                        self.num_cols = 9
                        self.num_mines = 10
                        self.mines_remaining = 10
                    elif (self.difficulty == "medium"):
                        self.num_rows = 12
                        self.num_cols = 12
                        self.num_mines = 24
                        self.mines_remaining = 24
                    elif (self.difficulty == "hard"):
                        self.num_rows = 16
                        self.num_cols = 16
                        self.num_mines = 40
                        self.mines_remaining = 40

                    self.game_board = gameboard.GameBoard(self.num_rows, self.num_cols, self.num_mines)
                    self.game_board.createBoard()
                    self.game_board.placeMines()
                    self.game_board.fillBoard()
                    self.tile_w = self.game_board_w // self.num_cols
                    self.tile_h = self.game_board_h // self.num_rows

                    self.start_time = time.time()

                elif (self.buttons["help"].mouseOver(mouseX, mouseY)):
                    self.screen = "help_screen"
                elif (self.buttons["settings"].mouseOver(mouseX, mouseY)):
                    self.screen = "settings_screen"
                elif (self.buttons["high_scores"].mouseOver(mouseX, mouseY)):
                    self.screen = "high_scores_screen"

            # allow the user to exit the window
            if (event.type == pygame.QUIT):
                self.openWindow = False
Example #17
0
    print("Failed Color Test")

print("=" * 50)
print("### Testing the Button Module (button.py) ###")
print("=" * 50)

button_test = button.Button(0, "Test")

print(button_test.mouseOver(121, 1)) # should equal True
print(button_test.mouseOver(1000, 1000)) # should equal False

print("=" * 50)
print("### Testing the GameBoard module (game board.py) ###")
print("=" * 50)

tests = [(10,10,9), (12,12,24), (16,16,40)] # the three difficulties: Easy, Medium, and Hard.

for t in tests:
    print("Attempt to create a board with {} rows, {} columns, and {} mines.".format(t[0], t[1], t[2]))
    gameboard_test = gameboard.GameBoard(t[0], t[1], t[2])
    gameboard_test.createBoard()
    gameboard_test.placeMine()
    gameboard_test.placeMines()
    gameboard_test.fillBoard()
    gameboard_test.clearEmptyCells(0, 1)
    gameboard_test.guaranteeEmptyCell(0, 1)
    gameboard_test.revealMines()
    gameboard_test.hasLost(0, 1)
    gameboard_test.hasWon()
    print("Successfully created board!")
Example #18
0
def copyGameState(Board):
    NewBoard = gameboard.GameBoard(Board.board, Board.width, Board.height,
                                   Board.spawnPool, Board.moveHistory,
                                   Board.Goal)
    return NewBoard
Example #19
0
            output += str(j) + ","
    output = output[:-1]
    output += ")"

    output += "\nCOUNT_NODES=" + str(solverObj.numAssignments)
    output += "\nCOUNT_DEADENDS=" + str(solverObj.numBacktracks)
    output += "\n" + str(solverObj.gameboard)

    return output


if __name__ == '__main__':
    # Check command-line arguments.
    #print('Python version:',sys.version)

    GB = gameboard.GameBoard(12,3,4,[[0 for j in range(12)] for i in range(12)])
    print(GB)

    TOTAL_START = time.time()
    sudokudata = filereader.SudokuFileReader(sys.argv[1])
    print(sudokudata)
    # cn = filereader.GameBoardToConstraintNetwork(sudokudata)
    # print(cn)
    solver = btsolver.BTSolver(sudokudata)

    #three examples of how you would change the various aspects of solver
    # solver.setConsistencyChecks(btsolver.ConsistencyCheck['None'])
    # solver.setValueSelectionHeuristic(btsolver.ValueSelectionHeuristic['None'])
    # solver.setVariableSelectionHeuristic(btsolver.VariableSelectionHeuristic['None'])
    tokens = sys.argv[4:]
    solver.setTokens(tokens)

if __name__ == '__main__':

    DEFAULT_STRATEGY = (0.5, 1, -1, 2, -2, 3)
    strategy = DEFAULT_STRATEGY

    for _ in xrange(50):
        wins, losses, draws = 0, 0, 0
        for _ in xrange(20):
            initial_board = generateRandomBoard()
            #trace = PerformanceSystem(
            #    initial_board, strategy, DEFAULT_STRATEGY).playGame()
            trace = playGame(initial_board, strategy, DEFAULT_STRATEGY)
            if O_won(trace[-1]):
                wins += 1
            elif X_won(trace[-1]):
                losses += 1
            else:
                draws += 1

        print("With strategy %s, machine won %d games, lost %d, drew %d" %
              (str(strategy), wins, losses, draws))
        empty_board = gameboard.GameBoard()
        #trace = PerformanceSystem(
        #    initial_board, strategy, DEFAULT_STRATEGY).
        trace = playGame(initial_board, strategy, DEFAULT_STRATEGY)
        training_examples = produceTrainingExamples(trace, strategy,
                                                    gameboard.GameBoard.O)
        strategy = computeNewStrategy(training_examples, strategy)
Example #21
0
 def create_game_board(self):
     """Create and open a gameboard window."""
     self.gameboard = gameboard.GameBoard(self.main_app,
             self.level)
     self.open_window(self.gameboard.get_top_widget())
def _successorRule(trace, player, strategy, i):
    successor_board = gameboard.GameBoard(trace[i + 2])
    return (gameboard.GameBoard(trace[i]).getFeatures(player),
            successor_board.evaluateBoard(strategy, player))
def O_won(board):
    return gameboard.GameBoard(board).hasWon(gameboard.GameBoard.O)
Example #24
0
def start():
    
    p1_board = g.GameBoard()
    p2_board = g.GameBoard()
    
    turn = 0
    row = 0
    col = 0
    # player_selection=[row,col]

    p1_ships = ['S','S','S','S']
    p2_ships = ['S','S','S','S']

    while p1_ships != [] and p2_ships != []:
        if turn % 2 == 0:
            #os.system('clear')
            print('P1s Turn')
            print('P1s Board:')
            v.show_board(p1_board)
            if p1_ships == []:
                print('Select Target')
                row = int(input('Enter row num (top row = 1): '))
                col = int(input('Enter col num (leftmost col  = 1): '))
            
            else:
                print('Place A Ship')
                row = int(input('Enter row num (top row = 1): '))
                col = int(input('Enter col num (leftmost col  = 1): '))
                if p1_board[row, col] == ' ':
                    p1_board[row, col] = p1_ships.pop()

                else:
                    print('Please choose another location.') 
                    row = int(input('Enter row num (top row = 1): '))
                    col = int(input('Enter col num (leftmost col  = 1): '))
                    if p1_board[row, col] == ' ':
                        p1_board[row, col] = 'S'         
            v.show_board(p1_board)    
            print('Ending turn')
            turn += 1


        if turn % 2 != 0:
            #os.system('clear')
            print('P2s Turn')
            print('P2s Board:')
            v.show_board(p2_board)
            if p2_ships == []:
                print('Select Target')
                row = int(input('Enter row num (top row = 1): '))
                col = int(input('Enter col num (leftmost col  = 1): '))
            
            else:
                print('Place A Ship')
                row = int(input('Enter row num (top row = 1): '))
                col = int(input('Enter col num (leftmost col  = 1): '))
                if p2_board[row, col] == ' ':
                    p2_board[row, col] = p2_ships.pop()
                else:
                    print('Please choose another location.') 
                    row = int(input('Enter row num (top row = 1): '))
                    col = int(input('Enter col num (leftmost col  = 1): '))
                    if p2_board[row, col] == ' ':
                        p2_board[row, col] = 'S'         
            v.show_board(p2_board)
            print('Ending turn')    
            turn += 1
Example #25
0
        print "##testing to see if '' returtns false for isMine and True for is Empty##"
    if i == '1':
        print "##testing to see if '1' returns false for both is mine and is empty##"
    print(tile_test.isMine())
    print(tile_test.isEmpty())
    
    
# print False
print "flip test should equal false"
print(tile_test.isFlipped)
tile_test.flip()

# print True
print "after flip should equal true"
print(tile_test.isFlipped)

tile_test.flip()#should return true
tile_test.flag()#should return true

print("###Testing Gameboard Model##")

alltests = [(5,5,3), (4,4,4), (9,9,9), (7,7,15)]

for testn in alltests:
    testboard1 = gameboard.GameBoard(testn[0],testn[1],testn[2])
    testboard1.createBoard()
    testboard1.placeMines()
    testboard1.fillBoard()