地图小游戏

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<windows.h>
#include<time.h>
//a.能量 	b.激活驿站数	c.弓箭	d.盾牌	e.备用    f.判断回能量
//g和h.驿站   m.攻击力	n.防御力(未添加)
int a = 200;
int b = 0;
int c = 0;
int d = 0;
int e = 0;
int f = 0;
int m = 40;
int o = 100;	//小怪血量
int q = 200;	//boss血量
int kk = 0;     //判断有没有逃跑
//srand((unsigned)time(NULL));

//0.道路	1.人	2.驿站	3.人+驿站	4.激活驿站	5.人+激活驿站	 6.障碍		7.转盘
//8.人+转盘	9.武器	10.能量	11.怪物		12.boss    13.终点    15.起点
int map[27][27] = {
	6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
	6, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 9, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
	6, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 11, 7, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 6, 0, 6,
	6, 0, 11, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 10, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 6,
	6, 11, 9, 2, 0, 0, 0, 10, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 7, 0, 0, 6,
	6, 0, 11, 0, 0, 0, 0, 7, 0, 0, 0, 11, 9, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
	6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 11, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 6, 0, 0, 6,
	6, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 7, 0, 0, 11, 11, 11, 2, 0, 0, 0, 0, 0, 6,
	6, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 6, 0, 0, 0, 0, 10, 11, 9, 11, 0, 0, 0, 0, 7, 0, 6,
	6, 0, 0, 0, 0, 2, 9, 11, 0, 7, 0, 10, 0, 7, 0, 0, 7, 11, 6, 7, 0, 0, 0, 0, 0, 0, 6,
	6, 7, 0, 0, 0, 0, 11, 0, 0, 0, 2, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 6,
	6, 0, 11, 0, 7, 0, 0, 6, 0, 0, 11, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 9, 0, 0, 0, 0, 6,
	6, 0, 0, 0, 0, 0, 0, 0, 2, 11, 9, 11, 2, 0, 6, 0, 0, 7, 0, 0, 0, 2, 0, 0, 2, 0, 6,
	6, 7, 0, 10, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 6,
	6, 0, 0, 6, 0, 0, 6, 0, 6, 0, 0, 0, 10, 7, 0, 0, 11, 9, 11, 0, 0, 0, 6, 0, 0, 0, 6,
	6, 0, 0, 0, 2, 11, 9, 11, 0, 7, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 2, 0, 10, 7, 0, 6,
	6, 0, 10, 6, 0, 11, 11, 0, 0, 0, 0, 6, 0, 6, 0, 9, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 6,
	6, 0, 0, 0, 0, 7, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 6,
	6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 6, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 6, 6,
	6, 7, 0, 0, 10, 0, 6, 11, 6, 7, 0, 11, 0, 2, 0, 0, 0, 0, 6, 0, 0, 0, 7, 0, 2, 0, 6,
	6, 0, 11, 0, 0, 0, 11, 9, 0, 0, 11, 9, 0, 7, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
	6, 11, 9, 2, 0, 7, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 2, 0, 0, 2, 6,
	6, 0, 11, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 6,
	6, 0, 6, 0, 0, 6, 0, 0, 2, 0, 0, 0, 2, 12, 12, 0, 0, 11, 0, 2, 0, 0, 0, 11, 11, 11, 6,
	6, 0, 0, 0, 7, 0, 0, 0, 11, 0, 7, 0, 12, 9, 6, 0, 11, 9, 11, 0, 0, 10, 0, 11, 12, 12, 6,
	6, 0, 0, 10, 2, 0, 0, 11, 9, 11, 0, 12, 9, 9, 6, 10, 7, 0, 0, 0, 0, 0, 2, 11, 12, 13, 6,
	6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
};

void blood();
int color(int x);
void show();
void findMan();
void playGame();
void randomPost();
void energyChange();
int numberPost();
void rouletteWheel();
void reel();
void he();
void data();
void numbers();
void death();
void littleMonster();
void boss();
void struckLittleMonster();
void struckboss();
void manner();
void measure(char *ar);
void postDeatch(char *ar);
void book();

int main() {
	while (1) {
		death();
		data();
		show();
		playGame();
		system("cls");
	}

	return 0;
}
//0.道路	1.人	2.驿站	3.人+驿站	4.激活驿站	5.人+激活驿站	 6.障碍		7.转盘
//8.人+转盘	9.武器	10.能量	11.怪物		12.boss
void show() {
	for (int i = 0; i < 27; i++) {
		for (int j = 0; j < 27; j++) {
			switch (map[i][j]) {
				case 0:
					printf("= ");
					break;
				case 1:
					printf("人");
					color(7);
					break;
				case 2:
					printf("驿");
					color(7);
					break;
				case 3:
					printf("人");
					color(7);
					break;
				case 4:
					color(4);
					printf("驿");
					color(7);
					break;
				case 5:
					printf("人");
					color(7);
					break;
				case 6:
					color(5);
					printf("■ ");
					color(7);
					break;
				case 7:
					color(3);
					printf("● ");
					color(7);
					break;
				case 8:
					printf("人");
					color(7);
					break;
				case 9:
					color(3);
					printf("$ ");
					color(7);
					break;
				case 10:
					color(2);
					printf("* ");
					color(7);
					break;
				case 11:
					color(14);
					printf("怪");
					color(7);
					break;
				case 12:
					color(6);
					printf("怪");
					color(7);
					break;
				case 13:
					printf("O ");
					break;
				case 15:
					printf("@ ");
					break;
				case 16:
					printf("人");
					break;
				default:
					break;
			}
		}
		printf("\n");
	}

}
int color(int x) {	//自定义函根据参数改变颜色
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);
	return 0;
}

//随机位置生成20个驿站
//玩家移动
void playGame() {
	int i, j;
	for (i = 0; i < 27; i++) {
		for (j = 0; j < 27; j++) {
			if (map[i][j] == 1 || map[i][j] == 3 || map[i][j] == 5 || map[i][j] == 8 || map[i][j] == 16) {
				break;
			}
		}
		if (map[i][j] == 1 || map[i][j] == 3 || map[i][j] == 5 || map[i][j] == 8 || map[i][j] == 16) {
			break;
		}
	}
	char ch = ' ';		//捕获用户按键
	ch = _getch();
	//0.道路	1.人	2.驿站	3.人+驿站	4.激活驿站	5.人+激活驿站	 6.障碍		7.转盘
	//8.人+转盘	9.武器	10.能量	11.怪物		12.boss
	switch (ch) {
		case 'W':
		case 'w':
			if (map[i - 1][j] == 0) {
				map[i][j] -= 1;
				map[i - 1][j] += 1;
			} else if (map[i - 1][j] == 2) {
				map[i][j] -= 1;
				map[i - 1][j] += 1;
				system("cls");
				printf("请选择是否激活驿站(1/2):\n");
				printf("激活需要消耗10能量\n");
				scanf("%d", &e);
				if (e == 1) {
					if (a > 10) {
						printf("激活成功!\n");
						Sleep(500);
						a -= 10;
						b++;
						map[i - 1][j] += 2;
					} else {

						printf("激活失败,能量不够!\n");
						Sleep(500);
					}
				} else {
					printf("好的!\n");
					Sleep(500);
				}
			} else if (map[i - 1][j] == 4) {
				map[i][j] -= 1;
				map[i - 1][j] += 1;
				f = numberPost(f);
			} else if (map[i - 1][j] == 7) {
				//转盘
				rouletteWheel();
			} else if (map[i - 1][j] == 9) {
				map[i][j] -= 1;
				map[i - 1][j] = 1;
				srand((unsigned)time(NULL));
				e = rand() % 2 + 1;
				if (e == 1) {
					system("cls");
					printf("弓箭增加");
					Sleep(1000);
					c++;	//弓箭增加
				} else {
					system("cls");
					printf("盾牌增加");
					Sleep(1000);
					d++;	//盾牌增加
				}
			} else if (map[i - 1][j] == 10) {
				map[i][j] -= 1;
				map[i - 1][j] = 1;
				energyChange();
			} else if (map[i - 1][j] == 11) {
				system("cls");
				struckLittleMonster();
				map[i][j] -= 1;
				map[i - 1][j] = 1;
				o = 100;
				if (kk == 1) {
					map[i][j] = 1;
					map[i - 1][j] = 11;
					kk = 0;
				}

			} else if (map[i - 1][j] == 12) {
				system("cls");
				struckboss();
				map[i][j] -= 1;
				map[i - 1][j] = 1;
				q = 200;
				if (kk == 1) {
					map[i][j] = 1;
					map[i - 1][j] = 12;
					kk = 0;
				}
			} else if (map[i - 1][j] == 15) {
				map[i][j] -= 1;
				map[i - 1][j] += 1;
				printf("回家了,能量回满!\n");
				a = 201;
			}
			a -= 1;
			break;
		case 'S':
		case 's':
			if (map[i + 1][j] == 0) {
				map[i][j] -= 1;
				map[i + 1][j] += 1;
			} else if (map[i + 1][j] == 2) {
				map[i][j] -= 1;
				map[i + 1][j] += 1;
				system("cls");
				printf("请选择是否激活驿站(1/2):\n");
				printf("激活需要消耗10能量\n");
				scanf("%d", &e);
				if (e == 1) {
					if (a > 10) {
						printf("激活成功!\n");
						Sleep(500);
						a -= 10;
						b++;
						map[i + 1][j] += 2;
					} else {
						printf("激活失败,能量不够!\n");
						Sleep(500);
					}
				} else {
					printf("好的!\n");
					Sleep(500);
				}
			} else if (map[i + 1][j] == 4) {
				map[i][j] -= 1;
				map[i + 1][j] += 1;
				f = numberPost(f);
			} else if (map[i + 1][j] == 7) {
				//转盘
				rouletteWheel();
			} else if (map[i + 1][j] == 9) {
				map[i][j] -= 1;
				map[i + 1][j] = 1;
				srand((unsigned)time(NULL));
				e = rand() % 2 + 1;
				if (e == 1) {
					c++;	//弓箭增加
					system("cls");
					printf("弓箭增加");
					Sleep(1000);
				} else {
					d++;	//盾牌增加
					system("cls");
					printf("盾牌增加");
					Sleep(1000);
				}
			} else if (map[i + 1][j] == 10) {
				map[i][j] -= 1;
				map[i + 1][j] = 1;
				energyChange();
			} else if (map[i + 1][j] == 11) {
				system("cls");
				struckLittleMonster();
				map[i][j] -= 1;
				map[i + 1][j] = 1;
				o = 100;
				if (kk == 1) {
					map[i][j] = 1;
					map[i + 1][j] = 11;
				}
			} else if (map[i + 1][j] == 12) {
				system("cls");
				struckboss();
				map[i][j] -= 1;
				map[i + 1][j] = 1;
				q = 200;
				if (kk == 1) {
					map[i][j] = 1;
					map[i + 1][j] = 12;
					kk = 0;
				}
			} else if (map[i + 1][j] == 15) {
				map[i][j] -= 1;
				map[i + 1][j] += 1;
				printf("回家了,能量回满!\n");
				a = 201;
			}
			a -= 1;
			break;
		case 'A':
		case 'a':
			if (map[i][j - 1] == 0) {
				map[i][j] -= 1;
				map[i  ][j - 1] += 1;
			} else if (map[i ][j - 1] == 2) {
				map[i][j] -= 1;
				map[i ][j - 1] += 1;
				system("cls");
				printf("请选择是否激活驿站(1/2):\n");
				printf("激活需要消耗10能量\n");
				scanf("%d", &e);
				if (e == 1) {
					if (a > 10) {
						printf("激活成功!\n");
						Sleep(500);
						b++;
						a -= 10;
						map[i ][j - 1] += 2;
					} else {
						printf("激活失败,能量不够!\n");
						Sleep(500);
					}
				} else {
					printf("好的!\n");
					Sleep(500);
				}
			} else if (map[i][j - 1] == 4) {
				map[i][j] -= 1;
				map[i ][j - 1] += 1;
				f = numberPost(f);
			} else if (map[i][j - 1] == 7) {
				//转盘
				rouletteWheel();
			} else if (map[i][j - 1] == 9) {
				map[i][j] -= 1;
				map[i][j - 1] = 1;
				srand((unsigned)time(NULL));
				e = rand() % 2 + 1;
				if (e == 1) {
					c++;	//弓箭增加
					system("cls");
					printf("弓箭增加");
					Sleep(1000);
				} else {
					system("cls");
					printf("盾牌增加");
					Sleep(1000);
					d++;	//盾牌增加
				}
			} else if (map[i][j - 1]  == 10) {
				map[i][j] -= 1;
				map[i][j - 1] = 1;
				energyChange();
			} else if (map[i][j - 1] == 11) {
				system("cls");
				struckLittleMonster();
				map[i][j] -= 1;
				map[i ][j - 1] = 1;
				o = 100;
				if (kk == 1) {
					map[i][j] = 1;
					map[i  ][j - 1] = 11;
				}
			} else if (map[i][j - 1] == 12) {
				system("cls");
				struckboss();
				map[i][j] -= 1;
				map[i][j - 1] = 1;
				q = 200;
				if (kk == 1) {
					map[i][j] = 1;
					map[i][j - 1] = 12;
					kk = 0;
				}
			} else if (map[i ][j - 1] == 15) {
				map[i][j] -= 1;
				map[i][j - 1] += 1;
				printf("回家了,能量回满!\n");
				a = 201;
			}
			a -= 1;
			break;
		case 'D':
		case 'd':
			if (map[i][j + 1] == 0) {
				map[i][j] -= 1;
				map[i][j + 1] += 1;
			} else if (map[i ][j + 1] == 2) {
				map[i][j] -= 1;
				map[i ][j + 1] += 1;
				system("cls");
				printf("请选择是否激活驿站(1/2):\n");
				printf("激活需要消耗10能量\n");
				scanf("%d", &e);
				if (e == 1) {
					if (a > 10) {
						system("cls");
						printf("激活成功!\n");
						Sleep(500);
						a -= 10;
						b++;
						map[i ][j + 1] += 2;
					} else {
						system("cls");
						printf("激活失败,能量不够!\n");
						Sleep(500);
					}
				} else {
					printf("好的!\n");
				}
			} else if (map[i][j + 1] == 4) {
				map[i][j] -= 1;
				map[i ][j + 1] += 1;
				f = numberPost(f);
			} else if (map[i][j + 1] == 7) {
				//转盘
				rouletteWheel();
			} else if (map[i][j + 1] == 9) {
				map[i][j] -= 1;
				map[i][j + 1] = 1;
				srand((unsigned)time(NULL));
				e = rand() % 2 + 1;
				if (e == 1) {
					c++;	//弓箭增加
					system("cls");
					printf("弓箭增加");
					Sleep(1000);
				} else {
					d++;	//盾牌增加
					system("cls");
					printf("盾牌增加");
					Sleep(1000);
				}
			} else if (map[i][j + 1]  == 10) {
				map[i][j] -= 1;
				map[i][j + 1] = 1;
				energyChange();
			} else if (map[i][j + 1] == 11) {
				system("cls");
				struckLittleMonster();
				map[i][j] -= 1;
				map[i ][j + 1] = 1;
				o = 100;
				if (kk == 1) {
					map[i][j] = 1;
					map[i  ][j + 1] = 11;
				}
			} else if (map[i][j + 1] == 12) {
				system("cls");
				struckboss();
				map[i][j] -= 1;
				map[i][j + 1] = 1;
				q = 200;
				if (kk == 1) {
					map[i][j] = 1;
					map[i][j + 1] = 12;
					kk = 0;
				}
			} else if (map[i ][j + 1] == 15) {
				map[i][j] -= 1;
				map[i][j + 1] += 1;
				printf("回家了,能量回满!\n");
				a = 201;
			}
			a -= 1;
			break;
		case ' ':
			system("cls");
			book();
			system("pause");
			system("cls");
			break;
		case 'p':
		case 'P':
			exit(0);
		default:
			//TODO
			break;
	}
}
//10.能量变换
void energyChange() {
	srand((unsigned)time(NULL));
	e = rand() % 50;
	e -= 20;
	if (e > 0) {
		system("cls");
		printf("能量增加%d点\n", e);
		blood();
		Sleep(500);
		a += e;
	} else {
		system("cls");
		printf("这能量是假的,被我骗了吧");
		Sleep(500);
	}
}
//驿站进入的次数
int numberPost(int f) {

	int i = 0;
	srand((unsigned)time(NULL));
	i = rand() % 30 + 1;
	if (f < 5) {
		system("cls");
		printf("你回过能量了,太贪婪了,能量减2\n");
		Sleep(500);
		a -= 2;
		f++;
	} else {
		system("cls");
		printf("回复能量%d点\n", i);
		Sleep(500);
		a += i;
		f = 0;
	}
	return f;
}
//转盘内容       //抽奖需要消耗5点能量
void rouletteWheel() {
	system("cls");
	printf("进入转盘世界!\n");
	reel();
	Sleep(500);
	int i = 0;
	int j = 0;
	printf("前方神秘大奖等着你哦,是否抽奖!抽奖需要消耗5点能量(1/2)\n");
	scanf("%d", &j);
	if (j == 1) {
		srand((unsigned)time(NULL));
		i = rand() % 10 + 1;
		if (i == 1) {
			system("cls");
			reel();
			printf("恭喜你,抽到弓箭一把!\n");
			Sleep(2000);
			c++;
		} else if (i == 2) {
			if (d > 0) {
				system("cls");
				reel();
				printf("被怪物抓伤,消耗盾牌一把\n");
				Sleep(1000);
				d--;
			} else {
				system("cls");
				reel();
				printf("被怪物抓伤,能量减30\n");
				Sleep(2000);
				a -= 30;
			}
		} else if (i == 3) {
			system("cls");
			reel();
			printf("恭喜你,抽到盾牌一把!\n");
			Sleep(2000);
			d++;
		} else if (i == 4) {
			if (c > 0) {
				system("cls");
				reel();
				printf("前方有野猪,你射出一箭,好好饱餐一顿,能量加30\n");
				a += 30;
				blood();
				Sleep(2000);
			} else {
				system("cls");
				reel();
				printf("前方有野猪,你没有弓箭,被它欺负了一顿,扣除了30的能量!\n");
				a -= 30;
				Sleep(2000);
			}
		} else if (i == 5) {
			system("cls");
			reel();
			printf("攻击力加5\n");
			Sleep(2000);
			m += 5;
		} else if (i == 6) {
			system("cls");
			reel();
			printf("攻击力减5\n");
			Sleep(2000);
			m -= 5;
		} else if (i == 7) {
			system("cls");
			reel();
			printf("能量加20\n");
			a += 20;
			blood();
			Sleep(2000);
		} else if (i == 8) {
			system("cls");
			reel();
			printf("能量减20\n");
			a -= 20;
			Sleep(2000);
		} else if (i == 9) {
			system("cls");
			reel();
			printf("抽到了西北风,感觉自己又吃饱了!\n");
			Sleep(2000);
		} else if (i == 10) {
			system("cls");
			reel();
			printf("天空慢慢变黑暗!\n");
			Sleep(500);
			printf("四周传来了小孩的哭声\n");
			Sleep(500);
			printf("这是从转盘中掉出了一个盒子,上面写着“潘多拉魔盒”\n");
			Sleep(500);
			printf("是否打开盒子(1/2)");
			int i2 = 0;
			scanf("%d", &i2);
			if (i2 == 1) {
				system("cls");
				he();
				Sleep(2000);
				int i3 = 0;
				i3 = rand() % 100 + 1;
				if (i3 < 90) {
					system("cls");
					printf("召唤两个boss进行决斗!\n");
					Sleep(2000);
				} else if (i3 >= 90 && i3 <= 95) {
					printf("恭喜你,获得10把弓箭和10快盾牌!\n");
					Sleep(2000);
					c += 10;
					d += 10;
				} else if (i3 > 95 && i3 <= 100) {
					printf("发现世外高人,你跟随他学习两年半的篮球技术\n");
					Sleep(1000);
					printf("攻击力加100\n");
					Sleep(1000);
					printf("发现他是准备将你夺舍!\n");
					Sleep(1000);
					printf("你极力反抗,最终反杀!\n");
					Sleep(1000);
					printf("你将他所有的篮球捏爆!能量回复100点!\n");
					blood();
					a += 100;
				}

			} else {
				system("cls");
				printf("盒子消失,你感觉被压抑的胸口终于能喘气了,但是不知道体内的某样东西被抽走了!\n");
				Sleep(1000);
				printf("能量减20");
				a -= 20;
				Sleep(1000);
			}
		}
		a -= 5;
	} else if (j == 2) {
		system("cls");
		printf("神秘大奖离你远去咯!\n");
		Sleep(1000);
	} else {
		system("cls");
		printf("你在乱输入,严重破坏游戏环境,能量减10!\n");
		Sleep(1000);
		a -= 10;
	}
}
//转盘样子
void reel() {
	int radius = 10;
	for (int i = -radius; i <= radius; i++) {
		for (int j = -radius; j <= radius; j++) {
			if (i * i + j * j <= radius * radius) {
				printf("*");
			} else {
				printf(" ");
			}
		}
		printf("\n");
	}
	printf("       人                 \n");
}


//盒子
void he() {
	int width = 20, height = 10;
	int centerX = width / 2, centerY = height / 2;
	int halfWidth = width / 2, halfHeight = height / 2;

	for (int i = 0; i < height; i++) {
		for (int j = 0; j < width; j++) {
			if ((i == 0 || i == height - 1) && (j == 0 || j == width - 1)) {
				printf("+");  // 绘制角落
			} else if (i == 0 || i == height - 1) {
				printf("-");  // 绘制横线
			} else if (j == 0 || j == width - 1) {
				printf("|");  // 绘制竖线
			} else if (abs(i - centerY) <= halfHeight / 2 && abs(j - centerX) <= halfWidth / 2) {
				printf("#");  // 绘制内部盒子
			} else {
				printf(" ");  // 绘制空格
			}
		}
		printf("\n");  // 换行
	}
}
//显示数据
void data() {
	printf("能量:%d\t", a);
	printf("弓箭:%d\t", c);
	printf("\t盾牌:%d\t\t", d);
	printf("攻击力:%d\t", m);
	printf("激活驿站数:%d\n", b);
	printf("按空格打开说明书!\n");
}

void book() {
	printf("--------------------------\n");
	printf("------- 游戏说明书 -------\n");
	printf("------1. 游戏概述---------\n");
	printf("------2. 操作方法---------\n");
	printf("------3. 游戏规则---------\n");
	printf("----- 4. 退出游戏---------\n");
	printf("--------------------------\n");
	numbers();
}
//说明书
void numbers() {
	int choice;
	printf("--请选择相应的菜单号: \n");
	scanf("%d", &choice);
	switch (choice) {
		case 1:
			printf("这个游戏是一款冒险类游戏,你需要在冒险过程中通过打怪、捡装备,\n最后达到目的地打最终boss\n");
			system("pause");
			system("cls");
			book();
			break;
		case 2:
			printf(" W代表向上走一格,s代表向下走一格,a代表向左走一格,d代表向右走一格,1代表是,2代表否\n");
			system("pause");
			system("cls");
			book();
			break;
		case 3:
			printf("------------------游戏规则:---------------------------\n");
			printf("--------(1):每走一格需要消耗一点能量值,初始能量值为200\n");
			printf("--------(2):可以进入驿站回复能量,驿站激活需耗20点能量-\n");
			printf("--------(3):地图上存在转盘,玩家可进入抽奖,奖品随机---\n");
			printf("--------(4):有怪兽关卡,可通过打怪,获得奖励-----------\n");
			printf("--------(5):通过不断的努力,最后打完大boss,通关成功---\n");
			printf("-------- = 为道路   \t 人 为人物   \t 驿 为驿站------\n");
			printf("-------- ●为转盘   \t $ 为随机武器\t * 为能量补给---\n");
			printf("-------- 怪 为小怪  \t boss 为最终大怪---------------\n");
			system("pause");
			system("cls");
			book();
			break;
		case 4:
			printf("--------退出说明书菜单页,返回游戏-------------\n");
			system("cls"); 
			break;
		default:
			printf("输入有误,请重新输入!");
			system("pause");
			system("cls");
			book();
			break;
	}


}

void death() {
	if (a <= 0) {
		system("cls");
		printf("失败了,勇士请再接再厉!");
		exit(0);
	}
	for (int i = 0; i < 27; i++) {
		for (int j = 0; j < 27; j++) {
			if (map[i][j] == 14) {
				system("cls");
				printf("*********\n");
				printf("*       *\n");
				printf("*  win  *\n");
				printf("*       *\n");
				printf("*********\n");
				exit(0);
			}
		}
	}
}
//小怪的样子
void littleMonster() {
	printf("        _____\n");
	printf("     ,-:` \\;',`'-, \n");
	printf("  .'-;_,;  ':-;_,'.\n");
	printf(" /;   '/    ,  _`.-\\\n");
	printf("| '`. (`     /` ` ` '|\n");
	printf("|:.  `\\`-.   \\_   `,'\n");
	printf("`-.._)`\\__/  _.--\\   \\\n");
	printf("        /`   /        (`\\\n");
	printf("       /`,   \\         |\\\n");
	printf("      / /     \\        ) )\n");
	printf("     \\ \\      `._,-' / /\n");
	printf("      `-/           `-'`\n");
	printf("         \n");
}
//boss
void boss() {
	printf("           ___..-.---.-.___\n");
	printf("    _..---` .---.-.   `   ``--.__\n");
	printf("   .        `     `  }` ` _        `.\n");
	printf("         ,_  /    ,_  .  -` `--.   \\\n");
	printf("           `//     / /   `,    \\   .\n");
	printf("    -..:::::::`-..`_\\ _-\\ /     \\   \\\n");
	printf(" .-'::::::::::::::::``  /```\\/\\_   \\`. ))\n");
	printf("/:::::;;::::;:;;:;:;` / /        `---`{}}}\n");
	printf(" `-.._:::::/  /\\_/ / /   `.__,         ){}}}\n");
	printf("      `'-::<`  <` <`-;\\      \\          ){}}/              _..._\n");
	printf("               `\\   /`|      /   `\\     /{{{/   _       /    ,   \\\n");
	printf("               `\\   /`|      /   `\\     /{{{/   _       /    ,     \\\n");
	printf("                 `\\` `\\;\\__  /_ _ _`\\  /{{{/  _;M;_____/_   /    .\\`.\n");
	printf("                   `\\        `      \\'`\"{{;*\"\"\"\"\"\"      `,._     \\M\n");
	printf("                     `\\                                            `\n");
	printf("                       `\\                                          ` \n");
}

void manner() {
	printf("\n");
	printf("\n");
	printf("\n");
	printf("\n");
	printf("\n");
	printf("1.攻击\t2.弓箭攻击\t3.逃跑\n");
	printf("请输入你要进行的操作:\n");
}
void struckLittleMonster() {
	char ar[20] = " ";
	measure(ar);
	while (o > 0) {
		littleMonster();
		printf("%s", ar);
		printf(":%d", o);
		manner();
		int x, z;
		z = rand() % 10;
		scanf("%d", &x);
		switch (x) {
			case 1:
				if (o > 0) {
					printf("你攻击了");
					printf("%s", ar);
					Sleep(1000);
					printf("\n");
					printf("%s", ar);
					printf("受到%d伤害!\n", m);
					Sleep(1000);
					o -= m;
					printf("%s", ar);
					printf("准备攻击!\n");
					Sleep(1000);
					if (d > 0) {
						printf("你消耗了一张盾牌抵挡攻击!\n");
						Sleep(1000);
						d--;
					} else {
						if (z == 0) {
							printf("你闪避开了,没有受到伤害!\n");
						}
						printf("砰!你受到攻击,扣除%d能量!\n", z);
						a -= z;
						Sleep(1000);
						postDeatch(ar);
						system("cls");
					}
				}
				break;
			case 2:
				if (c > 0) {
					system("cls");
					littleMonster();
					printf("你发射一张弓箭\n");
					Sleep(1000);
					printf("怪兽死亡!\n");
					o -= 100;
					Sleep(1000);
					postDeatch(ar);
					c--;
				} else {
					system("cls");
					printf("你的弓箭不够!\n");
					Sleep(1000);
					system("cls");
				}

				break;
			case 3: {
				int i = rand() % 10 + 5;
				printf("你被怪兽追着打,消耗了%d能量!\n", i);
				kk = 1;
				Sleep(1000);
				system("cls");
				o = 0;
			}
			break;
			default:
				printf("错误操作\n");
				printf("扣除15点能量后离开!\n");
				a -= 15;
				Sleep(2000);
				break;
		}
	}

}
//攻击对象
void measure(char* ar) {
	int y;
	srand((unsigned)time(NULL));
	y = rand() % 5 + 1;
	if (y == 1) {
		strcpy(ar, "David");
	} else if (y == 2) {
		strcpy(ar, "john");
	} else if (y == 3) {
		strcpy(ar, "Sarah");
	} else if (y == 4) {
		strcpy(ar, "Elizabeth");
	} else if (y == 5) {
		strcpy(ar, "Emma");
	}
}

//怪物死亡后掉落的装备
void postDeatch(char *ar) {
	if (o <= 0) {
		int i;
		i = rand() % 4 + 1;
		if (i == 1) {
			printf("你杀死了%s,获得盾牌一张!\n", ar);
			Sleep(1000);
			d++;
		} else if (i == 2) {
			printf("你杀死了%s,获得弓箭一把!\n", ar);
			Sleep(1000);
			c++;
		} else if (i == 3) {
			printf("你杀死了%s,获得10点能量!\n", ar);
			blood();
			Sleep(1000);
			a += 10;
		} else {
			printf("你杀死了%s,攻击力加3!\n", ar);
			Sleep(1000);
			m += 3;
		}
	}
}
//血量
void blood() {
	if (a > 200) {
		printf("你的血量已近满了!\n");
		a = 200;
	}
}
void struckboss() {
	char ar[20] = " ";
	measure(ar);
	while (q > 0) {
		boss();
		printf("%s", ar);
		printf(":%d", q);
		manner();
		int x, z;
		z = rand() % 10 + 10;
		scanf("%d", &x);
		switch (x) {
			case 1:
				if (q > 0) {
					printf("你攻击了");
					printf("%s", ar);
					Sleep(1000);
					printf("\n");
					printf("%s", ar);
					printf("受到%d伤害!\n", m);
					Sleep(1000);
					q -= m;
					printf("%s", ar);
					printf("准备攻击!\n");
					Sleep(1000);
					if (d > 0) {
						printf("你消耗了一张盾牌抵挡攻击!\n");
						Sleep(1000);
						d--;
					} else {
						if (z == 0) {
							printf("你闪避开了,没有受到伤害!\n");
						}
						printf("砰!你受到攻击,扣除%d能量!\n", z);
						a -= z;
						Sleep(1000);
						postDeatch(ar);
						system("cls");
					}
				}
				break;
			case 2:
				if (c > 0) {
					system("cls");
					boss();
					printf("你发射一张弓箭\n");
					Sleep(1000);
					printf("怪兽受到80点伤害!\n");
					q -= 80;
					Sleep(1000);
					postDeatch(ar);
					c--;
				} else {
					system("cls");
					printf("你的弓箭不够!\n");
					Sleep(1000);
					system("cls");
				}

				break;
			case 3: {
				int i = rand() % 10 + 15;
				printf("你被怪兽追着打,消耗了%d能量!\n", i);
				kk = 1;
				Sleep(1000);
				system("cls");
				q = 0;
			}
			break;
			default:
				printf("错误操作\n");
				printf("扣除15点能量后离开!\n");
				a -= 15;
				Sleep(2000);
				break;
		}
	}
}

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<windows.h>
#include<time.h>
//a.能量 	b.激活驿站数	c.弓箭	d.盾牌	e.备用    f.判断回能量
//g和h.驿站   m.攻击力	n.防御力(未添加)
int a = 200;
int b = 0;
int c = 0;
int d = 0;
int e = 0;
int f = 0;
int m = 40;
int o = 100;	//小怪血量
int q = 200;	//boss血量
int kk = 0;     //判断有没有逃跑
//srand((unsigned)time(NULL));

//0.道路	1.人	2.驿站	3.人+驿站	4.激活驿站	5.人+激活驿站	 6.障碍		7.转盘
//8.人+转盘	9.武器	10.能量	11.怪物		12.boss    13.终点    15.起点
int map[27][27] = {
	6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
	6, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 9, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
	6, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 11, 7, 0, 0, 0, 0, 0, 10, 7, 0, 0, 0, 6, 0, 6,
	6, 0, 11, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 10, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 6,
	6, 11, 9, 2, 0, 0, 0, 10, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 7, 0, 0, 6,
	6, 0, 11, 0, 0, 0, 0, 7, 0, 0, 0, 11, 9, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
	6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 11, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 6, 0, 0, 6,
	6, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 7, 0, 0, 11, 11, 11, 2, 0, 0, 0, 0, 0, 6,
	6, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 6, 0, 0, 0, 0, 10, 11, 9, 11, 0, 0, 0, 0, 7, 0, 6,
	6, 0, 0, 0, 0, 2, 9, 11, 0, 7, 0, 10, 0, 7, 0, 0, 7, 11, 6, 7, 0, 0, 0, 0, 0, 0, 6,
	6, 7, 0, 0, 0, 0, 11, 0, 0, 0, 2, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 6,
	6, 0, 11, 0, 7, 0, 0, 6, 0, 0, 11, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 9, 0, 0, 0, 0, 6,
	6, 0, 0, 0, 0, 0, 0, 0, 2, 11, 9, 11, 2, 0, 6, 0, 0, 7, 0, 0, 0, 2, 0, 0, 2, 0, 6,
	6, 7, 0, 10, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 6,
	6, 0, 0, 6, 0, 0, 6, 0, 6, 0, 0, 0, 10, 7, 0, 0, 11, 9, 11, 0, 0, 0, 6, 0, 0, 0, 6,
	6, 0, 0, 0, 2, 11, 9, 11, 0, 7, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 2, 0, 10, 7, 0, 6,
	6, 0, 10, 6, 0, 11, 11, 0, 0, 0, 0, 6, 0, 6, 0, 9, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 6,
	6, 0, 0, 0, 0, 7, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 6,
	6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 6, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 6, 6,
	6, 7, 0, 0, 10, 0, 6, 11, 6, 7, 0, 11, 0, 2, 0, 0, 0, 0, 6, 0, 0, 0, 7, 0, 2, 0, 6,
	6, 0, 11, 0, 0, 0, 11, 9, 0, 0, 11, 9, 0, 7, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
	6, 11, 9, 2, 0, 7, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 2, 0, 0, 2, 6,
	6, 0, 11, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 6,
	6, 0, 6, 0, 0, 6, 0, 0, 2, 0, 0, 0, 2, 12, 12, 0, 0, 11, 0, 2, 0, 0, 0, 11, 11, 11, 6,
	6, 0, 0, 0, 7, 0, 0, 0, 11, 0, 7, 0, 12, 9, 6, 0, 11, 9, 11, 0, 0, 10, 0, 11, 12, 12, 6,
	6, 0, 0, 10, 2, 0, 0, 11, 9, 11, 0, 12, 9, 9, 6, 10, 7, 0, 0, 0, 0, 0, 2, 11, 12, 13, 6,
	6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
};

void blood();
int color(int x);
void show();
void findMan();
void playGame();
void randomPost();
void energyChange();
int numberPost();
void rouletteWheel();
void reel();
void he();
void data();
void numbers();
void death();
void littleMonster();
void boss();
void struckLittleMonster();
void struckboss();
void manner();
void measure(char *ar);
void postDeatch(char *ar);
void book();

int main() {
	while (1) {
		death();
		data();
		show();
		playGame();
		system("cls");
	}

	return 0;
}
//0.道路	1.人	2.驿站	3.人+驿站	4.激活驿站	5.人+激活驿站	 6.障碍		7.转盘
//8.人+转盘	9.武器	10.能量	11.怪物		12.boss
void show() {
	for (int i = 0; i < 27; i++) {
		for (int j = 0; j < 27; j++) {
			switch (map[i][j]) {
				case 0:
					printf("= ");
					break;
				case 1:
					printf("人");
					color(7);
					break;
				case 2:
					printf("驿");
					color(7);
					break;
				case 3:
					printf("人");
					color(7);
					break;
				case 4:
					color(4);
					printf("驿");
					color(7);
					break;
				case 5:
					printf("人");
					color(7);
					break;
				case 6:
					color(5);
					printf("■");
					color(7);
					break;
				case 7:
					color(3);
					printf("●");
					color(7);
					break;
				case 8:
					printf("人");
					color(7);
					break;
				case 9:
					color(3);
					printf("$ ");
					color(7);
					break;
				case 10:
					color(2);
					printf("* ");
					color(7);
					break;
				case 11:
					color(14);
					printf("怪");
					color(7);
					break;
				case 12:
					color(6);
					printf("怪");
					color(7);
					break;
				case 13:
					printf("O ");
					break;
				case 15:
					printf("@ ");
					break;
				case 16:
					printf("人");
					break;
				default:
					break;
			}
		}
		printf("\n");
	}

}
int color(int x) {	//自定义函根据参数改变颜色
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);
	return 0;
}

//随机位置生成20个驿站
//玩家移动
void playGame() {
	int i, j;
	for (i = 0; i < 27; i++) {
		for (j = 0; j < 27; j++) {
			if (map[i][j] == 1 || map[i][j] == 3 || map[i][j] == 5 || map[i][j] == 8 || map[i][j] == 16) {
				break;
			}
		}
		if (map[i][j] == 1 || map[i][j] == 3 || map[i][j] == 5 || map[i][j] == 8 || map[i][j] == 16) {
			break;
		}
	}
	char ch = ' ';		//捕获用户按键
	ch = _getch();
	//0.道路	1.人	2.驿站	3.人+驿站	4.激活驿站	5.人+激活驿站	 6.障碍		7.转盘
	//8.人+转盘	9.武器	10.能量	11.怪物		12.boss
	switch (ch) {
		case 'W':
		case 'w':
			if (map[i - 1][j] == 0) {
				map[i][j] -= 1;
				map[i - 1][j] += 1;
			} else if (map[i - 1][j] == 2) {
				map[i][j] -= 1;
				map[i - 1][j] += 1;
				system("cls");
				printf("请选择是否激活驿站(1/2):\n");
				printf("激活需要消耗10能量\n");
				scanf("%d", &e);
				if (e == 1) {
					if (a > 10) {
						printf("激活成功!\n");
						Sleep(500);
						a -= 10;
						b++;
						map[i - 1][j] += 2;
					} else {

						printf("激活失败,能量不够!\n");
						Sleep(500);
					}
				} else {
					printf("好的!\n");
					Sleep(500);
				}
			} else if (map[i - 1][j] == 4) {
				map[i][j] -= 1;
				map[i - 1][j] += 1;
				f = numberPost(f);
			} else if (map[i - 1][j] == 7) {
				//转盘
				rouletteWheel();
			} else if (map[i - 1][j] == 9) {
				map[i][j] -= 1;
				map[i - 1][j] = 1;
				srand((unsigned)time(NULL));
				e = rand() % 2 + 1;
				if (e == 1) {
					system("cls");
					printf("弓箭增加");
					Sleep(1000);
					c++;	//弓箭增加
				} else {
					system("cls");
					printf("盾牌增加");
					Sleep(1000);
					d++;	//盾牌增加
				}
			} else if (map[i - 1][j] == 10) {
				map[i][j] -= 1;
				map[i - 1][j] = 1;
				energyChange();
			} else if (map[i - 1][j] == 11) {
				system("cls");
				struckLittleMonster();
				map[i][j] -= 1;
				map[i - 1][j] = 1;
				o = 100;
				if (kk == 1) {
					map[i][j] = 1;
					map[i - 1][j] = 11;
					kk = 0;
				}

			} else if (map[i - 1][j] == 12) {
				system("cls");
				struckboss();
				map[i][j] -= 1;
				map[i - 1][j] = 1;
				q = 200;
				if (kk == 1) {
					map[i][j] = 1;
					map[i - 1][j] = 12;
					kk = 0;
				}
			} else if (map[i - 1][j] == 15) {
				map[i][j] -= 1;
				map[i - 1][j] += 1;
				printf("回家了,能量回满!\n");
				a = 201;
			}
			a -= 1;
			break;
		case 'S':
		case 's':
			if (map[i + 1][j] == 0) {
				map[i][j] -= 1;
				map[i + 1][j] += 1;
			} else if (map[i + 1][j] == 2) {
				map[i][j] -= 1;
				map[i + 1][j] += 1;
				system("cls");
				printf("请选择是否激活驿站(1/2):\n");
				printf("激活需要消耗10能量\n");
				scanf("%d", &e);
				if (e == 1) {
					if (a > 10) {
						printf("激活成功!\n");
						Sleep(500);
						a -= 10;
						b++;
						map[i + 1][j] += 2;
					} else {
						printf("激活失败,能量不够!\n");
						Sleep(500);
					}
				} else {
					printf("好的!\n");
					Sleep(500);
				}
			} else if (map[i + 1][j] == 4) {
				map[i][j] -= 1;
				map[i + 1][j] += 1;
				f = numberPost(f);
			} else if (map[i + 1][j] == 7) {
				//转盘
				rouletteWheel();
			} else if (map[i + 1][j] == 9) {
				map[i][j] -= 1;
				map[i + 1][j] = 1;
				srand((unsigned)time(NULL));
				e = rand() % 2 + 1;
				if (e == 1) {
					c++;	//弓箭增加
					system("cls");
					printf("弓箭增加");
					Sleep(1000);
				} else {
					d++;	//盾牌增加
					system("cls");
					printf("盾牌增加");
					Sleep(1000);
				}
			} else if (map[i + 1][j] == 10) {
				map[i][j] -= 1;
				map[i + 1][j] = 1;
				energyChange();
			} else if (map[i + 1][j] == 11) {
				system("cls");
				struckLittleMonster();
				map[i][j] -= 1;
				map[i + 1][j] = 1;
				o = 100;
				if (kk == 1) {
					map[i][j] = 1;
					map[i + 1][j] = 11;
				}
			} else if (map[i + 1][j] == 12) {
				system("cls");
				struckboss();
				map[i][j] -= 1;
				map[i + 1][j] = 1;
				q = 200;
				if (kk == 1) {
					map[i][j] = 1;
					map[i + 1][j] = 12;
					kk = 0;
				}
			} else if (map[i + 1][j] == 15) {
				map[i][j] -= 1;
				map[i + 1][j] += 1;
				printf("回家了,能量回满!\n");
				a = 201;
			}
			a -= 1;
			break;
		case 'A':
		case 'a':
			if (map[i][j - 1] == 0) {
				map[i][j] -= 1;
				map[i  ][j - 1] += 1;
			} else if (map[i ][j - 1] == 2) {
				map[i][j] -= 1;
				map[i ][j - 1] += 1;
				system("cls");
				printf("请选择是否激活驿站(1/2):\n");
				printf("激活需要消耗10能量\n");
				scanf("%d", &e);
				if (e == 1) {
					if (a > 10) {
						printf("激活成功!\n");
						Sleep(500);
						b++;
						a -= 10;
						map[i ][j - 1] += 2;
					} else {
						printf("激活失败,能量不够!\n");
						Sleep(500);
					}
				} else {
					printf("好的!\n");
					Sleep(500);
				}
			} else if (map[i][j - 1] == 4) {
				map[i][j] -= 1;
				map[i ][j - 1] += 1;
				f = numberPost(f);
			} else if (map[i][j - 1] == 7) {
				//转盘
				rouletteWheel();
			} else if (map[i][j - 1] == 9) {
				map[i][j] -= 1;
				map[i][j - 1] = 1;
				srand((unsigned)time(NULL));
				e = rand() % 2 + 1;
				if (e == 1) {
					c++;	//弓箭增加
					system("cls");
					printf("弓箭增加");
					Sleep(1000);
				} else {
					system("cls");
					printf("盾牌增加");
					Sleep(1000);
					d++;	//盾牌增加
				}
			} else if (map[i][j - 1]  == 10) {
				map[i][j] -= 1;
				map[i][j - 1] = 1;
				energyChange();
			} else if (map[i][j - 1] == 11) {
				system("cls");
				struckLittleMonster();
				map[i][j] -= 1;
				map[i ][j - 1] = 1;
				o = 100;
				if (kk == 1) {
					map[i][j] = 1;
					map[i  ][j - 1] = 11;
				}
			} else if (map[i][j - 1] == 12) {
				system("cls");
				struckboss();
				map[i][j] -= 1;
				map[i][j - 1] = 1;
				q = 200;
				if (kk == 1) {
					map[i][j] = 1;
					map[i][j - 1] = 12;
					kk = 0;
				}
			} else if (map[i ][j - 1] == 15) {
				map[i][j] -= 1;
				map[i][j - 1] += 1;
				printf("回家了,能量回满!\n");
				a = 201;
			}
			a -= 1;
			break;
		case 'D':
		case 'd':
			if (map[i][j + 1] == 0) {
				map[i][j] -= 1;
				map[i][j + 1] += 1;
			} else if (map[i ][j + 1] == 2) {
				map[i][j] -= 1;
				map[i ][j + 1] += 1;
				system("cls");
				printf("请选择是否激活驿站(1/2):\n");
				printf("激活需要消耗10能量\n");
				scanf("%d", &e);
				if (e == 1) {
					if (a > 10) {
						system("cls");
						printf("激活成功!\n");
						Sleep(500);
						a -= 10;
						b++;
						map[i ][j + 1] += 2;
					} else {
						system("cls");
						printf("激活失败,能量不够!\n");
						Sleep(500);
					}
				} else {
					printf("好的!\n");
				}
			} else if (map[i][j + 1] == 4) {
				map[i][j] -= 1;
				map[i ][j + 1] += 1;
				f = numberPost(f);
			} else if (map[i][j + 1] == 7) {
				//转盘
				rouletteWheel();
			} else if (map[i][j + 1] == 9) {
				map[i][j] -= 1;
				map[i][j + 1] = 1;
				srand((unsigned)time(NULL));
				e = rand() % 2 + 1;
				if (e == 1) {
					c++;	//弓箭增加
					system("cls");
					printf("弓箭增加");
					Sleep(1000);
				} else {
					d++;	//盾牌增加
					system("cls");
					printf("盾牌增加");
					Sleep(1000);
				}
			} else if (map[i][j + 1]  == 10) {
				map[i][j] -= 1;
				map[i][j + 1] = 1;
				energyChange();
			} else if (map[i][j + 1] == 11) {
				system("cls");
				struckLittleMonster();
				map[i][j] -= 1;
				map[i ][j + 1] = 1;
				o = 100;
				if (kk == 1) {
					map[i][j] = 1;
					map[i  ][j + 1] = 11;
				}
			} else if (map[i][j + 1] == 12) {
				system("cls");
				struckboss();
				map[i][j] -= 1;
				map[i][j + 1] = 1;
				q = 200;
				if (kk == 1) {
					map[i][j] = 1;
					map[i][j + 1] = 12;
					kk = 0;
				}
			} else if (map[i ][j + 1] == 15) {
				map[i][j] -= 1;
				map[i][j + 1] += 1;
				printf("回家了,能量回满!\n");
				a = 201;
			}
			a -= 1;
			break;
		case ' ':
			system("cls");
			book();
			system("pause");
			system("cls");
			break;
		case 'p':
		case 'P':
			exit(0);
		default:
			//TODO
			break;
	}
}
//10.能量变换
void energyChange() {
	srand((unsigned)time(NULL));
	e = rand() % 50;
	e -= 20;
	if (e > 0) {
		system("cls");
		printf("能量增加%d点\n", e);
		blood();
		Sleep(500);
		a += e;
	} else {
		system("cls");
		printf("这能量是假的,被我骗了吧");
		Sleep(500);
	}
}
//驿站进入的次数
int numberPost(int f) {

	int i = 0;
	srand((unsigned)time(NULL));
	i = rand() % 30 + 1;
	if (f < 5) {
		system("cls");
		printf("你回过能量了,太贪婪了,能量减2\n");
		Sleep(500);
		a -= 2;
		f++;
	} else {
		system("cls");
		printf("回复能量%d点\n", i);
		Sleep(500);
		a += i;
		f = 0;
	}
	return f;
}
//转盘内容       //抽奖需要消耗5点能量
void rouletteWheel() {
	system("cls");
	printf("进入转盘世界!\n");
	reel();
	Sleep(500);
	int i = 0;
	int j = 0;
	printf("前方神秘大奖等着你哦,是否抽奖!抽奖需要消耗5点能量(1/2)\n");
	scanf("%d", &j);
	if (j == 1) {
		srand((unsigned)time(NULL));
		i = rand() % 10 + 1;
		if (i == 1) {
			system("cls");
			reel();
			printf("恭喜你,抽到弓箭一把!\n");
			Sleep(2000);
			c++;
		} else if (i == 2) {
			if (d > 0) {
				system("cls");
				reel();
				printf("被怪物抓伤,消耗盾牌一把\n");
				Sleep(1000);
				d--;
			} else {
				system("cls");
				reel();
				printf("被怪物抓伤,能量减30\n");
				Sleep(2000);
				a -= 30;
			}
		} else if (i == 3) {
			system("cls");
			reel();
			printf("恭喜你,抽到盾牌一把!\n");
			Sleep(2000);
			d++;
		} else if (i == 4) {
			if (c > 0) {
				system("cls");
				reel();
				printf("前方有野猪,你射出一箭,好好饱餐一顿,能量加30\n");
				a += 30;
				blood();
				Sleep(2000);
			} else {
				system("cls");
				reel();
				printf("前方有野猪,你没有弓箭,被它欺负了一顿,扣除了30的能量!\n");
				a -= 30;
				Sleep(2000);
			}
		} else if (i == 5) {
			system("cls");
			reel();
			printf("攻击力加5\n");
			Sleep(2000);
			m += 5;
		} else if (i == 6) {
			system("cls");
			reel();
			printf("攻击力减5\n");
			Sleep(2000);
			m -= 5;
		} else if (i == 7) {
			system("cls");
			reel();
			printf("能量加20\n");
			a += 20;
			blood();
			Sleep(2000);
		} else if (i == 8) {
			system("cls");
			reel();
			printf("能量减20\n");
			a -= 20;
			Sleep(2000);
		} else if (i == 9) {
			system("cls");
			reel();
			printf("抽到了西北风,感觉自己又吃饱了!\n");
			Sleep(2000);
		} else if (i == 10) {
			system("cls");
			reel();
			printf("天空慢慢变黑暗!\n");
			Sleep(500);
			printf("四周传来了小孩的哭声\n");
			Sleep(500);
			printf("这是从转盘中掉出了一个盒子,上面写着“潘多拉魔盒”\n");
			Sleep(500);
			printf("是否打开盒子(1/2)");
			int i2 = 0;
			scanf("%d", &i2);
			if (i2 == 1) {
				system("cls");
				he();
				Sleep(2000);
				int i3 = 0;
				i3 = rand() % 100 + 1;
				if (i3 < 90) {
					system("cls");
					printf("召唤两个boss进行决斗!\n");
					Sleep(2000);
				} else if (i3 >= 90 && i3 <= 95) {
					printf("恭喜你,获得10把弓箭和10快盾牌!\n");
					Sleep(2000);
					c += 10;
					d += 10;
				} else if (i3 > 95 && i3 <= 100) {
					printf("发现世外高人,你跟随他学习两年半的篮球技术\n");
					Sleep(1000);
					printf("攻击力加100\n");
					Sleep(1000);
					printf("发现他是准备将你夺舍!\n");
					Sleep(1000);
					printf("你极力反抗,最终反杀!\n");
					Sleep(1000);
					printf("你将他所有的篮球捏爆!能量回复100点!\n");
					blood();
					a += 100;
				}

			} else {
				system("cls");
				printf("盒子消失,你感觉被压抑的胸口终于能喘气了,但是不知道体内的某样东西被抽走了!\n");
				Sleep(1000);
				printf("能量减20");
				a -= 20;
				Sleep(1000);
			}
		}
		a -= 5;
	} else if (j == 2) {
		system("cls");
		printf("神秘大奖离你远去咯!\n");
		Sleep(1000);
	} else {
		system("cls");
		printf("你在乱输入,严重破坏游戏环境,能量减10!\n");
		Sleep(1000);
		a -= 10;
	}
}
//转盘样子
void reel() {
	int radius = 10;
	for (int i = -radius; i <= radius; i++) {
		for (int j = -radius; j <= radius; j++) {
			if (i * i + j * j <= radius * radius) {
				printf("*");
			} else {
				printf(" ");
			}
		}
		printf("\n");
	}
	printf("       人                 \n");
}


//盒子
void he() {
	int width = 20, height = 10;
	int centerX = width / 2, centerY = height / 2;
	int halfWidth = width / 2, halfHeight = height / 2;

	for (int i = 0; i < height; i++) {
		for (int j = 0; j < width; j++) {
			if ((i == 0 || i == height - 1) && (j == 0 || j == width - 1)) {
				printf("+");  // 绘制角落
			} else if (i == 0 || i == height - 1) {
				printf("-");  // 绘制横线
			} else if (j == 0 || j == width - 1) {
				printf("|");  // 绘制竖线
			} else if (abs(i - centerY) <= halfHeight / 2 && abs(j - centerX) <= halfWidth / 2) {
				printf("#");  // 绘制内部盒子
			} else {
				printf(" ");  // 绘制空格
			}
		}
		printf("\n");  // 换行
	}
}
//显示数据
void data() {
	printf("能量:%d\t", a);
	printf("弓箭:%d\t", c);
	printf("\t盾牌:%d\t\t", d);
	printf("攻击力:%d\t", m);
	printf("激活驿站数:%d\n", b);
	printf("按空格打开说明书!\n");
}

void book() {
	printf("--------------------------\n");
	printf("------- 游戏说明书 -------\n");
	printf("------1. 游戏概述---------\n");
	printf("------2. 操作方法---------\n");
	printf("------3. 游戏规则---------\n");
	printf("----- 4. 退出游戏---------\n");
	printf("--------------------------\n");
	numbers();
}
//说明书
void numbers() {
	int choice;
	printf("--请选择相应的菜单号: \n");
	scanf("%d", &choice);
	switch (choice) {
		case 1:
			printf("这个游戏是一款冒险类游戏,你需要在冒险过程中通过打怪、捡装备,\n最后达到目的地打最终boss\n");
			system("pause");
			system("cls");
			book();
			break;
		case 2:
			printf(" W代表向上走一格,s代表向下走一格,a代表向左走一格,d代表向右走一格,1代表是,2代表否\n");
			system("pause");
			system("cls");
			book();
			break;
		case 3:
			printf("------------------游戏规则:---------------------------\n");
			printf("--------(1):每走一格需要消耗一点能量值,初始能量值为200\n");
			printf("--------(2):可以进入驿站回复能量,驿站激活需耗20点能量-\n");
			printf("--------(3):地图上存在转盘,玩家可进入抽奖,奖品随机---\n");
			printf("--------(4):有怪兽关卡,可通过打怪,获得奖励-----------\n");
			printf("--------(5):通过不断的努力,最后打完大boss,通关成功---\n");
			printf("-------- = 为道路   \t 人 为人物   \t 驿 为驿站------\n");
			printf("-------- ●为转盘   \t $ 为随机武器\t * 为能量补给---\n");
			printf("-------- 怪 为小怪  \t boss 为最终大怪---------------\n");
			system("pause");
			system("cls");
			book();
			break;
		case 4:
			printf("--------退出说明书菜单页,返回游戏-------------\n");
			system("cls"); 
			break;
		default:
			printf("输入有误,请重新输入!");
			system("pause");
			system("cls");
			book();
			break;
	}


}

void death() {
	if (a <= 0) {
		system("cls");
		printf("失败了,勇士请再接再厉!");
		exit(0);
	}
	for (int i = 0; i < 27; i++) {
		for (int j = 0; j < 27; j++) {
			if (map[i][j] == 14) {
				system("cls");
				printf("*********\n");
				printf("*       *\n");
				printf("*  win  *\n");
				printf("*       *\n");
				printf("*********\n");
				exit(0);
			}
		}
	}
}
//小怪的样子
void littleMonster() {
	printf("        _____\n");
	printf("     ,-:` \\;',`'-, \n");
	printf("  .'-;_,;  ':-;_,'.\n");
	printf(" /;   '/    ,  _`.-\\\n");
	printf("| '`. (`     /` ` ` '|\n");
	printf("|:.  `\\`-.   \\_   `,'\n");
	printf("`-.._)`\\__/  _.--\\   \\\n");
	printf("        /`   /        (`\\\n");
	printf("       /`,   \\         |\\\n");
	printf("      / /     \\        ) )\n");
	printf("     \\ \\      `._,-' / /\n");
	printf("      `-/           `-'`\n");
	printf("         \n");
}
//boss
void boss() {
	printf("           ___..-.---.-.___\n");
	printf("    _..---` .---.-.   `   ``--.__\n");
	printf("   .        `     `  }` ` _        `.\n");
	printf("         ,_  /    ,_  .  -` `--.   \\\n");
	printf("           `//     / /   `,    \\   .\n");
	printf("    -..:::::::`-..`_\\ _-\\ /     \\   \\\n");
	printf(" .-'::::::::::::::::``  /```\\/\\_   \\`. ))\n");
	printf("/:::::;;::::;:;;:;:;` / /        `---`{}}}\n");
	printf(" `-.._:::::/  /\\_/ / /   `.__,         ){}}}\n");
	printf("      `'-::<`  <` <`-;\\      \\          ){}}/              _..._\n");
	printf("               `\\   /`|      /   `\\     /{{{/   _       /    ,   \\\n");
	printf("               `\\   /`|      /   `\\     /{{{/   _       /    ,     \\\n");
	printf("                 `\\` `\\;\\__  /_ _ _`\\  /{{{/  _;M;_____/_   /    .\\`.\n");
	printf("                   `\\        `      \\'`\"{{;*\"\"\"\"\"\"      `,._     \\M\n");
	printf("                     `\\                                            `\n");
	printf("                       `\\                                          ` \n");
}

void manner() {
	printf("\n");
	printf("\n");
	printf("\n");
	printf("\n");
	printf("\n");
	printf("1.攻击\t2.弓箭攻击\t3.逃跑\n");
	printf("请输入你要进行的操作:\n");
}
void struckLittleMonster() {
	char ar[20] = " ";
	measure(ar);
	while (o > 0) {
		littleMonster();
		printf("%s", ar);
		printf(":%d", o);
		manner();
		int x, z;
		z = rand() % 10;
		scanf("%d", &x);
		switch (x) {
			case 1:
				if (o > 0) {
					printf("你攻击了");
					printf("%s", ar);
					Sleep(1000);
					printf("\n");
					printf("%s", ar);
					printf("受到%d伤害!\n", m);
					Sleep(1000);
					o -= m;
					printf("%s", ar);
					printf("准备攻击!\n");
					Sleep(1000);
					if (d > 0) {
						printf("你消耗了一张盾牌抵挡攻击!\n");
						Sleep(1000);
						d--;
					} else {
						if (z == 0) {
							printf("你闪避开了,没有受到伤害!\n");
						}
						printf("砰!你受到攻击,扣除%d能量!\n", z);
						a -= z;
						Sleep(1000);
						postDeatch(ar);
						system("cls");
					}
				}
				break;
			case 2:
				if (c > 0) {
					system("cls");
					littleMonster();
					printf("你发射一张弓箭\n");
					Sleep(1000);
					printf("怪兽死亡!\n");
					o -= 100;
					Sleep(1000);
					postDeatch(ar);
					c--;
				} else {
					system("cls");
					printf("你的弓箭不够!\n");
					Sleep(1000);
					system("cls");
				}

				break;
			case 3: {
				int i = rand() % 10 + 5;
				printf("你被怪兽追着打,消耗了%d能量!\n", i);
				kk = 1;
				Sleep(1000);
				system("cls");
				o = 0;
			}
			break;
			default:
				printf("错误操作\n");
				printf("扣除15点能量后离开!\n");
				a -= 15;
				Sleep(2000);
				break;
		}
	}

}
//攻击对象
void measure(char* ar) {
	int y;
	srand((unsigned)time(NULL));
	y = rand() % 5 + 1;
	if (y == 1) {
		strcpy(ar, "David");
	} else if (y == 2) {
		strcpy(ar, "john");
	} else if (y == 3) {
		strcpy(ar, "Sarah");
	} else if (y == 4) {
		strcpy(ar, "Elizabeth");
	} else if (y == 5) {
		strcpy(ar, "Emma");
	}
}

//怪物死亡后掉落的装备
void postDeatch(char *ar) {
	if (o <= 0) {
		int i;
		i = rand() % 4 + 1;
		if (i == 1) {
			printf("你杀死了%s,获得盾牌一张!\n", ar);
			Sleep(1000);
			d++;
		} else if (i == 2) {
			printf("你杀死了%s,获得弓箭一把!\n", ar);
			Sleep(1000);
			c++;
		} else if (i == 3) {
			printf("你杀死了%s,获得10点能量!\n", ar);
			blood();
			Sleep(1000);
			a += 10;
		} else {
			printf("你杀死了%s,攻击力加3!\n", ar);
			Sleep(1000);
			m += 3;
		}
	}
}
//血量
void blood() {
	if (a > 200) {
		printf("你的血量已近满了!\n");
		a = 200;
	}
}
void struckboss() {
	char ar[20] = " ";
	measure(ar);
	while (q > 0) {
		boss();
		printf("%s", ar);
		printf(":%d", q);
		manner();
		int x, z;
		z = rand() % 10 + 10;
		scanf("%d", &x);
		switch (x) {
			case 1:
				if (q > 0) {
					printf("你攻击了");
					printf("%s", ar);
					Sleep(1000);
					printf("\n");
					printf("%s", ar);
					printf("受到%d伤害!\n", m);
					Sleep(1000);
					q -= m;
					printf("%s", ar);
					printf("准备攻击!\n");
					Sleep(1000);
					if (d > 0) {
						printf("你消耗了一张盾牌抵挡攻击!\n");
						Sleep(1000);
						d--;
					} else {
						if (z == 0) {
							printf("你闪避开了,没有受到伤害!\n");
						}
						printf("砰!你受到攻击,扣除%d能量!\n", z);
						a -= z;
						Sleep(1000);
						postDeatch(ar);
						system("cls");
					}
				}
				break;
			case 2:
				if (c > 0) {
					system("cls");
					boss();
					printf("你发射一张弓箭\n");
					Sleep(1000);
					printf("怪兽受到80点伤害!\n");
					q -= 80;
					Sleep(1000);
					postDeatch(ar);
					c--;
				} else {
					system("cls");
					printf("你的弓箭不够!\n");
					Sleep(1000);
					system("cls");
				}

				break;
			case 3: {
				int i = rand() % 10 + 15;
				printf("你被怪兽追着打,消耗了%d能量!\n", i);
				kk = 1;
				Sleep(1000);
				system("cls");
				q = 0;
			}
			break;
			default:
				printf("错误操作\n");
				printf("扣除15点能量后离开!\n");
				a -= 15;
				Sleep(2000);
				break;
		}
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉迷书籍海洋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值