Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SPI.h>
- #include <Wire.h>
- #include <Adafruit_GFX.h>
- #include <Adafruit_SSD1306.h>
- #define OLED_RESET 4
- Adafruit_SSD1306 display(OLED_RESET);
- int pot1 = A0;
- int varB1;
- int var1;
- int pot2 = A1;
- int varB2;
- int var2;
- int ballX = 128 / 2;
- int ballY = 32 / 2;
- int ballSpeedX = 2;
- int ballSpeedY = 1;
- int score1;
- int score2;
- int wins1;
- int wins2;
- void setup() {
- display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
- display.clearDisplay();
- display.display();
- pinMode(pot1, INPUT);
- pinMode(pot2, INPUT);
- Serial.begin(9600);
- }
- void drawField() {
- display.drawRect(0, 0, 128, 32, WHITE);
- display.drawFastVLine(64, 0, 2, WHITE);
- display.drawFastVLine(64, 7, 4, WHITE);
- display.drawFastVLine(64, 15, 4, WHITE);
- display.drawFastVLine(64, 23, 4, WHITE);
- display.drawFastVLine(64, 30, 2, WHITE);
- }
- void drawBall() {
- display.fillRect(ballX, ballY, 2, 2, 1);
- ballX += ballSpeedX;
- ballY += ballSpeedY;
- }
- void winCount() {
- if (score1 == 25) {
- wins1++;
- score1 = 0;
- score2 = 0;
- }
- if (score2 == 25) {
- wins2++;
- score1 = 0;
- score2 = 0;
- }
- }
- void drawScore() {
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.setCursor(46, 24);
- display.print(score1);
- display.setCursor(70, 24);
- display.print(score2);
- display.setCursor(46, 1);
- display.print(wins1);
- display.setCursor(70, 1);
- display.print(wins2);
- }
- void collisionControl() {
- if (ballY >= 31 || ballY <= 1) {
- ballSpeedY *= -1;
- }
- if (ballX >= 127) {
- ballSpeedX *= -1;
- score1 ++;
- }
- if (ballX <= 1) {
- ballSpeedX *= -1;
- score2 ++;
- }
- }
- void playerCollision() {
- if (ballX >= 0 && ballX <= 2 && ballSpeedX < 0) {
- if (ballY > var1 && ballY < var1 + 10) {
- ballSpeedX *= -1;
- }
- }
- if (ballX >= 124 && ballX <= 126 && ballSpeedX > 0) {
- if (ballY > var2 && ballY < var2 + 10) {
- ballSpeedX *= -1;
- }
- }
- }
- void loop() {
- varB1 = analogRead(pot1);
- var1 = map(varB1, 0, 1023, 1, 21);
- varB2 = analogRead(pot2);
- var2 = map(varB2, 0, 1023, 1, 21);
- display.clearDisplay();
- display.drawFastVLine(2, var1, 10, WHITE);
- display.drawFastVLine(125, var2, 10, WHITE);
- drawField();
- drawBall();
- drawScore();
- winCount();
- playerCollision();
- collisionControl();
- display.display();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement