您的位置:首页 > 编程语言 > Python开发

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()


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 2048