From 664a4159528b33ea3edadbf164eb8a8332dca1a4 Mon Sep 17 00:00:00 2001 From: Harpreet Singh Saluja Date: Mon, 18 Oct 2021 20:36:52 +0530 Subject: [PATCH] Add implementation for 2048 game --- Twenty Forty-Eight/README.md | 37 ++++++ Twenty Forty-Eight/_2048.py | 221 +++++++++++++++++++++++++++++++++ Twenty Forty-Eight/output1.png | Bin 0 -> 17875 bytes Twenty Forty-Eight/output2.png | Bin 0 -> 27405 bytes Twenty Forty-Eight/output3.png | Bin 0 -> 9071 bytes 5 files changed, 258 insertions(+) create mode 100644 Twenty Forty-Eight/README.md create mode 100644 Twenty Forty-Eight/_2048.py create mode 100644 Twenty Forty-Eight/output1.png create mode 100644 Twenty Forty-Eight/output2.png create mode 100644 Twenty Forty-Eight/output3.png diff --git a/Twenty Forty-Eight/README.md b/Twenty Forty-Eight/README.md new file mode 100644 index 0000000..d5d4489 --- /dev/null +++ b/Twenty Forty-Eight/README.md @@ -0,0 +1,37 @@ + +# About + +2048 is a single-player sliding tile puzzle video game written by Italian web developer Gabriele Cirulli and published on GitHub. The game has simple and straightforward mechanics and dynamics, that are easy to understand and get around. The objective is to slide numbered tiles on a grid to combine them to create a tile with the number 2048. + +## Libraries Used + +* random +* sys + +## Run Locally + +Clone the project + +```bash + git clone https://github.com/rootanand/PythonGames.git +``` + +## Change directory + +```bash +cd PythonGames\Twenty Forty-Eight +``` + +Run the `_2048.py` file. + +```python +python _2048.py +``` + +![Sample Output](output1.png) + +Press Enter to launch the game. Use `WASD` keys to slide the board or `Q` to quit. + +![Sample Output](output2.png) + +![Sample Output](output3.png) diff --git a/Twenty Forty-Eight/_2048.py b/Twenty Forty-Eight/_2048.py new file mode 100644 index 0000000..abde3b5 --- /dev/null +++ b/Twenty Forty-Eight/_2048.py @@ -0,0 +1,221 @@ +""" +A sliding tile game to combine exponentially-increasing numbers. +""" +import random +import sys +# Set up the constants: +BLANK = '' # A value that represents a blank space on the board. + + +def main(): + print('''Slide all the tiles on the board in one of four directions. Tiles with +like numbers will combine into larger-numbered tiles. A new 2 tile is +added to the board on each move. You win if you can create a 2048 tile. +You lose if the board fills up the tiles before then.''') + input('Press Enter to begin...') + + game_board = get_new_board() + while True: # Main game loop. + drawBoard(game_board) + print('Score:', getScore(game_board)) + player_move = askForPlayer_move() + game_board = makeMove(game_board, player_move) + addTwoToBoard(game_board) + if isFull(game_board): + drawBoard(game_board) + print('Game Over - Thanks for playing!') + sys.exit() + + +def get_new_board(): + """Returns a new data structure that represents a board. + It's a dictionary with keys of (x, y) tuples and values of the tile + at that space. The tile is either a power-of-two integer or BLANK. + The coordinates are laid out as: + X0 1 2 3 + Y+-+-+-+-+ + 0| | | | | + +-+-+-+-+ + 1| | | | | + +-+-+-+-+ + 2| | | | | + +-+-+-+-+ + 3| | | | | + +-+-+-+-+""" + new_board = {} # Contains the board data structure to be returned. + # Loop over every possible space and set all the tiles to blank: + for x in range(4): + for y in range(4): + new_board[(x, y)] = BLANK + # Pick two random spaces for the two starting 2s: + startingTwosPlaced = 0 # The number of starting spaces picked. + while startingTwosPlaced < 2: # Repeat for duplicate spaces. + randomSpace = (random.randint(0, 3), random.randint(0, 3)) + # Make sure the randomly selected space isn't already taken: + if new_board[randomSpace] == BLANK: + new_board[randomSpace] = 2 + startingTwosPlaced = startingTwosPlaced + 1 + return new_board + + +def drawBoard(board): + """Draws the board data structure on the screen.""" + # Go through each possible space left to right, top to bottom, and + # create a list of what each space's label should be. + labels = [] # A list of strings for the number/blank for that tile. + for y in range(4): + for x in range(4): + tile = board[(x, y)] # Get the tile at this space. + # Make sure the label is 5 spaces long: + labelForThisTile = str(tile).center(5) + labels.append(labelForThisTile) + # The {} are replaced with the label for that tile: + print(""" ++-----+-----+-----+-----+ +| | | | | +|{}|{}|{}|{}| +| | | | | ++-----+-----+-----+-----+ +| | | | | +|{}|{}|{}|{}| +| | | | | ++-----+-----+-----+-----+ +| | | | | +|{}|{}|{}|{}| +| | | | | ++-----+-----+-----+-----+ +| | | | | +|{}|{}|{}|{}| +| | | | | ++-----+-----+-----+-----+ +""".format(*labels)) + + +def getScore(board): + """Returns the sum of all the tiles on the board data structure.""" + score = 0 + # Loop over every space and add the tile to the score: + for x in range(4): + for y in range(4): + # Only add non-blank tiles to the score: + if board[(x, y)] != BLANK: + score = score + board[(x, y)] + return score + + +def combineTilesInColumn(column): + """The column is a list of four tile. Index 0 is the "bottom" of + the column, and tiles are pulled "down" and combine if they are the + same. For example, combineTilesInColumn([2, BLANK, 2, BLANK]) + returns [4, BLANK, BLANK, BLANK].""" + # Copy only the numbers (not blanks) from column to combinedTiles + combinedTiles = [] # A list of the non-blank tiles in column. + for i in range(4): + if column[i] != BLANK: + combinedTiles.append(column[i]) + # Keep adding blanks until there are 4 tiles: + while len(combinedTiles) < 4: + combinedTiles.append(BLANK) + # Combine numbers if the one "above" it is the same, and double it. + for i in range(3): # Skip index 3: it's the topmost space. + if combinedTiles[i] == combinedTiles[i + 1]: + combinedTiles[i] *= 2 # Double the number in the tile. + # Move the tiles above it down one space: + for aboveIndex in range(i + 1, 3): + combinedTiles[aboveIndex] = combinedTiles[aboveIndex + 1] + combinedTiles[3] = BLANK # Topmost space is always BLANK. + return combinedTiles + + +def makeMove(board, move): + """Carries out the move on the board. + The move argument is either 'W', 'A', 'S', or 'D' and the function + returns the resulting board data structure.""" + # The board is split up into four columns, which are different + # depending on the direction of the move: + if move == 'W': + allColumnsSpaces = [[(0, 0), (0, 1), (0, 2), (0, 3)], + [(1, 0), (1, 1), (1, 2), (1, 3)], + [(2, 0), (2, 1), (2, 2), (2, 3)], + [(3, 0), (3, 1), (3, 2), (3, 3)]] + elif move == 'A': + allColumnsSpaces = [[(0, 0), (1, 0), (2, 0), (3, 0)], + [(0, 1), (1, 1), (2, 1), (3, 1)], + [(0, 2), (1, 2), (2, 2), (3, 2)], + [(0, 3), (1, 3), (2, 3), (3, 3)]] + elif move == 'S': + allColumnsSpaces = [[(0, 3), (0, 2), (0, 1), (0, 0)], + [(1, 3), (1, 2), (1, 1), (1, 0)], + [(2, 3), (2, 2), (2, 1), (2, 0)], + [(3, 3), (3, 2), (3, 1), (3, 0)]] + elif move == 'D': + allColumnsSpaces = [[(3, 0), (2, 0), (1, 0), (0, 0)], + [(3, 1), (2, 1), (1, 1), (0, 1)], + [(3, 2), (2, 2), (1, 2), (0, 2)], + [(3, 3), (2, 3), (1, 3), (0, 3)]] + # The board data structure after making the move: + boardAfterMove = {} + for columnSpaces in allColumnsSpaces: # Loop over all 4 columns. + # Get the tiles of this column (The first tile is the "bottom" + # of the column): + firstTileSpace = columnSpaces[0] + secondTileSpace = columnSpaces[1] + thirdTileSpace = columnSpaces[2] + fourthTileSpace = columnSpaces[3] + firstTile = board[firstTileSpace] + secondTile = board[secondTileSpace] + thirdTile = board[thirdTileSpace] + fourthTile = board[fourthTileSpace] + # Form the column and combine the tiles in it: + column = [firstTile, secondTile, thirdTile, fourthTile] + combinedTilesColumn = combineTilesInColumn(column) + # Set up the new board data structure with the combined tiles: + boardAfterMove[firstTileSpace] = combinedTilesColumn[0] + boardAfterMove[secondTileSpace] = combinedTilesColumn[1] + boardAfterMove[thirdTileSpace] = combinedTilesColumn[2] + boardAfterMove[fourthTileSpace] = combinedTilesColumn[3] + return boardAfterMove + + +def askForPlayer_move(): + """Asks the player for the direction of their next move (or quit). + Ensures they enter a valid move: either 'W', 'A', 'S' or 'D'.""" + print('Enter move: (WASD or Q to quit)') + while True: # Keep looping until they enter a valid move. + move = input('> ').upper() + if move == 'Q': + # End the program: + print('Thanks for playing!') + sys.exit() + # Either return the valid move, or loop back and ask again: + if move in ('W', 'A', 'S', 'D'): + return move + else: + print('Enter one of "W", "A", "S", "D", or "Q".') + + +def addTwoToBoard(board): + """Adds a new 2 tile randomly to the board.""" + while True: + randomSpace = (random.randint(0, 3), random.randint(0, 3)) + if board[randomSpace] == BLANK: + board[randomSpace] = 2 + return # Return after finding one non-blank tile. + + +def isFull(board): + """Returns True if the board data structure has no blanks.""" + # Loop over every space on the board: + for x in range(4): + for y in range(4): + # If a space is blank, return False: + if board[(x, y)] == BLANK: + return False + return True # No space is blank, so return True. + + +if __name__ == '__main__': + try: + main() + except KeyboardInterrupt: + sys.exit() # When Ctrl-C is pressed, end the program. diff --git a/Twenty Forty-Eight/output1.png b/Twenty Forty-Eight/output1.png new file mode 100644 index 0000000000000000000000000000000000000000..92a5660a812ab18d63e465bb4e4a6a2956f3e168 GIT binary patch literal 17875 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 X#_zWc#NI8g1ZnVe^>bP0l+XkK0$V(2 literal 0 HcmV?d00001 diff --git a/Twenty Forty-Eight/output2.png b/Twenty Forty-Eight/output2.png new file mode 100644 index 0000000000000000000000000000000000000000..3941529a4d114c05062414ad43e949face7918aa GIT binary patch literal 27405 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 R9bve1PU@X_b=>mye*qx?AIbm# literal 0 HcmV?d00001 diff --git a/Twenty Forty-Eight/output3.png b/Twenty Forty-Eight/output3.png new file mode 100644 index 0000000000000000000000000000000000000000..4d40d7b14ec4a1748f3000228d210d68baa6701c GIT binary patch literal 9071 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 literal 0 HcmV?d00001