本文來源電子發(fā)燒友社區(qū),作者:劉建華, 帖子地址:https://bbs.elecfans.com/jishu_2309223_1_1.html
【目的】LED陣列實(shí)現(xiàn)一個(gè)貪吃蛇的游戲
【設(shè)計(jì)思路】
1、用兩個(gè)按鍵來按制兩個(gè)方向,方向標(biāo)志為全局變量move_state。當(dāng)按鍵A、B按下時(shí),改變LED燈陳列的過行方向。
2、蛇體用LED燈條來展示。LED按隨機(jī)產(chǎn)生的方向進(jìn)行運(yùn)動(dòng)。
3、隨機(jī)產(chǎn)生食物。如果食物在蛇體之上,再生成一次。
4、成功吃到蛇體時(shí),LED燈條增長(zhǎng)一個(gè)單位。
5、如果蛇體到了屏外,則游戲結(jié)束。
【顯示模塊】
1、創(chuàng)建二維數(shù)據(jù),用于控制顯示的緩存:myItem =[[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]]
2、刷新顯示函數(shù):
def disp_tq():
global state,myItem
state = False
mystr =[]
for j in range(0,6):
strit = ''.join(str(i) for i in myItem[j])
mystr.append(strit)
print(mystr)
value = ','.join(mystr)
tqmain.matri_strfill_display(value)
【LED燈帶行走】
1、創(chuàng)建一個(gè)顯示LED的列表disp_List = [[0,0],[0,1],[0,2]]。
2、行走實(shí)現(xiàn),第一步先獲取最后一個(gè)LED燈的坐標(biāo)即disp_list[0],將他熜滅。
3、獲取最前面的一個(gè)LED燈坐標(biāo)即disp_list[-1],根據(jù)方向,進(jìn)行x或y坐標(biāo)增減,然后再將新的坐標(biāo)append到dsip_list里面。
4、將最后面的坐標(biāo)從列表中去除即del disp_list[0]
這期只是實(shí)現(xiàn)固定LED燈的行走,LED燈從左上角向右行走,到頭后從第二行開頭繼續(xù)行走。
整體程序如下:
import os
import tqs1
import tqmain
#value= '1000000,1000000,1000000,1000000,1000000,1000000'
#mylist =[0x08,0x08,0x08,0x08,0x08,0x08]
myItem =[[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]]
#tqmain.serial_write_line("start")
state = True
disp_List = [[0,0],[0,1],[0,2]]
move_state = 0
def disp_tq():
global state,myItem
state = False
mystr =[]
for j in range(0,6):
strit = ''.join(str(i) for i in myItem[j])
mystr.append(strit)
print(mystr)
value = ','.join(mystr)
tqmain.matri_strfill_display(value)
def get_key():
global state
key_value1 = tqs1.key_get_status(2)
if key_value1 == 0:
print("KeyB changed")
state = True
key_value2 = tqs1.key_get_status(1)
if key_value2 == 0:
print("KeyA changed")
state = True
def move():
global move_state,myItem,disp_List
#先把同最前一個(gè)滅了
fisrt = disp_List[0]
myItem[fisrt[0]][fisrt[1]]=0
if move_state == 0:
tail = disp_List[-1]
print(tail)
x=tail[0]
y=tail[1]+1
if(y>6):
y=0
x = x+1
if x>5:
x=0
disp_List.append([x,y])
del disp_List[0]
for item in disp_List:
myItem[item[0]][item[1]]=1
while True:
get_key()
move()
disp_tq()
os.sleep(0.5)
-
開發(fā)板試用
+關(guān)注
關(guān)注
3文章
301瀏覽量
2116
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論