# Connect 4 Worksheet ## What is Connect 4? Connect 4 is a two-player board game where each player takes turns dropping colored discs into a grid. The objective is to form a horizontal, vertical, or diagonal line of four discs of the same color before the opponent does. ## What are the rules of Connect 4? - The game is played on a 7x6 grid of empty cells. - The players have a set of 21 discs each, one red and one yellow. - The players take turns choosing a column and dropping a disc of their color from the top into the lowest available cell in that column. - The game ends when either one player forms a line of four discs of their color (horizontally, vertically, or diagonally), or the grid is full and no more moves are possible. ## How can we define the problem for writing a python program for Connect 4? To write a python program for Connect 4, we need to: - Define the data structures and variables that will represent the game state, such as the grid, the discs, and the current player. - Define the functions that will implement the game logic, such as checking for valid moves, dropping discs, switching players, and checking for win conditions. - Define the user interface that will display the game state and allow the user to interact with the program, such as printing the grid, asking for input, and showing messages. ## What are some examples of data structures and variables for Connect 4? One possible way to represent the game state is: - A list of lists called `grid` that will store the values of each cell in the grid. Each sublist will represent a column and each element will represent a row. The values can be `0` for empty cells, `1` for red discs, and `2` for yellow discs. For example: ``` grid = [ [0, 0, 0, 0, 0, 0], # column 1 [0, 0, 0, 0, 0, 0], # column 2 [0, 0, 0, 0, 0, 0], # column 3 [0, 0, 0, 0, 0, 0], # column 4 [0, 0, 0, 0, 0, 0], # column 5 [0, 0, 0, 0, 0, 0], # column 6 [0, 0, 0, 0, 0, 0] # column 7 ] ``` - A variable called `player` that will store the value of the current player. The value can be `1` for red or `2` for yellow. For example: ``` player = 1 # red goes first ``` ## What are some examples of functions for Connect 4? One possible way to implement the game logic is: - A function called `is_valid_move(column)` that will take a column number as an argument and return `True` if it is a valid move (i.e., the column is not full) or `False` otherwise. For example: ``` def is_valid_move(column): # check if the column number is within range if column < 1 or column > len(grid): return False # check if the top cell of the column is empty if grid[column -1][len(grid[1]) -1] == " ": return True else: return False ``` - A function called `drop_disc(column)` that will take a column number as an argument and drop a disc of the current player's color into that column. It will also update the grid and switch the player. For example: ``` def drop_disc(column): # use the global variable player # loop through the rows of the column from bottom to top # code comes here # switch the player if player == "X": player = "O" else: player = "X" ``` - A function called `is_winner()` that will check if there is a winner