| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- from PikaObj import *
- import PikaStdLib
- import machine
- pin = machine.GPIO()
- pin.setPin('PA0')
- pin.setMode('in')
- pin.setPull('down')
- pin.enable()
- pin.setPin('PA15')
- pin.setMode('in')
- pin.setPull('up')
- pin.enable()
- pin.setPin('PC13')
- pin.enable()
- pin.setPin('PB6')
- pin.enable()
- remove('pin')
- ll = machine.lowLevel()
- oled = machine.OLED()
- oled.init()
- snake = machine.Point()
- snake.x = 7
- snake.y = 4
- snake_lengh = 0
- while snake_lengh < 3:
- body = snake
- i = 0
- while i < snake_lengh:
- body = body.next
- i = i + 1
- body.next = machine.Point()
- body.next.x = body.x - 1
- body.next.y = body.y
- body.next.prev = body
- snake_lengh = snake_lengh + 1
- fruit = machine.Point()
- fruit.x = 13
- fruit.y = 2
- mem = PikaStdLib.MemChecker()
- print('mem used max:')
- mem.max()
- direction = 0
- isUpdate = 1
- while True:
- if isUpdate:
- isUpdate = 0
- if fruit.x == snake.x:
- if fruit.y == snake.y:
- body = snake
- i = 0
- while i < snake_lengh:
- body = body.next
- i = i + 1
- body.next = machine.Point()
- body.next.prev = body
- snake_lengh = snake_lengh + 1
- fruit.x = fruit.x + 3
- if fruit.x > 15:
- fruit.x = fruit.x - 15
- fruit.y = fruit.y + 3
- if fruit.y > 7:
- fruit.y = fruit.y - 7
- body = snake
- i = 0
- while i < snake_lengh:
- body = body.next
- i = i + 1
- i = 0
- while i < snake_lengh:
- body = body.prev
- body.next.x = body.x
- body.next.y = body.y
- i = i + 1
- if direction == 0:
- snake.x = snake.x + 1
- if snake.x > 15:
- snake.x = 0
- if direction == 1:
- snake.x = snake.x - 1
- if snake.x < 0:
- snake.x = 15
- if direction == 2:
- snake.y = snake.y - 1
- if snake.y < 0:
- snake.y = 7
- if direction == 3:
- snake.y = snake.y + 1
- if snake.y > 7:
- snake.y = 0
- body = snake
- i = 0
- oled.clear()
- oled.drawPoint(fruit.x, fruit.y)
- while i < snake_lengh:
- oled.drawPoint(body.x, body.y)
- body = body.next
- i = i + 1
- oled.refresh()
- if ll.readPin('PA0') == 1:
- direction = 0
- isUpdate = 1
- if ll.readPin('PC13') == 0:
- direction = 1
- isUpdate = 1
- if ll.readPin('PA15') == 0:
- direction = 2
- isUpdate = 1
- if ll.readPin('PB6') == 0:
- direction = 3
- isUpdate = 1
|