Python 2048 小游戏 ,但是人生不能儿戏,与君共勉

Python 一直被炒得热火朝天,就像这炙热的天气,也像老谭酸菜 或是那茅台愈久弥香  也像洋槐花清新淡雅


一下代码参考 文章 http://www.tuicool.com/articles/YNzqu2j  实现  ,代码还需要优化 ,不是效率 ,是功能不完善 


一点心得 就是 Python 功能强悍


# -*- encoding:utf-8 -*-
import random
import copy



def T(a):
    return a if a else ''
def display(mtr):
    print "┌" + ("-" * 5 + "┬") * 3 + "-" * 5 + "┐"
    print "│%4s │%4s │%4s │%4s │" % (T(mtr[0][0]),T(mtr[0][1]),T(mtr[0][2]),T(mtr[0][3]))
    print "├" + ("-" * 5 + "┼") * 3 + "-" * 5 + "┤"
    print "│%4s │%4s │%4s │%4s │" % (T(mtr[1][0]),T(mtr[1][1]),T(mtr[1][2]),T(mtr[1][3]))
    print "├" + ("-" * 5 + "┼") * 3 + "-" * 5 + "┤"
    print "│%4s │%4s │%4s │%4s │" % (T(mtr[2][0]),T(mtr[2][1]),T(mtr[2][2]),T(mtr[2][3]))
    print "├" + ("-" * 5 + "┼") * 3 + "-" * 5 + "┤"
    print "│%4s │%4s │%4s │%4s │" % (T(mtr[3][0]),T(mtr[3][1]),T(mtr[3][2]),T(mtr[3][3]))
    print "└" + ("-" * 5 + "┴") * 3 + "-" * 5 + "┘"



#ran_pos = random.sample(range(16), 2)  # 随机获取两个数字
#print ran_pos[0] / 4
#print ran_pos[0] % 4
#print range(16)

# python need return function
def init(): # initial of matrix
    mtr=[[0 for i in  range(4)] for j in range(4)]
    ran_pos = random.sample(range(16), 2)  # 随机获取两个数字
    print ran_pos[0]/4
    print ran_pos[0]%4
    mtr[ran_pos[0]/4][ran_pos[0]%4] = mtr[ran_pos[1]/4][ran_pos[1]%4] = 2
    return mtr
#print init()
#print 'me'
#print range(1,4)  # start to end and step is 1

#x = 3
#x *=2  # double the data
#print x

#mtr = init()
#display(mtr)
#for i in  reversed(range(5)):
#    print i

#print  range(133)

def cellDataMove(mtr,dirct):
    score  =0
    visit =[]
    if dirct == 0: #left
        for i in range(4): # 定义到行
            for j in range(1,4): #定义到列
                for k in range(j,0 ,-1): #对当前列以及上列的合并操作
                    if mtr[i][k-1] ==0:
                        mtr[i][k-1]=mtr[i][k]
                        mtr[i][k]=0
                    elif mtr[i][k-1] == mtr[i][k] and 4*i +k -1 not in visit and 4*i + k not in visit and mtr[i][k] !=0:
                        mtr[i][k-1] *=2
                        mtr[i][k] = 0
                        score +=mtr[i][k-1]
                        visit.append(4*i + k)
                        visit.append(4*i + k -1)
    elif dirct ==1: #down
        for j  in  range(4):
            for i  in  range(3,0,-1):
                for k in reversed(range(0,i)):
                    if mtr[k+1][j] == 0:
                        mtr[k+1][j] = mtr[k][j]
                        mtr[k][j] = 0
                    elif mtr[k+1][j] == mtr[k][j] and 4*(k + 1 ) + j not  in visit and 4*k + j not in visit and mtr[k][j] != 0:
                        mtr[k + 1][j] *=2
                        mtr[k ][j] = 0
                        score += mtr[k+1][j]
                        visit.append(4*(k + 1 ) + j)
                        visit.append(4*(k ) + j)
    elif dirct == 2: # to up
        for j in range (4):
            for i  in  range(1,4):
                for k  in range(i,0,-1):
                    if mtr[k-1][j] == 0 :
                        mtr[k - 1][j] =mtr[k][j]
                        mtr[k - 1][j] =0
                    elif mtr[k - 1][j] == mtr[k][j] and 4*(k - 1 ) + j not in visit and 4*k + j not  in visit  and mtr[k][j]  !=0:
                        mtr[k - 1][j] *=2
                        mtr[k ][j] = 0
                        score += mtr[k -1][j]
                        visit.append(4*k + j)
                        visit.append(4*(k- 1 ) + j  )
    elif dirct ==3 : # to right
        for i in  range(4):
            for j in  range(3,0,-1):
                for k in reversed(range(j)):
                    if mtr[i][k +1] == 0 :
                        mtr[i][k + 1] = mtr[i][k]
                        mtr[i][k] =0
                    elif mtr[i][k + 1] == mtr[i][k ] and  4* i  + k + 1 not in visit and  k*4 + k not in visit and mtr[i][k] !=0:
                        mtr[i][k + 1] *=2
                        mtr[i][k ] = 0
                        score +=mtr[i][k + 1]
                        visit.append( 4* i  + k + 1)
                        visit.append( 4* i  + k )
    return  score

def update(mtr):
    ran_pos =[]
    ran_num =[2,4]

    for  i  in range(4):
        for j in range(4):
            if mtr[i][j]==0:
                ran_pos.append(4*i+j)
    if(len(ran_pos)>0):
         k=random.choice(ran_pos)
         n=random.choice(ran_num)
         mtr[k/4][k%4]=n

def goon(mtr,score):
    if 2048 in mtr:
        print "great ! you won.."
        raw_input("please enter any key world to contine")
        exit()

    if 0 in mtr:
        return  True
    for i in range(4):
        for  j  in range(4):
            if i < 3 and mtr[i][j]==mtr[i+1][j]:
                return True
            if j < 3 and mtr[i][j] == mtr[i][j+1]:
                return True
    print "sorry game over"
    return  False

declare = "←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)"
illegal= "Illegal operation"
noefficient = "This nove has no efficient"

if __name__=='__main__':
    score = 0
    step = 0
    mtr=init()
    mtr_stk=[]
    scr_stk =[]
    tmp = copy.deepcopy(mtr)
    mtr_stk.append(mtr)
    scr_stk.append(0)
    print "this is the init 2048"
    display(mtr)
    while goon(mtr,score):

        dirct = raw_input("step :%d score:%d(%s):" % (step ,score, declare))
        dirct=dirct.lower()
        if dirct =='q':
            break
        elif dirct =='a' or dirct =='h':
            dirct = 0
        elif dirct =='s' or dirct =='j':
            dirct =1
        elif dirct=='w' or dirct =='k':
            dirct =2
        elif dirct =='d' or dirct =='l':
            dirct =3
        elif dirct=='b':
            if len(mtr_stk) ==1:
                print "can not back"
            else:
                mtr_stk.pop()
                scr_stk.pop()
                mtr=copy.deepcopy(mtr_stk[-1])
                score =scr_stk[-1]
                step =-1
            continue
        else:
            print illegal
            continue
        tmp = copy.deepcopy(mtr)
        op_scr = cellDataMove(mtr,dirct)
        #display(mtr)
        print op_scr
        if tmp !=mtr:
            score = score+ op_scr
            update(mtr)
            display(mtr)
            tmp = copy.deepcopy(mtr)
            mtr_stk.append(tmp)
            scr_stk.append(int (score))
            step = step + 1
        else:
            print noefficient




下面是执行的几个测试, 不足之处还请各位指正:


C:\Python27\python.exe C:/Users/IBM_ADMIN/PycharmProjects/OnePython/src/com/2048/2048.py
2
2
this is the init 2048
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │     │   2 │     │
├-----┼-----┼-----┼-----┤
│   2 │     │     │     │
└-----┴-----┴-----┴-----┘
step :0 score:0(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):a
0
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│   2 │     │     │     │
├-----┼-----┼-----┼-----┤
│   2 │     │     │   2 │
└-----┴-----┴-----┴-----┘
step :1 score:0(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
4
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│   4 │     │     │     │
├-----┼-----┼-----┼-----┤
│   4 │     │     │   2 │
└-----┴-----┴-----┴-----┘
step :2 score:4(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
8
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│   2 │     │     │     │
├-----┼-----┼-----┼-----┤
│   8 │     │     │   2 │
└-----┴-----┴-----┴-----┘
step :3 score:12(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
0
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │   4 │     │     │
├-----┼-----┼-----┼-----┤
│     │     │   2 │     │
├-----┼-----┼-----┼-----┤
│     │     │   8 │   2 │
└-----┴-----┴-----┴-----┘
step :4 score:12(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):w
0
This nove has no efficient
step :4 score:12(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
0
┌-----┬-----┬-----┬-----┐
│     │   2 │     │     │
├-----┼-----┼-----┼-----┤
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │   4 │   2 │     │
├-----┼-----┼-----┼-----┤
│     │     │   8 │   2 │
└-----┴-----┴-----┴-----┘
step :5 score:12(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
0
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│     │   2 │   2 │     │
├-----┼-----┼-----┼-----┤
│     │   4 │   8 │   2 │
└-----┴-----┴-----┴-----┘
step :6 score:12(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
0
┌-----┬-----┬-----┬-----┐
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│     │     │   2 │   2 │
├-----┼-----┼-----┼-----┤
│     │   4 │   8 │   2 │
└-----┴-----┴-----┴-----┘
step :7 score:12(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
4
┌-----┬-----┬-----┬-----┐
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│     │     │   4 │   4 │
├-----┼-----┼-----┼-----┤
│     │   4 │   8 │   2 │
└-----┴-----┴-----┴-----┘
step :8 score:16(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
4
┌-----┬-----┬-----┬-----┐
│   4 │     │     │     │
├-----┼-----┼-----┼-----┤
│     │     │     │   4 │
├-----┼-----┼-----┼-----┤
│     │     │   4 │   4 │
├-----┼-----┼-----┼-----┤
│     │   4 │   8 │   2 │
└-----┴-----┴-----┴-----┘
step :9 score:20(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
8
┌-----┬-----┬-----┬-----┐
│     │     │   4 │     │
├-----┼-----┼-----┼-----┤
│     │     │     │   4 │
├-----┼-----┼-----┼-----┤
│     │     │     │   8 │
├-----┼-----┼-----┼-----┤
│   2 │   4 │   8 │   2 │
└-----┴-----┴-----┴-----┘
step :10 score:28(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
0
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│   2 │     │     │   4 │
├-----┼-----┼-----┼-----┤
│     │     │   4 │   8 │
├-----┼-----┼-----┼-----┤
│   2 │   4 │   8 │   2 │
└-----┴-----┴-----┴-----┘
step :11 score:28(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
0
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │     │     │   4 │
├-----┼-----┼-----┼-----┤
│   2 │   4 │   4 │   8 │
├-----┼-----┼-----┼-----┤
│   2 │   4 │   8 │   2 │
└-----┴-----┴-----┴-----┘
step :12 score:28(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
12
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│   4 │     │     │   4 │
├-----┼-----┼-----┼-----┤
│     │     │   4 │   8 │
├-----┼-----┼-----┼-----┤
│   4 │   8 │   8 │   2 │
└-----┴-----┴-----┴-----┘
step :13 score:40(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
16
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │   4 │   4 │   4 │
├-----┼-----┼-----┼-----┤
│     │     │   4 │   8 │
├-----┼-----┼-----┼-----┤
│     │   4 │  16 │   2 │
└-----┴-----┴-----┴-----┘
step :14 score:56(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
8
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │     │     │   4 │
├-----┼-----┼-----┼-----┤
│   2 │   4 │   8 │   8 │
├-----┼-----┼-----┼-----┤
│     │   4 │  16 │   2 │
└-----┴-----┴-----┴-----┘
step :15 score:64(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
8
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │     │   2 │   4 │
├-----┼-----┼-----┼-----┤
│     │     │   8 │   8 │
├-----┼-----┼-----┼-----┤
│   2 │   8 │  16 │   2 │
└-----┴-----┴-----┴-----┘
step :16 score:72(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
16
┌-----┬-----┬-----┬-----┐
│   4 │     │     │     │
├-----┼-----┼-----┼-----┤
│     │     │   2 │   4 │
├-----┼-----┼-----┼-----┤
│     │     │     │  16 │
├-----┼-----┼-----┼-----┤
│   2 │   8 │  16 │   2 │
└-----┴-----┴-----┴-----┘
step :17 score:88(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
0
┌-----┬-----┬-----┬-----┐
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│     │     │     │   4 │
├-----┼-----┼-----┼-----┤
│   4 │     │   2 │  16 │
├-----┼-----┼-----┼-----┤
│   2 │   8 │  16 │   2 │
└-----┴-----┴-----┴-----┘
step :18 score:88(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
0
┌-----┬-----┬-----┬-----┐
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│     │     │   4 │   4 │
├-----┼-----┼-----┼-----┤
│     │   4 │   2 │  16 │
├-----┼-----┼-----┼-----┤
│   2 │   8 │  16 │   2 │
└-----┴-----┴-----┴-----┘
step :19 score:88(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
8
┌-----┬-----┬-----┬-----┐
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│     │     │   2 │   8 │
├-----┼-----┼-----┼-----┤
│     │   4 │   2 │  16 │
├-----┼-----┼-----┼-----┤
│   2 │   8 │  16 │   2 │
└-----┴-----┴-----┴-----┘
step :20 score:96(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
4
┌-----┬-----┬-----┬-----┐
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│     │     │     │   8 │
├-----┼-----┼-----┼-----┤
│   2 │   4 │   4 │  16 │
├-----┼-----┼-----┼-----┤
│   2 │   8 │  16 │   2 │
└-----┴-----┴-----┴-----┘
step :21 score:100(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
8
┌-----┬-----┬-----┬-----┐
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│     │     │   4 │   8 │
├-----┼-----┼-----┼-----┤
│     │   2 │   8 │  16 │
├-----┼-----┼-----┼-----┤
│   2 │   8 │  16 │   2 │
└-----┴-----┴-----┴-----┘
step :22 score:108(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):a
0
┌-----┬-----┬-----┬-----┐
│   2 │     │     │     │
├-----┼-----┼-----┼-----┤
│   4 │   8 │     │     │
├-----┼-----┼-----┼-----┤
│   2 │   8 │  16 │   4 │
├-----┼-----┼-----┼-----┤
│   2 │   8 │  16 │   2 │
└-----┴-----┴-----┴-----┘
step :23 score:108(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
52
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│   2 │     │     │   4 │
├-----┼-----┼-----┼-----┤
│   4 │   8 │     │   4 │
├-----┼-----┼-----┼-----┤
│   4 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :24 score:160(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
16
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│   2 │   8 │     │   8 │
├-----┼-----┼-----┼-----┤
│   8 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :25 score:176(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
0
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│   4 │   2 │   8 │   8 │
├-----┼-----┼-----┼-----┤
│   8 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :26 score:176(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
16
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│     │   2 │     │   2 │
├-----┼-----┼-----┼-----┤
│     │   4 │   2 │  16 │
├-----┼-----┼-----┼-----┤
│   8 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :27 score:192(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
0
┌-----┬-----┬-----┬-----┐
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│     │     │   2 │   2 │
├-----┼-----┼-----┼-----┤
│     │   4 │   2 │  16 │
├-----┼-----┼-----┼-----┤
│   8 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :28 score:192(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
4
┌-----┬-----┬-----┬-----┐
│     │     │     │   2 │
├-----┼-----┼-----┼-----┤
│     │   4 │     │   4 │
├-----┼-----┼-----┼-----┤
│     │   4 │   2 │  16 │
├-----┼-----┼-----┼-----┤
│   8 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :29 score:196(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
0
┌-----┬-----┬-----┬-----┐
│     │     │   4 │   2 │
├-----┼-----┼-----┼-----┤
│     │     │   4 │   4 │
├-----┼-----┼-----┼-----┤
│     │   4 │   2 │  16 │
├-----┼-----┼-----┼-----┤
│   8 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :30 score:196(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
8
┌-----┬-----┬-----┬-----┐
│     │   4 │     │   2 │
├-----┼-----┼-----┼-----┤
│     │     │   8 │   4 │
├-----┼-----┼-----┼-----┤
│     │   4 │   2 │  16 │
├-----┼-----┼-----┼-----┤
│   8 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :31 score:204(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
8
┌-----┬-----┬-----┬-----┐
│     │     │   2 │   2 │
├-----┼-----┼-----┼-----┤
│     │     │   8 │   4 │
├-----┼-----┼-----┼-----┤
│     │   8 │   2 │  16 │
├-----┼-----┼-----┼-----┤
│   8 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :32 score:212(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
4
┌-----┬-----┬-----┬-----┐
│     │   4 │     │   4 │
├-----┼-----┼-----┼-----┤
│     │     │   8 │   4 │
├-----┼-----┼-----┼-----┤
│     │   8 │   2 │  16 │
├-----┼-----┼-----┼-----┤
│   8 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :33 score:216(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
0
┌-----┬-----┬-----┬-----┐
│     │     │   4 │   4 │
├-----┼-----┼-----┼-----┤
│   4 │     │   8 │   4 │
├-----┼-----┼-----┼-----┤
│     │   8 │   2 │  16 │
├-----┼-----┼-----┼-----┤
│   8 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :34 score:216(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
8
┌-----┬-----┬-----┬-----┐
│     │     │   4 │   8 │
├-----┼-----┼-----┼-----┤
│     │   4 │   8 │   4 │
├-----┼-----┼-----┼-----┤
│     │   8 │   2 │  16 │
├-----┼-----┼-----┼-----┤
│   8 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :35 score:224(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):a
0
┌-----┬-----┬-----┬-----┐
│   4 │   8 │     │   4 │
├-----┼-----┼-----┼-----┤
│   4 │   8 │   4 │     │
├-----┼-----┼-----┼-----┤
│   8 │   2 │  16 │     │
├-----┼-----┼-----┼-----┤
│   8 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :36 score:224(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
32
┌-----┬-----┬-----┬-----┐
│     │   2 │     │     │
├-----┼-----┼-----┼-----┤
│   4 │  16 │   4 │     │
├-----┼-----┼-----┼-----┤
│   4 │   2 │  16 │   4 │
├-----┼-----┼-----┼-----┤
│  16 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :37 score:256(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
8
┌-----┬-----┬-----┬-----┐
│     │   2 │   4 │     │
├-----┼-----┼-----┼-----┤
│     │  16 │   4 │     │
├-----┼-----┼-----┼-----┤
│   8 │   2 │  16 │   4 │
├-----┼-----┼-----┼-----┤
│  16 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :38 score:264(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
8
┌-----┬-----┬-----┬-----┐
│     │   2 │     │     │
├-----┼-----┼-----┼-----┤
│   4 │  16 │   8 │     │
├-----┼-----┼-----┼-----┤
│   8 │   2 │  16 │   4 │
├-----┼-----┼-----┼-----┤
│  16 │  16 │  32 │   2 │
└-----┴-----┴-----┴-----┘
step :39 score:272(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
96
┌-----┬-----┬-----┬-----┐
│     │     │   2 │     │
├-----┼-----┼-----┼-----┤
│   2 │   4 │  16 │   8 │
├-----┼-----┼-----┼-----┤
│   8 │   2 │  16 │   4 │
├-----┼-----┼-----┼-----┤
│     │     │  64 │   2 │
└-----┴-----┴-----┴-----┘
step :40 score:368(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):a
0
┌-----┬-----┬-----┬-----┐
│   2 │     │     │     │
├-----┼-----┼-----┼-----┤
│   2 │   4 │  16 │   8 │
├-----┼-----┼-----┼-----┤
│   8 │   2 │  16 │   4 │
├-----┼-----┼-----┼-----┤
│  64 │   2 │     │   4 │
└-----┴-----┴-----┴-----┘
step :41 score:368(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
16
┌-----┬-----┬-----┬-----┐
│     │   2 │     │     │
├-----┼-----┼-----┼-----┤
│   4 │     │     │     │
├-----┼-----┼-----┼-----┤
│   8 │   4 │  16 │   8 │
├-----┼-----┼-----┼-----┤
│  64 │   4 │  16 │   8 │
└-----┴-----┴-----┴-----┘
step :42 score:384(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
56
┌-----┬-----┬-----┬-----┐
│   2 │     │     │     │
├-----┼-----┼-----┼-----┤
│   4 │     │     │     │
├-----┼-----┼-----┼-----┤
│   8 │   2 │     │     │
├-----┼-----┼-----┼-----┤
│  64 │   8 │  32 │  16 │
└-----┴-----┴-----┴-----┘
step :43 score:440(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):d
0
┌-----┬-----┬-----┬-----┐
│     │     │   2 │     │
├-----┼-----┼-----┼-----┤
│     │   4 │   4 │     │
├-----┼-----┼-----┼-----┤
│     │   8 │   2 │     │
├-----┼-----┼-----┼-----┤
│  64 │   8 │  32 │  16 │
└-----┴-----┴-----┴-----┘
step :44 score:440(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):a
8
┌-----┬-----┬-----┬-----┐
│   2 │   4 │     │     │
├-----┼-----┼-----┼-----┤
│   8 │     │     │     │
├-----┼-----┼-----┼-----┤
│   8 │   2 │     │     │
├-----┼-----┼-----┼-----┤
│  64 │   8 │  32 │  16 │
└-----┴-----┴-----┴-----┘
step :45 score:448(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):as
Illegal operation
step :45 score:448(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
16
┌-----┬-----┬-----┬-----┐
│     │   4 │     │     │
├-----┼-----┼-----┼-----┤
│   2 │   4 │     │     │
├-----┼-----┼-----┼-----┤
│  16 │   2 │     │     │
├-----┼-----┼-----┼-----┤
│  64 │   8 │  32 │  16 │
└-----┴-----┴-----┴-----┘
step :46 score:464(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
8
┌-----┬-----┬-----┬-----┐
│     │   2 │     │     │
├-----┼-----┼-----┼-----┤
│   2 │   8 │     │     │
├-----┼-----┼-----┼-----┤
│  16 │   2 │     │     │
├-----┼-----┼-----┼-----┤
│  64 │   8 │  32 │  16 │
└-----┴-----┴-----┴-----┘
step :47 score:472(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
0
This nove has no efficient
step :47 score:472(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):a
0
┌-----┬-----┬-----┬-----┐
│   2 │     │     │     │
├-----┼-----┼-----┼-----┤
│   2 │   8 │     │   2 │
├-----┼-----┼-----┼-----┤
│  16 │   2 │     │     │
├-----┼-----┼-----┼-----┤
│  64 │   8 │  32 │  16 │
└-----┴-----┴-----┴-----┘
step :48 score:472(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):s
4
┌-----┬-----┬-----┬-----┐
│     │     │     │     │
├-----┼-----┼-----┼-----┤
│   4 │   8 │     │     │
├-----┼-----┼-----┼-----┤
│  16 │   2 │   4 │   2 │
├-----┼-----┼-----┼-----┤
│  64 │   8 │  32 │  16 │
└-----┴-----┴-----┴-----┘
step :49 score:476(←:a/h  ↓: s/j ↑: w/k →: d/l ,q(uit),b(ack)):


posted @ 2017-07-02 17:10  yuerspring  阅读(293)  评论(0编辑  收藏  举报