-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path2048-term.py
133 lines (115 loc) · 3.59 KB
/
2048-term.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#!/bin/env python
# Coded by @AbirHasan2005
# If you are using any codes from here than must give me credits.
# My Hard Work. So Credits are must.
# Telegram Group: http://t.me/linux_repo
# Join Telegram Group for feedback, help and chat.
# Small Python3 coded game. No need to install any extra python module.
# Don't edit anything. Read LICENSE before everything.
# If you want to edit anything than first ask in Telegram Group.
# ============================================================================
# Imports:
import os
from random import randint
from copy import deepcopy
ll=[0]*4
l=[]
for i in range(4):
l.append(ll[:])
score=0
def printl():
global l
global score
print('\033[1;95m')
print('===============[\033[1;94m2048\033[1;95m]===============')
print('=========[\033[1;96mby AbirHasan2005\033[1;95m]=========')
print('\033[1;93mScore:''{:30d}'.format(score))
print('\033[1;92m')
print('┌──────────────────────────────────┐')
for i in range(4):
print('│ │')
pts='│ '
for j in range(4):
pts+='{:^8d}'.format(l[i][j])
pts+=' │'
print(pts)
print('└──────────────────────────────────┘')
def randnum():
global l
rl=[]
for i in range(4):
for j in range(4):
if l[i][j]==0:
rl.append((i,j))
if len(rl)>0:
i,j=rl[randint(0,len(rl)-1)]
l[i][j]=randint(1,2)*2
def left():
global score
global l
for i in range(4):
for j in range(3):
for k in range(j+1,4):
if l[i][k]!=0:
if l[i][j]==0:
l[i][j],l[i][k]=l[i][k],l[i][j]
elif l[i][j]==l[i][k]:
l[i][j]*=2
l[i][k]=0
score+=l[i][j]
break
else:
break
def up():
global score
global l
for i in range(4):
for j in range(3):
for k in range(j+1,4):
if l[k][i]!=0:
if l[j][i]==0:
l[j][i],l[k][i]=l[k][i],l[j][i]
elif l[j][i]==l[k][i]:
l[j][i]*=2
l[k][i]=0
score+=l[j][i]
break
else:
break
randnum()
randnum()
while True:
printl()
s=input('\033[1;96mInput: ').upper()
os.system("clear")
lt=deepcopy(l)
if s=='E':
break
elif s=='A':
left()
elif s=='D':
for i in range(4):
l[i].reverse()
left()
for i in range(4):
l[i].reverse()
elif s=='W':
up()
elif s=='S':
for i in range(4):
for j in range(2):
l[j][i],l[3-j][i]=l[3-j][i],l[j][i]
up()
for i in range(4):
for j in range(2):
l[j][i],l[3-j][i]=l[3-j][i],l[j][i]
else:
print('\n\033[1;91mWASD to move, E to exit')
if lt!=l:
randnum()
# ============================================================================
# I know that this game is very hard to operate.
# But a new version of this game is coming soon.
# ============================================================================
# If you find any problems than please report in my Telegram Group
# My Telegram Group: http://t.me/linux_repo