自制的c++带图画小游戏(c++新手一枚)

作为新手我能写出这种代码已经很好了。。。

#include <bits/stdc++.h>
#include <windows.h>
#include <conio.h>
using namespace std;
int di_xue=20,di_sha=5;
int x=6,y=5,xue=20,xue_2=20,sha=2,enter,di_enter,fen;
string zhao[5]= {"铁头功","龟息术","回旋斩","铁布衫","龙盘功"},da_zhao="无招胜有招。。。",da_sha,da_fang,da_hui,bei_bao[1000];
int shas[5]= {12,0,10,0,3},fang[5]= {0,0,0,1,0},hui[5]= {-3,10,0,0,3},money=0;
void yan(int a) {
	HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
	CONSOLE_SCREEN_BUFFER_INFO csbi;
	switch(a) {
		case 1:
			SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN|FOREGROUND_INTENSITY);
			break;
		case 2:
			SetConsoleTextAttribute(hConsole, FOREGROUND_RED|FOREGROUND_INTENSITY);
			break;
		case 0:
			SetConsoleTextAttribute(hConsole, FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_INTENSITY);
			break;
		case 4:
			SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE|FOREGROUND_INTENSITY|FOREGROUND_RED);
			break;
		case 5:
			SetConsoleTextAttribute(hConsole, FOREGROUND_INTENSITY);
			break;
		case 3:
			SetConsoleTextAttribute(hConsole, FOREGROUND_INTENSITY|FOREGROUND_BLUE|FOREGROUND_GREEN);
			break;
	}
}
void dou_jian(string di,int di_xue,int di_sha) {
	yan(2);
	string a[4]= {"","突刺","重砍","拔剑"};
	xue_2=xue;
	fen=0;
	while(1) {
		system("cls");
		if (fen>0) {
			printf("%i个分身给敌人造成%i滴血伤害!\n",fen,fen*sha/2);
			di_xue-=fen*sha/2;
		}
		if (di_xue<=0) {
			printf("\n敌人死了!\n");
			Sleep(1000);
			break;
		}
		cout<<di<<"还有"<<di_xue<<"滴血\n";
		cout<<"你还有"<<xue<<"滴血\n请输入你的招式:";
		cin>>enter;
		srand(time(0));
		di_enter=rand()%3+1;
		cout<<"你使出:"<<a[enter]<<endl;
		cout<<"敌人使出:"<<a[di_enter]<<endl;
		Sleep(1000);
		if (enter==di_enter) {
			printf("平!");
			Sleep(1000);
		} else if ((enter==1 and di_enter==3) or (enter==2 and di_enter==1) or (enter==3 and di_enter==2)) {
			di_xue-=sha;
			printf("你获得一次空闲,使出了");
			cout<<da_zhao;
			if (da_zhao=="分身术") {
				printf(",召唤一个分身");
				fen+=1;
			}
			Sleep(3000);
		} else {
			xue-=di_sha;
			printf("你被攻击了!减");
			cout<<di_sha<<"滴血!";
			Sleep(1600);
			if (xue<1) {
				printf("\n你死了。\n");
				Sleep(900);
				exit(0);
			}
		}

	}
	xue=xue_2;

}
void jiang_hu() {
	yan(5);
	printf("你前往了江湖。");
	Sleep(2000);
	system("cls");
	printf("江湖侠士:我用10个金币收买你,你替我杀死贪官吧!\n");
	Sleep(2000);
	printf("你去了贪官家,贪官拔剑相迎。\n");
	Sleep(1600);
	system("cls");
	printf("因为你是第一次与人斗剑,所以看几个简单的规则:\n");
	Sleep(2000);
	printf("输入1突刺,2重砍,3拔剑\n");
	Sleep(1500);
	printf("拔剑能对付重砍,重砍能对付突刺,突刺能对付拔剑\n");
	Sleep(2000);
	printf("你使出能对付敌人招式的招式后,不但可以造成伤害,还可以获得一次空闲使出招式\n");
	Sleep(4000);
	printf("废话不多说,开始!\n");
	Sleep(1000);
	dou_jian("贪官",30,7);
	printf("你去向江湖侠士讨钱\n");
	Sleep(2000);
	printf("江湖侠士:我就不给你钱,我气死你!\n");
	Sleep(3000);
	printf("你怒不可遏,拔剑相迎!");
	Sleep(2200);
	dou_jian("江湖侠士",30,7);
	printf("这时,一个土匪头头冲了过来!");
	Sleep(2500);
	dou_jian("土匪头头",25,10);
	printf("你一天杀了3个人,筋疲力竭。\n");
	Sleep(2500);
	printf("你继续前进\n");
	Sleep(1000);
	printf("前方出现一个酒店\n");
	Sleep(1000);
	printf("你走了进去。\n");
	Sleep(1000);
	printf("你喝了一瓶酒\n");
	Sleep(1000);
	printf("你获得了一瓶烈酒\n新增道具:烈酒\n效果:携带后血量-1,伤害+7\n");
	Sleep(4000);
	sha+=7;
	xue-=1;
	printf("你住进了酒店,筋疲力竭的你睡着了。\n");
	Sleep(3000);
	printf("睡梦中,你听到一些响声\n");
	Sleep(3000);
	printf("你醒来,发现店老板拿着两把刀,要杀你抢钱!\n");
	Sleep(5000);
	printf("你举剑相迎!");
	Sleep(1000);
	dou_jian("黑店老板",30,9);
	printf("这时,三个店小二冲向你!!!");
	Sleep(3000);
	printf("你举剑相迎!");
	dou_jian("店小二甲",20,7);
	dou_jian("店小二乙",20,7);
	printf("你的剑断了,攻击-1!");
	sha-=1; 
	Sleep(3000);
	printf("你拔出老王家抢来的镰刀迎战最后一个最强的店小二!!!");
	Sleep(6000);
	dou_jian("店小二丙",25,8);
	printf("你:外面的世界太可怕了,还是回村吧!");
	Sleep(5000);
}
void si_miao() {
	system("cls");
	yan(0);
	printf("你走到了寺庙门口\n");
	Sleep(900);
	printf("寺庙门口的僧人:你是来拜师的僧人吗?\n");
	Sleep(1200);
	printf("寺庙门口的僧人:等一下,我去报告我师傅。\n");
	Sleep(1200);
	printf("师傅:小伙子,你看起来很有天赋。我想收你为徒,但你得先打败我的徒弟。他血量20,攻击5点。\n");
	Sleep(1900);
	printf("开始战斗!(由于是决斗,将由系统自动攻击)\n");
	Sleep(1000);
	xue_2=xue;
	while (1) {
		printf("你攻击了寺庙门口的僧人,他减血了!\n");
		Sleep(1200);
		di_xue-=sha;
		if (di_xue<=0) {
			printf("你赢了!\n");
			Sleep(900);
			break;
		}
		printf("寺庙门口的僧人攻击了你,你减血了!\n");
		Sleep(1200);
		xue-=di_sha;
		if (xue<=0) {
			printf("你死了!\n");
			Sleep(900);
			exit(0);
		}
	}
	printf("师傅:你很厉害啊!我将收你为徒!\n");
	Sleep(1100);
	printf("师傅:不过我先给你和他回满血!\n");
	Sleep(900);
	xue=xue_2;
	di_xue=20;
	printf("师傅用法术给你和他都回满了血!\n");
	Sleep(1000);
	cout<<"有以下招式可学习:\n";
	for (int i=0; i<5; i++) {
		cout<<i<<' '<<zhao[i]<<"——伤害:"<<shas[i]<<",回血量:"<<hui[i];
		if(fang[i]) {
			printf(",可以防御一次攻击");
		}
		cout<<"\n";
	}
	enter=int(getch())-48;
	da_zhao=zhao[enter];
	da_hui=hui[enter];
	da_fang=fang[enter];
	da_sha=shas[enter];
	printf("师傅:你可以出师了!");
	Sleep(1200);
	system("cls");
}
int main() {
	bool zhi_dao=false,qu_guo=false,zhi=false,sha_wang=false,qu=false;
	char wasd;
	char a[18]= {'_','_','_',' ',' ',' ',' ',' ',' ','%',' ','[','^','^','^','^','^',']'};
	char b[18]= {'|','L','|',' ',' ',' ',' ',' ',' ','#',' ','[','_','_','W','_','_',']'};
	char c[18]= {'^','#','^',' ',' ',' ',' ',' ',' ','#',' ','#','#','#','#',' ',' ',' '};
	char d[18]= {' ','#','#','#','#','_','_','_','#','#','#','#',' ',' ','#','#','#','#'};
	char e[18]= {' ','#',' ',' ','#','|','#','|','#',' ',' ',' ',' ',' ','#',' ',' ',' '};
	char f[18]= {' ','#',' ',' ','#','^','#','^','#',' ',' ',' ','%','#','#',' ',' ',' '};
	char g[18]= {' ','=',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ',' ',' ',' ',' '};
	char h[18]= {' ','%',' ',' ',' ',' ','#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '};
	char map[10][18];
	while (1) {
		for (int i=0; i<18; i++) {
			map[1][i]=a[i];
			map[2][i]=b[i];
			map[3][i]=c[i];
			map[4][i]=d[i];
			map[5][i]=e[i];
			map[6][i]=f[i];
			map[7][i]=g[i];
			map[8][i]=h[i];
		}
		map[y][x]='C';
		if (sha_wang==true) {
			map[y+1][x]='Y';
		}
		yan(3);
		cout<<"血量:"<<xue<<"\n伤害:"<<sha<<"\n大招:"<<da_zhao<<"\n";
		for (int j=1; j<=8; j++) {
			for (int i=0; i<18; i++) {
				if (map[j][i]=='C' || map[j][i]=='L' || map[j][i]=='Y' || map[j][i]=='W') {
					yan(2);
				} else if(map[j][i]=='#') {
					yan(1);
				} else if(map[j][i]==']' || map[j][i]=='|' || map[j][i]=='[' || map[j][i]=='^' || map[j][i]=='_' || map[j][i]=='%') {
					yan(0);
				} else {
					yan(4);
				}
				cout<<map[j][i];
			}
			yan(5);
			cout<<"\n";
		}
		yan(2);
		cout<<"C";
		yan(5);
		cout<<":你 \t";
		yan(2);
		cout<<"L";
		yan(5);
		cout<<":易怒的李寡妇 \t";
		yan(2);
		cout<<"W";
		yan(5);
		cout<<":见多识广的隔壁老王  \t";
		yan(1);
		cout<<"#";
		yan(5);
		cout<<":路,只能走路  \t";
		yan(0);
		cout<<"%";
		yan(5);
		cout<<":死胡同\t";
		yan(4);
		cout<<"紫色图标";
		yan(5);
		cout<<":各种道具\n";
		yan(0);
		cout<<"可以输入:w:向上走一格。a:向左走一格。s:向下走一格。d:向右走一格。e: 触发人物效果或捡拾武器。v:攻击。x:滑行\n";
		yan(4);
		printf("-------------------------------------------------------------------------------------------------------------------\n");
		yan(5);
		if (sha_wang==true) {
			Sleep(1000);
			printf("你后面出现了一个大侠(Y表示),你知道他姓杨。");
			printf("\n杨大侠:你本领高超,我得病快死了,我把武功教给你吧!你可以去村西边试验武功。");
			printf("\n你学了武功——分身术,使用后出现一个有你伤害一半的分身帮你攻击。");
			printf("\n按enter继续\n");
			zhi=true;
			sha_wang=false;
			da_zhao="分身术";
		}
		wasd=_getch();
		switch(wasd) {
			case 'a':
				if (x>=0) {
					if (map[y][x-1] == '#') x--;
					break;
				}
				break;
			case 'd':
				if(x==17) {
					if (zhi==true) {
						jiang_hu();
					} else {
						printf("你需要先知道前方有什么。");
						Sleep(1600);
					}
				} else if (x<=18) {
					if (map[y][x+1] == '#') {
						x++;
					}
				}
				break;
			case 'w':
				if (y>=0) {
					if (map[y-1][x] == '#') y--;
					break;
				}
				break;
			case 's':
				if(y==8) {
					if (zhi_dao==true and qu_guo==false) {
						qu_guo=true;
						si_miao();
					} else if(qu_guo==true) {
						printf("你去过了!");
						Sleep(700);
					} else {
						printf("你需要先知道前方有什么。");
						Sleep(1600);
					}
				} else if (y<=8) {
					if (map[y+1][x] == '#') {
						y++;
						break;
					}
				}
				break;
			case 'e':
				if (map[y-1][x]=='W') {
					printf("老王:年轻人,听说村南边有一个寺庙,出了许多侠客,你可以去看看。");
					zhi_dao=true;
					Sleep(5000);
				} else if (map[y-1][x]=='L') {
					printf("李寡妇:谁啊,我可是有刀的!如果是来办事的,找老王!对了,我昨天在南边的胡同里落下了一个秘籍,帮我找找吧!(=表示秘籍)");
					Sleep(7000);
				} else if (map[y+1][x]=='=') {
					printf("你捡到了一本秘籍\n新增道具:秘籍\n效果:携带后血量+10");
					Sleep(4000);
					xue+=10;
					g[x]='#';
				} else if (map[y-1][x]=='F') {
					printf("你捡到了一把梳子\n新增道具:梳子\n效果:携带后伤害+1");
					Sleep(4000);
					sha+=1;
					b[x]='#';
				} else if (map[y-1][x]=='7') {
					printf("你捡到了一把镰刀\n新增道具:镰刀\n效果:携带后伤害+5");
					Sleep(4000);
					sha+=5;
					b[x]='#';
				}
				break;
			case 'v':
				if (map[y-1][x]=='W') {
					printf("你一拳打向老王,正中老王心窝,老王吐出了一口鲜血。从老王身上掉出一把镰刀。(7表示镰刀)\n老王:你你你。。。(倒地不起)");
					Sleep(7000);
					b[x]='7';
				} else if (map[y-1][x]=='L') {
					if (da_zhao=="无招胜有招。。。" or da_zhao=="铁布衫" or da_zhao=="龟息术") {
						printf("你一拳打向李寡妇,结果没打中,反而被李寡妇一脚踹飞。\n李寡妇:想杀我,先去死!");
						if (da_zhao=="铁布衫") {
							printf("\n幸好你的大招防住了李寡妇的攻击。");
							xue+=5;
							Sleep(1000);
						}
						Sleep(5000);
						xue-=5;
						y+=3;
					} else {
						printf("你使出大招,杀死了李寡妇。李寡妇身上掉下一把梳子。(F表示梳子)");
						Sleep(5000);
						b[x]='F';
						sha_wang=true;
					}

				}
				break;
		}
		if (xue<=0) {
			printf("你死了!");
			Sleep(900);
			exit(0);
		}
		system("cls");
	}
}

小结:无。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值