메뉴 건너뛰기

BLENDING

자유 게시판

예전 팩맨게임 보기 싫어서 다시올려요.

11이은정2014.09.23 21:50조회 수 5021댓글 10

  • 2
    • 글자 크기
설명 부분 추가하고, 방향키대신 asdw로 움직여서 통과하는 문제를 없앴습니다. 그리고 출력도 전체 출력이 아니라 바뀌는 부분만 수정되도록 했습니다. 
------------------------------------------------------------------

#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
#include<conio.h>

#define GameOver 53
#define Win 54
#define AGAIN 51
#define MAINMENU 50
#define NextL 52
#define HELP 49
#define Urand(x)   rand()%(x+1)
/*
rand();
rand()%((마지막 값 - 시작 값)+1)+시작 값
여기서는 시작값이 무조건 0
*/

// 커서좌표이동
void gotoxy(unsigned int x, unsigned int y)
{
COORD xy = {x, y} ;
SetConsoleCursorPosition( GetStdHandle(STD_OUTPUT_HANDLE) , xy  );
}
// 테스트색상변경
void SetColor(int color , int bgcolor )
{
color   &= 0xf;
bgcolor &= 0xf ;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), (bgcolor << 4)  | color  );
}

int level;//초급/중급/고급 인지를 저장하는 변수

int menuscreen(int menu);//menu의 변하지 않는 부분과 처음에 밝은 빨강이 초급에 가있도록 함
void menu(char ch);//menu의 밝은 빨강과 어두운 빨강 부분만 새로 출력해 줌
int game();
void mapprint(int map, int ch);//map의 모양 출력(왼쪽은 타입, 오른쪽은 팩맨을 움직이기 위해 입력함 키보드 입력값)
void leftUnder(int type);//왼쪽 아래 설명부분
int ResultPrint(int result);//게임 결과부분 출력

int main(void)
{
char ch; // 키보드로 부터 a, s, d, w를 저장
int type; // GameOver, win, MainMenu, Again


//game이 끝나서 콘솔창이 자동으로 닫히지 않도록 하기 위해서 while문을 써서 계속 반복함
//예를 들어 메뉴 -> 게임 -> 게임 -> 메뉴...  
ch = 0;
level = 0;//menu함수의 beforelevel때문
type = HELP;
while(1){
if(type == MAINMENU) type = menuscreen(1);
else if(type==Win || type==GameOver) type = ResultPrint(type);
else if(type==AGAIN) type = game();
else if(type==HELP) type = menuscreen(0);
}
return 0 ; 
}
int menuscreen(int num){
char ch=NULL;
while(1){
SetColor(15, 0);
system("cls");
//맨위의 화면
gotoxy(26, 4);
SetColor(0, 14);
printf("                            ");
gotoxy(26 , 5);    
SetColor(0, 15);  
printf("         pacman  game       ");
gotoxy(26, 6);
SetColor(0, 14);  
printf("                            ");
if(num==0){
SetColor(15,0);
gotoxy(35,9);
printf("게임설명");
gotoxy(9,11);
printf("1. 게임설명은 1입니다.");
gotoxy(9,12);
printf("2. 메뉴에서는 w(↑) s(↓) 로 움직이며 엔터를 누르면 됩니다.");
gotoxy(9,13);
printf("3. 게임 시작시 팩맨은   w    로 움직입니다.");
gotoxy(9,14);
printf("                      a s d");
gotoxy(9,15);
printf("4. 메뉴로가기 : 2, 다시하기 : 3, 다음레벨 : 4");
gotoxy(9,16);
printf("5. 다음레벨은 이겼을때만 사용할 수 있습니다.");
gotoxy(9,17);
printf("6. 초급과 중급은 적이 하나이고 고급은 둘입니다.");
gotoxy(9,18);
printf("7. 팬맨이 한칸 움직일 때 초록색 적은 두칸 움직이고");
gotoxy(9,19);
printf("   분홍색 적은 네칸 움직입니다.");
gotoxy(9,20);
printf("8. 게임도중 게임설명을 봐도 게임내용이 사라지지 않습니다.");
gotoxy(30,22);
printf("아무키나 눌러주세요");
ch=getch();
if(ch != NULL)
return MAINMENU;
}
else if(num==1){
leftUnder(2);
level=0;

//SetColor중 12는 밝은 빨강 4는 어두운 빨강
gotoxy(30, 9); 
SetColor(0, 12);  
printf("                  ");
gotoxy(30 , 10);    
printf("       초급       ");
gotoxy(30, 11);  
printf("                  ");

gotoxy(30, 13); 
SetColor(0, 4);  
printf("                  ");
gotoxy(30 , 14);     
printf("       중급       ");
gotoxy(30, 15); 
printf("                  ");

gotoxy(30, 17); 
SetColor(0, 4);  
printf("                  ");
gotoxy(30 , 18);     
printf("       고급       ");
gotoxy(30, 19);  
printf("                  ");

while(ch!='r'){
ch=getch();
if(ch==HELP)
return HELP;
menu(ch);
}
return AGAIN;
}
}
}
void menu(char ch){
int beforelevel = level;
switch(beforelevel){
//밝은 빨강 -> 어두운 빨강
case 0:
gotoxy(30, 9); 
SetColor(0, 4);  
printf("                  ");
gotoxy(30 , 10);    
printf("       초급       ");
gotoxy(30, 11);  
printf("                  ");
break;
case 1:
gotoxy(30, 13); 
SetColor(0, 4);  
printf("                  ");
gotoxy(30 , 14);     
printf("       중급       ");
gotoxy(30, 15); 
printf("                  ");
break;
case 2:
gotoxy(30, 17); 
SetColor(0, 4);  
printf("                  ");
gotoxy(30 , 18);     
printf("       고급       ");
gotoxy(30, 19);  
printf("                  ");
break;
}
//어두운 빨강 -> 밝은 빨강
if(ch==119 || ch==87){  //w W
level--;
if(level < 0)
level = 2;
}else if(ch==115 || ch==83){//s S
level++;
if(level > 2)
level = 0;
}
switch(level){
case 0:
gotoxy(30, 9); 
SetColor(0, 12);  
printf("                  ");
gotoxy(30 , 10);    
printf("       초급       ");
gotoxy(30, 11);  
printf("                  ");
break;
case 1:
gotoxy(30, 13); 
SetColor(0, 12);  
printf("                  ");
gotoxy(30 , 14);     
printf("       중급       ");
gotoxy(30, 15); 
printf("                  ");
break;
case 2:
gotoxy(30, 17); 
SetColor(0, 12);  
printf("                  ");
gotoxy(30 , 18);     
printf("       고급       ");
gotoxy(30, 19);  
printf("                  ");
break;
}
SetColor(15, 0);//배경색이 바뀌었기 때문에 다시 검정색 배경으로 바꿈
}
int game(){
int map[15][35];
int map0[11][21] = {//초급 map
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 0}, 
{0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0}, 
{0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0}, 
{0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0}, 
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, 
{0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0}, 
{0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0}, 
{0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0}, 
{0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, 
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
};
int map1[15][35] = {//중급 map
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,0, 0, 0, 0,},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 0,},
{0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0 ,0, 0, 1, 0,},
{0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1 ,1, 0, 1, 0,},
{0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0 ,1, 0, 1, 0,},
{0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 ,1, 1, 1, 0,},
{0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 ,1, 0, 1, 0,},
{0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ,1, 0, 1, 0,},
{0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 ,1, 0, 1, 0,},
{0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 ,1, 1, 1, 0,},
{0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0 ,1, 0, 1, 0,},
{0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1 ,1, 0, 1, 0,},
{0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0 ,0, 0, 1, 0,},
{0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,0, 0, 0, 0,}
};
int map2[15][35] = {//고급 map
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,0, 0, 0, 0,},
{0, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,},
{0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0 ,0, 0, 1, 0,},
{0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1 ,1, 0, 1, 0,},
{0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0 ,1, 0, 1, 0,},
{0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 ,1, 1, 1, 0,},
{0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 ,1, 0, 1, 0,},
{0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ,1, 0, 1, 0,},
{0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 ,1, 0, 1, 0,},
{0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 ,1, 1, 1, 0,},
{0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0 ,1, 0, 1, 0,},
{0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1 ,1, 0, 1, 0,},
{0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0 ,0, 0, 1, 0,},
{0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 0,},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,0, 0, 0, 0,}
};
int i,j;//for
int MyXPoint=0, MyYPoint=0, EnemyXPoint1=0, EnemyYPoint1=0, EnemyXPoint2=0, EnemyYPoint2=0; //팩맨과 적1, 적2의 현재좌표
int num;//먹이 개수
int score = 0;//점수
int col, row;
char ch;
int moving;
int count=0;
int mywherex, mywherey, e1wherex, e1wherey, e2wherex, e2wherey;//움직임 출력을 위한 gotoxy에 사용하는 변수
//따로 만들어준 이유는 현재좌표의 x가 한칸 움직일때 gotoxy의 x좌표(wherex)는 두칸 움직여야 하기 때문이다.
int e1before, e2before;
int e1beforeMap=2, e2beforeMap=2;

//map초기화
for(i=0; i<15; i++)
for(j=0; j<35; j++)
map[i][j]=0;

while(1){//while1
if(level==0){
col = 11;
row = 21;
for(i=0; i<col; i++)
for(j=0; j<row; j++)
map[i][j] = map0[i][j];

MyXPoint = 1;
MyYPoint = 9;
EnemyXPoint1 = 19;
EnemyYPoint1 = 1;
mywherex = 17+MyXPoint*2;
mywherey = 6+MyYPoint;
e1wherex = 17+EnemyXPoint1*2;
e1wherey = 6+EnemyYPoint1;
}else if(level==1){
col = 15;
row = 35;
for(i=0; i<col; i++)
for(j=0; j<row; j++)
map[i][j] = map1[i][j];

MyXPoint = 1;
MyYPoint = 13;
EnemyXPoint1 = 33;
EnemyYPoint1 = 1;
mywherex = 5+MyXPoint*2; 
mywherey= 4+MyYPoint;
e1wherex = 5+EnemyXPoint1*2;
e1wherey = 4+EnemyYPoint1;
}else{
col = 15;
row = 35;
for(i=0; i<col; i++)
for(j=0; j<row; j++)
map[i][j] = map2[i][j];

MyXPoint = 1;
MyYPoint = 13;
EnemyXPoint1 = 33;
EnemyYPoint1 = 13;
EnemyXPoint2 = 1;
EnemyYPoint2 = 1;
mywherex = 5+MyXPoint*2; 
mywherey= 4+MyYPoint;
e1wherex = 5+EnemyXPoint1*2;
e1wherey = 4+EnemyYPoint1;
e2wherex=5+EnemyXPoint2*2;
e2wherey=4+EnemyYPoint2;
}
num=0;
//먹이를 랜덤으로 만듬
for(i=0; i<col; i++){
for(j=0; j<row; j++)
if(map[i][j]==1)
{
map[i][j] = Urand(1);//Urand()로 먹이의 개수 조절
if(map[i][j] == 1)
num++;
else
map[i][j] =2;
}
}//end of for
num = num*10;//총점수. 먹이가 rand로 바뀌므로 그때그때 점수가 다름
system("cls");
leftUnder(0);

//전체 맵 출력
for(i=0; i<col; i++){
if(level==0) gotoxy(17, (6+i));//시작좌표
else gotoxy(5, (4+i));;
for(j=0; j<row; j++){
mapprint(map[i][j], 1);//두번째 파라미터는 팩맨이 존재하는가 하지않는가 표시. 존재하지않을때 : 0 
//존재할때 : 처음 아무키도 안받았을 때 1, 키보드 방향키를 입력받았을땐 해당하는 방향키
}
}

while(1){//while2

//점수 출력, 오른쪽 아래
SetColor(15, 0);
gotoxy(60, 23);
printf("점수 : %d / %d", score, num);

//flushall(); fflush(stdin);
ch = getch();
if(ch==MAINMENU)
return MAINMENU;//type에 MainMenu를 반환하고 종료. 메인메뉴로 이동
else if(ch==AGAIN)
return AGAIN; //type에 Again를 반환하고 종료. 게임 다시시작
else if(ch==HELP){
menuscreen(0);
//전체 맵 출력
system("cls");
leftUnder(0);
for(i=0; i<col; i++){
if(level==0) gotoxy(17, (6+i));//시작좌표
else gotoxy(5, (4+i));
for(j=0; j<row; j++){
mapprint(map[i][j], 1);//두번째 파라미터는 팩맨이 존재하는가 하지않는가 표시. 존재하지않을때 : 0 
//존재할때 : 처음 아무키도 안받았을 때 1, 키보드 방향키를 입력받았을땐 해당하는 방향키
}

}
continue;
}
else if(ch==97 || ch==65){ //a A
if(map[MyYPoint][MyXPoint-1] != 0)//벽일 아닐 경우
{
gotoxy(mywherex, mywherey);
mapprint(2,0);//팩맨의 전위치를 지워야하므로 팩맨이 존재하지 않아 두번째 파라미터가 0
if(map[MyYPoint][MyXPoint-1] == 4||map[MyYPoint][MyXPoint-1] == 5)//적 == 팩맨 일 경우
return GameOver;//main의 result에 GameOver 반환
if(map[MyYPoint][MyXPoint-1] == 1)//먹이일 경우
score+=10;//점수 증가
map[MyYPoint][MyXPoint] = 2;//팩맨의 이동
map[MyYPoint][--MyXPoint] = 3;
//이동했던곳이 먹이이든 빈칸이든 팩맨 지나간 자리는 무조건 빈칸
gotoxy(mywherex-=2, mywherey);
mapprint(3, ch);
}//end of if
}else if(ch==100 || ch==68){//d D
if(map[MyYPoint][MyXPoint+1] != 0)
{
gotoxy(mywherex, mywherey);
mapprint(2,0);
if(map[MyYPoint][MyXPoint+1] == 4||map[MyYPoint][MyXPoint+1] == 5)
return GameOver;
if(map[MyYPoint][MyXPoint+1] == 1)
score+=10;
map[MyYPoint][MyXPoint] = 2;
map[MyYPoint][++MyXPoint] = 3;
gotoxy(mywherex+=2, mywherey);
mapprint(3, ch);
}//end of if
}else if(ch==119 || ch==87){//w W
if(map[MyYPoint-1][MyXPoint] != 0) 
{
gotoxy(mywherex, mywherey);
mapprint(2,0);
if(map[MyYPoint-1][MyXPoint] == 4||map[MyYPoint-1][MyXPoint] == 5)
return GameOver;
if(map[MyYPoint-1][MyXPoint] == 1) 
score+=10;
map[MyYPoint][MyXPoint] = 2;
map[--MyYPoint][MyXPoint] = 3;
gotoxy(mywherex, --mywherey);
mapprint(3, ch);
}//end of if
}else if(ch==115 || ch==83){//s S
if(map[MyYPoint+1][MyXPoint] != 0)
{
gotoxy(mywherex, mywherey);
mapprint(2,0);
if(map[MyYPoint+1][MyXPoint] == 4||map[MyYPoint+1][MyXPoint] == 5)
return GameOver;
if(map[MyYPoint+1][MyXPoint] == 1)
score+=10;
map[MyYPoint][MyXPoint] = 2; 
map[++MyYPoint][MyXPoint] = 3; 
gotoxy(mywherex, ++mywherey);
mapprint(3, ch);
}//end of if 
}else continue;
if(num==score)
return Win;
//이동할 곳이 벽인지 아닌지 검사
while(count < 2){
moving = Urand(3);
switch(moving)
{
case 0:
if(map[EnemyYPoint1][EnemyXPoint1-1] != 0 && moving != e1before)                                     
{
count++;
gotoxy(e1wherex, e1wherey);
mapprint(e1beforeMap,0);
if(map[EnemyYPoint1][EnemyXPoint1-1] == 1)
{
map[EnemyYPoint1][--EnemyXPoint1] = 4;
map[EnemyYPoint1][EnemyXPoint1+1] = e1beforeMap;
e1before = 1;
e1beforeMap = 1;
}
else if(map[EnemyYPoint1][EnemyXPoint1-1] == 2)
{
map[EnemyYPoint1][--EnemyXPoint1] = 4;
map[EnemyYPoint1][EnemyXPoint1+1] = e1beforeMap;
e1before = 1;
e1beforeMap = 2;
}
else if(map[EnemyYPoint1][EnemyXPoint1-1] == 5)
{
map[EnemyYPoint1][--EnemyXPoint1] = 5;
map[EnemyYPoint1][EnemyXPoint1+1] = e1beforeMap;
}
else if(map[EnemyYPoint1][EnemyXPoint1-1] == 3)
return GameOver;
gotoxy(e1wherex-=2, e1wherey);
mapprint(4, 0);
}
break;
case 1:
if(map[EnemyYPoint1][EnemyXPoint1+1] != 0 && moving != e1before)
{
count++;
gotoxy(e1wherex, e1wherey);
mapprint(e1beforeMap,0);
if(map[EnemyYPoint1][EnemyXPoint1+1] == 1)
{
map[EnemyYPoint1][++EnemyXPoint1] = 4;
map[EnemyYPoint1][EnemyXPoint1-1] = e1beforeMap;
e1before = 0;
e1beforeMap = 1;
}
else if(map[EnemyYPoint1][EnemyXPoint1+1] == 2)
{
map[EnemyYPoint1][++EnemyXPoint1] = 4;
map[EnemyYPoint1][EnemyXPoint1-1] = e1beforeMap;
e1before = 0;
e1beforeMap = 2;
}
else if(map[EnemyYPoint1][EnemyXPoint1+1] == 5)
{
map[EnemyYPoint1][++EnemyXPoint1] = 5;
map[EnemyYPoint1][EnemyXPoint1-1] = e1beforeMap;
}
else if(map[EnemyYPoint1][EnemyXPoint1+1] == 3)
return GameOver;
gotoxy(e1wherex+=2, e1wherey);
mapprint(4, 0);
}
break;
case 2:
if(map[EnemyYPoint1-1][EnemyXPoint1] != 0 && moving != e1before)
{
count++;
gotoxy(e1wherex, e1wherey);
mapprint(e1beforeMap,0);
if(map[EnemyYPoint1-1][EnemyXPoint1] == 1)
{
map[--EnemyYPoint1][EnemyXPoint1] = 4;
map[EnemyYPoint1+1][EnemyXPoint1] = e1beforeMap; 
e1before = 3;
e1beforeMap = 1;
}
else if(map[EnemyYPoint1-1][EnemyXPoint1] == 2)
{
map[--EnemyYPoint1][EnemyXPoint1] = 4;
map[EnemyYPoint1+1][EnemyXPoint1] = e1beforeMap; 
e1before = 3;
e1beforeMap = 2;
}
else if(map[EnemyYPoint1-1][EnemyXPoint1] == 5)
{
map[--EnemyYPoint1][EnemyXPoint1] = 5;
map[EnemyYPoint1+1][EnemyXPoint1] = e1beforeMap;
}
else if(map[EnemyYPoint1-1][EnemyXPoint1] == 3)
return GameOver;
gotoxy(e1wherex,--e1wherey);
mapprint(4, 0);
}
break; 
case 3:
if(map[EnemyYPoint1+1][EnemyXPoint1] != 0 && moving != e1before)
{
count++;
gotoxy(e1wherex, e1wherey);
mapprint(e1beforeMap,0);
if(map[EnemyYPoint1+1][EnemyXPoint1] == 1)
{
map[++EnemyYPoint1][EnemyXPoint1] = 4;
map[EnemyYPoint1-1][EnemyXPoint1] = e1beforeMap;
e1before = 2;
e1beforeMap = 1;
}
else if(map[EnemyYPoint1+1][EnemyXPoint1] == 2)
{
map[++EnemyYPoint1][EnemyXPoint1] = 4;
map[EnemyYPoint1-1][EnemyXPoint1] = e1beforeMap;
e1before = 2;
e1beforeMap = 2;
}
else if(map[EnemyYPoint1+1][EnemyXPoint1] == 5)
{
map[++EnemyYPoint1][EnemyXPoint1] = 5;
map[EnemyYPoint1-1][EnemyXPoint1] = e1beforeMap;
}
else if(map[EnemyYPoint1+1][EnemyXPoint1] == 3)
return GameOver;
gotoxy(e1wherex, ++e1wherey);
mapprint(4, 0);
}
break; 
}
}//end of while
count=0;

if(level==2){
while(count<4){//while3
moving = Urand(3);
switch(moving)
{
case 0:
if(map[EnemyYPoint2][EnemyXPoint2-1] != 0 && moving != e2before)                                     
{
count++;
gotoxy(e2wherex, e2wherey);
mapprint(e2beforeMap,0);
if(map[EnemyYPoint2][EnemyXPoint2-1] == 1)
{
map[EnemyYPoint2][--EnemyXPoint2] = 5;
map[EnemyYPoint2][EnemyXPoint2+1] = e2beforeMap;
e2before = 1;
e2beforeMap = 1;
}
else if(map[EnemyYPoint2][EnemyXPoint2-1] == 2)
{
map[EnemyYPoint2][--EnemyXPoint2] = 5;
map[EnemyYPoint2][EnemyXPoint2+1] = e2beforeMap;
e2before = 1;
e2beforeMap = 2;
}
else if(map[EnemyYPoint2][EnemyXPoint2-1] ==4)
{
map[EnemyYPoint2][--EnemyXPoint2] = 5;
map[EnemyYPoint2][EnemyXPoint2+1] = e2beforeMap;
}
else if(map[EnemyYPoint2][EnemyXPoint2-1] == 3)
return GameOver;
gotoxy(e2wherex-=2, e2wherey);
mapprint(5, 0);
}
break;
case 1:
if(map[EnemyYPoint2][EnemyXPoint2+1] != 0 && moving != e2before)
{
count++;
gotoxy(e2wherex, e2wherey);
mapprint(e2beforeMap,0);
if(map[EnemyYPoint2][EnemyXPoint2+1] == 1)
{
map[EnemyYPoint2][++EnemyXPoint2] = 5;
map[EnemyYPoint2][EnemyXPoint2-1] = e2beforeMap;
e2before = 0;
e2beforeMap = 1;
}
else if(map[EnemyYPoint2][EnemyXPoint2+1] == 2)
{
map[EnemyYPoint2][++EnemyXPoint2] = 5;
map[EnemyYPoint2][EnemyXPoint2-1] = e2beforeMap;
e2before = 0;
e2beforeMap = 2;
}
else if(map[EnemyYPoint2][EnemyXPoint2+1] == 4)
{
map[EnemyYPoint2][++EnemyXPoint2] = 5;
map[EnemyYPoint2][EnemyXPoint2-1] = e2beforeMap;
}
else if(map[EnemyYPoint2][EnemyXPoint2+1] == 3)
return GameOver;
gotoxy(e2wherex+=2, e2wherey);
mapprint(5, 0);
}
break;
case 2:
if(map[EnemyYPoint2-1][EnemyXPoint2] != 0 && moving != e2before)
{
count++;
gotoxy(e2wherex, e2wherey);
mapprint(e2beforeMap,0);
if(map[EnemyYPoint2-1][EnemyXPoint2] == 1)
{
map[--EnemyYPoint2][EnemyXPoint2] = 5;
map[EnemyYPoint2+1][EnemyXPoint2] = e2beforeMap; 
e2before = 3;
e2beforeMap = 1;
}
else if(map[EnemyYPoint2-1][EnemyXPoint2] == 2)
{
map[--EnemyYPoint2][EnemyXPoint2] = 5;
map[EnemyYPoint2+1][EnemyXPoint2] = e2beforeMap; 
e2before = 3;
e2beforeMap = 2;
}
else if(map[EnemyYPoint2-1][EnemyXPoint2] == 4)
{
map[--EnemyYPoint2][EnemyXPoint2] = 5;
map[EnemyYPoint2+1][EnemyXPoint2] = e2beforeMap;
}
else if(map[EnemyYPoint2-1][EnemyXPoint2] == 3)
return GameOver;
gotoxy(e2wherex,--e2wherey);
mapprint(5, 0);
}
break; 
case 3:
if(map[EnemyYPoint2+1][EnemyXPoint2] != 0 && moving != e2before)
{
count++;
gotoxy(e2wherex, e2wherey);
mapprint(e2beforeMap,0);
if(map[EnemyYPoint2+1][EnemyXPoint2] == 1)
{
map[++EnemyYPoint2][EnemyXPoint2] = 5;
map[EnemyYPoint2-1][EnemyXPoint2] = e2beforeMap;
e2before = 2;
e2beforeMap = 1;
}
else if(map[EnemyYPoint2+1][EnemyXPoint2] == 2)
{
map[++EnemyYPoint2][EnemyXPoint2] = 5;
map[EnemyYPoint2-1][EnemyXPoint2] = e2beforeMap;
e2before = 2;
e2beforeMap = 2;
}
else if(map[EnemyYPoint2+1][EnemyXPoint2] == 4)
{
map[++EnemyYPoint2][EnemyXPoint2] = 5;
map[EnemyYPoint2-1][EnemyXPoint2] = e2beforeMap;
}
else if(map[EnemyYPoint2+1][EnemyXPoint2] == 3)
return GameOver;
gotoxy(e2wherex, ++e2wherey);
mapprint(5, 0);
}
break; 
}//end of switch
}//end of while3
count = 0;
}//end of if
}//end of while2
}//end of while1
return ch;
}
void mapprint(int map, int ch){
switch(map){
case 0://벽
SetColor(9 ,15);
printf("■");
break;
case 1://먹이
SetColor(12, 0);
printf("♡");
break;
case 2://빈칸
SetColor(0, 0);
printf("  ");
break;
case 3://팩맨
SetColor(14 ,0);
if(ch==97 || ch==65)//a A
printf("◀");
else if(ch==100 || ch==68)//d D
printf("▶");
else if(ch==119 || ch==87)//w W
printf("▲");
else if(ch==115 || ch==83)//s S
printf("▼");
else if(ch == 1)
printf("●");
break;
case 4://적1
SetColor(10, 0);
printf("◆");
break;
case 5:
SetColor(13, 0);
printf("◆");
break;
}//end of switch
}
void leftUnder(int type){
gotoxy(3, 23);
SetColor(15, 0);
if(type == 0) printf("도움말 : 1, 메뉴로가기 : 2, 다시하기 : 3");//게임중, 게임오버일때
else if(type == 1) if(level<2) printf("도움말 : 1, 메뉴로가기 : 2 , 다시하기 : 3, 다음레벨 : 4");//게임에서 이겼을때(다음레벨 버튼을 만들기 위해)
else if(type == 2) printf("도움말 : 1");
}
int ResultPrint(int result){
char ch;
system("cls");
if(result==Win){
SetColor(11, 9); 
gotoxy(24, 10);
printf("                             ");
gotoxy(24 , 11);     
printf("             Win             ");
gotoxy(24, 12);
printf("                             ");
if(level<2) leftUnder(1);
else leftUnder(0);
}else if(result==GameOver){
SetColor(0, 12); 
gotoxy(24, 10);
printf("                             ");
gotoxy(24 , 11);     
printf("          Game Over          ");
gotoxy(24, 12);
printf("                             ");
leftUnder(0);
}
while(1){
ch = getch();
if(ch == MAINMENU) return MAINMENU;
else if(ch == AGAIN) return AGAIN;
else if(ch == NextL&level<2){
level++;
return AGAIN;}
}
}
  • 2
    • 글자 크기
재영아 화이팅! (by 09이혜성) 유니티 공부 하는것 같아서 (by 07최윤수)

댓글 달기

댓글 10
번호 제목 글쓴이 날짜 조회 수
공지 [난해한코딩대회] 예시4 16황지우 2020.08.31 385
공지 회장님 훈화말씀16 16황지우 2020.03.16 8603
공지 스맛폰으로 BLENDING홈피 새글 알림 받기1 BLENDING 2011.06.25 195332
3362 내일 군대가네요 하하......3 13전성혁 2015.01.19 4011
3361 [알고리즘 문제] 풀어보세요~5 01오치문 2014.12.27 4253
3360 회장님 보세요 03김남균 2014.11.21 4382
3359 개미수열11 01오치문 2014.10.31 5718
3358 엔진 라이브러리 토론 99곽용우 2014.10.28 4691
3357 재영아 화이팅!4 09이혜성 2014.10.06 4812
예전 팩맨게임 보기 싫어서 다시올려요.10 11이은정 2014.09.23 5021
3355 유니티 공부 하는것 같아서4 07최윤수 2014.09.16 4982
3354 홈페이지가 죽었구나..4 10박태수 2014.09.01 5124
3353 8월18일날 군대갑니다 ㅠ4 13황정우 2014.08.09 5212
3352 잊고 있던 것 수정! 08정호열 2014.06.11 4945
3351 iconshop??6 14최중원 2014.04.17 5435
3350 03학번 오태원선배가 결혼하네요5 08이혜린 2014.04.01 5875
3349 간만에 퀴즈 하나18 01오치문 2014.02.11 7135
3348 2014년 새해 복 많이 받으세요4 07최윤수 2014.01.01 5163
3347 2013년 12월 4일 히터 구매 했습니다.1 13전성혁 2013.12.04 5264
3346 홈페이지 새벽 4시쯤에 약간 느려질 수도 있습니다.1 08정호열 2013.11.21 7215
3345 2013년 엔씨소프트 하반기 신입사원 공개채용이 시작되었습니다.!!! 03김상헌 2013.10.10 8772
3344 다들 아는지는 모르겠지만..4 97김민경 2013.09.11 8851
3343 굽신굽신 블렌딩 흥신소..4 00한우람 2013.07.09 11816
이전 1 ... 17 18 19 20 21 22 23 24 25 26... 190다음
첨부 (2)
FacmanGame.c
28.3KB / Download 40
FacmanGame.exe
60.0KB / Download 29
위로