C++打病毒小游戏

我今天分享一个C++小游戏,游戏主体是w,a,s,d上下左右,外加4个函数,非常简单,地图暂时只有一个,以后再更新了,看代码吧:

#include<bits/stdc++.h>
#include<stdlib.h>
#include<cstdlib>
#include<string>
#include<windows.h>
#include<ctime>
#include<conio.h>
using namespace std;
int x=1,y=4,jb=0,xb=0,cl=1,wjxl=70,pg=20,hx=20,lh=0,hj=0,l=0;
string name;
char map1[100][100]={//地图
		"#################################################################",
		"#D @I      @ O     * O  C   O  O#           #                   #",
		"####       ######## ########### #           #A                  #",
		"#        N @     M#C#         #V#           #                   #",
		"#@################# #     #####@######      #A                  #",
		"#      #$#$*C @O $  #     #          #      #                   #",
		"#  N  $#C#CCC ##### #     #   $NM$   #      #                   #",
		"#@######C###@##*$M# #     #   ****   #      #A                  #",
		"#C  CC C C  C CC  @O#     #####@######      #     暂未开放      #",
		"#@####  ########### ###########OO############A                  #",
		"#    @CC@      N  @O       $       O * O#**!#                   #",
		"#M  *#  # *M####@######### ##############$$*#                   #",
		"####@#CC##@##    C #    C@O#  $V* V**OVV#B###A                  #",
		"#   C    C  C      #     # #O$ V* V $V $VV#V#                   #",
		"###@########@####@## C   # @OO V *V  V*V*$# #                   #",
		"#  C          C    ##@#### #O $V  V*O*VV$$#*#A                  #",
		"##@###########@#####M*#  # ################ #                   #",
		"#$ C@   N*  @ C  C @  @C @C   O   O  $  V   #A                  #",
		"#################################################################",
		"输入w,a,s,d操控人物   输入k回血(消耗莲花一粒)",
		"I:我  C:1级病毒  O:2级病毒  V:3级病毒",
		"B:BOSS级病毒  M:细胞商人  D:工作台  *:材料  $:金币",
		"N:细胞  A:防御塔  #:墙壁  @:门  !:病毒大本营", 
};
void daguai(char x){//战斗
	system("cls");
	cout<<"*!#战斗开始#!*"<<endl;
	Sleep(500); 
	if(x=='C'){
		int cxl=65;
		while(wjxl>0&&cxl>0){
			system("cls");
			cout<<"我的血量:"<<wjxl<<" 伤害:"<<pg<<endl;
			cout<<"病毒血量:"<<cxl<<" 伤害:"<<5<<endl; 
			cout<<"输入j:普通攻击("<<pg<<"点伤害)"<<endl;
			cout<<"输入k:莲花回血(加"<<hx<<"点血,剩余"<<lh<<"粒)"<<endl;
			char ch;
			ch=_getch();
			if(ch=='j'){
				wjxl-=max(0,5-hj);
				cxl-=pg;
			}
			else if(ch=='k'&&lh>0){
				wjxl+=hx;
				lh--;
			}
			else{
				if(ch=='k'){
					cout<<"没有了!"<<endl; 
				} 
				else cout<<"输入错误!"<<endl;
			}
			if(wjxl<=0){
				system("cls");
				Sleep(1000);
				cout<<"你死了!";
				l=1;
				return ;
			}
			Sleep(200);
		}
	}
	else if(x=='O'){
		int cxl=100;
		while(wjxl>0&&cxl>0){
			system("cls");
			cout<<"我的血量:"<<wjxl<<" 伤害:"<<pg<<endl;
			cout<<"病毒血量:"<<cxl<<" 伤害:"<<10<<endl;
			cout<<"输入j:普通攻击("<<pg<<"点伤害)"<<endl;
			cout<<"输入k:莲花回血(加"<<hx<<"点血,剩余"<<lh<<"粒)"<<endl;
			char ch;
			ch=_getch();
			if(ch=='j'){
				wjxl-=max(0,10-hj);
				cxl-=pg;
			}
			else if(ch=='k'&&lh>0){
				wjxl+=hx;
				lh--;
			}
			else{
				if(ch=='k'){
					cout<<"没有了!"<<endl; 
				} 
				else cout<<"输入错误!"<<endl;
			}
			if(wjxl<=0){
				system("cls");
				Sleep(1000);
				cout<<"你死了!";
				l=1;
				return ;
			}
			Sleep(200);
		}
	}
	else if(x=='V'){
		int cxl=200;
		while(wjxl>0&&cxl>0){
			system("cls");
			cout<<"我的血量:"<<wjxl<<" 伤害:"<<pg<<endl;
			cout<<"病毒血量:"<<cxl<<" 伤害:"<<20<<endl;
			cout<<"输入j:普通攻击("<<pg<<"点伤害)"<<endl;
			cout<<"输入k:莲花回血(加"<<hx<<"点血,剩余"<<lh<<"粒)"<<endl;
			char ch;
			ch=_getch();
			if(ch=='j'){
				wjxl-=max(0,20-hj);
				cxl-=pg;
			}
			else if(ch=='k'&&lh>0){
				wjxl+=hx;
				lh--;
			}
			else{
				if(ch=='k'){
					cout<<"没有了!"<<endl; 
				} 
				else cout<<"输入错误!"<<endl;
			}
			if(wjxl<=0){
				system("cls");
				Sleep(1000);
				cout<<"你死了!";
				l=1;
				return ;
			}
			Sleep(200);
		}
	}
	else if(x=='B'){
		int cxl=450;
		while(wjxl>0&&cxl>0){
			system("cls");
			cout<<" !!!终极BOSS!!!"<<endl;
			cout<<"我的血量:"<<wjxl<<" 伤害:"<<pg<<endl;
			cout<<"病毒血量:"<<cxl<<" 伤害:"<<45<<endl;
			cout<<"输入j:普通攻击("<<pg<<"点伤害)"<<endl;
			cout<<"输入k:莲花回血(加"<<hx<<"点血,剩余"<<lh<<"粒)"<<endl;
			char ch;
			ch=_getch();
			if(ch=='j'){
				wjxl-=max(0,45-hj);
				cxl-=pg;
			}
			else if(ch=='k'&&lh>0){
				wjxl+=hx;
				lh--;
			}
			else{
				if(ch=='k'){
					cout<<"没有了!"<<endl; 
				} 
				else cout<<"输入错误!"<<endl;
			}
			if(wjxl<=0){
				system("cls");
				Sleep(1000);
				cout<<"你死了!";
				l=1;
				return ;
			}
			Sleep(200);
		}
	}
	return ;
}

void jiaoyi(){//交易 
	while(1){
		system("cls");
		cout<<"您的血量:"<<wjxl<<" 攻击力:"<<pg<<" 防御值:"<<hj<<" 莲花剩余粒数:"<<lh<<" 金币:"<<jb<<endl;
		cout<<"请问要交易什么?"<<endl;
		cout<<"注意:无法叠加防御值或攻击力"<<endl;
		cout<<"输入1.连花清瘟胶囊---50金币(回30点血)"<<endl;
		cout<<"输入2.普通护甲-------180金币(提升2点防御值)"<<endl;
		cout<<"输入3.钻石护甲-------400金币(提升25点防御值)"<<endl;
		cout<<"输入4.铁剑-----------250金币(提升15点攻击力)"<<endl;
		cout<<"输入5.圣剑-----------450金币(提升30点攻击力)"<<endl;
		cout<<"输入6.材料-----------150金币(3个)"<<endl;
		cout<<"输入0.结束交易"<<endl;
		int ch;
		cin>>ch;
		if(ch==1&&jb>=50){
			jb-=50,lh++;
			cout<<"交易成功!"<<endl;
		}
		else if(ch==2&&jb>=180){
			jb-=180,hj=2;
			cout<<"交易成功!"<<endl;
		}
		else if(ch==3&&jb>=400){
			jb-=400,hj=25;
			cout<<"交易成功!"<<endl;
		}
		else if(ch==4&&jb>=250){
			jb-=250,pg=35;
			cout<<"交易成功!"<<endl;
		}
		else if(ch==5&&jb>=450){
			jb-=450,pg=50;
			cout<<"交易成功!"<<endl;
		}
		else if(ch==6&&jb>=150){
			jb-=150,cl+=3;
			cout<<"交易成功!"<<endl;
		}
		else if(ch==0){
			return ;
		}
		else{
			cout<<"交易失败!"<<endl;
		}
		Sleep(1000);
	}
	return ;
}

void gongzuotai(){//制作 
	while(1){
		system("cls");
		cout<<"您的血量:"<<wjxl<<" 攻击力:"<<pg<<" 防御值:"<<hj<<" 莲花剩余粒数:"<<lh<<" 金币:"<<jb<<"  材料:"<<cl<<endl;
		cout<<"注意:无法叠加防御值或攻击力"<<endl;
		cout<<"1.连花清瘟胶囊(回30点血)[材料×2]"<<endl;
		cout<<"2.合金战甲(提升38点防御值)[金币×200+材料×10]"<<endl;
		cout<<"3.屠龙宝刀(提升68点攻击力)[金币×330+材料×25]"<<endl;
		cout<<"0.结束制作"<<endl;
		int ch;
		cin>>ch;
		if(ch==1&&cl>=2){
			lh++,cl-=2;
			cout<<"制作完成!"<<endl;
		}
		else if(ch==2&&jb>=200&&cl>=10){
			jb-=200,cl-=10,hj=38;
			cout<<"制作完成!"<<endl;
		}
		else if(ch==3&&jb>=330&&cl>=25){
			jb-=330,cl-=25,pg=88;
			cout<<"制作完成!"<<endl;
		}
		else if(ch==0){
			return ;
		}
		else{
			cout<<"制作失败!"<<endl;
		}
		Sleep(1000); 
	} 
	return ;
}

void print(string s){
	for(int i=0;i<s.size();i++){
		cout<<s[i];
		Sleep(200);
	}
}

int main(){
	int jishu=0;
	system("title 《打病毒》");
    Sleep(2000);
    system("cls");
	cout<<"输入一个名字:";
	getline(cin,name);
	Sleep(200);
	cout<<"输入成功 欢迎"<<name<<'!'<<endl;
	Sleep(300);
	cout<<endl<<"初始化完成 100%"<<endl;
	Sleep(1000);
	system("cls");
	cout<<"玩家:"<<name<<"  血量:"<<wjxl<<"  攻击力:"<<pg<<" 防御值:"<<hj<<"  莲花剩余粒数:"<<lh<<"  金币:"<<jb<<"  材料:"<<cl<<"  拯救细胞数量:"<<xb<<endl; 
	for(int i=0;i<=22;i++)
		puts(map1[i]);
	while(1){
		char ch;
		ch=_getch();
		jishu++; 
		switch(ch){
			case 'w'://上 
				if(map1[x-1][y]=='!'){
					system("cls");cout<<endl;
					print("病毒在你不断地消灭下,他们已经开始逃跑,你胜利了!");
					cout<<endl;
					Sleep(800);
					cout<<"恭喜你通关了!"<<endl;
					Sleep(800);
					cout<<name<<",感谢你所做的一切!"<<endl;
					Sleep(500);
					return 0;
				}
				if(map1[x-1][y]=='#') break;
				if(map1[x-1][y]==' '){
					map1[x][y]=' ';
					x--;
					map1[x][y]='I';
				}
				else if(map1[x-1][y]=='@'){
					map1[x][y]=' ';
					x--;x--;
					if(map1[x][y]=='N') xb++;
					else if(map1[x][y]!=' '){
						daguai(map1[x][y]);
						if(l==1){
							cout<<"你死了!";
							return 0;
						}
						if(map1[x][y]=='C') jb+=50;
						else if(map1[x][y]=='O'){
							jb+=70,lh++;
						}
						else if(map1[x][y]=='V'){
							jb+=150,lh+=3;
						}
						else{
							jb+=500,lh+=10;
						}
					}
					map1[x][y]='I';
				}
				else if(map1[x-1][y]=='N'){
					map1[x][y]=' ';
					x--;
					map1[x][y]='I';
					xb++;
				}
				else if(map1[x-1][y]=='M'){
					jiaoyi();
				}
				else if(map1[x-1][y]=='$'){
					map1[x][y]=' ';
					x--;
					map1[x][y]='I';
					jb+=30;
				}
				else if(map1[x-1][y]=='*'){
					map1[x][y]=' ';
					x--;
					map1[x][y]='I';
					cl+=2;
				}
				else{
					map1[x][y]=' ';
					x--;
					daguai(map1[x][y]);
					if(l==1){
						cout<<"你死了!";
						return 0;
					}
					if(map1[x][y]=='C') jb+=50;
					else if(map1[x][y]=='O'){
						jb+=70,lh++;
					}
					else if(map1[x][y]=='V'){
						jb+=150,lh+=3;
					}
					else{
						jb+=500,lh+=10;
					}
					map1[x][y]='I';
				}
				break;
			case 's'://下 
				if(map1[x+1][y]=='!'){
					system("cls");cout<<endl;
					print("病毒在你不断地消灭下,他们已经开始逃跑,你胜利了!");
					cout<<endl;
					Sleep(800);
					cout<<"恭喜你通关了!"<<endl;
					Sleep(800);
					cout<<name<<",感谢你所做的一切!"<<endl;
					Sleep(500);
					cout<<"2.0,让我们灭光他们!"<<endl; 
					return 0;
				}
				if(map1[x+1][y]=='#') break;
				if(map1[x+1][y]==' '){
					map1[x][y]=' ';
					x++;
					map1[x][y]='I';
				}
				else if(map1[x+1][y]=='@'){
					map1[x][y]=' ';
					x++;x++;
					if(map1[x][y]=='N') xb++;
					else if(map1[x][y]!=' '){
						daguai(map1[x][y]);
						if(l==1){
							cout<<"你死了!";
							return 0;
						}
						if(map1[x][y]=='C') jb+=50;
						else if(map1[x][y]=='O'){
							jb+=70,lh++;
						}
						else if(map1[x][y]=='V'){
							jb+=150,lh+=3;
						}
						else{
							jb+=500,lh+=10;
						}
					}
					map1[x][y]='I';
				}
				else if(map1[x+1][y]=='N'){
					map1[x][y]=' ';
					x++;
					map1[x][y]='I';
					xb++;
				}
				else if(map1[x+1][y]=='M'){
					jiaoyi();
				}
				else if(map1[x+1][y]=='$'){
					map1[x][y]=' ';
					x++;
					map1[x][y]='I';
					jb+=30;
				}
				else if(map1[x+1][y]=='*'){
					map1[x][y]=' ';
					x++;
					map1[x][y]='I';
					cl+=2;
				}
				else{
					map1[x][y]=' ';
					x++;
					daguai(map1[x][y]);
					if(l==1){
						cout<<"你死了!";
						return 0;
					}
					if(map1[x][y]=='C') jb+=50;
					else if(map1[x][y]=='O'){
						jb+=70,lh++;
					}
					else if(map1[x][y]=='V'){
						jb+=150,lh+=3;
					}
					else{
						jb+=500,lh+=10;
					}
					map1[x][y]='I';
					
				}
				break;
			case 'a'://左 
				if(map1[x][y-1]=='!'){
					system("cls");cout<<endl;
					print("病毒在你不断地消灭下,他们已经开始逃跑,你胜利了!");
					cout<<endl;
					Sleep(800);
					cout<<"恭喜你通关了!"<<endl;
					Sleep(800);
					cout<<name<<",感谢你所做的一切!"<<endl;
					Sleep(500);
					return 0;
				}
				if(map1[x][y-1]=='#') break;
				if(map1[x][y-1]==' '){
					map1[x][y]=' ';
					y--;
					map1[x][y]='I';
				}
				else if(map1[x][y-1]=='@'){
					map1[x][y]=' ';
					y--;y--;
					if(map1[x][y]=='N') xb++;
					else if(map1[x][y]!=' '){
						daguai(map1[x][y]);
						if(l==1){
							cout<<"你死了!";
							return 0;
						}
						if(map1[x][y]=='C') jb+=50;
						else if(map1[x][y]=='O'){
							jb+=70,lh++;
						}
						else if(map1[x][y]=='V'){
							jb+=150,lh+=3;
						}
						else{
							jb+=500,lh+=10;
						}
					}
					map1[x][y]='I';
				}
				else if(map1[x][y-1]=='N'){
					map1[x][y]=' ';
					y--;
					map1[x][y]='I';
					xb++;
				}
				else if(map1[x][y-1]=='M'){
					jiaoyi();
				}
				else if(map1[x][y-1]=='$'){
					map1[x][y]=' ';
					y--;
					map1[x][y]='I';
					jb+=30;
				}
				else if(map1[x][y-1]=='*'){
					map1[x][y]=' ';
					y--;
					map1[x][y]='I';
					cl+=2;
				}
				else if(map1[x][y-1]=='D'){
					gongzuotai();
				}
				else{
					map1[x][y]=' ';
					y--;
					daguai(map1[x][y]);
					if(l==1){
						cout<<"你死了!";
						return 0;
					}
					if(map1[x][y]=='C') jb+=50;
					else if(map1[x][y]=='O'){
						jb+=70,lh++;
					}
					else if(map1[x][y]=='V'){
						jb+=150,lh+=3;
					}
					else{
						jb+=500,lh+=10;
					}
					map1[x][y]='I';
					
				}
				break;
			case 'd'://右 
				if(map1[x][y+1]=='!'){
					system("cls");cout<<endl;
					print("病毒在你不断地消灭下,他们已经开始逃跑,你胜利了!");
					cout<<endl;
					Sleep(800);
					cout<<"恭喜你通关了!"<<endl;
					Sleep(800);
					cout<<name<<",感谢你所做的一切!"<<endl;
					Sleep(500);
					return 0;
				}
				if(map1[x][y+1]=='#') break;
				if(map1[x][y+1]==' '){
					map1[x][y]=' ';
					y++;
					map1[x][y]='I';
				}
				else if(map1[x][y+1]=='@'){
					map1[x][y]=' ';
					y++;y++;
					if(map1[x][y]=='N') xb++;
					else if(map1[x][y]!=' '){
						daguai(map1[x][y]);
						if(l==1){
							cout<<"你死了!";
							return 0;
						}
						if(map1[x][y]=='C') jb+=50;
						else if(map1[x][y]=='O'){
							jb+=70,lh++;
						}
						else if(map1[x][y]=='V'){
							jb+=150,lh+=3;
						}
						else{
							jb+=500,lh+=10;
						}
					}
					map1[x][y]='I';
				}
				else if(map1[x][y+1]=='N'){
					map1[x][y]=' ';
					y++;
					map1[x][y]='I';
					xb++;
				}
				else if(map1[x][y+1]=='M'){
					jiaoyi();
				}
				else if(map1[x][y+1]=='$'){
					map1[x][y]=' ';
					y++;
					map1[x][y]='I';
					jb+=30;
				}
				else if(map1[x][y+1]=='*'){
					map1[x][y]=' ';
					y++;
					map1[x][y]='I';
					cl+=2;
				}
				else{
					map1[x][y]=' ';
					y++;
					daguai(map1[x][y]);
					if(l==1){
						cout<<"你死了!";
						return 0;
					}
					if(map1[x][y]=='C') jb+=50;
					else if(map1[x][y]=='O'){
						jb+=70,lh++;
					}
					else if(map1[x][y]=='V'){
						jb+=150,lh+=3;
					}
					else{
						jb+=500,lh+=10;
					}
					map1[x][y]='I';
				}
				break;
			case 'k'://回血 
				if(lh>=1){
					wjxl+=30,lh--;
				}
				break;
		}
		if(jishu==15){
			jishu=0;
			jb+=xb+1;
		}
		system("cls");
		cout<<"玩家:"<<name<<"  血量:"<<wjxl<<"  攻击力:"<<pg<<" 防御值:"<<hj<<"  莲花剩余粒数:"<<lh<<"  金币:"<<jb<<"  材料:"<<cl<<"  拯救细胞数量:"<<xb<<endl; 
		for(int i=0;i<=22;i++)
			puts(map1[i]);
	}
	return 0;
}

好了,到这里就结束了,如果你有更好的建议,请告诉我,我会及时更正,我们下期再见,拜~

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值