deepseek

 #include <LedControl.h>


// 定義LED矩陣的接腳

#define DIN 12

#define CS 10

#define CLK 11


// 定義搖桿的接腳

#define JOYSTICK_X A0

#define JOYSTICK_Y A1

#define JOYSTICK_BUTTON 2


// 初始化LED矩陣

LedControl lc = LedControl(DIN, CLK, CS, 1);


// 遊戲變數

int paddlePos = 3;  // 板子的初始位置

int ballX = 3;      // 球的初始X位置

int ballY = 6;      // 球的初始Y位置

int ballDirX = 1;   // 球的X方向

int ballDirY = -1;  // 球的Y方向

bool gameOver = false;


void setup() {

  // 初始化LED矩陣

  lc.shutdown(0, false);

  lc.setIntensity(0, 8);

  lc.clearDisplay(0);


  // 初始化搖桿按鈕

  pinMode(JOYSTICK_BUTTON, INPUT_PULLUP);


  // 初始化隨機種子

  randomSeed(analogRead(0));

}


void loop() {

  if (!gameOver) {

    // 讀取搖桿的X軸值

    int joystickX = analogRead(JOYSTICK_X);


    // 根據搖桿的值移動板子

    if (joystickX < 400 && paddlePos > 0) {

      paddlePos--;

    } else if (joystickX > 600 && paddlePos < 6) {

      paddlePos++;

    }


    // 更新球的位置

    ballX += ballDirX;

    ballY += ballDirY;


    // 檢查球是否碰到邊界

    if (ballX <= 0 || ballX >= 7) {

      ballDirX *= -1;

    }

    if (ballY <= 0) {

      ballDirY *= -1;

    }


    // 檢查球是否碰到板子

    if (ballY == 7 && ballX >= paddlePos && ballX <= paddlePos + 2) {

      ballDirY *= -1;

    }


    // 檢查球是否掉到底部

    if (ballY >= 7) {

      gameOver = true;

    }


    // 清除LED矩陣

    lc.clearDisplay(0);


    // 繪製板子

    lc.setLed(0, 7, paddlePos, true);

    lc.setLed(0, 7, paddlePos + 1, true);

    lc.setLed(0, 7, paddlePos + 2, true);


    // 繪製球

    lc.setLed(0, ballY, ballX, true);


    // 延遲一段時間

    delay(200);

  } else {

    // 遊戲結束,顯示Game Over

    lc.clearDisplay(0);

    lc.setRow(0, 0, 0b00111100);

    lc.setRow(0, 1, 0b01000010);

    lc.setRow(0, 2, 0b10000001);

    lc.setRow(0, 3, 0b10000001);

    lc.setRow(0, 4, 0b01000010);

    lc.setRow(0, 5, 0b00111100);

    lc.setRow(0, 6, 0b00000000);

    lc.setRow(0, 7, 0b00000000);


    // 按下搖桿按鈕重新開始遊戲

    if (digitalRead(JOYSTICK_BUTTON) == LOW) {

      gameOver = false;

      paddlePos = 3;

      ballX = 3;

      ballY = 6;

      ballDirX = 1;

      ballDirY = -1;

      delay(500);  // 防抖動

    }

  }

}

留言