安利一波链接:Kevin‘s 2048
mode 1为普通2048
mode 2为随机出现值2048(可能开局2048哦)
mode 3为神秘2048(有一种元素为1)
mode 4为负数2048
下面是蜜汁贪心刷分脚本。。
1 import copy,os,random,time 2 from collections import OrderedDict 3 from selenium import webdriver 4 from selenium.webdriver.common.keys import Keys 5 6 def turn(n): 7 if n==1: 8 return Keys.DOWN 9 elif n==2: 10 return Keys.LEFT 11 elif n==3: 12 return Keys.RIGHT 13 else: 14 return Keys.UP 15 16 if __name__=="__main__": 17 username=raw_input("Please input your name:") 18 maxium,total,times=0,0.0,0 19 while True: 20 try: 21 mode=input("Please input the mode of 2048:") 22 break 23 except: 24 print "Unexpected format!" 25 while True: 26 cyz666=webdriver.Chrome() 27 cyz666.get("http://kkeevviinnn.com/2048.html") 28 while True: 29 try: 30 cyz666.find_element_by_id("modebutton%d"%mode).click() 31 game=cyz666.find_element_by_xpath("/html/body") 32 break 33 except: 34 print "There‘s no this mode!" 35 mode=input("Please input the mode of 2048:") 36 while True: 37 status=[[0 for i in xrange(4)] for j in xrange(4)] 38 for i in xrange(4): 39 for j in xrange(4): 40 try: 41 status[i][j]=int(game.find_element_by_id("number-cell-%d-%d"%(i,j)).text) 42 except: 43 pass 44 sum={0:0,1:0,2:0,3:0} 45 46 # Move Up 47 images,vis=copy.deepcopy(status),[[False for i in xrange(4)] for j in xrange(4)] 48 for i in xrange(4): 49 for j in xrange(4): 50 if images[i][j]: 51 k=i-1 52 while (k>=0) and not images[k][j] and not vis[k][j]: 53 k-=1 54 if (k>=0) and ((images[i][j]==images[k][j]) or (images[i][j]==1)) and not vis[k][j]: 55 images[k][j]+=images[i][j] 56 images[i][j],vis[k][j]=0,True 57 sum[0]+=images[k][j] 58 # Move Down 59 images,vis=copy.deepcopy(status),[[False for i in xrange(4)] for j in xrange(4)] 60 for i in xrange(4): 61 for j in xrange(4): 62 if images[i][j]: 63 k=i+1 64 while (k<4) and not images[k][j] and not vis[k][j]: 65 k+=1 66 if (k<4) and ((images[i][j]==images[k][j]) or (images[i][j]==1)) and not vis[k][j]: 67 images[k][j]+=images[i][j] 68 images[i][j],vis[k][j]=0,True 69 sum[1]+=images[k][j] 70 # Move Left 71 images,vis=copy.deepcopy(status),[[False for i in xrange(4)] for j in xrange(4)] 72 for i in xrange(4): 73 for j in xrange(4): 74 if images[i][j]: 75 k=j-1 76 while (k>=0) and not images[i][k] and not vis[i][k]: 77 k-=1 78 if (k>=0) and ((images[i][j]==images[i][k]) or (images[i][j]==1)) and not vis[i][k]: 79 images[i][k]+=images[i][j] 80 images[i][j],vis[i][k]=0,True 81 sum[2]+=images[i][k] 82 # Move Right 83 images,vis=copy.deepcopy(status),[[False for i in xrange(4)] for j in xrange(4)] 84 for i in xrange(4): 85 for j in xrange(4): 86 if images[i][j]: 87 k=j+1 88 while (k<4) and not images[i][k] and not vis[i][k]: 89 k+=1 90 if (k<4) and ((images[i][j]==images[i][k]) or (images[i][j]==1)) and not vis[i][k]: 91 images[i][k]+=images[i][j] 92 images[i][j],vis[i][k]=0,True 93 sum[3]+=images[i][k] 94 95 dic=OrderedDict(sorted(sum.items(),key=lambda t:t[1],reverse=True)) 96 last,can=-1,[False,False,False,False] 97 for odr,scr in dic.items(): 98 if (~last) and (scr!=last): 99 break 100 can[odr]=True 101 last=scr 102 ans=random.randint(0,3) 103 while not can[ans]: 104 ans=random.randint(0,3) 105 while True: 106 try: 107 game.send_keys(turn(ans)) 108 break 109 except: 110 pass 111 try: 112 cyz666.find_element_by_id("field").send_keys(username) 113 break 114 except: 115 pass 116 scr=int(cyz666.find_element_by_id("score").text) 117 maxium=max(maxium,scr) 118 total+=scr 119 times+=1 120 print "------------------------------------" 121 print "You‘ve played 2048 for %d times."%times 122 print "This run you got the score:%d."%scr 123 print "Your average score:%.3f."%(total/times) 124 print "Your maxium score:%d."%maxium 125 print "------------------------------------" 126 print ‘‘ 127 while True: 128 try: 129 cyz666.find_element_by_id("btn1").click() 130 break 131 except: 132 pass 133 cyz666.close()
时间: 2024-11-05 13:49:19