Teie e-posti aadressi ei avaldata. Kohustuslikud väljad on märgitud *

# kaasata
# kaasata
# kaasata
# kaasata

#define SCREEN_WIDTH 128 // OLED kuvalaius pikslites
#define SCREEN_HEIGHT 64 // OLED-ekraani kõrgus pikslites
#define OLED_RESET 4 // lähtesta pin # (või -1, kui jagate Arduino lähtestamisnõela)

Adafruit_SSD1306 ekraan (SCREEN_WIDTH, SCREEN_HEIGHT ja traat, OLED_RESET); // Deklaratsioon I2C-ga ühendatud SSD1306 kuva kohta (SDA, SCL nööpnõelad)

int eraldusvõime [2] = {SCREEN_WIDTH, SCREEN_HEIGHT}
, pall [2] = {20, (eraldusvõime [1] / 2)};
const int PIXEL_SIZE = 8
, WALL_WIDTH = 4
, PADDLE_WIDTH = 4
, BALL_SIZE = 4
, KIIRUS = 3;
int mängija tulemus = 0
, aiScore = 0
, mängijaPos = 0
, aiPos = 0;
char ballDirectionHori = 'R'
, ballDirectionVerti = 'S';
boolean inProgress = true;

// Prototipo das funcoes
tühine käikPlayer ();
tühine käikAi ();
void drawScore ();
tühine kustutamineScore ();
tühine drawNet ();
void drawPixel (int posX, int posY, int mõõtmed);
void erasePixel (int posX, int posY, int mõõtmed);
void drawPlayerPaddle (int rida);

instagram viewer

void erasePlayerPaddle (int rida);
void drawAiPaddle (int rida);
tühine kustutamineAiPaddle (int rida);
void drawBall (int x, int y);
tühine kustutuspall (int x, int y);

kehtetu seadistus () {
Serial.begin (9600);

// SSD1306_SWITCHCAPVCC = genereerige ekraanipinge alates 3,3 V sisemiselt
if (! display.begin (SSD1306_SWITCHCAPVCC, 0x3C)) {// Aadress 0x3D 128x64 jaoks
Serial.println (F ("SSD1306 eraldamine ebaõnnestus"));
jaoks (;;); // Ära jätka, silmus igavesti
}
kuva.näita ();
viivitus (2000); // Paus 2 sekundit

// Puhvri tühjendamine
display.clearDisplay ();
}

tühine silmus () {
if (aiScore> 3 || playerScore> 3) {// kontrollige mängu olekut
inProgress = vale;

// keegi on võitnud
display.clearDisplay ();
display.setTextSize (4);
display.setTextColor (VALGE);
display.setCursor (0, 0); // aru saada kes
if (aiScore> playerScore)
display.println ("TE kaotate!");
muidu kui (playerScore> aiScore)
display.println ("TE VÕIDA!");
}

if (inProgress) {
eraseScore ();
eraseBall (pall [0], pall [1]);

if (ballDirectionVerti == 'U') // liigutage palli diagonaalis üles
kuul [1] = pall [1] - KIIRUS;

if (ballDirectionVerti == 'D') // liigutage palli diagonaalis allapoole
pall [1] = pall [1] + KIIRUS;

if (pall [1] = eraldusvõime [1]) // põrgatage pall alt üles
ballDirectionVerti = 'U';

if (ballDirectionHori == 'R') {
kuul [0] = pall [0] + KIIRUS; // liikuda palli
if (pall [0]> = (eraldusvõime [0] - 6)) {// pall asub ekraani AI servas
if ((aiPos + 12)> = pall [1] && (aiPos + 12) (aiPos + 2)) // suunake pall alla
ballDirectionVerti = 'D';
else if (pall [1] ballDirectionVerti = 'U';
else // suunake pall sirgeks
ballDirectionVerti = 'S';

ballDirectionHori = 'L'; // muuda palli suunda
} muud {// EESMÄRK!
kuul [0] = 6; // liiguta pall ekraani teisele küljele
ballDirectionVerti = 'S'; // lähtesta pall sirgeks liikumiseks
kuul [1] = eraldusvõime [1] / 2; // liiguta pall ekraani keskele
++ mängijaSkoor; // suurenda mängija skoori
}
}
}

if (ballDirectionHori == 'L') {
kuul [0] = pall [0] - KIIRUS; // liikuda palli
if (pall [0] = pall [1] && (playerPos - 12) (playerPos + 2)) // suunake pall alla
ballDirectionVerti = 'D';
muidu kui (pall [1] aiPos)
++ aiPos;
muidu kui (pall [1] --aiPos;

drawAiPaddle (aiPos);
}

void drawScore () {// Joonista AI ja mängija tulemus
display.setTextSize (2);
display.setTextColor (VALGE);
display.setCursor (45, 0);
display.println (playerScore);

display.setCursor (75, 0);
display.println (aiScore);
}

void eraseScore () {// Kustuta AI ja mängija hinded
display.setTextSize (2);
display.setTextColor (MUST);
display.setCursor (45, 0);
display.println (playerScore);

display.setCursor (75, 0);
display.println (aiScore);
}

void drawNet () {// Joonesta joon
jaoks (int i = 0; i drawPixel (((eraldusvõime [0] / 2) - 1), i * (WALL_WIDTH) + (WALL_WIDTH * i), WALL_WIDTH);
}

void drawPixel (int posX, int posY, int mõõtmed) {// Joonista pikslirühm
jaoks (int x = 0; x jaoks (int y = 0; y display.drawPixel ((posX + x), (posY + y), VALGE);
}

void erasePixel (int posX, int posY, int dimensioonid) {// Pikslite rühma kustutamine
jaoks (int x = 0; x jaoks (int y = 0; y display.drawPixel ((posX + x), (posY + y), MUST);
}

void drawPlayerPaddle (int rida) {
drawPixel (0, rida - (PADDLE_WIDTH * 2), PADDLE_WIDTH);
drawPixel (0, rida - PADDLE_WIDTH, PADDLE_WIDTH);
drawPixel (0, rida, PADDLE_WIDTH);
drawPixel (0, rida + PADDLE_WIDTH, PADDLE_WIDTH);
drawPixel (0, rida + (PADDLE_WIDTH + 2), PADDLE_WIDTH);
}

void erasePlayerPaddle (int rida) {
erasePixel (0, rida - (PADDLE_WIDTH * 2), PADDLE_WIDTH);
erasePixel (0, rida - PADDLE_WIDTH, PADDLE_WIDTH);
erasePixel (0, rida, PADDLE_WIDTH);
erasePixel (0, rida + PADDLE_WIDTH, PADDLE_WIDTH);
erasePixel (0, rida + (PADDLE_WIDTH + 2), PADDLE_WIDTH);
}

void drawAiPaddle (int rida) {
int veerg = eraldusvõime [0] - PADDLE_WIDTH;
drawPixel (veerg, rida - (PADDLE_WIDTH * 2), PADDLE_WIDTH);
drawPixel (veerg, rida - PADDLE_WIDTH, PADDLE_WIDTH);
drawPixel (veerg, rida, PADDLE_WIDTH);
drawPixel (veerg, rida + PADDLE_WIDTH, PADDLE_WIDTH);
drawPixel (veerg, rida + (PADDLE_WIDTH * 2), PADDLE_WIDTH);
}

void eraseAiPaddle (int rida) {
int veerg = eraldusvõime [0] - PADDLE_WIDTH;
erasePixel (veerg, rida - (PADDLE_WIDTH * 2), PADDLE_WIDTH);
erasePixel (veerg, rida - PADDLE_WIDTH, PADDLE_WIDTH);
erasePixel (veerg, rida, PADDLE_WIDTH);
erasePixel (veerg, rida + PADDLE_WIDTH, PADDLE_WIDTH);
erasePixel (veerg, rida + (PADDLE_WIDTH * 2), PADDLE_WIDTH);
}

tühine drawBall (int x, int y) {
display.drawCircle (x, y, BALL_SIZE, WHITE);
}

tühine kustutuspall (int x, int y) {
display.drawCircle (x, y, BALL_SIZE, BLACK);
}