【EASY EAI Nano开源套件试用体验】开发环境之Python2048小游戏

描述

本文来源电子发烧友社区,作者:李先生, 帖子地址:https://bbs.elecfans.com/jishu_2308793_1_1.html


前言
开发板具备Python运行环境,这对于一些轻量开发可以直接在开发板上进行脚本开发,这就十分方便。 python --version可以看到版本是2.7.16
 
[root@EASY-EAI-NANO:/]# python --version
Python 2.7.16

过程
直接SSH或者串口登录,
导入2048.py或者
直接vi编辑


  1. # -*- coding:UTF-8 -*-
  2.  
  3. #!/usr/bin/python2
  4.  
  5. import random
  6.  
  7. import os, sys
  8.  
  9. v = [[0, 0, 0, 0],
  10.  
  11.  
  12.  
  13.      [0, 0, 0, 0],
  14.  
  15.  
  16.  
  17.      [0, 0, 0, 0],
  18.  
  19.  
  20.  
  21.      [0, 0, 0, 0]]
  22.  
  23. def display(v, score):
  24.  
  25.     print ("%4d %4d %4d %4d"    %   (v[0][0], v[0][1], v[0][2], v[0][3]))
  26.  
  27.     print ("%4d %4d %4d %4d"    %   (v[1][0], v[1][1], v[1][2], v[1][3]))
  28.  
  29.     print ("%4d %4d %4d %4d"    %   (v[2][0], v[2][1], v[2][2], v[2][3]))
  30.  
  31.     print ("%4d %4d %4d %4d"    %   (v[3][0], v[3][1], v[3][2], v[3][3]))
  32.  
  33.     print ("Total score: %d" % score)
  34.  
  35.  
  36.  
  37. def init(v):
  38.  
  39.     for i in range(4):
  40.  
  41.         v[i] = [random.choice([0, 0, 0, 2, 2, 4]) for x in range(4)]
  42.  
  43.  
  44.  
  45. def align(vList, direction):
  46.  
  47.     for i in range(vList.count(0)):
  48.  
  49.         vList.remove(0)
  50.  
  51.     zeros = [0 for x in range(4 - len(vList))]
  52.  
  53.     if direction == 'left':
  54.  
  55.         vList.extend(zeros)
  56.  
  57.     else:
  58.  
  59.         vList[:0] = zeros
  60.  
  61.  
  62.  
  63. def addSame(vList, direction):
  64.  
  65.     score = 0
  66.  
  67.     if direction == 'left':
  68.  
  69.         for i in [0, 1, 2]:
  70.  
  71.             align(vList, direction)
  72.  
  73.             if vList[i] == vList[i+1] != 0:
  74.  
  75.                 vList[i] *= 2
  76.  
  77.                 vList[i+1] = 0
  78.  
  79.                 score += vList[i]
  80.  
  81.                 return {'bool':True, 'score':score}
  82.  
  83.  
  84.  
  85.     else:
  86.  
  87.         for i in [3, 2, 1]:
  88.  
  89.             align(vList, direction)
  90.  
  91.             if vList[i] == vList[i-1] != 0:
  92.  
  93.                 vList[i] *= 2
  94.  
  95.                 vList[i-1] = 0
  96.  
  97.                 score += vList[i]
  98.  
  99.                 return {'bool':True, 'score':score}
  100.  
  101.     return {'bool':False, 'score':score}
  102.  
  103.  
  104.  
  105. def handle(vList, direction):
  106.  
  107.     totalScore = 0
  108.  
  109.     align(vList, direction)
  110.  
  111.     result = addSame(vList, direction)
  112.  
  113.     while result['bool'] == True:
  114.  
  115.         totalScore += result['score']
  116.  
  117.         align(vList, direction)
  118.  
  119.         result = addSame(vList, direction)
  120.  
  121.     return totalScore
  122.  
  123.  
  124.  
  125. def operation(v):
  126.  
  127.     totalScore = 0
  128.  
  129.     gameOver = False
  130.  
  131.     direction = 'left'
  132.  
  133.     op = raw_input ('operator:')
  134.  
  135.     if op in ['a','A']:
  136.  
  137.         direction = 'left'
  138.  
  139.         for row in range(4):
  140.  
  141.             totalScore += handle(v[row], direction)
  142.  
  143.     elif op in ['d','D']:
  144.  
  145.         direction = 'right'
  146.  
  147.         for row in range(4):
  148.  
  149.             totalScore += handle(v[row], direction)
  150.  
  151.     elif op in ['w', 'W']:
  152.  
  153.         direction = 'left'
  154.  
  155.         for col in range(4):
  156.  
  157.             vList = [v[row][col] for row in range(4)]
  158.  
  159.             totalScore += handle(vList, direction)
  160.  
  161.             for row in range(4):
  162.  
  163.                 v[row][col] = vList[row]
  164.  
  165.     elif op in ['s', 'S']:
  166.  
  167.         direction = 'right'
  168.  
  169.         for col in range(4):
  170.  
  171.             vList = [v[row][col] for row in range(4)]
  172.  
  173.             totalScore += handle(vList, direction)
  174.  
  175.             for row in range(4):
  176.  
  177.                 v[row][col] = vList[row]
  178.  
  179.     else:
  180.  
  181.         print ("Invalid raw_input ,please enter a charactor in [W,S,A,D] or the lower")
  182.  
  183.         gameOver = True
  184.  
  185.         return {'gameOver':gameOver,'score':totalScore}
  186.  
  187.     N = 0
  188.  
  189.     for q in v:
  190.  
  191.         N += q.count(0)
  192.  
  193.     if N == 0:
  194.  
  195.         gameOver = True
  196.  
  197.         return {'gameover':gameOver,'score':totalScore}
  198.  
  199.     num = random.choice([2,2,2,4])
  200.  
  201.     k = random.randrange(1, N+1)
  202.  
  203.     n = 0
  204.  
  205.  
  206.  
  207.     for i in range(4):
  208.  
  209.         for j in range(4):
  210.  
  211.             if v[i][j] == 0:
  212.  
  213.                 n += 1
  214.  
  215.                 if n == k:
  216.  
  217.                     v[i][j] = num
  218.  
  219.                     break
  220.  
  221.     return {'gameOver':gameOver, 'score':totalScore}
  222.  
  223.  
  224.  
  225. init(v)
  226.  
  227. score = 0
  228.  
  229. print ("raw_input :W(Up) S(Down) A(Left) D(Right), press .")
  230.  
  231.  
  232.  
  233. while True:
  234.  
  235.     os.system("clear")
  236.  
  237.     display(v, score)
  238.  
  239.     result = operation(v)
  240.  
  241.     print (result)
  242.  
  243.     if result['gameOver'] == True:
  244.  
  245.         print ("Game Over, You failed!")
  246.  
  247.         print ("Your total score %d" % (score))
  248.  
  249.         sys.exit(1)
  250.  
  251.     else:
  252.  
  253.         score += result['score']
  254.  
  255.         if score >= 2048:
  256.  
  257.             print ("Game Over, You Win!!!")
  258.  
  259.             print ("Your total score: %d" % (score))
  260.  
  261.             sys.exit(0)
复制代码


 
添加可执行权限
chmod +x 2048.py
 
运行

python 2048.py
 
分别用wsad控制上下左右移动
灵眸
 
 
总结
开发板提供了Python环境,直接开发板上进行Python开发十分便捷,这对一些轻量开发场景时非常方便。
 
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分