qinyunti 发表于 2022-7-24 13:50

米尔MYC-YT507开发板测评:开发环境篇之二:Python 2048小游戏

本帖最后由 qinyunti 于 2022-7-25 22:54 编辑

<h1>abbe4452cb7b1a7827b6aa19d9c31e0c<br />
&nbsp;</h1>

<h1><b>前言</b></h1>

<p>本开发板官方镜像带python2.7环境,可以使用python进行开发。支持python等脚本开发的话对应于很多轻量级开发场景会非常快速便捷,所以我们也简单测试下使用python 编写2048小游戏进行测试。</p>

<p><b>准备</b></p>

<p>参考《米尔MYC-YT507开发板测评:开发环境篇之一:Linux C按键控制LED》安装交叉编译环境。</p>

<p>以及基本的登录文件传输等操作。</p>

<p><b>2048小游戏</b></p>

<p>代码2048.py</p>

<p># -*- coding:UTF-8 -*-</p>

<p>#!/usr/bin/python2</p>

<p>&nbsp;</p>

<p>import random</p>

<p>import os, sys</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>v = [,</p>

<p>&nbsp; &nbsp; &nbsp;,</p>

<p>&nbsp; &nbsp; &nbsp;,</p>

<p>&nbsp; &nbsp; &nbsp;]</p>

<p>&nbsp;</p>

<p>def display(v, score):</p>

<p>&nbsp; &nbsp; print &quot;%4d &nbsp;%4d %4d %4d&quot; &nbsp; &nbsp;% &nbsp; (v, v, v, v)</p>

<p>&nbsp; &nbsp; print &quot;%4d &nbsp;%4d %4d %4d&quot; &nbsp; &nbsp;% &nbsp; (v, v, v, v)</p>

<p>&nbsp; &nbsp; print &quot;%4d &nbsp;%4d %4d %4d&quot; &nbsp; &nbsp;% &nbsp; (v, v, v, v)</p>

<p>&nbsp; &nbsp; print &quot;%4d &nbsp;%4d %4d %4d&quot; &nbsp; &nbsp;% &nbsp; (v, v, v, v)</p>

<p>&nbsp; &nbsp; print &quot;Total score: %d&quot; % score</p>

<p>&nbsp;</p>

<p>def init(v):</p>

<p>&nbsp; &nbsp; for i in range(4):</p>

<p>&nbsp; &nbsp; &nbsp; &nbsp; v<i> = ) for x in range(4)]</i></p>

<p><i>&nbsp;</i></p>

<p><i>def align(vList, direction):</i></p>

<p><i>&nbsp; &nbsp; for i in range(vList.count(0)):</i></p>

<p><i>&nbsp; &nbsp; &nbsp; &nbsp; vList.remove(0)</i></p>

<p><i>&nbsp; &nbsp; zeros = </i></p>

<p><i>&nbsp; &nbsp; if direction == &#39;left&#39;:</i></p>

<p><i>&nbsp; &nbsp; &nbsp; &nbsp; vList.extend(zeros)</i></p>

<p><i>&nbsp; &nbsp; else:</i></p>

<p><i>&nbsp; &nbsp; &nbsp; &nbsp; vList[:0] = zeros</i></p>

<p><i>&nbsp;</i></p>

<p><i>def addSame(vList, direction):</i></p>

<p><i>&nbsp; &nbsp; score = 0</i></p>

<p><i>&nbsp; &nbsp; if direction == &#39;left&#39;:</i></p>

<p><i>&nbsp; &nbsp; &nbsp; &nbsp; for i in :</i></p>

<p><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; align(vList, direction)</i></p>

<p><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if vList<i> == vList != 0:</i></i></p>

<p><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; vList<i> *= 2</i></i></i></p>

<p><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; vList = 0</i></i></i></p>

<p><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; score += vList</i></i></i></p>

<p><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return {&#39;bool&#39;:True, &#39;score&#39;:score}</i></i></i></i></p>

<p><i><i><i><i>&nbsp; &nbsp; else:</i></i></i></i></p>

<p><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; for i in :</i></i></i></i></p>

<p><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; align(vList, direction)</i></i></i></i></p>

<p><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if vList<i> == vList != 0:</i></i></i></i></i></p>

<p><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; vList<i> *= 2</i></i></i></i></i></i></p>

<p><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; vList = 0</i></i></i></i></i></i></p>

<p><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; score += vList</i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return {&#39;bool&#39;:True, &#39;score&#39;:score}</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; return {&#39;bool&#39;:False, &#39;score&#39;:score}</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp;</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>def handle(vList, direction):</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; totalScore = 0</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; align(vList, direction)</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; result = addSame(vList, direction)</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; while result[&#39;bool&#39;] == True:</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; totalScore += result[&#39;score&#39;]</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; align(vList, direction)</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; result = addSame(vList, direction)</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; return totalScore</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp;</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>def operation(v):</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; totalScore = 0</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; gameOver = False</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; direction = &#39;left&#39;</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; op = raw_input(&#39;operator:&#39;)</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; if op in [&#39;a&#39;,&#39;A&#39;]:</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; direction = &#39;left&#39;</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; for row in range(4):</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; totalScore += handle(v, direction)</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; elif op in [&#39;d&#39;,&#39;D&#39;]:</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; direction = &#39;right&#39;</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; for row in range(4):</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; totalScore += handle(v, direction)</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; elif op in [&#39;w&#39;, &#39;W&#39;]:</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; direction = &#39;left&#39;</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; for col in range(4):</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; vList = for row in range(4)]</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; totalScore += handle(vList, direction)</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for row in range(4):</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; v = vList</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; elif op in [&#39;s&#39;, &#39;S&#39;]:</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; direction = &#39;right&#39;</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; for col in range(4):</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; vList = for row in range(4)]</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; totalScore += handle(vList, direction)</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for row in range(4):</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; v = vList</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; else:</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; print &quot;Invalid input,please enter a charactor in or the lower&quot;</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; gameOver = True</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; return {&#39;gameOver&#39;:gameOver,&#39;score&#39;:totalScore}</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp;</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; N = 0</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; for q in v:</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; N += q.count(0)</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp;</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; if N == 0:</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; gameOver = True</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; return {&#39;gameover&#39;:gameOver,&#39;score&#39;:totalScore}</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp;</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; num = random.choice()</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; k = random.randrange(1, N+1)</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; n = 0</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp;</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; for i in range(4):</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; for j in range(4):</i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if v<i> == 0:</i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; n += 1</i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if n == k:</i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; v<i> = num</i></i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</i></i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i><i>&nbsp;</i></i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i><i>&nbsp; &nbsp; return {&#39;gameOver&#39;:gameOver, &#39;score&#39;:totalScore}</i></i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i><i>&nbsp; &nbsp;</i></i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i><i>&nbsp;</i></i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i><i>init(v)</i></i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i><i>score = 0</i></i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i><i>print &quot;Input:W(Up) S(Down) A(Left) D(Right), press &lt;CR&gt;.&quot;</i></i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i><i>while True:</i></i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i><i>&nbsp; &nbsp; os.system(&quot;clear&quot;)</i></i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i><i>&nbsp; &nbsp; display(v, score)</i></i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i><i>&nbsp; &nbsp; result = operation(v)</i></i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i><i>&nbsp; &nbsp; print result</i></i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i><i>&nbsp; &nbsp; if result[&#39;gameOver&#39;] == True:</i></i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; print &quot;Game Over, You failed!&quot;</i></i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; print &quot;Your total score %d&quot; % (score)</i></i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; sys.exit(1)</i></i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i><i>&nbsp; &nbsp; else:</i></i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; score += result[&#39;score&#39;]</i></i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; if score &gt;= 2048:</i></i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print &quot;Game Over, You Win!!!&quot;</i></i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print &quot;Your total score: %d&quot; % (score)</i></i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i><i>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sys.exit(0)</i></i></i></i></i></i></i></i></i></p>

<div class="parsedown-markdown">
<pre style="background:#555; padding:10px; color:#ddd !important;">
<i><i><i><i><i><i><i><i><i>

&nbsp;</i></i></i></i></i></i></i></i></i></pre>
</div>

<p><i><i><i><i><i><i><i><i><i>&nbsp;</i></i></i></i></i></i></i></i></i></p>

<p style=""><i><i><i><i><i><i><i><i><i><i><i><i><i><i><i><i><i><i>按键w,s,a,d回车分别对应上下左右。</i></i></i></i></i></i></i></i></i></i></i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i><i>&nbsp;</i></i></i></i></i></i></i></i></i> &nbsp;</p>

<h1 style=""><i><i><i><i><i><i><i><i><i><i><i><i><i><i><i><i><i><i><b>总结</b></i></i></i></i></i></i></i></i></i></i></i></i></i></i></i></i></i></i></h1>

<p style=""><i><i><i><i><i><i><i><i><i><i><i><i><i><i><i><i><i><i>支持python轻量开发很方便,如果能支持pip安装库,支持tkinter等图形界面开发的画会更加方便。</i></i></i></i></i></i></i></i></i></i></i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i><i>&nbsp;</i></i></i></i></i></i></i></i></i></p>

<p><i><i><i><i><i><i><i><i><i>&nbsp;</i></i></i></i></i></i></i></i></i></p>

lugl4313820 发表于 2022-7-24 16:16

我那安装好了tkinter环境了。可以支持的。但是pyqt、pyinside2没搞定。

qinyunti 发表于 2022-7-24 21:55

lugl4313820 发表于 2022-7-24 16:16
我那安装好了tkinter环境了。可以支持的。但是pyqt、pyinside2没搞定。

<p>我也尝试了下手动安装,setup时提示hashlib有点问题,暂时没解决。可以分享学习下,有界面的话演示效果好点。</p>
页: [1]
查看完整版本: 米尔MYC-YT507开发板测评:开发环境篇之二:Python 2048小游戏