DEV Community

Cover image for My first small game with Python
Mohammad Al Najar
Mohammad Al Najar

Posted on

My first small game with Python

As a part of my computer science study at Codecademy, we have to build a terminal game.

The choice was not easy at all, but I decided to take one of the suggestions they gave us in the project description which was the (connect four game ^_^).

The game looks easy to build if I used Javascript which I am more familiar with, but using python was a really challenge for me.

Game description:

  • The game is called Connect Four:

the game

  • The game is played on a grid that has six rows and seven columns.
  • It has two players, X and Y, who alternate turns.
  • Each player has a different color, Red and Green.
  • When a player drops a piece, it lands in the lowest available space in the column.
  • The next player continues until either four of the same pieces are connected vertically, horizontally, or diagonally.

  • The game ends when either player has four in a row.

  • The game also ends when the board is full and neither player has four in a row.

  • When the game ends, the game can be restarted.


  • Win vertical:

Win vertical


  • Win diagonal:

Win diagonal


  • The game has also validations:

validations


The most tricky part was checking for diagonally win, but at the end was fixed using the following function:

def check_circles_in_row_angle(player):
    letters_list = ["A", "B", "C", "D", "E", "F", "G"]
    numbers_list = [1, 2, 3, 4, 5, 6]
    global is_won
    is_won = False
    circles = player.circles
    circles.sort(key=lambda circle: circle.letter)  # sort circles by letter
    string_circles = [f"{circle.letter}{circle.number}" for circle in circles]
    if len(circles) >= 4:
        for circle in circles:
            letter = circle.letter
            number = circle.number
            global compare_one
            compare_one = True
            list_to_compare_1 = []
            list_to_compare_2 = []
            global letters_list_to_compare
            global numbers_list_to_compare
            if number < 4:
                numbers_list_to_compare = numbers_list[numbers_list.index(number) :]
            elif number >= 4:
                numbers_list_to_compare = numbers_list[::-1]
                numbers_list_to_compare = numbers_list_to_compare[
                    numbers_list_to_compare.index(number) :
                ]

            # === letter < D ======"
            if letter < "D":
                letters_list_to_compare = letters_list[letters_list.index(letter) :]

                i = 0
                while i < 4:
                    list_to_compare_1.append(
                        f"{letters_list_to_compare[i]}{numbers_list_to_compare[i]}"
                    )
                    i += 1
            # === letter > D ======
            if letter > "D":
                letters_list_to_compare = letters_list[::-1]
                letters_list_to_compare = letters_list_to_compare[
                    letters_list_to_compare.index(letter) :
                ]

                i = 0
                while i < 4:
                    list_to_compare_1.append(
                        f"{letters_list_to_compare[i]}{numbers_list_to_compare[i]}"
                    )
                    i += 1

            # === letter == D ======
            if letter == "D":

                letters_list_to_compare = letters_list[letters_list.index(letter) :]

                i = 0
                while i < 4:
                    list_to_compare_1.append(
                        f"{letters_list_to_compare[i]}{numbers_list_to_compare[i]}"
                    )
                    i += 1

                letters_list_to_compare = letters_list[::-1]
                letters_list_to_compare = letters_list_to_compare[
                    letters_list_to_compare.index(letter) :
                ]

                i = 0
                while i < 4:
                    list_to_compare_2.append(
                        f"{letters_list_to_compare[i]}{numbers_list_to_compare[i]}"
                    )
                    i += 1

            x = 0
            global all_in
            all_in = True
            while x < len(list_to_compare_1):
                if not list_to_compare_1[x] in string_circles:
                    all_in = False
                    break

                x += 1

            if all_in:
                is_won = True
                return is_won

            if len(list_to_compare_2) > 0:
                y = 0
                while y < len(list_to_compare_2):
                    if not list_to_compare_2[y] in string_circles:
                        all_in = False
                        break

                    y += 1

            if all_in:
                is_won = True
                return is_won
    return is_won
Enter fullscreen mode Exit fullscreen mode

Conclusion:

Building this small game was really helpful for me to understand a lot of concepts in programming in addition to learning a lot of python.

Source code:
GitHub

Top comments (0)