米尔MYC-YT507开发板测评:开发环境篇之二:Python 2048小游戏
本帖最后由 qinyunti 于 2022-7-25 22:54 编辑<h1>abbe4452cb7b1a7827b6aa19d9c31e0c<br />
</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> </p>
<p>import random</p>
<p>import os, sys</p>
<p> </p>
<p> </p>
<p>v = [,</p>
<p> ,</p>
<p> ,</p>
<p> ]</p>
<p> </p>
<p>def display(v, score):</p>
<p> print "%4d %4d %4d %4d" % (v, v, v, v)</p>
<p> print "%4d %4d %4d %4d" % (v, v, v, v)</p>
<p> print "%4d %4d %4d %4d" % (v, v, v, v)</p>
<p> print "%4d %4d %4d %4d" % (v, v, v, v)</p>
<p> print "Total score: %d" % score</p>
<p> </p>
<p>def init(v):</p>
<p> for i in range(4):</p>
<p> v<i> = ) for x in range(4)]</i></p>
<p><i> </i></p>
<p><i>def align(vList, direction):</i></p>
<p><i> for i in range(vList.count(0)):</i></p>
<p><i> vList.remove(0)</i></p>
<p><i> zeros = </i></p>
<p><i> if direction == 'left':</i></p>
<p><i> vList.extend(zeros)</i></p>
<p><i> else:</i></p>
<p><i> vList[:0] = zeros</i></p>
<p><i> </i></p>
<p><i>def addSame(vList, direction):</i></p>
<p><i> score = 0</i></p>
<p><i> if direction == 'left':</i></p>
<p><i> for i in :</i></p>
<p><i> align(vList, direction)</i></p>
<p><i> if vList<i> == vList != 0:</i></i></p>
<p><i><i> vList<i> *= 2</i></i></i></p>
<p><i><i><i> vList = 0</i></i></i></p>
<p><i><i><i> score += vList</i></i></i></p>
<p><i><i><i><i> return {'bool':True, 'score':score}</i></i></i></i></p>
<p><i><i><i><i> else:</i></i></i></i></p>
<p><i><i><i><i> for i in :</i></i></i></i></p>
<p><i><i><i><i> align(vList, direction)</i></i></i></i></p>
<p><i><i><i><i> if vList<i> == vList != 0:</i></i></i></i></i></p>
<p><i><i><i><i><i> vList<i> *= 2</i></i></i></i></i></i></p>
<p><i><i><i><i><i><i> vList = 0</i></i></i></i></i></i></p>
<p><i><i><i><i><i><i> score += vList</i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> return {'bool':True, 'score':score}</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> return {'bool':False, 'score':score}</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> </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> totalScore = 0</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> align(vList, direction)</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> result = addSame(vList, direction)</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> while result['bool'] == True:</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> totalScore += result['score']</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> align(vList, direction)</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> result = addSame(vList, direction)</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> return totalScore</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> </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> totalScore = 0</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> gameOver = False</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> direction = 'left'</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> op = raw_input('operator:')</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> if op in ['a','A']:</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> direction = 'left'</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> for row in range(4):</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> totalScore += handle(v, direction)</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> elif op in ['d','D']:</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> direction = 'right'</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> for row in range(4):</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> totalScore += handle(v, direction)</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> elif op in ['w', 'W']:</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> direction = 'left'</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> for col in range(4):</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> vList = for row in range(4)]</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> totalScore += handle(vList, direction)</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> for row in range(4):</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> v = vList</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> elif op in ['s', 'S']:</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> direction = 'right'</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> for col in range(4):</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> vList = for row in range(4)]</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> totalScore += handle(vList, direction)</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> for row in range(4):</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> v = vList</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> else:</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> print "Invalid input,please enter a charactor in or the lower"</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> gameOver = True</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> return {'gameOver':gameOver,'score':totalScore}</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> </i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> N = 0</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> for q in v:</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> N += q.count(0)</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> </i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> if N == 0:</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> gameOver = True</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> return {'gameover':gameOver,'score':totalScore}</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> </i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> num = random.choice()</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> k = random.randrange(1, N+1)</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> n = 0</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> </i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> for i in range(4):</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> for j in range(4):</i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i> if v<i> == 0:</i></i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i><i> n += 1</i></i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i><i> if n == k:</i></i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i><i> v<i> = num</i></i></i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i><i><i> break </i></i></i></i></i></i></i></i></i></p>
<p><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> return {'gameOver':gameOver, 'score':totalScore}</i></i></i></i></i></i></i></i></i></p>
<p><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> </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 "Input:W(Up) S(Down) A(Left) D(Right), press <CR>."</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> os.system("clear")</i></i></i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i><i><i> display(v, score)</i></i></i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i><i><i> result = operation(v)</i></i></i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i><i><i> print result</i></i></i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i><i><i> if result['gameOver'] == True:</i></i></i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i><i><i> print "Game Over, You failed!"</i></i></i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i><i><i> print "Your total score %d" % (score)</i></i></i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i><i><i> sys.exit(1)</i></i></i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i><i><i> else:</i></i></i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i><i><i> score += result['score']</i></i></i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i><i><i> if score >= 2048:</i></i></i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i><i><i> print "Game Over, You Win!!!"</i></i></i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i><i><i> print "Your total score: %d" % (score)</i></i></i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i><i><i> 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>
</i></i></i></i></i></i></i></i></i></pre>
</div>
<p><i><i><i><i><i><i><i><i><i> </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> </i></i></i></i></i></i></i></i></i> </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> </i></i></i></i></i></i></i></i></i></p>
<p><i><i><i><i><i><i><i><i><i> </i></i></i></i></i></i></i></i></i></p>
我那安装好了tkinter环境了。可以支持的。但是pyqt、pyinside2没搞定。 lugl4313820 发表于 2022-7-24 16:16
我那安装好了tkinter环境了。可以支持的。但是pyqt、pyinside2没搞定。
<p>我也尝试了下手动安装,setup时提示hashlib有点问题,暂时没解决。可以分享学习下,有界面的话演示效果好点。</p>
页:
[1]