Skip to content

Instantly share code, notes, and snippets.

@Bertik23
Created August 18, 2020 10:50
Show Gist options
  • Save Bertik23/cf0f0483e1011f8f317698cc563a941a to your computer and use it in GitHub Desktop.
Save Bertik23/cf0f0483e1011f8f317698cc563a941a to your computer and use it in GitHub Desktop.
The 2048 game
import random
import pprint
grid = []
for i in range(4): grid.append([0 for j in range(4)])
def addNumber():
x = random.randint(0, len(grid)-1)
y = random.randint(0, len(grid[x])-1)
#print(x,y)
while grid[x][y] != 0:
x = random.randint(0, len(grid)-1)
y = random.randint(0, len(grid[x])-1)
#print(x,y)
grid[x][y] = 2
def move(direction):
if direction == 0: #up
for _ in range(len(grid)):
for j in range(len(grid[_])):
for i in range(len(grid)):
try:
if grid[i][j] == 0:
grid[i][j] = grid[i+1][j]
grid[i+1][j] = 0
if grid[i][j] == grid[i+1][j]:
grid[i][j] += grid[i+1][j]
grid[i+1][j] = 0
except IndexError:
pass
if direction == 1: #left
for i in range(len(grid)):
for _ in range(len(grid[i])):
for j in range(len(grid[i])):
try:
if grid[i][j] == 0:
grid[i][j] = grid[i][j+1]
grid[i][j+1] = 0
if grid[i][j] == grid[i][j+1]:
grid[i][j] += grid[i][j+1]
grid[i][j+1] = 0
except IndexError:
pass
if direction == 3: #right
for i in range(len(grid)):
for _ in range(len(grid[i])):
for j in range(-1, -len(grid[i])-1,-1):
#print(j)
try:
if grid[i][j] == 0:
grid[i][j] = grid[i][j-1]
grid[i][j-1] = 0
if grid[i][j] == grid[i][j-1]:
grid[i][j] += grid[i][j-1]
grid[i][j-1] = 0
except IndexError:
pass
if direction == 2: #down
for _ in range(len(grid)):
for j in range(-1, -len(grid[_])-1,-1):
for i in range(len(grid)):
#print(j)
try:
if grid[i][j] == 0:
grid[i][j] = grid[i-1][j]
grid[i-1][j] = 0
if grid[i][j] == grid[i-1][j]:
grid[i][j] += grid[i-1][j]
grid[i-1][j] = 0
except IndexError:
pass
def printGrid():
for i in grid:
print(i)
print("="*(len(grid[0])*3))
def makeMove(direction=None):
if direction == None:
direction = int(input(""))
moveDirection = direction
move(moveDirection)
addNumber()
printGrid()
addNumber()
addNumber()
print("""
Welcome to 2048, the game where you move numbers around!
Type a number to move the numbers
0..........up
1........left
2........down
3.......right
============================================================
""")
printGrid()
zeroInGrid = True
while zeroInGrid:
zeroInGrid = False
for i in grid:
for j in i:
if j == 0: zeroInGrid = True
makeMove()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment