C 언어 마 탑 게임 의 실현 코드

26337 단어 C 언어마 탑 놀이
이거 쓰 고 싶 었 는데 오늘 드디어 다 썼어 요.
게임 캡 처:



컴 파일 환경:VS 2017
게임 은 그림 이 필요 합 니 다.원 하 는 것 이 있 거나 게임 에 대해 어떤 견 해 를 가지 고 있 는 지 제 QQ 2985486630 토론 을 추가 할 수 있 습 니 다.잠시 대답 이 없 으 면 블 로그 아래 에 글 을 남 길 수 있 습 니 다.그때 보 겠 습 니 다.번 거 로 우 시 면 바로 다운로드 하 세 요.
압축 해제 후 sln 파일 을 누 르 면 바로 실행 할 수 있 습 니 다.
다음은 제 가 게임 의 주요 기능 과 실현 방식 을 소개 하 겠 습 니 다.
먼저 유저 의 정의 입 니 다.구조 체 를 사용 하면 이 이름 은 스스로 바 꿀 수 있 습 니 다.

struct gamerole
{
	char name[20] = "  "; //    
	int HP;	  //  
	int MP;
	int DEF;	//  
	int ATT;  //  
	int Lv;   //  
	int Exp;  //  
	int Num_Blue_Key; //     
	int Num_Yellow_Key;
}player;
게임 오른쪽 에 퀘 스 트 의 속성 을 표시 합 니 다.

함수:

void SetPlayer()
{
	putimage(60 * 13, 0, &Message);	
	outtextxy(60 * 13 + 12, 100, player.name);
	outtextxy(60 * 13 + 12, 180, intToString(player.Lv));
	outtextxy(60 * 13 + 12, 235, intToString(player.Exp));
	outtextxy(60 * 13 + 12, 362, intToString(player.HP));
	outtextxy(60 * 13 + 12, 425, intToString(player.MP));
	outtextxy(60 * 13 + 12, 517, intToString(player.ATT));
	outtextxy(60 * 13 + 12, 567, intToString(player.DEF));
	outtextxy(60 * 13 + 12, 689, intToString(player.Num_Yellow_Key));
	outtextxy(60 * 13 + 12, 759, intToString(player.Num_Blue_Key));
}
이 함수 가 속성 이 문자열 이 어야 하기 때문에 나 는 숫자 를 문자열 로 바 꾸 는 함 수 를 썼 다.

//       
char *intToString(int Number)
{
	int len = 0;
	
	if (Number == 0) {
		str[0] = '0';
		len++;
	}
	while (Number)
	{
		str[len++] = Number % 10+'0';
		Number /= 10;
	}
	for (int i = 0; i < len/2; i++) {
		char t = str[i];
		str[i] = str[len - i - 1];
		str[len - i - 1] = t;
	}
	str[len] = '\0';
	return str;
}
몬스터 속성의 정의

struct monster
{
	int HP;	  //  
	int ATT;  //  
	int DEF;	//  
	int Exp;  //  
};
다음은 캔버스 를 정의 한 다음 에 그림 을 불 러 옵 니 다.저 는 2 차원 배열 로 지 도 를 저 장 했 습 니 다.서로 다른 숫자 는 서로 다른 그림 을 대표 한 다음 에 2 차원 배열 의 값 에 따라 서로 다른 곳 에 서로 다른 그림 을 붙 였 습 니 다.

void SetMap()
{
	for (int i = 0; i < 13; i++)
	{
		for (int j = 0; j < 13; j++)
		{
			switch (map[i][j])
			{
 
			case 0:
				putimage(j * 60, i * 60, &Wall);     // 
				break;
			case 1:
				putimage(j * 60, i * 60, &Ground);    //  
				break;
			case 2:
				putimage(j * 60, i * 60, &Blue_door);   //  
				break;
			case 3:
				putimage(j * 60, i * 60, &Yellow_door);  //  
				break;
			case 4:
				putimage(j * 60, i * 60, &Blue_Cry);     //   
				break;
			case 5:
				putimage(j * 60, i * 60, &Red_Cry);     //   
				break;
			case 6:
				putimage(j * 60, i * 60, &Blue_Key);    //   
				break;
			case 7:
				putimage(j * 60, i * 60, &Yellow_Key);   //   
				break;
			case 8:
				putimage(j * 60, i * 60, &Red_Med);     //   
				break;
			case 9:
				putimage(j * 60, i * 60, &Blue_Med);     //   
				break;
			case 10:
				putimage(j * 60, i * 60, &Small_Bat);    //   
				break;
			case 11:
				putimage(j * 60, i * 60, &Small_Wizard);   //   
				break;
			case 12:
				putimage(j * 60, i * 60, &Small_Skull);   //   
				break;
			case 13:
				putimage(j * 60, i * 60, &Big_Skull);    //   
				break;
			case 14:
				putimage(j * 60, i * 60, &Green_Slime);   //    
				break;
			case 15:
				putimage(j * 60, i * 60, &Red_Slime);    //    
				break;
			case 98:
				putimage(j * 60, i * 60, &Ladder);     //  
				break;
			case 99:
				putimage(j * 60, i * 60, &Player);     //  
				break;
			}
 
		}
	}
}
그 다음은 인물 의 이동 과 전투 입 니 다.인물 의 이동 은 저 는 상하 좌우 네 가지 상황 에 대해 직접 토론 하고 인물 이 움 직 일 때 갈 수 있 는 지 없 는 지 판단 하려 면 처리 하지 않 습 니 다.만약 에 갈 수 있다 면 걸 어 온 그 위 치 를 사람 으로 만 들 고 앞 사람의 위 치 를 바닥 으로 만 듭 니 다.

case 'w':
case 72:
if (map[playerx - 1][playery] == 1) {     //      
	map[playerx - 1][playery] = 99;
	map[playerx][playery] = 1;
	playerx--;
}
처리 해 야 할 것 은 열쇠,문,수정,물약,괴물 이다.
열쇠 라면,대응 하 는 열쇠 수 를 1 로 늘 려 라.
문 이 라면 해당 색상 의 열쇠 가 충분 한 지,충분 하 다 면 열쇠 수 를 1 로 줄 이 고 해당 위치 에 있 는 문 을 공 터 로 만든다.
회복 제 라면,먹고 나 면 생명 이 늘어난다.
수정 이 라면 수정의 색깔 에 대응 하 는 속성 을 추가 합 니 다.
몬스터 를 만 났 을 때 전투 가 일어나 서로 다른 몬스터 를 분리 처리 합 니 다.다음은 작은 박쥐의 처리 입 니 다.

case 10:
    ID = MessageBox(hwnd, "   ", "    ?", MB_YESNO);
    if (ID == IDYES)
	{
	  if (VS(player.HP, player.ATT, player.DEF, Small_Bat_Pro.HP, Small_Bat_Pro.ATT, Small_Bat_Pro.DEF)) {
			player.Exp += Small_Bat_Pro.Exp;
			return 1;
		  }	
	}
	break;
몬스터 를 만나면 해당 하 는 대화 상자 가 팝 업 됩 니 다

전투 성공 여 부 를 계산 하 는 VS 함수 가 있 습 니 다.성공 하면 해당 속성 을 추가 하고 실패 하면 이 길 수 없 는 창 이 팝 업 됩 니 다.

int VS(int playHP, int playATT, int playDEF, int monHP, int monATT, int monDEF)
{
	while (playHP > 0 || monHP > 0)
	{
		monHP -= (playATT - monDEF);
		if (monHP < 0)
			break;
		playHP -= (monATT - playDEF);
	}
	if (playHP > 0) {
		player.HP = playHP;
		return 1;
	}
		
	else {
		MessageBox(hwnd, "", "   ", MB_YESNO);
		return 0;
	}
}
키 보드 를 두 드 릴 때마다 지도 정보 와 인물 정 보 를 업데이트 합 니 다.

SetMap(); //      
SetPlayer(); //        
여기까지 와 서 게임 의 내용 도 거의 다 르 지 않 았 다.비록 나 는 첫 번 째 지도 만 썼 지만.그러나 지 도 를 추가 하면 더 많은 게임 방법 이 있 고 관심 이 있 는 학생 들 은 관문 을 직접 만들어 더 많은 내용 을 실현 할 수 있다.
마지막 으로 모든 코드 를 더 하면 주석 에서 말 하 는 것 도 비교적 명확 하 다.

#include <stdlib.h>
#include <graphics.h>
#include <windows.h>
#include<conio.h>
#include<graphics.h>
#include<windows.h>
#include <stdio.h>
 
void initgamePicture();  //      
void SetPlayer();    //      
void initPlayer();   //       
void SetMap();     //      
char *intToString(int Number); //         
void playGame();     //    
int Combat(int x);
int VS(int playHP, int playATT, int playDEF, int monHP, int monATT, int monDEF);
 
int playerx, playery;
char str[20] = "";
//  1
int map[13][13] = {
	{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
	{ 0, 98, 1, 14, 15, 14, 1, 1, 1, 1, 1, 1, 0 },
	{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 },
	{ 0, 8, 1, 1, 2, 1, 0, 5, 6, 1, 0, 1, 0 },
	{ 0, 1, 12, 1, 0, 1, 0, 4, 8, 1, 0, 1, 0 },
	{ 0, 0, 2, 0, 0, 1, 0, 0, 0, 14, 0, 1, 0 },
	{ 0, 6, 1, 1, 0, 1, 3, 10, 11, 10, 0, 1, 0 },
	{ 0, 1, 13, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0 },
	{ 0, 0, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0 },
	{ 0, 1, 1, 1, 0, 0, 14, 0, 0, 0, 14, 0, 0 },
	{ 0, 8, 1, 6, 0, 7, 1, 6, 0, 1, 10, 1, 0 },
	{ 0, 8, 1, 6, 0, 1, 99, 1, 0, 14, 9, 14, 0 },
	{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
IMAGE Wall, Ground, Green_Slime, Red_Slime, Blue_Cry, Red_Cry, Blue_Key, Yellow_Key,
Red_Med, Blue_Med, Ladder, Small_Skull, Big_Skull, Small_Bat, Small_Wizard,
Blue_door, Yellow_door, Player, Message;
HWND hwnd;
struct gamerole
{
	char name[20] = "  "; //    
	int HP;	  //  
	int MP;
	int DEF;	//  
	int ATT;  //  
	int Lv;   //  
	int Exp;  //  
	int Num_Blue_Key; //     
	int Num_Yellow_Key;
}player;
 
struct monster
{
	int HP;	  //  
	int ATT;  //  
	int DEF;	//  
	int Exp;  //  
};
struct monster Green_Slime_Pro = { 50,10,12,100 };  //         
struct monster Red_Slime_Pro = { 100, 50, 12, 500 }; //      
struct monster Small_Wizard_Pro = { 100, 30, 9, 400 };//     
struct monster Small_Bat_Pro = { 20, 10, 9, 50 };     //     
struct monster Small_Skull_Pro = {30, 20, 10, 200};  //     
struct monster Big_Skull_Pro = {60, 50, 25, 300};   //     
 
 
int main()
{
	initPlayer();
	hwnd = initgraph(60 * 14, 60 * 13);
	initgamePicture();
 
	while (1) {
		SetMap();
		SetPlayer();
		playGame();
	}
 
	return 0;
}
 
/*
*      
*/
void SetPlayer()
{
	putimage(60 * 13, 0, &Message);	
	outtextxy(60 * 13 + 12, 100, player.name);
	outtextxy(60 * 13 + 12, 180, intToString(player.Lv));
	outtextxy(60 * 13 + 12, 235, intToString(player.Exp));
	outtextxy(60 * 13 + 12, 362, intToString(player.HP));
	outtextxy(60 * 13 + 12, 425, intToString(player.MP));
	outtextxy(60 * 13 + 12, 517, intToString(player.ATT));
	outtextxy(60 * 13 + 12, 567, intToString(player.DEF));
	outtextxy(60 * 13 + 12, 689, intToString(player.Num_Yellow_Key));
	outtextxy(60 * 13 + 12, 759, intToString(player.Num_Blue_Key));
}
 
/*
*        
*/
void initgamePicture()
{
	loadimage(&Wall, " .jpg", 60, 60);
	loadimage(&Ground, "  .jpg", 60, 60);
	loadimage(&Green_Slime, "    .jpg", 60, 60);
	loadimage(&Red_Slime, "    .jpg", 60, 60);
 
	loadimage(&Blue_Cry, "   .jpg", 60, 60);
	loadimage(&Red_Cry, "   .jpg", 60, 60);
 
	loadimage(&Blue_Key, "   .jpg", 60, 60);
	loadimage(&Yellow_Key, "   .jpg", 60, 60);
 
	loadimage(&Red_Med, "    .jpg", 60, 60);
	loadimage(&Blue_Med, "    .jpg", 60, 60);
 
	loadimage(&Ladder, "  .jpg", 60, 60);
	loadimage(&Small_Bat, "   .jpg", 60, 60);
	loadimage(&Small_Wizard, "   .jpg", 60, 60);
	loadimage(&Small_Skull, "   .jpg", 60, 60);
	loadimage(&Big_Skull, "    .jpg", 60, 60);
 
	loadimage(&Blue_door, "  .jpg", 60, 60);
	loadimage(&Yellow_door, "  .jpg", 60, 60);
	loadimage(&Player, " .jpg", 60, 60);
	loadimage(&Message, "info.jpg");
}
 
/*
*       
*/
void initPlayer()
{
	player.Lv = 0;
	player.ATT = 50;
	player.DEF = 50;
	player.Num_Blue_Key = 0;
	player.Num_Yellow_Key = 0;
	player.HP = 500;
	player.MP = 250;
	player.Exp = 0;
	playerx = 11;
	playery = 6;
}
 
//       
char *intToString(int Number)
{
	int len = 0;
	
	if (Number == 0) {
		str[0] = '0';
		len++;
	}
	while (Number)
	{
		str[len++] = Number % 10+'0';
		Number /= 10;
	}
	for (int i = 0; i < len/2; i++) {
		char t = str[i];
		str[i] = str[len - i - 1];
		str[len - i - 1] = t;
	}
	str[len] = '\0';
	return str;
}
 
/*
*      
*
*/
void SetMap()
{
	for (int i = 0; i < 13; i++)
	{
		for (int j = 0; j < 13; j++)
		{
			switch (map[i][j])
			{
 
			case 0:
				putimage(j * 60, i * 60, &Wall);     // 
				break;
			case 1:
				putimage(j * 60, i * 60, &Ground);    //  
				break;
			case 2:
				putimage(j * 60, i * 60, &Blue_door);   //  
				break;
			case 3:
				putimage(j * 60, i * 60, &Yellow_door);  //  
				break;
			case 4:
				putimage(j * 60, i * 60, &Blue_Cry);     //   
				break;
			case 5:
				putimage(j * 60, i * 60, &Red_Cry);     //   
				break;
			case 6:
				putimage(j * 60, i * 60, &Blue_Key);    //   
				break;
			case 7:
				putimage(j * 60, i * 60, &Yellow_Key);   //   
				break;
			case 8:
				putimage(j * 60, i * 60, &Red_Med);     //   
				break;
			case 9:
				putimage(j * 60, i * 60, &Blue_Med);     //   
				break;
			case 10:
				putimage(j * 60, i * 60, &Small_Bat);    //   
				break;
			case 11:
				putimage(j * 60, i * 60, &Small_Wizard);   //   
				break;
			case 12:
				putimage(j * 60, i * 60, &Small_Skull);   //   
				break;
			case 13:
				putimage(j * 60, i * 60, &Big_Skull);    //   
				break;
			case 14:
				putimage(j * 60, i * 60, &Green_Slime);   //    
				break;
			case 15:
				putimage(j * 60, i * 60, &Red_Slime);    //    
				break;
			case 98:
				putimage(j * 60, i * 60, &Ladder);     //  
				break;
			case 99:
				putimage(j * 60, i * 60, &Player);     //  
				break;
			}
 
		}
	}
}
 
int Combat(int x)
{
	int ID;
	switch (x) {
		case 10:
			ID = MessageBox(hwnd, "   ", "    ?", MB_YESNO);
			if (ID == IDYES)
			{
				if (VS(player.HP, player.ATT, player.DEF, Small_Bat_Pro.HP, Small_Bat_Pro.ATT, Small_Bat_Pro.DEF)) {
					player.Exp += Small_Bat_Pro.Exp;
					return 1;
				}	
			}
			break;
		case 11:
			ID = MessageBox(hwnd, "     ", "    ?", MB_YESNO);
			if (ID == IDYES)
			{
				if (VS(player.HP, player.ATT, player.DEF, Small_Wizard_Pro.HP, Small_Wizard_Pro.ATT, Small_Wizard_Pro.DEF)) {
					player.Exp += Small_Wizard_Pro.Exp;
					return 1;
				}
			}
			break;
		case 12:
			ID = MessageBox(hwnd, "     ", "    ?", MB_YESNO);
			if (ID == IDYES)
			{
				if (VS(player.HP, player.ATT, player.DEF, Small_Skull_Pro.HP, Small_Skull_Pro.ATT, Small_Skull_Pro.DEF)) {
					player.Exp += Small_Skull_Pro.Exp;
					return 1;
				}
			}
			break;
		case 13:
			ID = MessageBox(hwnd, "     ", "    ?", MB_YESNO);
			if (ID == IDYES)
			{
				if (VS(player.HP, player.ATT, player.DEF, Big_Skull_Pro.HP, Big_Skull_Pro.ATT, Big_Skull_Pro.DEF)) {
					player.Exp += Big_Skull_Pro.Exp;
					return 1;
				}
			}
			break;
		case 14:
			ID = MessageBox(hwnd, "      ", "    ?", MB_YESNO);
			if (ID == IDYES)
			{
				if (VS(player.HP, player.ATT, player.DEF, Green_Slime_Pro.HP, Green_Slime_Pro.ATT, Green_Slime_Pro.DEF)) {
					player.Exp += Green_Slime_Pro.Exp;
					return 1;
				}
			}
			break;
		case 15:
			ID = MessageBox(hwnd, "      ", "    ?", MB_YESNO);
			if (ID == IDYES)
			{
				if (VS(player.HP, player.ATT, player.DEF, Red_Slime_Pro.HP, Red_Slime_Pro.HP, Red_Slime_Pro.HP)) {
					player.Exp += Green_Slime_Pro.Exp;
					return 1;
				}
			}
			break;
 
	}
	return 0;
}
 
int VS(int playHP, int playATT, int playDEF, int monHP, int monATT, int monDEF)
{
	while (playHP > 0 || monHP > 0)
	{
		monHP -= (playATT - monDEF);
		if (monHP < 0)
			break;
		playHP -= (monATT - playDEF);
	}
	if (playHP > 0) {
		player.HP = playHP;
		return 1;
	}
		
	else {
		MessageBox(hwnd, "", "   ", MB_YESNO);
		return 0;
	}
}
void playGame()
{
	while (1)
	{
		char ch = _getch();
		switch (ch) {
			case 'w':
			case 72:
				if (map[playerx - 1][playery] == 1) {     //      
					map[playerx - 1][playery] = 99;
					map[playerx][playery] = 1;
					playerx--;
				}
				else if (map[playerx-1][playery]== 6) {   //       
					player.Num_Blue_Key++;
					map[playerx - 1][playery] = 99;
					map[playerx][playery] = 1;
					playerx--;
				}
				else if (map[playerx - 1][playery] == 7) {   //       
					player.Num_Yellow_Key++;
					map[playerx - 1][playery] = 99;
					map[playerx][playery] = 1;
					playerx--;
				}
				//      
				else if (map[playerx - 1][playery] == 10 || map[playerx - 1][playery] == 11 ||
						 map[playerx - 1][playery] == 12 || map[playerx - 1][playery] == 13 ||
						 map[playerx - 1][playery] == 14 || map[playerx - 1][playery] == 15)
				{
					int x = Combat(map[playerx - 1][playery]);
					if (x == 1) {
						map[playerx - 1][playery] = 99;
						map[playerx][playery] = 1;
						playerx--;
					}
				}
				//    
				else if (map[playerx - 1][playery] == 8 || map[playerx - 1][playery] == 9) {
					if (map[playerx - 1][playery] == 8)
						player.HP += 200;
					else
						player.HP += 500;
					map[playerx - 1][playery] = 99;
					map[playerx][playery] = 1;
					playerx--;
				}
				//   
				else if (map[playerx - 1][playery] == 2 || map[playerx - 1][playery] == 3) {
					if (map[playerx - 1][playery] == 2 && player.Num_Blue_Key) {
						player.Num_Blue_Key--;
						map[playerx - 1][playery] = 99;
						map[playerx][playery] = 1;
						playerx--;
					}
					if (map[playerx - 1][playery] == 3 && player.Num_Yellow_Key) {
						player.Num_Yellow_Key--;
						map[playerx - 1][playery] = 99;
						map[playerx][playery] = 1;
						playerx--;
					}
				}
				//    
				//   +2  
				//   +2  
				else if (map[playerx - 1][playery] == 4 || map[playerx - 1][playery] == 5) {
					if (map[playerx - 1][playery] == 4)
						player.DEF += 2;
					else if (map[playerx - 1][playery] == 5)
						player.ATT += 2;
					map[playerx - 1][playery] = 99;
					map[playerx][playery] = 1;
					playerx--;
				}
				break;
			case 's':
			case 80:
				if (map[playerx + 1][playery] == 1) {     //      
					map[playerx + 1][playery] = 99;
					map[playerx][playery] = 1;
					playerx++;
				}
				else if (map[playerx + 1][playery] == 6) {   //       
					player.Num_Blue_Key++;
					map[playerx + 1][playery] = 99;
					map[playerx][playery] = 1;
					playerx++;
				}
				else if (map[playerx + 1][playery] == 7) {   //       
					player.Num_Yellow_Key++;
					map[playerx + 1][playery] = 99;
					map[playerx][playery] = 1;
					playerx++;
				}
				//      
				else if (map[playerx + 1][playery] == 10 || map[playerx + 1][playery] == 11 ||
					map[playerx + 1][playery] == 12 || map[playerx + 1][playery] == 13 ||
					map[playerx + 1][playery] == 14 || map[playerx + 1][playery] == 15)
				{
					int x = Combat(map[playerx + 1][playery]);
					if (x == 1) {
						map[playerx + 1][playery] = 99;
						map[playerx][playery] = 1;
						playerx++;
					}
				}
				//    
				else if (map[playerx + 1][playery] == 8 || map[playerx + 1][playery] == 9) {
					if (map[playerx + 1][playery] == 8)
						player.HP += 200;
					else
						player.HP += 500;
					map[playerx + 1][playery] = 99;
					map[playerx][playery] = 1;
					playerx++;
				}
				//   
				else if (map[playerx + 1][playery] == 2 || map[playerx + 1][playery] == 3) {
					if (map[playerx + 1][playery] == 2 && player.Num_Blue_Key) {
						player.Num_Blue_Key++;
						map[playerx + 1][playery] = 99;
						map[playerx][playery] = 1;
						playerx++;
					}
					if (map[playerx + 1][playery] == 3 && player.Num_Yellow_Key) {
						player.Num_Yellow_Key++;
						map[playerx + 1][playery] = 99;
						map[playerx][playery] = 1;
						playerx++;
					}
				}
				//    
				//   +2  
				//   +2  
				else if (map[playerx + 1][playery] == 4 || map[playerx + 1][playery] == 5) {
					if (map[playerx + 1][playery] == 4)
						player.DEF += 2;
					else if (map[playerx + 1][playery] == 5)
						player.ATT += 2;
					map[playerx + 1][playery] = 99;
					map[playerx][playery] = 1;
					playerx++;
				}
				break;
			case 'a':
			case 75:
				if (map[playerx][playery - 1] == 1) {     //      
					map[playerx][playery - 1] = 99;
					map[playerx][playery] = 1;
					playery--;
				}
				else if (map[playerx][playery - 1] == 6) {   //       
					player.Num_Blue_Key++;
					map[playerx][playery - 1] = 99;
					map[playerx][playery] = 1;
					playery--;
				}
				else if (map[playerx][playery - 1] == 7) {   //       
					player.Num_Yellow_Key++;
					map[playerx][playery - 1] = 99;
					map[playerx][playery] = 1;
					playery--;
				}
				//      
				else if (map[playerx][playery - 1] == 10 || map[playerx][playery - 1] == 11 ||
					map[playerx][playery - 1] == 12 || map[playerx][playery - 1] == 13 ||
					map[playerx][playery - 1] == 14 || map[playerx][playery - 1] == 15)
				{
					int x = Combat(map[playerx][playery - 1]);
					if (x == 1) {
						map[playerx][playery - 1] = 99;
						map[playerx][playery] = 1;
						playery--;
					}
				}
				//    
				else if (map[playerx][playery - 1] == 8 || map[playerx][playery - 1] == 9) {
					if (map[playerx][playery - 1] == 8)
						player.HP += 200;
					else
						player.HP += 500;
					map[playerx ][playery- 1] = 99;
					map[playerx][playery] = 1;
					playery--;
				}
				//   
				else if (map[playerx][playery - 1] == 2 || map[playerx][playery - 1] == 3) {
					if (map[playerx][playery - 1] == 2 && player.Num_Blue_Key) {
						player.Num_Blue_Key--;
						map[playerx][playery - 1] = 99;
						map[playerx][playery] = 1;
						playery--;
					}
					if (map[playerx][playery - 1] == 3 && player.Num_Yellow_Key) {
						player.Num_Yellow_Key--;
						map[playerx][playery - 1] = 99;
						map[playerx][playery] = 1;
						playery--;
					}
				}
				//    
				//   +2  
				//   +2  
				else if (map[playerx][playery - 1] == 4 || map[playerx][playery - 1] == 5) {
					if (map[playerx][playery - 1] == 4)
						player.DEF += 2;
					else if (map[playerx][playery - 1] == 5)
						player.ATT += 2;
					map[playerx][playery - 1] = 99;
					map[playerx][playery] = 1;
					playery--;
				}
				break;
			case 'd':
			case 77:
				if (map[playerx][playery + 1] == 1) {     //      
					map[playerx][playery + 1] = 99;
					map[playerx][playery] = 1;
					playery++;
				}
				else if (map[playerx][playery + 1] == 6) {   //       
					player.Num_Blue_Key++;
					map[playerx][playery + 1] = 99;
					map[playerx][playery] = 1;
					playery++;
				}
				else if (map[playerx][playery + 1] == 7) {   //       
					player.Num_Yellow_Key++;
					map[playerx][playery + 1] = 99;
					map[playerx][playery] = 1;
					playery++;
				}
				//      
				else if (map[playerx][playery + 1] == 10 || map[playerx][playery + 1] == 11 ||
					map[playerx][playery + 1] == 12 || map[playerx][playery + 1] == 13 ||
					map[playerx][playery + 1] == 14 || map[playerx][playery + 1] == 15)
				{
					int x = Combat(map[playerx][playery + 1]);
					if (x == 1) {
						map[playerx][playery + 1] = 99;
						map[playerx][playery] = 1;
						playery++;
					}
				}
				//    
				else if (map[playerx][playery + 1] == 8 || map[playerx][playery + 1] == 9) {
					if (map[playerx][playery + 1] == 8)
						player.HP += 200;
					else
						player.HP += 500;
					map[playerx][playery + 1] = 99;
					map[playerx][playery] = 1;
					playery++;
				}
				//   
				else if (map[playerx][playery + 1] == 2 || map[playerx][playery + 1] == 3) {
					if (map[playerx][playery + 1] == 2 && player.Num_Blue_Key) {
						player.Num_Blue_Key--;
						map[playerx][playery + 1] = 99;
						map[playerx][playery] = 1;
						playery++;
					}
					if (map[playerx][playery + 1] == 3 && player.Num_Yellow_Key) {
						player.Num_Yellow_Key--;
						map[playerx][playery + 1] = 99;
						map[playerx][playery] = 1;
						playery++;
					}
				}
				//    
				//   +2  
				//   +2  
				else if (map[playerx][playery + 1] == 4 || map[playerx][playery + 1] == 5) {
					if (map[playerx][playery + 1] == 4)
						player.DEF += 2;
					else if (map[playerx][playery + 1] == 5)
						player.ATT += 2;
					map[playerx][playery + 1] = 99;
					map[playerx][playery] = 1;
					playery++;
				}
				break;
		}
		SetMap(); //      
		SetPlayer(); //        
	}
}
C 언어 마 탑 게임 의 실현 코드 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 C 언어 마 탑 게임 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기