Для создания простой симуляции отскока мяча в пинг-понге на языке C с использованием библиотеки stdio.h, можно реализовать основной цикл, который будет обновлять положение мяча и выводить его на экран.
#include
#include // для функции 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: Отрисовывает мяч на экране в его текущей позиции.
Главный цикл:
Очищает экран.
Отрисовывает мяч в текущей позиции.
Обновляет позицию мяча на основе его скорости.
Проверяет столкновения мяча с границами и меняет направление скорости при необходимости.
Добавляет задержку для регулировки скорости анимации.