【天启教育M1开发板试用体验】贪吃蛇之二

描述

本文来源电子发烧友社区,作者:刘建华, 帖子地址:https://bbs.elecfans.com/jishu_2309301_1_1.html


在上一篇的基础之上,增加蛇头转向的功能。
1、按键检测函数,在检测到A按键时,按键标志+1.按键B检测到后按键-1.同时增加越界判断。有按键改变时,更新显示标志。代码如下:

def get_key():
  global state,move_state
  key_value1 = tqs1.key_get_status(2)
  if key_value1 == 0:
    move_state = move_state +1
    if move_state > 3:
      move_state = 0
    print("KeyB changed,move_state:" + str(move_state))
    state = True
  key_value2 = tqs1.key_get_status(1)
  if key_value2 == 0:
    move_state = move_state -1
    if move_state < 0:
      move_state = 3
    print("KeyA changed,move_state:" + str(move_state))
    state = True

2、行走函数。判断行走方向move_state标志,按标志进行xy轴的增加、减少。

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
    disp_List.append([x,y])
  elif move_state == 1:#向下运动
    tail = disp_List[-1]
    print(tail)
    x=tail[0]+1
    y=tail[1]
    if(x>5):
      x=0
    disp_List.append([x,y])
  elif move_state == 2:#向左运动
    tail = disp_List[-1]
    print(tail)
    x=tail[0]
    y=tail[1]-1
    if(y<0):
      y=6
    disp_List.append([x,y])
  elif move_state == 3:#向上运动
    tail = disp_List[-1]
    print(tail)
    x=tail[0]-1
    y=tail[1]
    if(x<0):
      x=5
    disp_List.append([x,y])
  del disp_List[0]
  for item in disp_List:
    myItem[item[0]][item[1]]=1

3、主函数。为了更快的响应按键与运动,加入了move_time这个标志,如果有按键的事件,就实时更新,如果没有就每500毫秒更新一次,当然这个标志,也可以在后面作为运行速度来进行调节。

while True:
  get_key()
  if state == True:
    move()
    disp_tq()
    os.sleep(0.1)
  else:
    time_state = time_state + 1
    if time_state == 5:
      move()
      disp_tq()
      time_state = 0
    os.sleep(0.1)

经过这一步就可以实现四个方向行走了。

【贪吃蛇3 视频演示】详见作者原贴子文章内容。

 

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分