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

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

3天内不再提示

【飞凌RZ/G2L开发板试用体验】开发环境体验之python开发2048小游戏

开发板试用精选 来源:开发板试用 作者:电子发烧友论坛 2022-10-24 17:44 次阅读

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


Python开发环境体验:2048游戏

前言

查看开发板部署了Python3.8.2的环境,可以使用python进行开发。支持python等脚本开发的话对应于很多轻量级开发场景会非常快速便捷,所以我们也简单测试下使用python 编写2048小游戏进行测试。

root@okg2l:~# python3 --version

Python 3.8.2

root@okg2l:~#

准备

参考https://bbs.elecfans.com/jishu_2299841_1_1.html开发环境搭建

基本的登录文件传输等操作。

2048小游戏代码

vi 2048.py

按键i进入编辑模式

复制黏贴如下代码

# -*- coding:UTF-8 -*-
#!/usr/bin/python2

import random
import os, sys


v = [[0, 0, 0, 0],
     [0, 0, 0, 0],
     [0, 0, 0, 0],
     [0, 0, 0, 0]]

def display(v, score):
	print ("%4d	%4d	%4d	%4d"	%	(v[0][0], v[0][1], v[0][2], v[0][3]))
	print ("%4d	%4d	%4d	%4d"	%	(v[1][0], v[1][1], v[1][2], v[1][3]))
	print ("%4d	%4d	%4d	%4d"	%	(v[2][0], v[2][1], v[2][2], v[2][3]))
	print ("%4d	%4d	%4d	%4d"	%	(v[3][0], v[3][1], v[3][2], v[3][3]))
	print ("Total score: %d" % score)

def init(v):
	for i in range(4):
		v[i] = [random.choice([0, 0, 0, 2, 2, 4]) for x in range(4)]

def align(vList, direction):
	for i in range(vList.count(0)):
		vList.remove(0)
	zeros = [0 for x in range(4 - len(vList))]
	if direction == 'left':
		vList.extend(zeros)
	else:
		vList[:0] = zeros

def addSame(vList, direction):
	score = 0
	if direction == 'left':
		for i in [0, 1, 2]:
			align(vList, direction)
			if vList[i] == vList[i+1] != 0:
				vList[i] *= 2
				vList[i+1] = 0
				score += vList[i]
				return {'bool':True, 'score':score}
	else:
		for i in [3, 2, 1]:
			align(vList, direction)
			if vList[i] == vList[i-1] != 0:
				vList[i] *= 2
				vList[i-1] = 0
				score += vList[i]
				return {'bool':True, 'score':score}
	return {'bool':False, 'score':score}

def handle(vList, direction):
	totalScore = 0
	align(vList, direction)
	result = addSame(vList, direction)
	while result['bool'] == True:
		totalScore += result['score']
		align(vList, direction)
		result = addSame(vList, direction)
	return totalScore

def operation(v):
	totalScore = 0
	gameOver = False
	direction = 'left'
	op = input('operator:')
	if op in ['a','A']:
		direction = 'left'
		for row in range(4):
			totalScore += handle(v[row], direction)
	elif op in ['d','D']:
		direction = 'right'
		for row in range(4):
			totalScore += handle(v[row], direction)
	elif op in ['w', 'W']:
		direction = 'left'
		for col in range(4):
			vList = [v[row][col] for row in range(4)]
			totalScore += handle(vList, direction)
			for row in range(4):
				v[row][col] = vList[row]
	elif op in ['s', 'S']:
		direction = 'right'
		for col in range(4):
			vList = [v[row][col] for row in range(4)]
			totalScore += handle(vList, direction)
			for row in range(4):
				v[row][col] = vList[row]
	else:
		print ("Invalid input,please enter a charactor in [W,S,A,D] or the lower")
		gameOver = True
		return {'gameOver':gameOver,'score':totalScore}

	N = 0
	for q in v:
		N += q.count(0)

	if N == 0:
		gameOver = True
		return {'gameover':gameOver,'score':totalScore}

	num = random.choice([2,2,2,4])
	k = random.randrange(1, N+1)
	n = 0

	for i in range(4):
		for j in range(4):
			if v[i][j] == 0:
				n += 1
				if n == k:
					v[i][j] = num
					break

	return {'gameOver':gameOver, 'score':totalScore}


init(v)
score = 0
print ("Input:W(Up) S(Down) A(Left) D(Right), press .")
while True:
	os.system("clear")
	display(v, score)
	result = operation(v)
	print (result)
	if result['gameOver'] == True:
		print ("Game Over, You failed!")
		print ("Your total score %d" % (score))
		sys.exit(1)
	else:
		score += result['score']
		if score >= 2048:
			print ("Game Over, You Win!!!")
			print ("Your total score: %d" % (score))
			sys.exit(0)


按esc按键

按键shift+:进入命令模式

输入wq!保存

运行

python3 2048.py

按键w,s,a,d回车分别对应上下左右。
image.png

总结

以一个小的程序体验下python开发的便捷,开发板支持的python版本也比较新Python3.8.2,能较好满足开发需求。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 飞凌
    +关注

    关注

    0

    文章

    132

    浏览量

    16003
  • 开发板试用
    +关注

    关注

    3

    文章

    299

    浏览量

    1963
收藏 人收藏

    评论

    相关推荐

    米尔RZ/G2L开发板瑞米派双核A55Remi Pi学习兼容树莓派扩展模块

    RemiPi瑞萨第一款MPU生态板卡兼容树莓派扩展模块瑞萨RZ/G2L工业级处理器,便于企业客户产品开发;RemiPi兼容树莓派所有配件,方便产品原型搭建和创新应用;更多的工业接口,兼顾开发
    发表于 01-29 17:05 3次下载

    瑞萨RZ/G2L串口SCI的使用(上)

    瑞萨RZ/G2L的串口简称SCI,全称Serial Communication Interface。
    的头像 发表于 01-17 12:19 888次阅读
    瑞萨<b class='flag-5'>RZ</b>/<b class='flag-5'>G2L</b>串口SCI的使用(上)

    【米尔-瑞萨RZ/G2UL开发板开发板开箱与接口介绍

    开发板简介 MYC-YG2UL核心开发板基于RZ/G2UL处理器,通用64位工业MPU
    发表于 01-14 13:25

    RZ/G2L RZ/G2LC RZ/G2UL RZ/G3S灵活软件包应用说明

    电子发烧友网站提供《RZ/G2L RZ/G2LC RZ/G2UL
    发表于 01-14 10:46 1次下载
    <b class='flag-5'>RZ</b>/<b class='flag-5'>G2L</b> <b class='flag-5'>RZ</b>/<b class='flag-5'>G2</b>LC <b class='flag-5'>RZ</b>/<b class='flag-5'>G2</b>UL <b class='flag-5'>RZ</b>/<b class='flag-5'>G</b>3S灵活软件包应用说明

    OK113i-S开发板试用】软件开发环境搭建

    OK113i-S开发板试用】软件开发环境搭建
    发表于 12-25 12:06

    RZ/G2L开发板使用指南(上)

    如果需要评估RZ/G2L产品的各项功能,RZ/G2L评估是最合适的平台。
    的头像 发表于 11-03 12:19 687次阅读
    <b class='flag-5'>RZ</b>/<b class='flag-5'>G2L</b><b class='flag-5'>开发板</b>使用指南(上)

    【中科微CSM32RV003绿色开发板免费体验】1.上手

    控制四自由度机械臂(开源)原创首发 【米尔瑞萨RZ/G2L开发板-创新应用】4(原创)四自由度机械臂游戏开源的项目 谢谢!
    发表于 10-09 23:21

    AM6254开发板试用】 4-机器视觉(原创)

    /jishu_2374537_1_1.html 【AM6254开发板试用】+2机器视觉环境
    发表于 09-12 22:57

    AM6254开发板试用】+2机器视觉环境搭建(原创)

    嵌入式技术有限公司技术人员 罗志生 周末从8:23开始从0搭建AM6254开发板Python的视觉识别系统的环境,和实验需要安装的库和
    发表于 09-02 19:13

    RZ-G2L 技术贴|psplash自定义开机画面

    psplash自定义开机画面:以下方法基于瑞萨RZ/G2L系列HD-G2L-IOT开发板测试.
    的头像 发表于 08-28 16:04 509次阅读
    <b class='flag-5'>RZ-G2L</b> 技术贴|psplash自定义开机画面

    【OKMX6ULL-C 开发板】创建开发环境+helloworld

    本章描述了OK6ULL开发板环境
    的头像 发表于 08-27 01:19 1138次阅读
    【OKMX6ULL-C <b class='flag-5'>开发板</b>】创建<b class='flag-5'>开发</b><b class='flag-5'>环境</b>+helloworld

    米尔基于瑞萨RZ/G2L开发板在工控领域的应用-基于SOEM的EtherCAT主站

    本文介绍【米尔MYD-YG2LX开发板】在工控领域的应用,实现基于SOEM的EtherCAT主站。开发环境基于WSL2
    的头像 发表于 08-24 18:57 613次阅读
    米尔基于瑞萨<b class='flag-5'>RZ</b>/<b class='flag-5'>G2L</b><b class='flag-5'>开发板</b>在工控领域的应用-基于SOEM的EtherCAT主站

    i.MX9352开发板试用】+机械臂游戏3—游戏源代码(开源)原创

    相应的数字选择(【i.MX9352开发板试用】+机械臂游戏2
    发表于 08-11 00:07

    【米尔瑞萨RZ/G2L开发板-试用体验】认识一下米尔瑞萨RZ/G2L开发板的核心

    收到米尔瑞萨RZ/G2L开发板后一直对米尔旗下开发板的做工感到非常精致,同时也有着很强大的功能,也一直很喜欢米尔系列开发板。 引领工业市场从
    发表于 07-29 00:21

    i.MX9352开发板试用】+机械臂游戏3—游戏源代码(开源)原创首发

    i.MX9352开发板试用】+机械臂游戏 3游戏操纵杆控制四自由度机械臂(开源)原创首发
    的头像 发表于 07-26 11:28 803次阅读