【目的】LED阵列实现一个贪吃蛇的游戏
【设计思路】
1、用两个按键来按制两个方向,方向标志为全局变量move_state。当按键A、B按下时,改变LED灯陈列的过行方向。
2、蛇体用LED灯条来展示。LED按随机产生的方向进行运动。
3、随机产生食物。如果食物在蛇体之上,再生成一次。
4、成功吃到蛇体时,LED灯条增长一个单位。
5、如果蛇体到了屏外,则游戏结束。
【显示模块】
1、创建二维数据,用于控制显示的缓存: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、刷新显示函数:
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、创建一个显示LED的列表disp_List = [[0,0],[0,1],[0,2]]。
2、行走实现,第一步先获取最后一个LED灯的坐标即disp_list[0],将他熜灭。
3、获取最前面的一个LED灯坐标即disp_list[-1],根据方向,进行x或y坐标增减,然后再将新的坐标append到dsip_list里面。
4、将最后面的坐标从列表中去除即del disp_list[0]
这期只是实现固定LED灯的行走,LED灯从左上角向右行走,到头后从第二行开头继续行走。
整体程序如下:
import os
import tqs1
import tqmain
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]]
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
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)