print(' *******************************************************************')
print(' * *')
print(' * 8代替↑ *')
print(' * 注: 4 代替← 5代替↓ 6代替 → *')
print(' * *')
print(' * 注: 在 input = 后输完数字 按下回车有效 *')
print(' * *')
print(' *******************************************************************')
def printlist(L):
k=0
for i in L:
print(i,end='\t')
k+= 1
if k%4 == 0:
print('\r')
print('\r')
print('\r')
L0=[0,2,0,2,2,0,0,0,0,0,0,0,2,0,0,0]
printlist(L0)
operation_times = 0 #初始
while max(L0) < 2048 and min(L0)==0:
ctrl = input('\rinput=')
if len(ctrl)==1:
if ord(ctrl)==52 or ord(ctrl)==53 or ord(ctrl)==54 or ord(ctrl)== 56:
ctrl = int(ctrl)
if ctrl==6:
L_copy =L0[:]
L_temp=[L_copy[3],L_copy[2],L_copy[1],L_copy[0],L_copy[7],L_copy[6],L_copy[5],L_copy[4],L_copy[11],L_copy[10],L_copy[9],L_copy[8],L_copy[15],L_copy[14],L_copy[13],L_copy[12]]
elif ctrl==8:
L_copy =L0[:]
L_temp=[L_copy[0],L_copy[4],L_copy[8],L_copy[12],L_copy[1],L_copy[5],L_copy[9],L_copy[13],L_copy[2],L_copy[6],L_copy[10],L_copy[14],L_copy[3],L_copy[7],L_copy[11],L_copy[15]]
elif ctrl ==5:
L_copy =L0[:]
L_temp=[L_copy[12],L_copy[8],L_copy[4],L_copy[0],L_copy[13],L_copy[9],L_copy[5],L_copy[1],L_copy[14],L_copy[10],L_copy[6],L_copy[2],L_copy[15],L_copy[11],L_copy[7],L_copy[3]]
elif ctrl==4: #4为模板
L_temp =L0[:]
else:
print('\r')
print(' 请正确操作!')
continue
for index in range(len(L_temp)):
if index % 4 != 0:
continue
else:
L_next =L_temp[index:index+4]
L_next_temp=[]
k=0
for i in L_next:
if i != 0:
L_next_temp.append(i)
k+=1
for j in range(0,4-k):
L_next_temp.append(0)
L_temp[index:index+4] =L_next_temp[0:4] #L_temp已左对齐
#接下来应该相邻相同相加,然后左对齐
for index in range(len(L_temp)):
if index % 4 != 0:
continue
else:
L_next =L_temp[index:index+4]
L_next_temp=[]
k=0
while k<=3:
if L_next[k] == 0:
break
elif k <3:
if L_next[k] == L_next[k+1]:
L_next_temp.append(2*L_next[k])
k+=2
else:
L_next_temp.append(L_next[k])
k+=1
else:
L_next_temp.append(L_next[k])
k+=1
for j in range(0,4-len(L_next_temp)):
L_next_temp.append(0)
L_temp[index:index+4] =L_next_temp[0:4]
L0 = L_temp
if ctrl==6:
L_copy =L0[:]
L_temp=[L_copy[3],L_copy[2],L_copy[1],L_copy[0],L_copy[7],L_copy[6],L_copy[5],L_copy[4],L_copy[11],L_copy[10],L_copy[9],L_copy[8],L_copy[15],L_copy[14],L_copy[13],L_copy[12]]
elif ctrl==8:
L_copy =L0[:]
L_temp=[L_copy[0],L_copy[4],L_copy[8],L_copy[12],L_copy[1],L_copy[5],L_copy[9],L_copy[13],L_copy[2],L_copy[6],L_copy[10],L_copy[14],L_copy[3],L_copy[7],L_copy[11],L_copy[15]]
elif ctrl ==5:
L_copy =L0[:]
L_temp=[L_copy[12],L_copy[8],L_copy[4],L_copy[0],L_copy[13],L_copy[9],L_copy[5],L_copy[1],L_copy[14],L_copy[10],L_copy[6],L_copy[2],L_copy[15],L_copy[11],L_copy[7],L_copy[3]]
L0 = L_temp
L0_0num = [] #开始随机生成2
for k in range(len(L0)):
if L0[k] ==0:
L0_0num.append(k)
import random
num0 = random.randint(0,len(L0_0num)-1)
position_0 = L0_0num[num0]
L0[position_0] =2 #随机2完成
operation_times += 1 #记录操作次数
printlist(L0)
else:
print('\r')
print(' 请正确操作!')
else:
print('\r')
print(' 请正确操作!')
score_opr = int(1.1**operation_times) #开始计算得分
score_num = 2*sum(L0)
score = score_opr+score_num
print(' *****************************************************************************************************************')
print(' * *** ** *** *** ******** **** ** ** ******** ***** *')
print(' * ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** *')
print(' * ** ***** ** ** ** ** ** ** ******** ** ** ** ** ******** **** *')
print(' * ** ** ****** ** ** ** ** ** ** ** ** ** ** ** ** ** *')
print(' * ****** ** ** ** *** ** ******** **** *** ******** ** ** *')
print(' * *')
print(' *****************************************************************************************************************')
print('\r')
print('\r')
print(' 你的得分:%d'%int(score))