我今天分享一个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;
}
好了,到这里就结束了,如果你有更好的建议,请告诉我,我会及时更正,我们下期再见,拜~