5392|31

96

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

贪吃蛇 for esp32(是时候表演真正的技术了) [复制链接]

 
 
效果图:





  1. import random
  2. import machine
  3. from machine import Pin,I2C,ADC
  4. import ssd1306
  5. from time import sleep
  6. import framebuf


  7. i2c = I2C(scl=Pin(18), sda=Pin(19), freq=900000)
  8. oled = ssd1306.SSD1306_I2C(128,64, i2c)
  9. oled.poweron()
  10. oled.init_display()
  11. oled.fill(0)
  12. oled.show()

  13. w=8
  14. h=8
  15. st=8

  16. base_x=20
  17. base_y=20
  18. snoke=[[10,10],[20,10],[30,10]]
  19. by="right"
  20. oled.fill(0)
  21. oled.fill_rect(snoke[0][0],snoke[0][1],w,h,1)
  22. oled.fill_rect(snoke[1][0],snoke[1][1],w,h,1)
  23. oled.fill_rect(snoke[2][0],snoke[2][1],w,h,1)
  24. oled.show()
  25.   
  26. def suiji():
  27.   global base_x
  28.   global base_y
  29.   base_x = random.randint(10,100)
  30.   base_y = random.randint(10,50)

  31. def base():
  32.   oled.fill_rect(base_x,base_y,w,h,1)
  33. def check():

  34.   if (abs(base_x-snoke[0][0]))<=2 and (abs(base_y-snoke[0][1]))<=2:
  35.     if by=="up":
  36.       new=[snoke[-1][0],snoke[-1][1]+st]
  37.       snoke.append(new)
  38.       suiji()
  39.     if by=="down":
  40.         new=[snoke[-1][0],snoke[-1][1]-st]
  41.         snoke.append(new)
  42.         suiji()
  43.     if by=="left":
  44.         new=[snoke[-1][0]+st,snoke[-1][1]]
  45.         snoke.append(new)
  46.         suiji()
  47.     if by=="right":
  48.         new=[snoke[-1][0]-st,snoke[-1][1]]
  49.         snoke.append(new)
  50.         suiji()
  51. def right():
  52.   global snoke
  53.   oled.fill(0)
  54.   base()
  55.   new=[snoke[0][0]+st,snoke[0][1]]
  56.   snoke.insert(0,new)
  57.   snoke.pop()
  58.   for x in range(len(snoke)):
  59.     oled.fill_rect(snoke[x][0],snoke[x][1],w,h,1)
  60.   oled.show()
  61.   
  62. def up():
  63.   global snoke
  64.   oled.fill(0)
  65.   base()
  66.   new=[snoke[0][0],snoke[0][1]-st]
  67.   snoke.insert(0,new)
  68.   snoke.pop()
  69.   for x in range(len(snoke)):
  70.     oled.fill_rect(snoke[x][0],snoke[x][1],w,h,1)
  71.   oled.show()
  72.    
  73.   
  74.   
  75. def down():
  76.   global snoke
  77.   oled.fill(0)
  78.   base()
  79.   new=[snoke[0][0],snoke[0][1]+st]
  80.   snoke.insert(0,new)
  81.   snoke.pop()
  82.   for x in range(len(snoke)):
  83.     oled.fill_rect(snoke[x][0],snoke[x][1],w,h,1)
  84.   oled.show()
  85. def left():
  86.   global snoke
  87.   oled.fill(0)
  88.   base()
  89.   new=[snoke[0][0]-st,snoke[0][1]]
  90.   snoke.insert(0,new)
  91.   snoke.pop()
  92.   for x in range(len(snoke)):
  93.     oled.fill_rect(snoke[x][0],snoke[x][1],w,h,1)
  94.   oled.show()  

  95. a1=ADC(Pin(35))
  96. a2=ADC(Pin(34))
  97.   
  98. def test():
  99.   global by
  100.   x=a1.read()
  101.   y=a2.read()
  102.   if x==0:
  103.     by="left"
  104.   elif x==4095:
  105.     by="right"
  106.   elif y==0:
  107.     by="up"
  108.   elif y==4095:
  109.     by="down"


  110. while 1:
  111.   check()
  112.   test()
  113.   if by=="right":
  114.     right()
  115.   elif by=="left":
  116.     left()
  117.   elif by=="up":
  118.     up()
  119.   elif by=="down":
  120.     down()
  121.   sleep(0.5)
  122.   print('snoke:%s,%s' %(snoke[0][0],snoke[0][1]))
  123.   print('base:%s,%s' %(base_x,base_y))

复制代码



此内容由EEWORLD论坛网友youxinweizhi原创,如需转载或用于商业用途需征得作者同意并注明出处


最新回复

強   详情 回复 发表于 2019-10-21 07:58

赞赏

1

查看全部赞赏

点赞 关注(2)
 
 

回复
举报

103

帖子

3

TA的资源

一粒金砂(中级)

沙发
 
观摩一下
 
 
 

回复

1368

帖子

6

TA的资源

版主

板凳
 
火速围观
个人签名专注智能产品的研究与开发,专注于电子电路的生产与制造……QQ:2912615383,电子爱好者群: void
 
 
 

回复

1

帖子

2

TA的资源

一粒金砂(初级)

4
 
看一眼
 
 
 

回复

17

帖子

0

TA的资源

一粒金砂(中级)

5
 
好奇好奇
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

6
 
learn。。。。。
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(初级)

7
 
观摩
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

8
 
猜一下
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

9
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

10
 
很强大哦                                    
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

11
 
看看大神作品
 
 
 

回复

616

帖子

0

TA的资源

版主

12
 
,隐藏的难道不是源码~~
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

13
 
还可以这样玩!
 
 
 

回复

29

帖子

0

TA的资源

一粒金砂(中级)

14
 
围观
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(中级)

15
 

好奇

 
 
 

回复

16

帖子

0

TA的资源

一粒金砂(中级)

16
 
看看代码学习 学习
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(中级)

17
 
非常像看看
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

18
 

厉害厉害,这技术666

 
 
 

回复

291

帖子

0

TA的资源

一粒金砂(高级)

19
 

能分享一下代码学习一下吗?

 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

20
 

是真正的技术吗

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表