本文来源电子发烧友社区,作者:李先生, 帖子地址: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回车分别对应上下左右。
总结
以一个小的程序体验下python开发的便捷,开发板支持的python版本也比较新Python3.8.2,能较好满足开发需求。
                        声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
                        举报投诉
                    
                    - 
                                飞凌
                                +关注
关注
0文章
134浏览量
16112 - 
                                开发板试用
                                +关注
关注
3文章
301浏览量
2095 
发布评论请先 登录
相关推荐
飞凌嵌入式受邀亮相瑞萨2024工业威廉希尔官方网站 研讨会
飞凌嵌入式作为瑞萨电子的生态合作伙伴,给2024瑞萨电子MCU/MPU工业威廉希尔官方网站
研讨会的现场观众带去了基于RZ/G2L高性能多核异构处理器设计开发
    
    
                    
    
RZ/G2L高速虚拟串口方案 基于瑞萨RZ/G2L SMARC开发板的虚拟(Virtual UART)实现方案
RZ/G2L具有丰富的外设,比如千兆以太网,CANFD以及丰富的UART接口,可以满足工业数据收集处理相关的应用。本文主要介绍基于瑞萨RZ/G2L SMARC
    
                发表于 11-20 14:41        
        •361次阅读            
    
                    
    
飞凌全志T527开发板buildroot系统下扩大rootfs分区
一、实验环境介绍
硬件:飞凌T527开发板(2G+16G)
软件:全志Tina sdk
二、查看当前存储分布
登入
    
                发表于 07-18 14:45        
                    
    
RZ/G2L Demo调试经验流程分享(1)
r01us0553ej0107-rz-g(Release Note).pdf,r01us0556ej0102-rz-g(Board_StartUp_Guide_smarcEVK).pdf,对SMARC EVK of RZ/
    
    
                    
    
【米尔-瑞萨RZ/G2UL开发板】1.开箱
【米尔-瑞萨RZ/G2UL开发板】1.开箱
开箱视频
开箱也许会迟到,但是绝对不会缺席。今天开箱的是米尔-瑞萨 RZ/G2UL 
    
                发表于 02-04 23:38        
                    
    
RZ/G2L、RZ/G2LC和RZ/G2UL的SMARC EVK启动指南Rev.1.01
电子发烧友网站提供《RZ/G2L、RZ/G2LC和RZ/G2UL的SMARC EVK启动指南Re
    
                发表于 02-02 09:45        
                •1次下载    
    
                    
    
米尔RZ/G2L开发板瑞米派双核A55Remi Pi学习板兼容树莓派扩展模块
RemiPi瑞萨第一款MPU生态板卡兼容树莓派扩展模块瑞萨RZ/G2L工业级处理器,便于企业客户产品开发;RemiPi兼容树莓派所有配件,方便产品原型搭建和创新应用;更多的工业接口,兼顾开发
    
                发表于 01-29 17:05        
                •4次下载    
    
RZ/G2L RZ/G2LC RZ/G2UL用灵活的软件包设置GPIO
电子发烧友网站提供《RZ/G2L RZ/G2LC RZ/G2UL用灵活的软件包设置GPIO.pd
    
                发表于 01-14 10:53        
                •0次下载    
    
                    
    
威廉希尔官方网站 帖 | 飞凌嵌入式T113-i开发板的休眠及唤醒操作
飞凌嵌入式OK113i-S开发板支持两种休眠方式:freeze和mem。本篇内容小编会为大家介绍如何让飞凌嵌入式OK113i-S
    
    
                    
    
          
        
        
【飞凌RZ/G2L开发板试用体验】开发环境体验之python开发2048小游戏
 
    
    
    
           
            
            
                
            
评论