static void start(void) { setSingleClickHandler(PLAYER1_LEFT, move, LEFT_P1); setSingleClickHandler(PLAYER1_RIGHT, move, RIGHT_P1); setSingleClickHandler(PLAYER2_LEFT, move, LEFT_P2); setSingleClickHandler(PLAYER2_RIGHT, move, RIGHT_P2); setSingleClickHandler(MENU, menu, 0); byte s; for (s = 0; s < 2; s++) { byte i; for (i = 0; i < snake[s].length; i++) matrix.setLed(0, snake[s].body.y[i], snake[s].body.x[i], true); } matrix.setLed(0, apple.y, apple.x, apple.on); printLcd(3, 0, "Scores :"); printLcd(2, 1, snake[0].score); printLcd(7, 1, "--"); printLcd(13, 1, snake[1].score); delay(500); updateSnakesTimer = registerTimerEvent(options[SNAKE_MOVE_DELAY_O], updateSnakes, 0); blinkApple(0); blinkSecondSnake(0); }
static void blinkApple(byte data) { apple.on = !apple.on; matrix.setLed(0, apple.y, apple.x, apple.on); blinkAppleTimer = registerTimerEvent(100, blinkApple, 0); }
static void blinkSecondSnake(byte data) { secondSnakeOn = !secondSnakeOn; byte i; for (i = 0; i < snake[1].length; i++) matrix.setLed(0, snake[1].body.y[i], snake[1]. body.x[i], secondSnakeOn); blinkSecondSnakeTimer = registerTimerEvent(100, blinkSecondSnake, 0); }
static void start(void) { setSingleClickHandler(PLAYER1_LEFT, move, LEFT); setSingleClickHandler(PLAYER1_RIGHT, move, RIGHT); setSingleClickHandler(PLAYER2_LEFT, move, LEFT); setSingleClickHandler(PLAYER2_RIGHT, move, RIGHT); setSingleClickHandler(MENU, menu, 0); byte i; for (i = 0; i < snake.length; i++) matrix.setLed(0, snake.body.y[i], snake.body.x[i], true); matrix.setLed(0, apple.y, apple.x, apple.on); printLcd(3, 0, "Score :"); printLcd(11, 0, snake.length - 3); delay(500); updateSnakeTimer = registerTimerEvent(options[SNAKE_MOVE_DELAY_O], updateSnake, 0); blinkAppleTimer = registerTimerEvent(100, blinkApple, 0); }
int Setup() { initWindow("Clock", DEFAULT, DEFAULT, 300, 300); registerTimerEvent(timerEvent); startTimer(0, 1000); //startTimer(0,100); //startTimer(0,10); //startTimer(0,1); return 0; }
static void updateSnakes(byte data) { byte s; for (s = 0; s < 2; s++) { matrix.setLed(0, snake[s].body.y[snake[s].length - 1], snake[s].body.x[snake[s].length - 1], false); byte i; for (i = snake[s].length - 1; i > 0; i--) { snake[s].body.x[i] = snake[s].body.x[i - 1]; snake[s].body.y[i] = snake[s].body.y[i - 1]; } snake[s].body.x[0] += snake[s].xDir; snake[s].body.y[0] += snake[s].yDir; if (snake[s].body.x[0] == 8 || snake[s].body.y[0] == 8 || snake[s].body.x[0] == 0xFF || snake[s].body.y[0] == 0xFF) { gameOver(s); return; } // Colisions check byte s2; for (s2 = 0; s2 < 2; s2++) { for (i = (s2 == s) ? 4 : 1; i < snake[s2].length; i++) { if (snake[s].body.x[0] == snake[s2].body.x[i] && snake[s].body.y[0] == snake[s2].body.y[i]) { gameOver(s); return; } } } matrix.setLed(0, snake[s].body.y[0], snake[s].body.x[0], true); if (snake[s].body.x[0] == apple.x && snake[s].body.y[0] == apple.y) { printLcd((s == 0) ? 2 : 13, 1, ++snake[s].length - 3); generateApple(); } snake[s].hasTurned = false; } if (snake[0].body.x[0] == snake[1].body.x[0] && snake[0].body.y[0] == snake[1].body.y[0]) // Collision head to head gameOver(2); updateSnakesTimer = registerTimerEvent(options[SNAKE_MOVE_DELAY_O], updateSnakes, 0); }
static void updateSnake(byte data) { matrix.setLed(0, snake.body.y[snake.length - 1], snake.body.x[snake.length - 1], false); byte i; for (i = snake.length - 1; i > 0; i--) { snake.body.x[i] = snake.body.x[i - 1]; snake.body.y[i] = snake.body.y[i - 1]; } snake.body.x[0] += snake.xDir; snake.body.y[0] += snake.yDir; if (snake.body.x[0] == 8 || snake.body.y[0] == 8 || snake.body.x[0] == 0xFF || snake.body.y[0] == 0xFF) { gameOver(); return; } for (i = 4; i < snake.length; i++) { if (snake.body.x[0] == snake.body.x[i] && snake.body.y[0] == snake.body.y[i]) { gameOver(); return; } } matrix.setLed(0, snake.body.y[0], snake.body.x[0], true); if (snake.body.x[0] == apple.x && snake.body.y[0] == apple.y) { printLcd(11, 0, ++snake.length - 3); generateApple(); } snake.hasTurned = false; updateSnakeTimer = registerTimerEvent(options[SNAKE_MOVE_DELAY_O], updateSnake, 0); }