ブロック崩し
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#define WIDTH 50
#define HEIGHT 20
int paddleX = WIDTH / 2;
int ballX = WIDTH / 2;
int ballY = HEIGHT - 2;
int ballDirX = 1;
int ballDirY = -1;
int bricks[WIDTH][HEIGHT] = {0};
void drawPaddle()
{
printf("\033[%d;%dH=", HEIGHT, paddleX - 3);
printf("\033[%d;%dH=====\n", HEIGHT, paddleX - 2);
}
void drawBall()
{
printf("\033[%d;%dHO\n", ballY, ballX);
}
void drawBricks()
{
for (int y = 0; y < HEIGHT / 2; y++)
{
for (int x = 0; x < WIDTH; x++)
{
if (bricks[x][y])
{
printf("\033[%d;%dH#\n", y, x);
}
}
}
}
void updateBall()
{
ballX += ballDirX;
ballY += ballDirY;
if (ballX == 0 || ballX == WIDTH - 1)
{
ballDirX *= -1;
}
if (ballY == 0)
{
ballDirY *= -1;
}
if (ballY == HEIGHT - 1)
{
exit(0);
}
if (ballY == HEIGHT - 2 && ballX >= paddleX - 2 && ballX <= paddleX + 2)
{
ballDirY *= -1;
}
if (ballY < HEIGHT / 2 && bricks[ballX][ballY])
{
bricks[ballX][ballY] = 0;
ballDirY *= -1;
}
}
void updatePaddle()
{
if (_kbhit())
{
char key = _getch();
if (key == 'a' && paddleX > 3)
{
paddleX--;
}
else if (key == 'd' && paddleX < WIDTH - 4)
{
paddleX++;
}
}
}
void clearScreen()
{
printf("\033[2J");
printf("\033[0;0H");
}
int main()
{
for (int y = 0; y < HEIGHT / 2; y++)
{
for (int x = 0; x < WIDTH; x++)
{
bricks[x][y] = 1;
}
}
while (1)
{
clearScreen();
updateBall();
updatePaddle();
drawBricks();
drawPaddle();
drawBall();
Sleep(100);
}
return 0;
}
この記事が気に入ったらサポートをしてみませんか?