青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

huyutian

他強由他強,清風拂山崗;他橫由他橫,明月照大江。他自狠來他自惡,我自一口真氣足

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  20 隨筆 :: 47 文章 :: 22 評論 :: 0 Trackbacks
寫完這篇blog,卻忘發了,呵呵
python向往很久了,國慶得閑終于決定開始學習這門語言。我的計劃是以實用為目的,邊用邊學。首先當然先看看入門書,了解了解語法和大致結構,安裝編程環境,這個花了差不多一天時間。
下載python請到官網http://www.python.org/getit/,目前最新版為3.3.2。建議直接下載最新版學習,從python2.7到3.3.2有較大改變,很多網站的教材都是針對2.x版本的,對3.x都不再適用了。比如:print “hello!"語句在2.x版中是可以的,但3.x版中必須改為print("hello")。最好是直接用官網的教程和說明文檔,更新及時,不會存在版本差異造成的問題。

第一目標:寫一個搜索Fling!毛毛球碰撞游戲的答案的程序
Fling!是蘋果iphone系統的一個小游戲,后來也被移植到安卓系統中。游戲玩法就是通過碰撞棋盤上的小球,使最后只剩下一個球。
itune網址https://itunes.apple.com/us/app/fling!/id325815008?mt=8
android網址https://play.google.com/store/apps/details?id=com.mbgames.fling
超喜歡這個游戲,前面20多關難度都不算大,但是27關以后就沒那么容易解決了。我先用excel的vba宏寫了一個程序,可惜vba運行太慢,25個球的解答就要搜索近半個小時。現在想把它改寫成python版本。excel版的毛球解決程序我已經放在這里了http://club.excelhome.net/thread-1061267-1-1.html

最后實現的代碼如下,用到了class,數據存儲使用了list[].
  1 import copy
  2 class Fling:
  3     def __init__(self, parent=0, balls=[[0]*7 for x in range(8)]):
  4         self.balls = copy.deepcopy(balls)
  5         self.code = 0                               #balls's hash code
  6         self.scan = False
  7         self.parent = parent
  8         self.x = 0
  9         self.y = 0
 10         self.direct = 0
 11 
 12     def setCode(self):
 13         self.code = 0
 14         for y in range(0,8):
 15             for x in range(0,7):
 16                 if self.balls[y][x] != 0:
 17                     self.code = self.code * 131 + x
 18                     self.code = self.code % 16393001 #防止溢出
 19                     self.code = self.code * 131 + y
 20                     self.code = self.code % 16393001
 21         
 22     def reset(self):
 23         self.balls = [[0]*7 for x in range(8)]
 24         self.scan = False
 25         self.code = 0
 26         self.parent = 0
 27         self.x = 0
 28         self.y = 0
 29         self.direct = 0
 30         
 31     def collision(self, x, y, direct):
 32         flag = False
 33         # 向上拋球
 34         if direct == 0:
 35             i = y - 1
 36             while i >= 0:
 37                 if self.balls[i][x] != 0:           #遇到球
 38                     if flag == False:               #遇到第一個球
 39                         if i == y - 1:
 40                             break                   #exit while
 41                         self.balls[y][x] = 0
 42                         self.balls[i + 1][x] = 1    #母球移動到此
 43                         flag = True                 #碰撞成立
 44                     elif i != y - 1:
 45                        self.balls[y][x] = 0
 46                        self.balls[i + 1][x] = 1     #母球移動到此
 47                     y = i
 48                 i = i - 1
 49             
 50         # 向右拋球
 51         elif direct == 1:
 52             i = x + 1
 53             while i < 7:
 54                 if self.balls[y][i] != 0:           #遇到球
 55                     if flag == False:               #遇到第一個球
 56                         if i == x + 1:
 57                             break                   #相鄰球不能碰撞
 58                         self.balls[y][x] = 0
 59                         self.balls[y][i - 1] = 1    #母球移動到此
 60                         flag = True                 #碰撞成立
 61                     elif i != x + 1:                #非相鄰球
 62                         self.balls[y][x] = 0
 63                         self.balls[y][i - 1] = 1    #母球移動到此
 64                     x = i                           #被撞球成為新的母球
 65                 i = i + 1
 66             
 67         # 向下拋球
 68         elif direct == 2:
 69             i = y + 1
 70             while i < 8:
 71                 if self.balls[i][x] != 0:           #遇到球
 72                     if flag == False:               #遇到第一個球
 73                         if i == y + 1:
 74                             break                   #exit while
 75                         self.balls[y][x] = 0
 76                         self.balls[i - 1][x] = 1    #母球移動到此
 77                         flag = True                 #碰撞成立
 78                     elif i != y + 1:
 79                        self.balls[y][x] = 0
 80                        self.balls[i - 1][x] = 1     #母球移動到此
 81                     y = i
 82                 i = i + 1
 83 
 84         # 向左拋球
 85         elif direct == 3:
 86             i = x - 1
 87             while i >= 0:
 88                 if self.balls[y][i] != 0:           #遇到球
 89                     if flag == False:               #遇到第一個球
 90                         if i == x - 1:
 91                             break                   #相鄰球不能碰撞
 92                         self.balls[y][x] = 0
 93                         self.balls[y][i + 1] = 1    #母球移動到此
 94                         flag = True                 #碰撞成立
 95                     elif i != x - 1:                #非相鄰球
 96                         self.balls[y][x] = 0
 97                         self.balls[y][i + 1] = 1    #母球移動到此
 98                     x = i                           #被撞球成為新的母球
 99                 i = i - 1
100             
101         if flag == True:                            #碰撞成立,最后一個球移出屏幕
102             self.balls[y][x] = 0
103             self.setCode()
104 
105         return flag
106 
107 # import pdb
108 # pdb.set_trace() # opens up pdb prompt
109 
110 question = [[1,0,0,1,0,1,0], \
111             [0,1,0,0,0,0,0], \
112             [0,0,0,0,0,0,1], \
113             [0,0,0,1,1,0,0], \
114             [0,0,0,1,0,0,0], \
115             [0,0,1,1,1,0,0], \
116             [0,0,1,0,0,0,0], \
117             [0,0,1,0,0,0,0]]
118 myTree = []
119 myTree.append(Fling(0, question))
120 myHash = []
121 myHash.append(myTree[0].code)
122 
123 i = 0
124 while i < len(myTree):
125     if myTree[i].scan != True:
126         for x in range(0,7):
127             for y in range(0,8):
128                 if myTree[i].balls[y][x] == 0:
129                     continue
130                 
131                 snap = Fling(i, myTree[i].balls)
132                 if snap.collision(x,y,0):
133                     if snap.code not in myHash:
134                         snap.x = x
135                         snap.y = y
136                         snap.direct = 0
137                         myTree.append(snap)
138                         myHash.append(snap.code)
139                 
140                 snap = Fling(i, myTree[i].balls)
141                 if snap.collision(x,y,1):
142                     if snap.code not in myHash:
143                         snap.x = x
144                         snap.y = y
145                         snap.direct = 1
146                         myTree.append(snap)
147                         myHash.append(snap.code)
148 
149                 snap = Fling(i, myTree[i].balls)
150                 if snap.collision(x,y,2):
151                     if snap.code not in myHash:
152                         snap.x = x
153                         snap.y = y
154                         snap.direct = 2
155                         myTree.append(snap)
156                         myHash.append(snap.code)
157 
158                 snap = Fling(i, myTree[i].balls)
159                 if snap.collision(x,y,3):
160                     if snap.code not in myHash:
161                         snap.x = x
162                         snap.y = y
163                         snap.direct = 3
164                         myTree.append(snap)
165                         myHash.append(snap.code)
166 
167         myTree[i].scan = True
168     i = i + 1
169 
170 #查找所有彈球動作
171 i = len(myTree) - 1
172 actions = []
173 while myTree[i].parent != 0:
174     actions.append([myTree[i].x, myTree[i].y, myTree[i].direct])
175     i = myTree[i].parent
176 else:
177     actions.append([myTree[i].x, myTree[i].y, myTree[i].direct])
178 
179 print("Answer:\nx y direct(0:up,1:right,2:down,3:left)")
180 for element in reversed(actions):
181     print(element[0], element[1], element[2])
182 
183 
posted on 2014-02-04 08:37 胡雨田 閱讀(439) 評論(0)  編輯 收藏 引用 所屬分類: 編程技巧
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美国产日本| 午夜精品久久99蜜桃的功能介绍| 久久久亚洲一区| 久久久久一区二区| 国产欧美一区二区三区久久人妖| 亚洲天堂网站在线观看视频| 日韩视频在线观看| 男女精品视频| 亚洲欧美日韩一区在线| 精品不卡视频| 午夜精品久久久久99热蜜桃导演| 亚洲调教视频在线观看| 亚洲国产日韩一区二区| 一本色道久久88精品综合| 欧美激情片在线观看| 最新亚洲一区| 国产日韩欧美在线播放不卡| 久久精品视频在线免费观看| 亚洲国产女人aaa毛片在线| 久久成人亚洲| 亚洲性感激情| 国产精品久久久久久亚洲毛片| 亚洲美女黄色片| 欧美在线播放高清精品| 亚洲黄色天堂| 在线看一区二区| 亚洲精品社区| 亚洲午夜久久久久久久久电影院| av成人激情| 欧美福利电影网| 欧美在线亚洲| 亚洲美女中文字幕| 一本色道久久综合| 欧美福利视频在线观看| 久久精品99国产精品日本| 久久国产精品一区二区| 亚洲国产精品高清久久久| 欧美成人在线免费观看| 久久精品国产一区二区三区免费看| 精品二区视频| 亚洲成人直播| 午夜欧美精品久久久久久久| 国产一区在线免费观看| 亚洲国产精品成人| 老鸭窝91久久精品色噜噜导演| 女生裸体视频一区二区三区| 99精品福利视频| 久久久国产精品亚洲一区| 亚洲日本中文字幕免费在线不卡| 日韩视频免费观看高清在线视频| 亚洲欧美日韩视频一区| 蜜臀av性久久久久蜜臀aⅴ| 国产欧美丝祙| 亚洲国产成人av在线| 在线天堂一区av电影| 欧美激情中文字幕一区二区| 中文精品一区二区三区| 欧美成人午夜激情在线| 亚洲欧美日韩天堂| 国产日韩欧美在线一区| 日韩写真在线| 国产日韩一区二区三区| 亚洲一区二区精品在线| 午夜精品av| 久久综合激情| 国产精品亚洲第一区在线暖暖韩国| 国产婷婷色综合av蜜臀av| 伊人久久综合97精品| 国产精品美女一区二区| 亚洲欧美色一区| 国产精品视频1区| 你懂的视频欧美| 亚洲欧美视频一区| 亚洲精品资源| 亚洲午夜精品久久| 国产精品日韩在线一区| 亚洲最快最全在线视频| 欧美午夜久久久| 亚洲国产一区二区三区高清| 国产精品久久久久aaaa樱花| 久久国产日本精品| 久久成人国产| 亚洲视频一区| 久久不射中文字幕| 女仆av观看一区| 国产精品久久久久久影院8一贰佰 国产精品久久久久久影视 | 日韩一区二区福利| 亚洲午夜精品久久久久久app| 女同一区二区| 欧美午夜不卡| 久久综合亚州| 一本色道久久综合精品竹菊 | 欧美日韩国产电影| 日韩视频在线观看国产| 免费在线国产精品| 久久精品在线| 欧美成人中文字幕| 性色av一区二区怡红| 国产精品久久久久天堂| 欧美性猛交xxxx乱大交蜜桃 | 国产精品女主播| 亚洲永久在线| 99在线精品免费视频九九视| 亚洲国产精品悠悠久久琪琪| 香蕉成人伊视频在线观看| 伊人久久大香线蕉av超碰演员| 久久一区国产| 欧美人与性动交cc0o| 欧美大片免费观看在线观看网站推荐| 国产日韩精品视频一区| 免费短视频成人日韩| 亚洲激情社区| 国产乱肥老妇国产一区二| 午夜精品视频在线观看| 亚洲国内精品| 欧美成人免费在线观看| 久久久亚洲高清| 亚洲毛片在线免费观看| 国产亚洲欧美激情| 9人人澡人人爽人人精品| 午夜在线a亚洲v天堂网2018| 久久国产日韩| 亚洲国产日本| 亚洲毛片在线| 性欧美长视频| 伊人久久婷婷色综合98网| 美女精品在线| 久久精品国产亚洲精品| 久久国产乱子精品免费女| 欧美一区二区三区免费看 | 蜜臀va亚洲va欧美va天堂| 国产精品一区二区三区观看| 欧美激情偷拍| 91久久午夜| 欧美高清视频一区| 一区二区三区四区五区在线| 欧美在线999| 亚洲欧美日韩综合| 亚洲一二三四区| 欧美三级电影一区| 亚洲激情视频在线| 欧美国产精品久久| 久久精品麻豆| 国内精品久久久久影院薰衣草| 欧美日产一区二区三区在线观看 | 久久精品国产久精国产爱| 亚洲福利视频一区| 亚洲国产日日夜夜| 欧美日韩一区成人| 夜夜嗨av一区二区三区网站四季av | 国产欧美精品一区二区色综合| 亚洲第一区在线| 亚洲欧美在线一区二区| 夜夜嗨av色综合久久久综合网| 欧美理论电影在线观看| 国产精品乱码久久久久久| 亚洲美女在线观看| 亚洲激情视频| 久久久国产精品一区二区三区| 久久精品一本久久99精品| 久久超碰97人人做人人爱| 最新国产成人av网站网址麻豆| 欧美福利一区| 欧美午夜一区二区福利视频| 久久久91精品国产一区二区三区| 在线天堂一区av电影| 国内精品免费午夜毛片| 一区二区精品| 国产亚洲精品aa午夜观看| 亚洲一区二区视频在线| 国产精品99久久久久久www| 一本久久综合| 久久精品国产在热久久| 一区二区三欧美| 久久亚洲视频| 久久久久国产精品麻豆ai换脸 | 一区二区三区视频在线播放| 欧美日韩三级一区二区| 午夜免费在线观看精品视频| 一区二区三区高清不卡| 久久久精彩视频| 亚洲精品久久久久久下一站| 亚洲国产精品高清久久久| 久久免费视频网站| 99国内精品久久| 亚洲欧洲日韩在线| 国产一区二区三区日韩欧美| 亚洲国产日韩欧美在线图片| 欧美日韩播放| 性做久久久久久久免费看| 亚洲欧洲三级电影| 午夜在线一区| 亚洲综合国产激情另类一区| 欧美日韩另类综合| 国产一区二区你懂的| 国产精品入口夜色视频大尺度| 欧美日韩国产影院| 欧美一区二区三区在线免费观看| 国产精品美女久久久浪潮软件| 久久一区二区三区四区|