Пример #1
0
def draw_boards(primary_canvas, secondary_canvas, control_canvas, width, height, size, margin,
                primary_board=None,
                secondary_board=None):
	primary_canvas.delete("all")
	secondary_canvas.delete("all")
	control_canvas.delete("all")
	if primary_board is None:
		primary_board = Board(width, height)
	if secondary_board is None:
		secondary_board = Board(width, height)

	primary_graphic_board = GraphicBoard(primary_board, secondary_board, primary_canvas)
	secondary_graphic_board = GraphicBoard(secondary_board, primary_board, secondary_canvas)

	primary_graphic_board.draw_tiles(size=size,
	                                 sister_g_board=secondary_graphic_board,
	                                 margin=margin,
	                                 goal_board=secondary_board)
	secondary_graphic_board.draw_tiles(size=size,
	                                   sister_g_board=primary_graphic_board,
	                                   margin=margin,
	                                   goal_board=primary_board)

	draw_buttons(control_canvas, primary_canvas, secondary_canvas, primary_board, secondary_board,
	             primary_graphic_board, secondary_graphic_board)
Пример #2
0
    def test_create_grid_height(self):
        tested_board = Board()
        default_height = tested_board.get_height()

        board_4 = Board(100, 4)
        height_4 = board_4.get_height()

        self.assertEqual(default_height, 10)
        self.assertEqual(height_4, 4, 10)
Пример #3
0
    def test_grid_width(self):
        default_board = Board()
        default_width = default_board.get_width()

        board_100 = Board(100, 4)
        width_100 = board_100.get_width()

        self.assertEqual(default_width, 10)
        self.assertEqual(width_100, 100)
Пример #4
0
    def __init__(self):
        """
        Initializes the controller with the appropriate boards for each player.

        """

        self._P1_Battle_Plan_Board = Board(Board.P1)
        self._P1_Battle_Field_Board = Board(Board.P1)

        self._P2_Battle_Plan_Board = Board(Board.P2)
        self._P2_Battle_Field_Board = Board(Board.P2)

        self._whos_turn = Board.P1  # Player One starts
Пример #5
0
def create_board(P1, P2, P3, *args):
    board = Board()
    P1 = board.get_player(P1)
    P2 = board.get_player(P2)
    P3 = board.get_player(P3)
    A = board.add_node('A', player=P1, power=2)
    L = board.add_node('L', player=P2, power=2)
    P = board.add_node('P', player=P3, power=2)
    B, C, D, E, F, G, H, I, J, K, M, N, O = board.get_empty_nodes(['B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K',
                                                                   'M', 'N', 'O'])
    board.add_paths([(A, B),
                     (A, C),
                     (A, D),
                     (B, E),
                     (C, F),
                     (D, G),
                     (E, H),
                     (F, I),
                     (F, J),
                     (G, K),
                     (H, L),
                     (I, L),
                     (J, P),
                     (K, P),
                     (L, M),
                     (M, N),
                     (N, O),
                     (O, P)
                     ])
    return board
  def parse(self, content):
    ''' Parse the puzzle file's content into models '''
    cars = {}

    for each_line in content:
      description = each_line.split()
      # print(description)
      index = int(description[0])
      y_top_left = int(description[1])
      x_top_left = int(description[2])
      length = int(description[3])
      orientation = int(description[4])
      car = Car(index, y_top_left, x_top_left, length, orientation)
      if orientation == Orientation.HORIZONTAL:
        car.set_end_location(y_top_left, x_top_left+length-1)
      else:
        car.set_end_location(y_top_left+length-1, x_top_left)
      cars[index] = car

    self.puzzle_board = Board()
    # It will print "Car x: top-left at (x,x) and has length x, orientation x."
    # print(cars[0])
    for key, car in cars.items():
      occupied_locations = car.get_occupied_locations()
      self.puzzle_board.add_car(car, occupied_locations)
Пример #7
0
 def __init__(self, win):
     self.win = win
     self.board = Board()
     self.selected_piece = None
     self.turn = BLACK
     self.valid_moves = {}
     self._init_game()
Пример #8
0
def main():
    print("hello world!")
    board = Board()
    board.begin(Color.RED)
    print(board)
    for x in board.get_playable_position():
        print(x)
Пример #9
0
    def render_POST(self, request):
        name = request.get_argument("name")
        repr = request.get_argument("repr")
        repr_order = request.get_argument_int("repr_order", None)
        classification = request.get_argument("classification") or None
        description = request.get_argument("description") or None
        write_group_uid = request.get_argument_int("write_group_uid")
        write_group = request.dbsession\
                             .query(Group)\
                             .filter(Group.uid == write_group_uid)\
                             .one()
        comment_group_uid = request.get_argument_int("comment_group_uid")
        comment_group = request.dbsession\
                               .query(Group)\
                               .filter(Group.uid == comment_group_uid)\
                               .one()
        enabled = request.get_argument("enabled") == "True"

        board = Board(name, repr, write_group, comment_group)
        board.repr_order = repr_order
        board.classification = classification
        board.description = description
        board.enabled = enabled
        request.dbsession.add(board)

        request.dbsession.commit()
        request.redirect("/admin/board")
        return "redirected"
Пример #10
0
    def __init__(self, playerOne=None, playerTwo=None):
        """Inits an instance of the Game class.

        PlayerOne is always the human side of the game.

        Args:
            playerOne (Optional[model.player.Player]):
                The human player (default is None).
            playerTwo (Optional[model.player.Player]):
                The AI player (default is None).

        """

        self.playerOne = playerOne
        self.playerTwo = playerTwo
        self.listeners = list()

        self.aiPlayer = self.playerOne if self.playerOne.isAi \
            else self.playerTwo

        self._board = Board()
        self._uuid = None
        self._moves = list()
        self.status = Status.InProgress
        self.nextPlayer = self.playerOne

        dispatcher.connect(self._onAiMoveResponse, signal=Events.aiResponse)
Пример #11
0
def game_of_life_loop(board):
    while True:
        to_update = []
        new_board = Board(cols, rows)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_RETURN:
                    board.reset()
                    draw_grid(board)
                    draw_start_pattern(board)
                    return

        for x in range(cols):
            for y in range(rows):

                cell = board.get_cell(x, y)
                state = next_state(cell, board)
                if state:
                    new_board.get_cell(x, y).alive = True
                    to_update.append(new_board.get_cell(x, y))
                elif not state:
                    new_board.get_cell(x, y).alive = False
                    to_update.append(new_board.get_cell(x, y))

        board = new_board

        for s in to_update:
            update_cell(s)

        pygame.display.flip()
        # Higher number, higher speed
        clock.tick(12)
Пример #12
0
    def _solve_puzzle(self):

        self._label["text"] = "Working"
        self._window.update()

        try:

            board = Board()

            for row in range(Board.BOARD_SIZE):
                for col in range(Board.BOARD_SIZE):
                    str_val = self._inputs[row][col].get()
                    if str_val == "":
                        int_val = 0
                    else:
                        int_val = int(str_val)
                    board.set_cell_value(row, col, int_val)

            result = Solver().solve(board)

            if not result.success:
                self._label["text"] = "Failed"
                return

            self._label["text"] = "Success"
            self._paint_board(result.solution)

        except:
            self._label["text"] = "Error"
Пример #13
0
 async def _runHanabot(self):
     """
     Initializes the hanabot AI and keeps it running.
     """
     await asyncio.sleep(0.5)
     self._hanabot = Hanabot(Board(self._sensoryBuffer.cvState['hand']))
     await self._hanabot.react(self._sensoryBuffer, self._outputBuffer)
Пример #14
0
 def __restart_game(self):
     self.round_counter += 1
     self.turn_counter = 0
     self.board = Board()
     self.checker = ResultChecker(self.board)
     self.player_1_ctrl.set_board(self.board)
     self.player_2_ctrl.set_board(self.board)
     self.__generate_order_of_players()
     self.__create_game()
Пример #15
0
    def compute(self):
        """
        Boucle principal de ce client. Cette boucle va générer des parties IA contre IA à l'infini. Entre chaque partie, il va envoyer l'exemple au serveur.
        C 'est le client qui décide quel doit être le coef d'apprentissage à utiliser pour chaque exemple. Un  exemple représente un tour.
        """
        if not self.is_connected:
            raise NotConnectedError()

        try:
            while True:
                # Initialisation :
                board = Board()
                history_board = list()
                history_choice = list()
                history_actions = list()
                current_player = list()
                i = 0
                while board.winner() == 0:
                    i += 1
                    # On joue selon l'IA
                    self.tree = Tree(board, self.ia, {
                        0: 1,
                        1: -1
                    }[board.current_player])
                    for _ in range(100):
                        self.tree.compute()
                    act = self.tree.get_best()
                    history_board.append(board.get_board_raw())
                    actions = board.getActions()
                    history_choice.append(actions.index(act))
                    history_actions.append(
                        board.get_actions_board_raw(actions))
                    current_player.append({0: 1, 1: -1}[board.current_player])
                    act.do(board=board)

                print("Finish")
                # Last action
                # On envoie les actions 1 par 1 avec un coef d'apprentissage adapté.
                for i in range(25):
                    if current_player[-1 * (i + 1)] == board.winner():
                        self.send(PUSH_EXEMPLE_OPCODE, exp(-1 * i * 0.075),
                                  history_board[-1], history_actions[-1],
                                  history_choice[-1], board.winner())

                save_file = open(
                    "./log-client/{}-{}.data".format(
                        datetime.now().strftime("%m-%d_%H:%M:%S"), self.id),
                    "wb")
                save_file.write(
                    dumps((history_board, history_choice, history_actions,
                           board.winner())))
                save_file.close()
                kernels = self.execute(GET_KERNEL_OPCODE)
                self.ia.load_kernel(kernels)

        except KeyboardInterrupt:
            pass
Пример #16
0
 def new_game(self):
     self.dialog_new_game.exec()
     if not self.ui.is_player2_human:
         self.ai_player = AIPlayer('red', self.ui.difficulty)
     else:
         self.ai_player = None
     self.board = Board()
     self.over = False
     self.active_player = 1
Пример #17
0
def single_ai_mode():
    # set up local player data
    addPlayerData(player_name)

    screen_size = [700, 700]
    pygame.init()
    fpsClock = pygame.time.Clock()
    # create pyGame screen
    playSurface = pygame.display.set_mode((screen_size[0], screen_size[1]))
    my_board = Board(50, 50)
    my_snake = Snake(50, 50)

    # set up food and snake
    food_loc = [my_board.food]
    draw_surface(playSurface, redColour, [my_board.food], 10,
                 100)  # draw first food
    pygame.display.set_caption('Food Snake')
    total_score = 0
    score = 0
    level = 1
    isEnd = False

    while True:
        # give AI input, and let AI control snake
        dir = AI1(my_board, my_snake)
        my_snake.turn(dir)

        # catch event and control snake
        eventHelper(my_snake, False)

        # increase along the moving direction
        draw_surface(playSurface, blackColour, my_snake.get_cells(), 10, 100)
        status = my_snake.tick(my_board.food, [])
        my_snake.teleport_wall()
        my_new_cells = my_snake.get_cells()

        if my_snake.is_dead([]) or isEnd:
            break

        # When snake eats the food
        if status == 1:
            score += my_board.foodWeight
            total_score += 1
            my_board.new_food(my_new_cells, my_snake.obstacles, [])
            food_loc = [my_board.food]

            if score - level > level / 2:
                level += 1
            if level % 2 == 0:
                my_snake.add_obstcles(level)
            if level % 3 == 0:
                my_snake.speed += 1

        displayHelper(playSurface, fpsClock, level, food_loc, my_snake,
                      total_score, player_name)

    game_end(total_score)
Пример #18
0
class TestState(unittest.TestCase):
    rows = 2
    cols = 2
    board1 = Board([Node(0), Node(1), Node(2), Node(3)], rows, cols)
    board2 = Board([Node(1), Node(0), Node(2), Node(3)], rows, cols)
    board3 = Board([Node(1), Node(3), Node(0), Node(2)], rows, cols)
    state1 = State(board1)
    state2 = State(board2)
    state3 = State(board3)

    def test_board_only(self):
        # given
        start_state = self.state2

        # when
        solved_state = DFS().solve(start_state, h0)

        # then
        self.assertListEqual(self.board1.content,
                             solved_state.current_board.content)

    def test_whole_state(self):
        # given
        start_state = self.state2
        target_state = State(self.board1, [MoveLeft()], [self.board2])

        # when
        solved_state = DFS().solve(start_state, h0)

        # then
        self.assertEqual(target_state, solved_state)

    def test_longer(self):
        start_state = self.state3

        # when
        solved_state = DFS().solve(start_state, h0)

        # then
        self.assertEqual(sorted(start_state.current_board.content),
                         solved_state.current_board.content)
Пример #19
0
def create_board(P1, P2, *args):
    board = Board()
    P1 = board.get_player(P1)
    P2 = board.get_player(P2)
    A = board.add_node('A', player=P1, power=2)
    B, C, D = board.get_empty_nodes(['B', 'C', 'D'])
    E = board.add_node('E', player=P2, power=2)
    board.add_paths([(A, B),
                     (B, C),
                     (C, D),
                     (D, E)])
    return board
Пример #20
0
 def __init__(self, player_count):
     if player_count not in [1, 3, 4]:
         raise InvalidPlayerCountException()
     self.players = []
     for i in range(0, player_count):
         player = Player(i)
         self.players.append(player)
     shuffle(self.players)
     self.board = Board()
     self.dice = Dice()
     self.screen = Tk()
     self.gui = GUI(self, self.players[0])
     self.turns = 0
Пример #21
0
    def start_game(self):
        """The game is started with the selected settings.
        The default settings are: human vs. human."""

        # Change starting screen to Chess board
        self.board = Board(square_width=self.view.square_width, 
                           square_height=self.view.square_height,
                           is_flipped=self.is_flipped)

        # Create players
        self.board.player_list.append('Human')
        
        if self.settings['vs_computer']: self.board.player_list.append('AI')
        else: self.board.player_list.append('Human') 
Пример #22
0
class TestState(unittest.TestCase):
    rows = 2
    cols = 2
    board1 = Board([Node(0), Node(1), Node(2), Node(3)], rows, cols)
    board11 = Board([Node(1), Node(0), Node(2), Node(3)], rows, cols)
    board12 = Board([Node(2), Node(1), Node(0), Node(3)], rows, cols)
    board111 = Board([Node(0), Node(1), Node(2), Node(3)], rows, cols)
    board112 = Board([Node(1), Node(3), Node(2), Node(0)], rows, cols)
    board121 = Board([Node(0), Node(1), Node(2), Node(3)], rows, cols)
    board122 = Board([Node(2), Node(1), Node(3), Node(0)], rows, cols)

    def test_single_iteration(self):
        # given
        initial_state = State(self.board1)
        expected_states = [
            State(self.board12, [MoveDown()], [self.board1]),
            State(self.board11, [MoveRight()], [self.board1]),
        ]
        # when
        states = self._iterate(initial_state)
        # then
        self.assertListEqual(states, expected_states)

    def test_two_iterations(self):
        # given
        initial_state = State(self.board1)
        expected_states = [
            State(self.board121, [MoveDown(), MoveUp()],
                  [self.board1, self.board12]),
            State(self.board122, [MoveDown(), MoveRight()],
                  [self.board1, self.board12]),
            State(self.board112, [MoveRight(), MoveDown()],
                  [self.board1, self.board11]),
            State(self.board111, [MoveRight(), MoveLeft()],
                  [self.board1, self.board11]),
        ]
        # when
        states1 = self._iterate(initial_state)
        states2 = [s for states in states1 for s in self._iterate(states)]
        # then
        self.assertListEqual(states2, expected_states)

    def _iterate(self, state: State) -> List[State]:
        states = []
        for s in state.next_states():
            states.append(s)
        return states
Пример #23
0
def generate_puzzle():

    start = time.time()

    initial_actions = None

    max_val = 16

    while initial_actions is None:
        print('k')
        initial_actions = model.solver.generate(max_val)

    board = Board(max_val)
    board = board.apply_actions(initial_actions)

    board_str = str(board)
    print(board_str)
    print(time.time() - start)
    SudokuApp(board_str).run()
Пример #24
0
    def post(self):
        name = self.request.get('name')
        desc = self.request.get('desc')

        if name == '':
            self.error(400)
        else:
            creator = getSecureUser(self.request)

            if (creator is not None):
                existingBoard = Board.query(Board.name == name).fetch()

                if len(existingBoard) is 0:
                    admins = [creator]
                    newBoard = Board(name=name, desc=desc, admins=admins)
                    newBoard.put()
                else:
                    self.error(409)
            else:
                self.error(401)
def main():
    board = Board()
    player_1 = AlphaBeta(Color.RED)
    player_2 = AlphaBeta(Color.BLUE)
    print(
        "hellow world. \n Wecome to the cubo4 game.\n It's a two player game, it's begin now. Blue begin"
    )
    current_player = player_2
    board.begin(player_1.color)
    while True:
        position = current_player.play(board)
        print("player " + str(current_player.color) + " play " + str(position))
        board.play(current_player.color, position)
        win = board.win(current_player.color, position)
        if win:
            print("player" + str(current_player) + "win")
            print(board)
            return
        if current_player == player_1:
            current_player = player_2
        else:
            current_player = player_1
Пример #26
0
def duo_ai_mode():
    global player1_name, player2_name, avatar1_image, avatar2_image
    init_name()
    final_score1 = 0
    player1_name = player_name
    avatar1_image = avatar_image
    addPlayerData(player_name)

    init_name()
    final_score2 = 0
    player2_name = player_name
    avatar2_image = avatar_image
    addPlayerData(player2_name)

    screen_size = [700, 700]
    pygame.init()
    fpsClock = pygame.time.Clock()
    # create pyGame screen
    level = 1
    playSurface = pygame.display.set_mode((screen_size[0], screen_size[1]))
    my_board = Board(50, 50)
    my_snake = Snake(50, 50)
    op_snake = Snake(50, 50)
    op_snake.obstacles = my_snake.obstacles

    # set up food and snake
    food_loc = [my_board.food]
    draw_surface(playSurface, redColour, [my_board.food], 10,
                 100)  # draw first food
    pygame.display.set_caption('Food Snake')
    total_score = 0
    score = 0
    isEnd = False

    # check input and go as the direction
    while True:
        # give AI input, and let AI control snake
        dir = AI1(my_board, my_snake)
        my_snake.turn(dir)

        # op is pure AI
        dir = AI12(my_board, op_snake)
        op_snake.turn(dir)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                quitHelper()

            elif event.type == pygame.KEYDOWN:
                # determine the event of keyBoard
                if event.key == pygame.K_RIGHT or event.key == ord('d'):
                    my_snake.turn(RIGHT)
                if event.key == pygame.K_LEFT or event.key == ord('a'):
                    my_snake.turn(LEFT)
                if event.key == pygame.K_UP or event.key == ord('w'):
                    my_snake.turn(UP)
                if event.key == pygame.K_DOWN or event.key == ord('s'):
                    my_snake.turn(DOWN)
                if event.key == ord('q'):
                    isEnd = True
                if event.key == pygame.K_ESCAPE:
                    pygame.event.post(pygame.event.Event(pygame.QUIT))

        # increase along the moving direction
        draw_surface(playSurface, blackColour, my_snake.get_cells(), 10, 100)
        status1 = my_snake.tick(my_board.food, [])
        my_snake.teleport_wall()

        # increase along the moving direction
        draw_surface(playSurface, blackColour, op_snake.get_cells(), 10, 100)
        status2 = op_snake.tick(my_board.food, [])
        op_snake.teleport_wall()

        my_new_cells = my_snake.get_cells()
        op_new_cells = op_snake.get_cells()

        if my_snake.is_dead(op_new_cells) or op_snake.is_dead(
                my_new_cells) or isEnd:
            break

        # When my snake eats the food
        if status1 == 1 or status2 == 1:
            score += my_board.foodWeight
            if status1 == 1:
                final_score1 += 1
            else:
                final_score2 += 1
            my_board.new_food(my_new_cells, my_snake.obstacles, op_new_cells)
            food_loc = [my_board.food]
            if score - level > level / 2:
                level += 1
            if level % 2 == 0:
                my_snake.add_obstcles(level)
            if level % 3 == 0:
                my_snake.speed += 1

        playSurface.fill(blackColour)
        pygame.draw.polygon(playSurface, greenColour,
                            [[99, 99], [99, 601], [601, 601], [601, 99]], 1)
        show_message(playSurface, 'Score: ' + str(total_score), whiteColour,
                     40, 10, 10)
        show_message(playSurface, 'Level: ' + str(level), whiteColour, 40, 10,
                     50)

        screen.blit(avatar1_image, (20, 615))
        show_message(playSurface, player1_name, whiteColour, 40, 100, 630)
        screen.blit(avatar2_image, (20, 650))
        show_message(playSurface, player2_name, whiteColour, 40, 100, 665)

        draw_surface(playSurface, redColour, food_loc, 10, 100)
        draw_surface(playSurface, greenColour, my_snake.obstacles, 10, 100)

        draw_surface(playSurface, whiteColour, my_new_cells, 10, 100)
        draw_surface(playSurface, greyColour, op_new_cells, 10, 100)
        pygame.display.flip()
        # speed is changeable
        fpsClock.tick(my_snake.speed)
    game_end(final_score1, final_score2)
Пример #27
0
def single_ai_mode():
    # set up local player data
    addPlayerData(player_name)

    screen_size = [700, 700]
    pygame.init()
    fpsClock = pygame.time.Clock()
    # create pyGame screen
    playSurface = pygame.display.set_mode((screen_size[0], screen_size[1]))
    my_board = Board(50, 50)
    my_snake = Snake(50, 50)

    # set up food and snake
    food_loc = [my_board.food]
    draw_surface(playSurface, redColour, [my_board.food], 10,
                 100)  # draw first food
    pygame.display.set_caption('Food Snake')
    total_score = 0
    score = 0
    isEnd = False

    while True:
        # give AI input, and let AI control snake
        dir = AI1(my_board, my_snake)
        my_snake.turn(dir)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                quitHelper()
            elif event.type == pygame.KEYDOWN:
                if event.key == ord('q'):
                    isEnd = True
                if event.key == pygame.K_ESCAPE:
                    pygame.event.post(pygame.event.Event(pygame.QUIT))
        # increase along the moving direction
        draw_surface(playSurface, blackColour, my_snake.get_cells(), 10, 100)
        status = my_snake.tick(my_board.food, [])
        my_snake.teleport_wall()
        my_new_cells = my_snake.get_cells()

        if my_snake.is_dead([]) or isEnd:
            break

        # When snake eats the food
        if status == 1:
            score += my_board.foodWeight
            total_score += 1
            my_board.new_food(my_new_cells, my_snake.obstacles, [])
            food_loc = [my_board.food]

        playSurface.fill(blackColour)
        pygame.draw.polygon(playSurface, greenColour,
                            [[99, 99], [99, 601], [601, 601], [601, 99]], 1)
        show_message(playSurface, 'Score: ' + str(total_score), whiteColour,
                     40, 10, 10)
        screen.blit(avatar_image, (20, 615))
        show_message(playSurface, player_name, whiteColour, 40, 100, 630)
        draw_surface(playSurface, redColour, food_loc, 10, 100)
        draw_surface(playSurface, greenColour, my_snake.obstacles, 10, 100)
        draw_surface(playSurface, whiteColour, my_new_cells, 10, 100)
        pygame.display.flip()
        # speed is changeable
        fpsClock.tick(my_snake.speed)
    game_end(total_score)
Пример #28
0
def standard_mode():
    # set up local player data
    addPlayerData(player_name)

    screen_size = [700, 700]
    pygame.init()
    fpsClock = pygame.time.Clock()
    playSurface = pygame.display.set_mode((screen_size[0], screen_size[1]))
    my_board = Board(50, 50)
    my_snake = Snake(50, 50)

    # set up food and snake
    food_loc = [my_board.food]
    worm_loc = []
    draw_surface(playSurface, redColour, [my_board.food], 10,
                 100)  # draw first food
    pygame.display.set_caption('Food Snake')
    total_score = 0
    level = 1
    score = 0
    isEnd = False
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                quitHelper()
            elif event.type == pygame.KEYDOWN:
                # determine the event of keyBoard
                if event.key == pygame.K_RIGHT or event.key == ord('d'):
                    my_snake.turn(RIGHT)
                if event.key == pygame.K_LEFT or event.key == ord('a'):
                    my_snake.turn(LEFT)
                if event.key == pygame.K_UP or event.key == ord('w'):
                    my_snake.turn(UP)
                if event.key == pygame.K_DOWN or event.key == ord('s'):
                    my_snake.turn(DOWN)
                if event.key == ord('q'):
                    isEnd = True
                if event.key == pygame.K_ESCAPE:
                    pygame.event.post(pygame.event.Event(pygame.QUIT))
        # increase along the moving direction
        draw_surface(playSurface, blackColour, my_snake.get_cells(), 10, 100)
        status = my_snake.tick(my_board.food, my_board.wormhole)

        #if all snake body disappeared, go to next level!
        if my_snake.get_cells() == []:
            my_snake.cells = [[1, 1], [1, 2],
                              [1, 3]]  # reassign snake's position!
            level += 1
            score = 0
            if level == 2:
                for i in range(20, 30, 1):
                    my_snake.obstacles.append([i, 25])
            elif level == 3:
                for i in range(20, 30, 1):
                    my_snake.obstacles.append([i, 15])
                    my_snake.obstacles.append([i, 35])
            worm_loc = []
            my_board.new_food(my_new_cells, my_snake.obstacles, [])
            food_loc = [my_board.food]

        my_snake.teleport_wall()
        my_new_cells = my_snake.get_cells()
        if my_snake.is_dead([]) or isEnd:
            break
        if status == 1:
            score += my_board.foodWeight
            total_score += 1
            if score > 1:
                my_board.new_wormhole(my_new_cells, my_snake.obstacles, [])
                worm_loc = [my_board.wormhole]
                food_loc = []
            else:
                my_board.new_food(my_new_cells, my_snake.obstacles, [])
                food_loc = [my_board.food]

        playSurface.fill(blackColour)
        pygame.draw.polygon(playSurface, greenColour,
                            [[99, 99], [99, 601], [601, 601], [601, 99]], 1)
        show_message(playSurface, 'Score: ' + str(total_score), whiteColour,
                     40, 10, 10)
        show_message(playSurface, 'Level: ' + str(level), whiteColour, 40, 10,
                     50)
        screen.blit(avatar_image, (20, 615))
        show_message(playSurface, player_name, whiteColour, 40, 100, 630)
        draw_surface(playSurface, redColour, food_loc, 10, 100)
        draw_surface(playSurface, yellowColour, worm_loc, 10, 100)
        draw_surface(playSurface, greenColour, my_snake.obstacles, 10, 100)
        draw_surface(playSurface, whiteColour, my_new_cells, 10, 100)
        pygame.display.flip()
        # speed is changeable
        fpsClock.tick(my_snake.speed)
    game_end(total_score)
Пример #29
0
 def __init__(self):
     self.snake = Snake(self.len, self.len)
     self.board = Board(self.len, self.len)
Пример #30
0
        pygame.display.flip()
        # Higher number, higher speed
        clock.tick(12)


NEIGHBOURS = [[-1, -1], [-1, 0], [-1, 1], [0, -1], [0, 1], [1, -1], [1, 0],
              [1, 1]]

rowsz, colsz = 10, 10

cols, rows = 60, 60

size = w, h = rows * rowsz, cols * colsz

board = Board(cols, rows)

WHITE = (190, 190, 140)
ALIVE = (255, 0, 0)
DEAD = (180, 160, 100)

pygame.init()
screen = pygame.display.set_mode(size)
clock = pygame.time.Clock()

# Glider
# board.get_cell(20,10).alive = True
# board.get_cell(20,12).alive = True
# board.get_cell(21,11).alive = True
# board.get_cell(21,12).alive = True
# board.get_cell(22,11).alive = True