Помогите разобраться в коде.

whowho
Offline
Зарегистрирован: 05.12.2020

Помогите пожалуйста разобраться в коде из интернета 
курсач надо защитить не понимаю почти ничего

 

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
 
#define UP_BUTTON A2
#define DOWN_BUTTON A3
 
const unsigned long PADDLE_RATE = 33; // скорость клюшки
const unsigned long BALL_RATE = 16; // скорость мяча
const uint8_t PADDLE_HEIGHT = 16; // высота клюшки
 
#define SCREEN_WIDTH 128 // OLED display width, in pixels ширина
#define SCREEN_HEIGHT 64 // OLED display height, in pixels высота
 
// Объявление для дисплея SSD1306, подключенного к I2C (выводы SDA, SCL)
#define OLED_RESET     4 // Сброс пин # (или -1, если общий пин сброса Arduino)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
 
void drawCourt();
 
uint8_t ball_x = 64, ball_y = 32;
uint8_t ball_dir_x = 1, ball_dir_y = 1;
unsigned long ball_update;
 
unsigned long paddle_update;
const uint8_t CPU_X = 12;
uint8_t cpu_y = 16;
 
const uint8_t PLAYER_X = 115;
uint8_t player_y = 16;
 
void setup() {
    display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
 
    
    display.display();
    unsigned long start = millis();
 
    pinMode(UP_BUTTON, INPUT);
    pinMode(DOWN_BUTTON, INPUT);
    digitalWrite(UP_BUTTON,1);
    digitalWrite(DOWN_BUTTON,1);
    display.clearDisplay();
    drawCourt();
 
    while(millis() - start < 2000);
 
    display.display();
 
    ball_update = millis();
    paddle_update = ball_update;
}
 
void loop() {
    bool update = false;
    unsigned long time = millis();
 
    static bool up_state = false;
    static bool down_state = false;
    
    up_state |= (digitalRead(UP_BUTTON) == LOW);
    down_state |= (digitalRead(DOWN_BUTTON) == LOW);
 
    if(time > ball_update) {
        uint8_t new_x = ball_x + ball_dir_x;
        uint8_t new_y = ball_y + ball_dir_y;
 
        // Check if we hit the vertical walls
        if(new_x == 0 || new_x == 127) {
            ball_dir_x = -ball_dir_x;
            new_x += ball_dir_x + ball_dir_x;
        }
 
        // Check if we hit the horizontal walls.
        if(new_y == 0 || new_y == 63) {
            ball_dir_y = -ball_dir_y;
            new_y += ball_dir_y + ball_dir_y;
        }
 
        // Check if we hit the CPU paddle
        if(new_x == CPU_X && new_y >= cpu_y && new_y <= cpu_y + PADDLE_HEIGHT) {
            ball_dir_x = -ball_dir_x;
            new_x += ball_dir_x + ball_dir_x;
        }
 
        // Check if we hit the player paddle
        if(new_x == PLAYER_X
           && new_y >= player_y
           && new_y <= player_y + PADDLE_HEIGHT)
        {
            ball_dir_x = -ball_dir_x;
            new_x += ball_dir_x + ball_dir_x;
        }
 
        display.drawPixel(ball_x, ball_y, BLACK);
        display.drawPixel(new_x, new_y, WHITE);
        ball_x = new_x;
        ball_y = new_y;
 
        ball_update += BALL_RATE;
 
        update = true;
    }
 
    if(time > paddle_update) {
        paddle_update += PADDLE_RATE;
 
        // CPU paddle
        display.drawFastVLine(CPU_X, cpu_y, PADDLE_HEIGHT, BLACK);
        const uint8_t half_paddle = PADDLE_HEIGHT >> 1;
        if(cpu_y + half_paddle > ball_y) {
            cpu_y -= 1;
        }
        if(cpu_y + half_paddle < ball_y) {
            cpu_y += 1;
        }
        if(cpu_y < 1) cpu_y = 1;
        if(cpu_y + PADDLE_HEIGHT > 63) cpu_y = 63 - PADDLE_HEIGHT;
        display.drawFastVLine(CPU_X, cpu_y, PADDLE_HEIGHT, WHITE);
 
        // Player paddle
        display.drawFastVLine(PLAYER_X, player_y, PADDLE_HEIGHT, BLACK);
        if(up_state) {
            player_y -= 1;
        }
        if(down_state) {
            player_y += 1;
        }
        up_state = down_state = false;
        if(player_y < 1) player_y = 1;
        if(player_y + PADDLE_HEIGHT > 63) player_y = 63 - PADDLE_HEIGHT;
        display.drawFastVLine(PLAYER_X, player_y, PADDLE_HEIGHT, WHITE);
 
        update = true;
    }
 
    if(update)
        display.display();
}
 
 
void drawCourt() {
    display.drawRect(0, 0, 128, 64, WHITE);
}
Komandir
Онлайн
Зарегистрирован: 18.08.2018

Полная лажа в строке +100500 !

whowho
Offline
Зарегистрирован: 05.12.2020

Это как?

Komandir
Онлайн
Зарегистрирован: 18.08.2018

Сначала не плохо бы было научиться ЧИТАТЬ ! http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii

sadman41
Offline
Зарегистрирован: 19.10.2016

Помочь как - составить компанию в пабе? ОК, пиши адрес.

whowho
Offline
Зарегистрирован: 05.12.2020

извиняюсь просто не глядя вырезал вставил

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Теперь не глядя учись портянки наматывать. Это легче, чем курсач

-NMi-
Offline
Зарегистрирован: 20.08.2018

Дет, ща в армейке можна внасках рассекать и мамке памабиле пазванить )))

Этт те не в 90х, када ничо небыло)))

andriano
andriano аватар
Онлайн
Зарегистрирован: 20.06.2015

whowho пишет:

курсач надо защитить

Не надо. От слова "совсем".

Цитата:

не понимаю почти ничего

Вот поэтому и не надо.

Komandir
Онлайн
Зарегистрирован: 18.08.2018

Самый прикол в том что и студенты-медики сейчас такие же ...

anatoli_nik
Offline
Зарегистрирован: 17.01.2019

10000руб

Kakmyc
Offline
Зарегистрирован: 15.01.2018

За 5000р распишу, что и как.
kakmycmail@gmail.com

vde69
Offline
Зарегистрирован: 10.01.2016

расказываю как я одному студенту помог сдать курсач на 5 баллов (кстати по ардуинке)

я ему просто дал ссылок на учебники и четко описал задачу, после этого он всего 1 раз у меня спросил по коду и все написал за неделю. Хотя изначально плакал, что программирование не понимает и прогуливал все...

andriano
andriano аватар
Онлайн
Зарегистрирован: 20.06.2015

Ну так:

1. Ссылки на учебнике есть в песочнице. В достаточном количестве.

2. Конкретную задачу должен ставить преподаватель.

3. На конкретные вопросы на форуме всегда отвечали вне зависимости от того, студент или нет.

bwn
Offline
Зарегистрирован: 25.08.2014

Тему прикрыл.

Коллеги, предлагаю не засорять форум.
Хотите заработать денег, предложите создать новую в "Ищу исполнителя", но не начинайте здесь торг.
С отношением к ленивым студентам вроде давно определились.