<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了android實現數獨遊戲機器人的具體程式碼,供大家參考,具體內容如下
針對該應用的數獨機器人,填答案邏輯未完成,主要原因在於遊戲響應觸屏事件引數有待調整,簡單的使用input tap,介面響應不正常。
import sys posinfo0={(0,0):8, (2,1):3,(3,1):6, (1,2):7,(4,2):9,(6,2):2, (1,3):5,(5,3):7, (4,4):4,(5,4):5,(6,4):7, (3,5):1,(7,5):3, (2,6):1,(7,6):6,(8,6):8, (2,7):8,(3,7):5,(7,7):1, (1,8):9,(6,8):4, } maskmap={ 1535553906:5, 2441400:7, 305175776:1, 2746585781:6, 1577050781:9, 2756722681:8, 1586816406:9, 2756351406:6, 2993066431:2, 2758694531:3, 1535569531:5, 2756738306:8, 1528222656:9, 1525882656:6, 2942285181:2, 1535944531:5, 1232906556:4, 2709863281:3, 1525882031:6, 2707910181:8, 1535960156:5, 1477441406:9, 2944238306:2, 1525878901:1, 2707910156:3, 1477050781:6, 2758691406:3, 3002832056:2, 2705941436:8, 1242672181:4, 1535647656:5, 2705957686:8, 1479394531:9, 1487191406:3, 2707894556:8, 502832031:2, 2705941431:8, } def ocr(img): global posinfo0, maskmap posinfo0={} for x in xrange(0,9): for y in xrange(0,9): x0=(x/3)*(257-26)+(x%3)*(96-26)+26 y0=(y/3)*(432-179)+(y%3)*(255-179)+179 x1=x0+(88-26) y1=y0+(240-179) dig=img.crop((x0,y0,x1,y1)) throd=100 res=0 for marg_left in xrange(0,dig.size[0]/2+2): for t in xrange(0,dig.size[1]): if dig.getpixel((marg_left, t))[0]<throd: break if t!=dig.size[1]-1:break for marg_right in xrange(dig.size[0]-1, dig.size[0]/2, -1): for t in xrange(0,dig.size[1]): if dig.getpixel((marg_right, t))[0]<throd: break if t!=dig.size[1]-1:break for marg_top in xrange(0,dig.size[1]/2+2): for t in xrange(0,dig.size[0]): if dig.getpixel((t,marg_top))[0]<throd: break if t!=dig.size[0]-1:break for marg_bottom in xrange(dig.size[1]-1, dig.size[1]/2, -1): for t in xrange(0,dig.size[0]): if dig.getpixel((t,marg_bottom))[0]<throd: break if t!=dig.size[0]-1:break if marg_left>=marg_right: #print "(%d,%d):%d"%(x,y,res) continue mask=0 bitcnt=1 dig=dig.crop((marg_left,marg_top,marg_right,marg_bottom)) olddirect=0 direct=0 for digy in xrange(dig.size[1]/8,dig.size[1], dig.size[1]/8): cnt=0 for digx in xrange(0,dig.size[0]-1): if dig.getpixel((digx, digy))[0]>throd and dig.getpixel((digx+1, digy))[0]<=throd: cnt+=1 mask+=cnt*bitcnt bitcnt*=5 for digx in xrange(dig.size[0]/6,dig.size[0], dig.size[0]/6): cnt=0 for digy in xrange(0,dig.size[1]-1): if dig.getpixel((digx, digy))[0]>throd and dig.getpixel((digx, digy+1))[0]<=throd: cnt+=1 mask+=cnt*bitcnt bitcnt*=5 if mask not in maskmap: dig.save("tmp/%d_%d_%d.png"%(mask,x,y)) val=raw_input("%d:"%mask) maskmap[mask]=int(val) if mask in maskmap: #print "(%d,%d):%d"%(x,y,maskmap[mask]) posinfo0[(x,y)]=maskmap[mask] #484 677 def scan(): os.system("adb shell screencap /mnt/sdcard/shudu.png") os.system("adb pull /mnt/sdcard/shudu.png") img=Image.open("shudu.png") ocr(img) from copy import deepcopy from time import clock posb0={} def init(posb, posinfo): for i in xrange(0,9): for j in xrange(0,9): if (i,j) not in posinfo: posb[(i,j)]=[n for n in xrange(1,10)] for pos in posinfo: cleanother(0,pos[0],pos[1],posinfo[pos],posb,posinfo) def checkpos(posb, posinfo): posb1=posb.copy() posinfo1=posinfo.copy() ret=0 for pos in posb: if len(posb1[(pos[0],pos[1])])==1: addinfo(pos[0],pos[1],posb1[(pos[0],pos[1])][0],posb1,posinfo1) ret=1 break elif len(posb1[(pos[0],pos[1])])==0: ret=2 break posb=posb1 posinfo=posinfo1 return ret def cleanother(mod,x,y,v,posb,posinfo): posb1=posb.copy() x0=x/3*3 y0=y/3*3 for ii in xrange(0,3): for jj in xrange(0,3): if (x0+ii,y0+jj) in posb: if v in posb1[(x0+ii,y0+jj)]: posb1[(x0+ii,y0+jj)].remove(v) for ii in xrange(0,9): if (ii,y) in posb: if v in posb1[(ii,y)]: posb1[(ii,y)].remove(v) for jj in xrange(0,9): if (x,jj) in posb: if v in posb1[(x,jj)]: posb1[(x,jj)].remove(v) ret=0 if posb1!=posb: ret = checkpos(posb1,posinfo) posb=posb1 return ret def findmin(posb): minv=9 minpos=(0,0) for key,val in posb.items(): if minv>len(val): minv=len(val) minpos=key return (minv,minpos) def outputInfo(posinfo): print "n %s"%" ".join(str(v) for v in xrange(0,9)) print "-----------"*2 for i in xrange(0,9): print "%d|"%i, for j in xrange(0,9): if (j,i) in posinfo: print posinfo[(j,i)], else: print " ", print print "==========="*2 def addinfo(x,y,v,posb,posinfo): if (x,y) in posinfo:return #print "addinfo",x,y,v if (x,y) in posb: del posb[(x,y)] posinfo[(x,y)]=v clearallinfo(posb,posinfo) #outputInfo(posinfo) def clearallinfo(newposb, newposinfo): newposinfo2=newposinfo.copy() for pos in newposinfo: cleanother(0,pos[0],pos[1],newposinfo[pos],newposb,newposinfo2) if newposinfo2==newposinfo: return newposinfo=newposinfo2 #print "newposinfo" #outputInfo(newposinfo) clearallinfo(newposb, newposinfo) def clickscreen(pos0, lastpos): for i in xrange(0,9): print "%d|"%i, for j in xrange(0,9): if (j,i) in lastpos and (j,i) not in pos0: print lastpos[(j,i)], x0=(j/3)*(257-26)+(j%3)*(96-26)+26 y0=(i/3)*(432-179)+(i%3)*(255-179)+179 x1=x0+(88-26)/2 y1=y0+(240-179)/2 #os.system("adb shell input tap %d %d"%(x1,y1)) #raw_input("press...") #time.sleep(0.1) #os.system("adb shell input tap %d %d"%(lastpos[(j,i)]*80-40,980)) #time.sleep(0.1) #raw_input("press...") else: print " ", print def tryonestep(minpos, posb, posinfo, layer): global tic for posbv in posb[minpos]: newposb=deepcopy(posb) newposinfo=posinfo.copy() addinfo(minpos[0],minpos[1],posbv,newposb,newposinfo) minv2,minpos2=findmin(newposb) if minv2==0: #print "impossible!!!", layer continue if len(newposb)==0: print "Got it!!!" outputInfo(newposinfo) clickscreen(posinfo0, newposinfo) exit(0) tryonestep(minpos2, newposb, newposinfo, layer+1) scan() init(posb0, posinfo0) minv,minpos=findmin(posb0) print "start===>" outputInfo(posinfo0) newposb=posb0.copy() newposinfo=posinfo0.copy() tryonestep(minpos, newposb, newposinfo, 0) print "No answer!!"
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45