久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 835|回復: 2
打印 上一主題 下一主題
收起左側

esp32和8×8點陣寫貪吃蛇會有別的列一起點亮

[復制鏈接]
跳轉到指定樓層
樓主
ID:900875 發表于 2024-9-4 16:07 來自觸屏版 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
import machine
import time
import random
import _thread  # MicroPython 線程庫

# 定義點陣的行和列引腳
rows = [machine.Pin(i, machine.Pin.OUT) for i in [32, 33, 25, 26, 27, 14, 12, 13]]
cols = [machine.Pin(i, machine.Pin.OUT) for i in [19, 18, 5, 17, 16, 4, 2, 15]]

snake_body = []  # 初始化蛇身體
direction = ()  # 蛇的方向
food = ()  # 食物的位置
direction_lock = _thread.allocate_lock()

def create_food():
    """生成不與蛇重合的食物位置"""
    global food
    while True:
        # 隨機生成食物的位置
        food = (random.randint(0, 7), random.randint(0, 7))
        if food not in snake_body:
            break  # 找到不重合的位置,退出循環

def init_snake():
    """初始化蛇的位置和方向"""
    global snake_body, direction
    snake_body = [(3, 3), (3, 2), (3, 1)]  # 初始化蛇身體
    direction = (0, 1)  # 初始化食物方向
    create_food()  # 初始化食物

def set_pixel(x, y, state):
    """設置點陣某個像素的狀態"""
    rows[x].value(not state)
    cols[y].value(state)

def clear_display():
    print("clear")
    for i in range(8):
        for j in range(8):
            set_pixel(i, j, 0)

def draw_snake():
    """繪制蛇和食物"""
    for segment in snake_body:
        print(f"{segment}")
        set_pixel(segment[0], segment[1], 1)
   
def draw_food():
    """繪制蛇和食物"""
    set_pixel(1, 1, 1)
    print(f"{food}")



def change_direction(new_direction):
    global direction
    opposite_direction = (-direction[0], -direction[1])
    if new_direction != opposite_direction:
        with direction_lock:
            direction = new_direction

def snake_move():
    """移動蛇的位置"""
    global snake_body, food
    # 計算新位置
    new_head = (snake_body[0][0] + direction[0], snake_body[0][1] + direction[1])

    # 使用取模運算使蛇在碰到墻壁時從另一側出現
    new_head = (new_head[0] % 8, new_head[1] % 8)

    if new_head in snake_body:
        return False  # 撞到自己,游戲結束

    snake_body.insert(0, new_head)  # 更新蛇頭位置

    # 吃到食物
    if new_head == food:
        create_food()
    else:
        snake_body.pop()  # 如果沒有吃到食物,尾巴移動
    return True





if __name__ == "__main__":
    init_snake()
#     _thread.start_new_thread(key_scan, ()) # 創建線程
    while True:
        if not snake_move():
            break  # 游戲結束
        clear_display()
        draw_snake()
        draw_food()
        time.sleep_ms(500)


這是代碼,如果是整列從左到右或者從上到下進行點亮就沒問題,如果是用這個代碼進行單個循環點亮時就會有別的列一起點亮,是為什么呢
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:900875 發表于 2024-9-4 16:09 來自觸屏版 | 只看該作者
就像這樣

IMG_20240904_160838.jpg (330.98 KB, 下載次數: 5)

IMG_20240904_160838.jpg

IMG_20240904_160847.jpg (325.44 KB, 下載次數: 2)

IMG_20240904_160847.jpg
回復

使用道具 舉報

板凳
ID:469589 發表于 2024-9-6 12:02 | 只看該作者
顯示或循環處理速度過快,加點延時
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久精品亚洲 | 草草视频在线免费观看 | 91高清在线观看 | 91大神新作在线观看 | 亚洲福利 | 婷婷久久五月天 | 久久综合久色欧美综合狠狠 | 国产精品一区在线观看 | 永久免费视频 | 女同av亚洲女人天堂 | 日韩午夜网站 | 欧美日一区 | 黄色毛片一级 | 97av | 国产一区二区在线免费观看 | 亚洲精品福利视频 | 亚洲欧美在线视频 | 久国产视频 | 天天综合网天天综合色 | 国产精品久久在线观看 | 九色视频网 | 国产真实精品久久二三区 | 激情小视频 | 国产精品乱码一区二区三区 | 国产 欧美 日韩 一区 | 欧美影院 | 成人国产精品视频 | 亚洲一页| 国产精品久久久久无码av | 午夜影院在线观看免费 | 日韩在线精品强乱中文字幕 | 性色综合 | 欧美aaaaa| 亚洲精品黄色 | 亚洲视频免费观看 | 99re热精品视频 | 欧美男人天堂 | 91精品www | 亚洲欧美精品国产一级在线 | 免费艹逼视频 | 亚洲免费三级 |