Feld gedreht
This commit is contained in:
parent
a88eab9ee5
commit
85e5857a15
6 changed files with 58 additions and 47 deletions
|
@ -3,5 +3,8 @@
|
||||||
// for the documentation about the extensions.json format
|
// for the documentation about the extensions.json format
|
||||||
"recommendations": [
|
"recommendations": [
|
||||||
"platformio.platformio-ide"
|
"platformio.platformio-ide"
|
||||||
|
],
|
||||||
|
"unwantedRecommendations": [
|
||||||
|
"ms-vscode.cpptools-extension-pack"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,8 +9,7 @@
|
||||||
; https://docs.platformio.org/page/projectconf.html
|
; https://docs.platformio.org/page/projectconf.html
|
||||||
|
|
||||||
[env:nanoatmega328new]
|
[env:nanoatmega328new]
|
||||||
platform = atmelavr
|
board = esp32dev
|
||||||
board = nanoatmega328
|
|
||||||
framework = arduino
|
framework = arduino
|
||||||
lib_deps =
|
lib_deps =
|
||||||
adafruit/Adafruit NeoMatrix@^1.2.0
|
adafruit/Adafruit NeoMatrix@^1.2.0
|
||||||
|
|
|
@ -33,8 +33,8 @@ Example sketch for driving Adafruit WS2801 pixels!
|
||||||
// Can be any valid output pins.
|
// Can be any valid output pins.
|
||||||
// The colors of the wires may be totally different so
|
// The colors of the wires may be totally different so
|
||||||
// BE SURE TO CHECK YOUR PIXELS TO SEE WHICH WIRES TO USE!
|
// BE SURE TO CHECK YOUR PIXELS TO SEE WHICH WIRES TO USE!
|
||||||
uint8_t dataPin = 6; // Yellow wire on Adafruit Pixels
|
uint8_t dataPin = 2; // Yellow wire on Adafruit Pixels
|
||||||
uint8_t clockPin = 3; // Green wire on Adafruit Pixels
|
uint8_t clockPin = 4; // Green wire on Adafruit Pixels
|
||||||
|
|
||||||
// Don't forget to connect the ground wire to Arduino ground,
|
// Don't forget to connect the ground wire to Arduino ground,
|
||||||
// and the +5V wire to a +5V supply
|
// and the +5V wire to a +5V supply
|
||||||
|
|
3
VSCode/Pong/.vscode/extensions.json
vendored
3
VSCode/Pong/.vscode/extensions.json
vendored
|
@ -3,5 +3,8 @@
|
||||||
// for the documentation about the extensions.json format
|
// for the documentation about the extensions.json format
|
||||||
"recommendations": [
|
"recommendations": [
|
||||||
"platformio.platformio-ide"
|
"platformio.platformio-ide"
|
||||||
|
],
|
||||||
|
"unwantedRecommendations": [
|
||||||
|
"ms-vscode.cpptools-extension-pack"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,9 +9,10 @@
|
||||||
; https://docs.platformio.org/page/projectconf.html
|
; https://docs.platformio.org/page/projectconf.html
|
||||||
|
|
||||||
[env:uno]
|
[env:uno]
|
||||||
platform = atmelavr
|
board = esp32dev
|
||||||
board = nanoatmega328
|
|
||||||
framework = arduino
|
framework = arduino
|
||||||
lib_deps =
|
lib_deps =
|
||||||
adafruit/Adafruit NeoPixel@^1.10.4
|
adafruit/Adafruit NeoPixel@^1.10.4
|
||||||
adafruit/Adafruit WS2801 Library@^1.1.1
|
adafruit/Adafruit WS2801 Library@^1.1.1
|
||||||
|
lbernstone/Tone32@^1.0.0
|
||||||
|
platform = espressif32
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#include <Adafruit_WS2801.h>
|
#include <Adafruit_WS2801.h>
|
||||||
|
#include <Tone32.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Player 1: x = 0
|
* Player 1: x = 0
|
||||||
|
@ -7,14 +8,16 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define PIN_LED_MATRIX 2
|
#define PIN_LED_MATRIX 2
|
||||||
#define PIN_JOYSTICK_1_BUTTON 6
|
#define PIN_JOYSTICK_1_BUTTON 12
|
||||||
#define PIN_JOYSTICK_2_BUTTON 7
|
#define PIN_JOYSTICK_2_BUTTON 26
|
||||||
#define PIN_PIEZO 11
|
#define PIN_PIEZO 17
|
||||||
#define PIN_JOYSTICK_1_Y A0
|
#define PIN_JOYSTICK_1_Y 13
|
||||||
#define PIN_JOYSTICK_2_Y A1
|
#define PIN_JOYSTICK_2_Y 27
|
||||||
|
#define PIN_JOYSTICK_1_X 14
|
||||||
|
#define PIN_JOYSTICK_2_X 25
|
||||||
|
|
||||||
#define JOYSTICK_OFFSET_MIN 200
|
#define JOYSTICK_OFFSET_MIN 200
|
||||||
#define JOYSTICK_OFFSET_MAX 700
|
#define JOYSTICK_OFFSET_MAX 3500
|
||||||
|
|
||||||
#define DEBOUNCE_TIME 300 // in ms
|
#define DEBOUNCE_TIME 300 // in ms
|
||||||
|
|
||||||
|
@ -50,8 +53,8 @@
|
||||||
#define GAME_STATE_INIT 3
|
#define GAME_STATE_INIT 3
|
||||||
#include <Adafruit_NeoPixel.h>
|
#include <Adafruit_NeoPixel.h>
|
||||||
|
|
||||||
uint8_t dataPin = 6;
|
uint8_t dataPin = 2;
|
||||||
uint8_t clockPin = 3;
|
uint8_t clockPin = 4;
|
||||||
|
|
||||||
struct Coords {
|
struct Coords {
|
||||||
byte x;
|
byte x;
|
||||||
|
@ -123,7 +126,9 @@ void setup()
|
||||||
pinMode(PIN_JOYSTICK_2_BUTTON, INPUT_PULLUP);
|
pinMode(PIN_JOYSTICK_2_BUTTON, INPUT_PULLUP);
|
||||||
pixels.begin();
|
pixels.begin();
|
||||||
resetLEDs();
|
resetLEDs();
|
||||||
|
|
||||||
gameState = GAME_STATE_END;
|
gameState = GAME_STATE_END;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop()
|
void loop()
|
||||||
|
@ -150,17 +155,17 @@ void initGame()
|
||||||
resetLEDs();
|
resetLEDs();
|
||||||
lastButtonClick = millis();
|
lastButtonClick = millis();
|
||||||
|
|
||||||
ball.x = 1;
|
ball.y = 1;
|
||||||
ball.y = (Y_MAX/2) - (PADDLE_WIDTH/2) + 1;
|
ball.x = (X_MAX/2) - (PADDLE_WIDTH/2) + 1;
|
||||||
ballMovement[0] = 1;
|
ballMovement[0] = -1;
|
||||||
ballMovement[1] = -1;
|
ballMovement[1] = 1;
|
||||||
ballDelay = BALL_DELAY_MAX;
|
ballDelay = BALL_DELAY_MAX;
|
||||||
|
|
||||||
for(byte i=0; i<PADDLE_WIDTH; i++) {
|
for(byte i=0; i<PADDLE_WIDTH; i++) {
|
||||||
paddles[PLAYER_1][i].x = 0;
|
paddles[PLAYER_1][i].y = 0;
|
||||||
paddles[PLAYER_1][i].y = (Y_MAX/2) - (PADDLE_WIDTH/2) + i;
|
paddles[PLAYER_1][i].x = (X_MAX/2) - (PADDLE_WIDTH/2) + i;
|
||||||
paddles[PLAYER_2][i].x = X_MAX - 1;
|
paddles[PLAYER_2][i].y = Y_MAX - 1;
|
||||||
paddles[PLAYER_2][i].y = paddles[PLAYER_1][i].y;
|
paddles[PLAYER_2][i].x = paddles[PLAYER_1][i].x;
|
||||||
}
|
}
|
||||||
|
|
||||||
gameState = GAME_STATE_RUNNING;
|
gameState = GAME_STATE_RUNNING;
|
||||||
|
@ -176,9 +181,9 @@ void updateBall()
|
||||||
toggleLed(ball.x, ball.y, LED_TYPE_OFF);
|
toggleLed(ball.x, ball.y, LED_TYPE_OFF);
|
||||||
|
|
||||||
// collision detection for player 1
|
// collision detection for player 1
|
||||||
if (ballMovement[0] == -1 && ball.x == 1) {
|
if (ballMovement[1] == 1 && ball.y == 1) {
|
||||||
for(byte i=0; i<PADDLE_WIDTH; i++) {
|
for(byte i=0; i<PADDLE_WIDTH; i++) {
|
||||||
if (paddles[PLAYER_1][i].y == ball.y) {
|
if (paddles[PLAYER_1][i].x == ball.x) {
|
||||||
hitBall = true;
|
hitBall = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -186,9 +191,9 @@ void updateBall()
|
||||||
}
|
}
|
||||||
|
|
||||||
// collision detection for player 2
|
// collision detection for player 2
|
||||||
if (ballMovement[0] == 1 && ball.x == X_MAX-2) {
|
if (ballMovement[1] == -1 && ball.y == Y_MAX-2) {
|
||||||
for(byte i=0; i<PADDLE_WIDTH; i++) {
|
for(byte i=0; i<PADDLE_WIDTH; i++) {
|
||||||
if (paddles[PLAYER_2][i].y == ball.y) {
|
if (paddles[PLAYER_2][i].x == ball.x) {
|
||||||
hitBall = true;
|
hitBall = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -206,13 +211,13 @@ void updateBall()
|
||||||
ball.x += ballMovement[0];
|
ball.x += ballMovement[0];
|
||||||
ball.y += ballMovement[1];
|
ball.y += ballMovement[1];
|
||||||
|
|
||||||
if (ball.x <=0 || ball.x >= X_MAX-1) {
|
if (ball.y <=0 || ball.y >= Y_MAX-1) {
|
||||||
endGame();
|
endGame();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ball.y <= 0 || ball.y >= Y_MAX-1) {
|
if (ball.x <= 0 || ball.x >= X_MAX-1) {
|
||||||
ballMovement[1] *= -1;
|
ballMovement[0] *= -1;
|
||||||
playTone(TONE_WALL);
|
playTone(TONE_WALL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -245,14 +250,14 @@ void updateGame()
|
||||||
// move paddles
|
// move paddles
|
||||||
for(byte p=0; p<PLAYER_AMOUNT; p++) {
|
for(byte p=0; p<PLAYER_AMOUNT; p++) {
|
||||||
byte movement = getPlayerMovement(p);
|
byte movement = getPlayerMovement(p);
|
||||||
if (movement == PADDLE_MOVE_UP && paddles[p][PADDLE_WIDTH-1].y < (Y_MAX-1)) {
|
if (movement == PADDLE_MOVE_UP && paddles[p][PADDLE_WIDTH-1].x < (X_MAX-1)) {
|
||||||
for(byte i=0; i<PADDLE_WIDTH; i++) {
|
for(byte i=0; i<PADDLE_WIDTH; i++) {
|
||||||
paddles[p][i].y++;
|
paddles[p][i].x++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (movement == PADDLE_MOVE_DOWN && paddles[p][0].y > 0) {
|
if (movement == PADDLE_MOVE_DOWN && paddles[p][0].x > 0) {
|
||||||
for(byte i=0; i<PADDLE_WIDTH; i++) {
|
for(byte i=0; i<PADDLE_WIDTH; i++) {
|
||||||
paddles[p][i].y--;
|
paddles[p][i].x--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue