python开发的2048的小游戏
2016-10-27 17:18
465 查看
代码如下:
<pre style="font-family: 宋体; font-size: 10.5pt; background-color: rgb(255, 255, 255);"><span style="color:#000080;"><strong>from </strong></span>Tkinter <span style="color:#000080;"><strong>import </strong></span>* <span style="color:#000080;"><strong>import </strong></span>random <span style="color:#000080;"><strong>import </strong></span>tkMessageBox root = Tk(<span style="color:#660099;">className </span>= <span style="color:#008000;"><strong>"2048"</strong></span>) root.geometry(<span style="color:#008000;"><strong>"320x360"</strong></span>) str_data=[] B_list = [] frame2 = Frame(root,<span style="color:#660099;">borderwidth </span>= <span style="color:#0000ff;">10</span>) dic_color = {<span style="color:#0000ff;">0</span>:<span style="color:#008000;"><strong>'GhostWhite'</strong></span>, <span style="color:#0000ff;">2</span>:<span style="color:#008000;"><strong>'AliceBlue'</strong></span>, <span style="color:#0000ff;">4</span>:<span style="color:#008000;"><strong>'LightCyan'</strong></span>, <span style="color:#0000ff;">8</span>:<span style="color:#008000;"><strong>'Khaki'</strong></span>,<span style="color:#0000ff;">16</span>:<span style="color:#008000;"><strong>'SandyBrown'</strong></span>, <span style="color:#0000ff;">32</span>:<span style="color:#008000;"><strong>'Goldenrod'</strong></span>,<span style="color:#0000ff;">64</span>:<span style="color:#008000;"><strong>'Orange'</strong></span>,<span style="color:#0000ff;">128</span>:<span style="color:#008000;"><strong>'Maroon'</strong></span>,<span style="color:#0000ff;">256</span>:<span style="color:#008000;"><strong>'Tomato'</strong></span>,<span style="color:#0000ff;">512</span>:<span style="color:#008000;"><strong>'OrangeRed'</strong></span>,<span style="color:#0000ff;">1024</span>:<span style="color:#008000;"><strong>'FireBrick'</strong></span>,<span style="color:#0000ff;">2048</span>:<span style="color:#008000;"><strong>'Red'</strong></span>} list_data=[<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>] left=<span style="color:#0000ff;">0 </span>up=<span style="color:#0000ff;">1 </span>right=<span style="color:#0000ff;">2 </span>down=<span style="color:#0000ff;">3 </span>derection_index=[ [[<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">1</span>,<span style="color:#0000ff;">2</span>,<span style="color:#0000ff;">3</span>],[<span style="color:#0000ff;">4</span>,<span style="color:#0000ff;">5</span>,<span style="color:#0000ff;">6</span>,<span style="color:#0000ff;">7</span>],[<span style="color:#0000ff;">8</span>,<span style="color:#0000ff;">9</span>,<span style="color:#0000ff;">10</span>,<span style="color:#0000ff;">11</span>],[<span style="color:#0000ff;">12</span>,<span style="color:#0000ff;">13</span>,<span style="color:#0000ff;">14</span>,<span style="color:#0000ff;">15</span>]], [[<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">4</span>,<span style="color:#0000ff;">8</span>,<span style="color:#0000ff;">12</span>],[<span style="color:#0000ff;">1</span>,<span style="color:#0000ff;">5</span>,<span style="color:#0000ff;">9</span>,<span style="color:#0000ff;">13</span>],[<span style="color:#0000ff;">2</span>,<span style="color:#0000ff;">6</span>,<span style="color:#0000ff;">10</span>,<span style="color:#0000ff;">14</span>],[<span style="color:#0000ff;">3</span>,<span style="color:#0000ff;">7</span>,<span style="color:#0000ff;">11</span>,<span style="color:#0000ff;">15</span>]], [[<span style="color:#0000ff;">3</span>,<span style="color:#0000ff;">2</span>,<span style="color:#0000ff;">1</span>,<span style="color:#0000ff;">0</span>],[<span style="color:#0000ff;">7</span>,<span style="color:#0000ff;">6</span>,<span style="color:#0000ff;">5</span>,<span style="color:#0000ff;">4</span>],[<span style="color:#0000ff;">11</span>,<span style="color:#0000ff;">10</span>,<span style="color:#0000ff;">9</span>,<span style="color:#0000ff;">8</span>],[<span style="color:#0000ff;">15</span>,<span style="color:#0000ff;">14</span>,<span style="color:#0000ff;">13</span>,<span style="color:#0000ff;">12</span>]], [[<span style="color:#0000ff;">12</span>,<span style="color:#0000ff;">8</span>,<span style="color:#0000ff;">4</span>,<span style="color:#0000ff;">0</span>],[<span style="color:#0000ff;">13</span>,<span style="color:#0000ff;">9</span>,<span style="color:#0000ff;">5</span>,<span style="color:#0000ff;">1</span>],[<span style="color:#0000ff;">14</span>,<span style="color:#0000ff;">10</span>,<span style="color:#0000ff;">6</span>,<span style="color:#0000ff;">2</span>],[<span style="color:#0000ff;">15</span>,<span style="color:#0000ff;">11</span>,<span style="color:#0000ff;">7</span>,<span style="color:#0000ff;">3</span>]] ] <span style="color:#000080;"><strong>for </strong></span>i <span style="color:#000080;"><strong>in </strong></span><span style="color:#000080;">range</span>(<span style="color:#0000ff;">16</span>): str_data.append(StringVar()) B_list.append(Button(frame2, <span style="color:#660099;">width</span>=<span style="color:#0000ff;">4</span>, <span style="color:#660099;">height</span>=<span style="color:#0000ff;">2</span>, <span style="color:#660099;">textvariable </span>= str_data[i] ,<span style="color:#660099;">font </span>= (<span style="color:#008000;"><strong>"Courier 20 bold roman"</strong></span>),<span style="color:#660099;">bg</span>=dic_color[<span style="color:#0000ff;">0</span>])) B_list[i].grid(<span style="color:#660099;">row</span>=i/<span style="color:#0000ff;">4</span>,<span style="color:#660099;">column</span>=i%<span style="color:#0000ff;">4</span>) <span style="color:#000080;"><strong>def </strong></span>CanMove(derection, index): <span style="color:#000080;"><strong>for </strong></span>i <span style="color:#000080;"><strong>in </strong></span><span style="color:#000080;">range</span>(<span style="color:#0000ff;">1</span>, <span style="color:#0000ff;">4</span>): <span style="color:#000080;"><strong>if </strong></span>list_data[derection_index[derection][index][i]] == list_data[derection_index[derection][index][i-<span style="color:#0000ff;">1</span>]]: <span style="color:#000080;"><strong>return </strong></span><span style="color:#000080;">True </span><span style="color:#000080;"> </span><span style="color:#000080;"><strong>if </strong></span>list_data[derection_index[derection][index][i]] != <span style="color:#0000ff;">0 </span><span style="color:#000080;"><strong>and </strong></span>list_data[derection_index[derection][index][i-<span style="color:#0000ff;">1</span>]] == <span style="color:#0000ff;">0</span>: <span style="color:#000080;"><strong>return </strong></span><span style="color:#000080;">True </span><span style="color:#000080;"> </span><span style="color:#000080;"><strong>return </strong></span><span style="color:#000080;">False </span><span style="color:#000080;"> </span><span style="color:#000080;"><strong>def </strong></span>DealSpace(derection, index): <span style="color:#000080;"><strong>for </strong></span>i <span style="color:#000080;"><strong>in </strong></span>[<span style="color:#0000ff;">3</span>,<span style="color:#0000ff;">2</span>,<span style="color:#0000ff;">1</span>]: <span style="color:#000080;"><strong>if </strong></span>list_data[derection_index[derection][index][i]] == <span style="color:#0000ff;">0</span>: <span style="color:#000080;"><strong>continue </strong></span><span style="color:#000080;"><strong> if </strong></span>list_data[derection_index[derection][index][i-<span style="color:#0000ff;">1</span>]] == <span style="color:#0000ff;">0</span>: j = i <span style="color:#000080;"><strong>while </strong></span>(j < <span style="color:#0000ff;">4</span>): list_data[derection_index[derection][index][j-<span style="color:#0000ff;">1</span>]] = list_data[derection_index[derection][index][j]] list_data[derection_index[derection][index][j]] = <span style="color:#0000ff;">0 </span><span style="color:#0000ff;"> </span>j=j+<span style="color:#0000ff;">1 </span><span style="color:#0000ff;"> </span><span style="color:#000080;"><strong>def </strong></span>DealEqualNum(derection, index): <span style="color:#000080;"><strong>for </strong></span>i <span style="color:#000080;"><strong>in </strong></span>[<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">1</span>,<span style="color:#0000ff;">2</span>]: <span style="color:#000080;"><strong>if </strong></span>list_data[derection_index[derection][index][i]] == list_data[derection_index[derection][index][i+<span style="color:#0000ff;">1</span>]]: list_data[derection_index[derection][index][i]] = list_data[derection_index[derection][index][i]] * <span style="color:#0000ff;">2 </span><span style="color:#0000ff;"> </span>list_data[derection_index[derection][index][i+<span style="color:#0000ff;">1</span>]] = <span style="color:#0000ff;">0 </span><span style="color:#0000ff;"> </span><span style="color:#000080;"><strong>def </strong></span>Move(derection, index): DealSpace(derection, index) DealEqualNum(derection, index) DealSpace(derection, index) <span style="color:#000080;"><strong>def </strong></span>Refresh(): <span style="color:#000080;"><strong>for </strong></span>i <span style="color:#000080;"><strong>in </strong></span><span style="color:#000080;">range</span>(<span style="color:#0000ff;">16</span>): B_list[i].configure(<span style="color:#660099;">bg</span>=dic_color[list_data[i]]) <span style="color:#000080;"><strong>if </strong></span>list_data[i] == <span style="color:#0000ff;">0</span>: str_data[i].set(<span style="color:#008000;"><strong>""</strong></span>) <span style="color:#000080;"><strong>continue </strong></span><span style="color:#000080;"><strong> </strong></span>str_data[i].set(<span style="color:#000080;">str</span>(list_data[i])) <span style="color:#000080;"><strong>def </strong></span>key_event(event): canmovelist = [] derection_code = <span style="color:#0000ff;">9 </span><span style="color:#0000ff;"> </span><span style="color:#000080;"><strong>global </strong></span>list_data <span style="color:#000080;"><strong>if </strong></span>event.keycode == <span style="color:#0000ff;">37</span>: derection_code = left <span style="color:#000080;"><strong>if </strong></span>event.keycode == <span style="color:#0000ff;">39</span>: derection_code = right <span style="color:#000080;"><strong>if </strong></span>event.keycode == <span style="color:#0000ff;">38</span>: derection_code = up <span style="color:#000080;"><strong>if </strong></span>event.keycode == <span style="color:#0000ff;">40</span>: derection_code = down <span style="color:#000080;"><strong>for </strong></span>i <span style="color:#000080;"><strong>in </strong></span><span style="color:#000080;">range</span>(<span style="color:#0000ff;">4</span>): <span style="color:#000080;"><strong>if </strong></span>CanMove(derection_code, i): Move(derection_code, i) canmovelist.append(i) <span style="color:#000080;"><strong>if </strong></span><span style="color:#000080;">len</span>(canmovelist) == <span style="color:#0000ff;">0</span>: <span style="color:#000080;"><strong>return </strong></span><span style="color:#000080;"><strong> </strong></span>list_data[derection_index[derection_code][canmovelist[random.randint(<span style="color:#0000ff;">0</span>,<span style="color:#000080;">len</span>(canmovelist)-<span style="color:#0000ff;">1</span>)]][<span style="color:#0000ff;">3</span>]] = <span style="color:#0000ff;">2 </span><span style="color:#0000ff;"> </span>Refresh() <span style="color:#000080;"><strong>for </strong></span>i_derection <span style="color:#000080;"><strong>in </strong></span><span style="color:#000080;">range</span>(<span style="color:#0000ff;">4</span>): <span style="color:#000080;"><strong>for </strong></span>i_index <span style="color:#000080;"><strong>in </strong></span><span style="color:#000080;">range</span>(<span style="color:#0000ff;">4</span>): <span style="color:#000080;"><strong>if </strong></span>CanMove(i_derection, i_index): <span style="color:#000080;"><strong>return </strong></span><span style="color:#000080;"><strong> </strong></span>tkMessageBox.showinfo(<span style="color:#008000;"><strong>'Game Over'</strong></span>,<span style="color:#008000;"><strong>'Your score is %u.</strong></span><span style="color:#000080;"><strong>\n</strong></span><span style="color:#008000;"><strong>' </strong></span>% <span style="color:#000080;">sum</span>(list_data)) list_data=[<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>,<span style="color:#0000ff;">0</span>] Refresh() frame2.bind(<span style="color:#008000;"><strong>'<KeyRelease>'</strong></span>, key_event) frame2.pack() frame2.focus_set() root.mainloop()
相关文章推荐
- C# 开发2048小游戏
- 【Winform开发2048小游戏】
- Python 2048小游戏
- [Python3] 2048小游戏
- python基础课题开发小游戏
- python开发_自己开发的一个小游戏
- Python开发接水果小游戏
- Python 2048 小游戏 ,但是人生不能儿戏,与君共勉
- Python新手实现2048小游戏
- Android 2048小游戏开发
- 用Python写一个无界面的2048小游戏
- python版2048小游戏
- iOS swift 2048小游戏开发教程(一)
- python模仿开发贪食蛇小游戏历程
- Python开发接水果小游戏
- python学习之开发小游戏---skier(滑雪的人)
- 用 python 写一个用命令行玩的 2048 小游戏
- 用python从0开始写2048小游戏
- Python 开发接豆人小游戏 TurnipBit
- 【python游戏编程之旅】第九篇---嗷大喵快跑小游戏开发实例