0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

开发板试用精选 来源:开发板试用 作者:电子发烧友论坛 2022-10-11 16:05 次阅读
本文来源电子发烧友社区,作者:李先生, 帖子地址: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. #!/usr/bin/python2
  3. import random
  4. import os, sys
  5. v = [[0, 0, 0, 0],
  6. [0, 0, 0, 0],
  7. [0, 0, 0, 0],
  8. [0, 0, 0, 0]]
  9. def display(v, score):
  10. print ("%4d %4d %4d %4d" % (v[0][0], v[0][1], v[0][2], v[0][3]))
  11. print ("%4d %4d %4d %4d" % (v[1][0], v[1][1], v[1][2], v[1][3]))
  12. print ("%4d %4d %4d %4d" % (v[2][0], v[2][1], v[2][2], v[2][3]))
  13. print ("%4d %4d %4d %4d" % (v[3][0], v[3][1], v[3][2], v[3][3]))
  14. print ("Total score: %d" % score)
  15. def init(v):
  16. for i in range(4):
  17. v[i] = [random.choice([0, 0, 0, 2, 2, 4]) for x in range(4)]
  18. def align(vList, direction):
  19. for i in range(vList.count(0)):
  20. vList.remove(0)
  21. zeros = [0 for x in range(4 - len(vList))]
  22. if direction == 'left':
  23. vList.extend(zeros)
  24. else:
  25. vList[:0] = zeros
  26. def addSame(vList, direction):
  27. score = 0
  28. if direction == 'left':
  29. for i in [0, 1, 2]:
  30. align(vList, direction)
  31. if vList[i] == vList[i+1] != 0:
  32. vList[i] *= 2
  33. vList[i+1] = 0
  34. score += vList[i]
  35. return {'bool':True, 'score':score}
  36. else:
  37. for i in [3, 2, 1]:
  38. align(vList, direction)
  39. if vList[i] == vList[i-1] != 0:
  40. vList[i] *= 2
  41. vList[i-1] = 0
  42. score += vList[i]
  43. return {'bool':True, 'score':score}
  44. return {'bool':False, 'score':score}
  45. def handle(vList, direction):
  46. totalScore = 0
  47. align(vList, direction)
  48. result = addSame(vList, direction)
  49. while result['bool'] == True:
  50. totalScore += result['score']
  51. align(vList, direction)
  52. result = addSame(vList, direction)
  53. return totalScore
  54. def operation(v):
  55. totalScore = 0
  56. gameOver = False
  57. direction = 'left'
  58. op = raw_input ('operator:')
  59. if op in ['a','A']:
  60. direction = 'left'
  61. for row in range(4):
  62. totalScore += handle(v[row], direction)
  63. elif op in ['d','D']:
  64. direction = 'right'
  65. for row in range(4):
  66. totalScore += handle(v[row], direction)
  67. elif op in ['w', 'W']:
  68. direction = 'left'
  69. for col in range(4):
  70. vList = [v[row][col] for row in range(4)]
  71. totalScore += handle(vList, direction)
  72. for row in range(4):
  73. v[row][col] = vList[row]
  74. elif op in ['s', 'S']:
  75. direction = 'right'
  76. for col in range(4):
  77. vList = [v[row][col] for row in range(4)]
  78. totalScore += handle(vList, direction)
  79. for row in range(4):
  80. v[row][col] = vList[row]
  81. else:
  82. print ("Invalid raw_input ,please enter a charactor in [W,S,A,D] or the lower")
  83. gameOver = True
  84. return {'gameOver':gameOver,'score':totalScore}
  85. N = 0
  86. for q in v:
  87. N += q.count(0)
  88. if N == 0:
  89. gameOver = True
  90. return {'gameover':gameOver,'score':totalScore}
  91. num = random.choice([2,2,2,4])
  92. k = random.randrange(1, N+1)
  93. n = 0
  94. for i in range(4):
  95. for j in range(4):
  96. if v[i][j] == 0:
  97. n += 1
  98. if n == k:
  99. v[i][j] = num
  100. break
  101. return {'gameOver':gameOver, 'score':totalScore}
  102. init(v)
  103. score = 0
  104. print ("raw_input :W(Up) S(Down) A(Left) D(Right), press.")
  105. while True:
  106. os.system("clear")
  107. display(v, score)
  108. result = operation(v)
  109. print (result)
  110. if result['gameOver'] == True:
  111. print ("Game Over, You failed!")
  112. print ("Your total score %d" % (score))
  113. sys.exit(1)
  114. else:
  115. score += result['score']
  116. if score >= 2048:
  117. print ("Game Over, You Win!!!")
  118. print ("Your total score: %d" % (score))
  119. sys.exit(0)
复制代码


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

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

    关注

    25

    文章

    5210

    浏览量

    99117
  • 灵眸
    +关注

    关注

    0

    文章

    19

    浏览量

    3239
收藏 人收藏

    评论

    相关推荐

    如何安装模拟器玩nes小游戏-基于米尔瑞芯微RK3576开发

    本篇源自:优秀创作者 小手凉凉本文将介绍基于米尔电子MYD-LR3576开发板(米尔基于瑞芯微 RK3576开发板)的安装模拟器玩nes小游戏方案测试。 核心板系统 操作系统镜像文件说明
    发表于 02-08 12:10

    NVIDIA发布小巧高性价比的Jetson Orin Nano Super开发套件

    NVIDIA近期推出了一款全新的生成式AI超级计算机——Jetson Orin Nano Super开发套件。这款开发套件以其小巧的尺寸
    的头像 发表于 12-19 11:28 750次阅读

    FPGA打砖块小游戏设计思路

    HDL, Vivado 平台上开发打砖块小游戏并使用 PS2 与 VGA 的基本思路: 一、整体架构设计 1. 输入模块: • PS2 接口模块:负责与 PS2 设备(如游戏手柄)进行通信,接收手柄
    的头像 发表于 12-09 16:57 427次阅读

    【星闪派物联网开发套件体验连载】+环境监测

    如下图所示: WS63控制板如下图所示: 套件和WS63E控制板如下图所示: 各个模块都是常见的模块,在此不一一介绍了。 开发环境搭建 开发
    发表于 10-09 22:27

    【星闪派物联网开发套件体验连载】智能交通灯

    感谢电子发烧友,感谢润和软件,提供星闪派物联网开发套件试用。 本次试用计划: 用星闪派物联网开发套件,先实现本地交通灯项目,接入WiFi连上云端,本地红绿灯状态上传云端,云端显示,云端
    发表于 10-05 13:00

    SemiDrive X9 AI 开发环境搭建

    SemiDrivex9AI开发环境搭建分开发机端,开发板端。主要的工具是SDNN,它是一个基于开源编译器框架TVM的端到端的AI编译器框架,
    的头像 发表于 08-03 08:27 530次阅读
    SemiDrive X9 AI <b class='flag-5'>开发</b><b class='flag-5'>环境</b>搭建

    [文章] 【xG24 Matter开发套件试用体验】点亮一个LED

    Silicon Labs xG24 Matter LED 灯试用体验报告 一、测试环境与设备 测试环境: 实验室环境,具备稳定的电源和网络连接。 测试设备: Silicon Labs
    发表于 07-26 15:12

    【xG24 Matter开发套件试用体验】开发环境搭建和开发流程体验

    EFR32xG24 Explorer Kit 开发套件的主芯片是EFR32MG24 无线 SoC,支持Zigbee,BLE,专有2.4G等多种协议。 datasheet和EFR32xG24
    发表于 07-19 23:22

    【xG24 Matter开发套件试用体验】2-开发环境搭建

    /simplicity-studio-5-users-guide/latest/ss-5-users-guide-overview/) 2安装 IDE 按照用户指南先将xG24 Matter开发套件通过USB接口连接PC机 在设备管理器中可以看到一个黄色
    发表于 07-17 13:00

    【xG24 Matter开发套件试用体验】1-基本情况介绍

    参加[Silicon Labs xG24 Matter开发套件免费试用]活动,拿到了期待的EFR32xG24 Explorer 开发套件(一个基于 EFR32MG24 片上系统的小封装开发
    发表于 07-17 12:39

    【xG24 Matter开发套件试用体验】+开机启动

    xG24 Matter开发套件试用体验: 1.EFR32xG24 Explorer 套件是一个基于 EFR32MG24 片上系统的小封装开发和评估平台。EFR32xG24 Explor
    发表于 07-11 14:05

    JH-7110 RISC-V开发套件正式开源

    近日,赛昉科技在RVspace生态社区正式开源昉·惊鸿-7110(JH-7110)DevKit开发套件,同时提供其原理图和PCB参考设计源文件,旨在为客户提供全面的RISC-V芯片平台
    的头像 发表于 06-15 08:19 731次阅读
    JH-7110 RISC-V<b class='flag-5'>开发套件</b>正式<b class='flag-5'>开源</b>

    英特尔开发套件『哪吒』在Java环境实现ADAS道路识别演示 | 开发者实战

    本文使用来自OpenModelZoo的预训练的road-segmentation-adas-0001模型。ADAS代表高级驾驶辅助服务。该模型识别四个类别:背景、道路、路缘和标记。硬件环境此文使用了英特尔开发套件家族里的『哪吒』(Nezha)
    的头像 发表于 04-29 08:07 767次阅读
    英特尔<b class='flag-5'>开发套件</b>『哪吒』在Java<b class='flag-5'>环境</b>实现ADAS道路识别演示 | <b class='flag-5'>开发</b>者实战

    【LicheeRV-Nano开发套件试用体验】基础开发环境

    一、开发环境分类 注意,虽然是开发程序,但是这块处理器涉及到TPU,且官方的基本环境以及教程没出完,导致这块处理器的开发SDK其实是分化的。
    发表于 03-18 00:12

    开放原子开源大赛—基于OpenHarmony的团结引擎应用开发赛正式启动!

    “基于OpenHarmony的团结引擎应用开发赛”是开放原子全球开源大赛下开设的新兴及应用赛的赛题之一,本次赛题旨在鼓励更多开发者基于OpenHarmony 4.x版本,使用Unity中国团结引擎
    发表于 03-13 10:45