C++文字冒险游戏(不喜勿喷!!!)
这是我的第一个文字游戏
话不多说,上代码!!!
#include<ctime>
#include<string>
#include<time.h>
#include<conio.h>
#include<fstream>
#include<stdio.h>
#include<cstdlib>
#include "conio.h"
#include<string.h>
#include<iostream>
#include<Windows.h>
#include<bits/stdc++.h>
#define FILENAME "RPG游戏存档.in"
using namespace std;
string PlayerName; //设置玩家姓名
int BloodVolume=2; //设置玩家初始血量
double Defense=0; //设置玩家初始防御力
int aggressivity=1;//设置玩家初始攻击力
int grade=1; //设置玩家初始等级
int XP=0; //设置玩家初始经验值
int coin=0; //金币
int l,c; //选择
int a; //过去的XP
void color()
{//设置颜色-蓝底白字
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),159);
}
void SetPos(int x,int y)
{//设置光标处与控制台的位置
HANDLE Handle;
COORD pos={y,x};
Handle=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(Handle,pos);
}
void dayin()
{
system("cls"); //清除输出字符
//玩家的属性
cout<<"你的名字 : "<<PlayerName<<endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x0A);
cout<<"你的血量 : "<<BloodVolume<<endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x07);
cout<<"你的等级 : "<<grade<<endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x09);
cout<<"你的防御力: "<<Defense<<endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x0C);
cout<<"你的攻击力: "<<aggressivity<<endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x07);
cout<<"你的经验值: "<<XP<<"(每满50升一级)"<<endl;
//cout<<"你的金币:"<<coin<<endl;
//打印菜单
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x0E);
printf("_________________________________\n");
printf("| |\n");
printf("| 1.打怪 |\n");
printf("| 2.回家 |\n");
printf("| 3.商城 |\n");
printf("| 4.保存游戏存档 |\n");
printf("| 0.离开 |\n");
printf("|_______________________________|\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x07);
}
void dayin2()
{
system("cls"); //清除输出字符
printf("请选择副本:\n");
printf("________________________________\n");
printf("| 1.史莱姆森林 |\n");
printf("| |\n");
printf("| |\n");
printf("| |\n");
printf("| |\n");
printf("| 0.退出选择副本模式 |\n");
printf("|______________________________|\n");
}
int main()
{
system("mode con cols=100 lines=30");//设置控制台大小,30行100列
for(int i=35;i<=64;i++)
{
SetPos(20,i);
cout<<"_";
cout<<" |";
SetPos(21,i);
cout<<"_|";
}
//先输出两条横线
color();
for(int i=0;i<=29;i++)
{
SetPos(21,35+i);
cout<<"_";
Sleep(30);
}
//再次以蓝背景的形式覆盖输出
//char ch;
//ch=getch();
system("cls"); //清屏
system("color 0F");
//开场动画
system("color 0F");
cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl;
printf(" 健康游戏忠告\n");
printf(" 抵制不良游戏,拒绝盗版游戏。\n");
printf(" 注意自我保护,谨防上当受骗。\n");
printf(" 适度游戏益脑,沉迷游戏伤身。\n");
printf(" 合理安排时间,享受健康生活。\n");
Sleep(2*1000);
system("cls"); //清除输出字符
//输入游戏名字
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x07);
cout<<"请输入你的游戏名字:"<<endl;
cin>>PlayerName;
cout <<"你的名字 :"<<PlayerName<<endl;
dayin();//打印玩家属性与菜单
//控制游戏
while(BloodVolume!=0)
{
Sleep(500);
cin>>l;
switch(l)
{
case 1:
{
while(1)
{
dayin2();//打印副本
cin>>c;
system("cls"); //清除输出字符
if(c==1)
{
printf("你遇到了一只绿色史莱姆。\n");
printf("1.攻击2.逃跑\n");
cin>>c;
if(c==1)
{
cout<<"你对它造成了"<<aggressivity<<"点伤害。"<<endl;
printf("它死了\n");
a=XP;
XP=XP+1;
cout<<"你获得了"<<XP-a<<"点经验"<<endl;
}
else if(c==2)
{
printf("逃跑成功!\n");
}
else
{
printf("请不要乱输!!\n");
}
if(XP>=50)
{
system("cls"); //清除输出字符
grade++;
cout<<"恭喜你升到"<<grade<<"级"<<endl;
XP=XP-50;
printf("生命上限+2\n");
BloodVolume=BloodVolume+2;
printf("攻击力+1\n");
aggressivity++;
printf("防御力+0.5\n");
Defense=Defense+0.5;
}
}
else if(c==0)
{
break;
}
else
{
printf("请不要乱输!!\n");
}
Sleep(1000);
dayin2();//打印副本
}
dayin();//打印玩家属性与菜单
break;
}
case 2:
{
printf("不能回家!!\n");
Sleep(1000);
dayin();//打印玩家属性与菜单
break;
}
case 3:
{
system("cls"); //清除输出字符
cout<<"你的金币:"<<coin<<endl;
printf("________________________________\n");
printf("| |\n");
printf("| 暂时没有商品。 |\n");
printf("| |\n");
printf("| |\n");
printf("| |\n");
printf("| 按下任意键退出 |\n");
printf("|______________________________|\n");
system("pause");
dayin();//打印玩家属性与菜单
break;
}
case 4:
{
ofstream out("RPG游戏存档.in");//保存游戏存档
printf("保存成功\n");
Sleep(500);
dayin();//打印玩家属性与菜单
break;
}
case 0:
{
system("cls"); //清除输出字符
std::exit(EXIT_SUCCESS);//退出程序
break;
}
default:
{
dayin();//打印玩家属性与菜单
printf("请不要乱输!!\n");
Sleep(1000);
break;
}
}
}
return 0;
}