#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;
}
}
}