Top.Mail.Ru
Ответы

Пинг понг на языке си

Как задать мячику отскок в пинг понге на языке c? Используя библиотеку stdio.h

По дате
По рейтингу
Аватар пользователя
Просветленный

Для создания простой симуляции отскока мяча в пинг-понге на языке C с использованием библиотеки stdio.h, можно реализовать основной цикл, который будет обновлять положение мяча и выводить его на экран.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
 #include <stdio.h> 
#include <unistd.h> // для функции usleep() 
 
#define WIDTH 40 
#define HEIGHT 20 
 
void clearScreen() { 
    printf("\033[H\033[J"); 
} 
 
void drawBall(int x, int y) { 
    for (int i = 0; i < HEIGHT; i++) { 
        for (int j = 0; j < WIDTH; j++) { 
            if (i == y && j == x) { 
                printf("O"); 
            } else { 
                printf(" "); 
            } 
        } 
        printf("\n"); 
    } 
} 
 
int main() { 
    int ballX = WIDTH / 2; 
    int ballY = HEIGHT / 2; 
    int velocityX = 1; 
    int velocityY = 1; 
 
    while (1) { 
        clearScreen(); 
        drawBall(ballX, ballY); 
 
        // Обновление позиции мяча 
        ballX += velocityX; 
        ballY += velocityY; 
 
        // Проверка столкновения с границами и изменение направления 
        if (ballX <= 0 || ballX >= WIDTH - 1) { 
            velocityX = -velocityX; 
        } 
        if (ballY <= 0 || ballY >= HEIGHT - 1) { 
            velocityY = -velocityY; 
        } 
 
        // Задержка для замедления движения мяча 
        usleep(100000); // 100000 микросекунд = 0.1 секунд 
    } 
 
    return 0; 
}  

Объяснение кода:
Инициализация параметров:

WIDTH и HEIGHT задают размер поля.
ballX и ballY задают начальные координаты мяча.
velocityX и velocityY задают начальные скорости мяча по осям X и Y.
Функция clearScreen: Очищает экран с помощью последовательности управляющих символов.

Функция drawBall: Отрисовывает мяч на экране в его текущей позиции.

Главный цикл:

Очищает экран.
Отрисовывает мяч в текущей позиции.
Обновляет позицию мяча на основе его скорости.
Проверяет столкновения мяча с границами и меняет направление скорости при необходимости.
Добавляет задержку для регулировки скорости анимации.