本文來源電子發燒友社區,作者:李先生, 帖子地址: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瀏覽量
16154 -
開發板試用
+關注
關注
3文章
301瀏覽量
2135
發布評論請先 登錄
相關推薦
【ELF 2學習板試用】ELF2開發板開箱體驗及基本使用環境搭建
ELF2開發板(飛凌嵌入式)
開箱包裹內容
? ?打開包裝,你可以看到以下物品
一個綠聯的usb3.0讀卡器、sandisk的32g內存卡(
發表于 01-19 22:41
【飛凌嵌入式OK3588J-C開發板體驗】OK3588J-C開發板開箱評測
很高興收到飛凌嵌入式提供的OK3588J-C開發板,這是瑞芯微最新的8K旗艦8核SOC,非常適合用來做機器視覺,AI,語音識別,圖像處理。
下面來看看OK3588J-C開發板的開箱圖,
發表于 12-04 15:23
追加名額丨米爾瑞芯微RK3576開發板有獎試用
米爾與瑞芯微合作發布的新品基于瑞芯微RK3576應用處理器的MYD-LR3576開發板免費試用活動加碼啦~~米爾追加了2塊價值849元的MYD-LR3576開發板發起
RZ/G2L高速虛擬串口方案 基于瑞薩RZ/G2L SMARC開發板的虛擬(Virtual UART)實現方案
RZ/G2L具有豐富的外設,比如千兆以太網,CANFD以及豐富的UART接口,可以滿足工業數據收集處理相關的應用。本文主要介紹基于瑞薩RZ/G2L SMARC
發表于 11-20 14:41
?543次閱讀
飛凌全志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
?5次下載
評論