(수정본) revision - test.exe
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <stdlib.h>
#include <conio.h>
#define PLAYER_BULLET_MAX 20
typedef struct _bullet
{
int x;
int y;
bool fire;
} BULLET;
{
int x;
int y;
bool fire;
} BULLET;
char bg[25][80];
int playerX;
int playerY;
int playerX;
int playerY;
int enemyX;
int enemyY;
int delaytime;
int enemyY;
int delaytime;
BULLET playerBullet[PLAYER_BULLET_MAX];
void PrintfScreen(void);
void ClearScreen(void);
void GameMain(void);
void ClearScreen(void);
void GameMain(void);
void KeyControl(void);
void BulletDraw(void);
void PlayerDraw(void);
void BulletDraw(void);
void PlayerDraw(void);
void EnemyDraw(void);
void EnemyMove(void);
void EnemyMove(void);
void ClashEenmyAndBullet(void);
void main(void)
{
playerX = 0;
playerY = 12;
{
playerX = 0;
playerY = 12;
enemyX = 77;
enemyY = 12;
enemyY = 12;
for(int i=0; i<PLAYER_BULLET_MAX; i++)
{
playerBullet[i].x = 0;
playerBullet[i].y = 0;
playerBullet[i].fire = false;
}
for(;;)
{
ClearScreen();
GameMain();
PrintfScreen();
}
}
{
playerBullet[i].x = 0;
playerBullet[i].y = 0;
playerBullet[i].fire = false;
}
for(;;)
{
ClearScreen();
GameMain();
PrintfScreen();
}
}
void PrintfScreen(void)
{
bg[24][79] = 0;
printf("%s", bg);
}
{
bg[24][79] = 0;
printf("%s", bg);
}
void ClearScreen(void)
{
system("cls");
for(int y=0; y<25; y++)
{
for(int x=0; x<80; x++)
{
bg[y][x] = ' ';
}
}
}
{
system("cls");
for(int y=0; y<25; y++)
{
for(int x=0; x<80; x++)
{
bg[y][x] = ' ';
}
}
}
void GameMain(void)
{
KeyControl();
BulletDraw();
PlayerDraw();
{
KeyControl();
BulletDraw();
PlayerDraw();
EnemyMove();
EnemyDraw();
EnemyDraw();
ClashEenmyAndBullet();
}
}
void KeyControl(void)
{
char pressKey;
{
char pressKey;
if(kbhit())
{
pressKey = getch();
switch(pressKey)
{
case 72:
playerY--;
if(playerY < 1)
playerY=1;
break;
case 75:
playerX--;
if(playerX<0)
playerX=0;
break;
case 77:
playerX++;
if(playerX>75)
playerX=75;
break;
case 80:
playerY++;
if(playerY>23)
playerY=23;
case 32:
{
for(int i=0; i<PLAYER_BULLET_MAX; i++)
{
if(playerBullet[i].fire == false)
{
playerBullet[i].fire = true;
playerBullet[i].x = playerX + 5;
playerBullet[i].y = playerY;
break;
}
}
break;
}
case 27:
exit(0);
return;
}
}
}
{
pressKey = getch();
switch(pressKey)
{
case 72:
playerY--;
if(playerY < 1)
playerY=1;
break;
case 75:
playerX--;
if(playerX<0)
playerX=0;
break;
case 77:
playerX++;
if(playerX>75)
playerX=75;
break;
case 80:
playerY++;
if(playerY>23)
playerY=23;
case 32:
{
for(int i=0; i<PLAYER_BULLET_MAX; i++)
{
if(playerBullet[i].fire == false)
{
playerBullet[i].fire = true;
playerBullet[i].x = playerX + 5;
playerBullet[i].y = playerY;
break;
}
}
break;
}
case 27:
exit(0);
return;
}
}
}
void BulletDraw(void)
{
for(int i=0; i<PLAYER_BULLET_MAX; i++)
{
if(playerBullet[i].fire == true)
{
bg[playerBullet[i].y][playerBullet[i].x - 1]='-';
bg[playerBullet[i].y][playerBullet[i].x + 0]='>';
{
for(int i=0; i<PLAYER_BULLET_MAX; i++)
{
if(playerBullet[i].fire == true)
{
bg[playerBullet[i].y][playerBullet[i].x - 1]='-';
bg[playerBullet[i].y][playerBullet[i].x + 0]='>';
playerBullet[i].x++;
if(playerBullet[i].x > 79)
{
playerBullet[i].fire = false;
}
}
}
}
if(playerBullet[i].x > 79)
{
playerBullet[i].fire = false;
}
}
}
}
void PlayerDraw(void)
{
bg[playerY-1][playerX+0]='-';
bg[playerY-1][playerX+1]='>';
bg[playerY+0][playerX+1]='>';
bg[playerY+0][playerX+2]='>';
bg[playerY+0][playerX+3]='>';
bg[playerY+1][playerX+0]='-';
bg[playerY+1][playerX+1]='>';
}
{
bg[playerY-1][playerX+0]='-';
bg[playerY-1][playerX+1]='>';
bg[playerY+0][playerX+1]='>';
bg[playerY+0][playerX+2]='>';
bg[playerY+0][playerX+3]='>';
bg[playerY+1][playerX+0]='-';
bg[playerY+1][playerX+1]='>';
}
void EnemyDraw(void)
{
bg[enemyY-0][enemyX-2]='<';
bg[enemyY+0][enemyX-1]='-';
bg[enemyY+0][enemyX+0]='0';
bg[enemyY+0][enemyX+1]='-';
bg[enemyY+0][enemyX+2]='>';
}
{
bg[enemyY-0][enemyX-2]='<';
bg[enemyY+0][enemyX-1]='-';
bg[enemyY+0][enemyX+0]='0';
bg[enemyY+0][enemyX+1]='-';
bg[enemyY+0][enemyX+2]='>';
}
void EnemyMove(void)
{
if(delaytime >5)
{
delaytime =0;
enemyX--;
}
delaytime++;
{
if(delaytime >5)
{
delaytime =0;
enemyX--;
}
delaytime++;
enemyX--;
if(enemyX<2)
{
enemyX = 77;
enemyY = (rand()%20) + 2;
}
}
{
enemyX = 77;
enemyY = (rand()%20) + 2;
}
}
void ClashEenmyAndBullet(void)
{
for(int i=0; i<PLAYER_BULLET_MAX; i++)
{
if(playerBullet[i].fire == true)
{
if(playerBullet[i].y == enemyY)
{
if((playerBullet[i].x >= (enemyX-1)) && (playerBullet[i].x <= (enemyX+1)))
{
enemyX = 77;
enemyY = (rand()%20) + 2;
playerBullet[i].fire = false;
}
}
}
}
}
{
for(int i=0; i<PLAYER_BULLET_MAX; i++)
{
if(playerBullet[i].fire == true)
{
if(playerBullet[i].y == enemyY)
{
if((playerBullet[i].x >= (enemyX-1)) && (playerBullet[i].x <= (enemyX+1)))
{
enemyX = 77;
enemyY = (rand()%20) + 2;
playerBullet[i].fire = false;
}
}
}
}
}
'보관소 ▦ ━━ > 작업 기록' 카테고리의 다른 글
- 1-5 프로그램 흐름을 조절하는 법 (0)2008.06.19
- [프롤로그] (0)2008.06.14
- 1-4 정보를 가공하는 법 (0)2008.06.14
- 1-3 정보의 종류 (0)2008.06.14