添加了存档,感谢博客资料。当然建议别用存档,因为我可能会改一些”冷饭“,另外我还简单做了一下战斗界面,当然不能战斗。。。添加了三个小地图
直接上代码
#include<time.h>
#include<windows.h>
#include<iomanip>
#include<string>
#include<bits/stdc++.h>//头文件
#include<windows.h>//头文件
#include <conio.h>
#include <cstdio>
#include <fstream>
using namespace std;
//角色信息
struct person
{
char na[255];
int health;
int maxhealth;
int attack;
int speed;
int magic;
int maxmagic;
int level;
int money;
int exp;
int maxexp;
}player={"\0",100,100,10,5,100,100,1,1000,0,1000};
struct person_have
{
char na[255];
int health;
int maxhealth;
int attack;
int speed;
int magic;
int maxmagic;
int level;
int exp;
int maxexp;
bool chuzhan;
}player_have[100]={{"\0",0,0,0,0,0,0,0,0,1000,0},{"\0",0,0,0,0,0,0,0,0,1000,0},{"\0",0,0,0,0,0,0,0,0,1000,0},{"\0",0,0,0,0,0,0,0,0,1000,0}};
struct person_all
{
char na[255];
int health;
int maxhealth;
int attack;
int speed;
int magic;
int maxmagic;
int level;
int exp;
int maxexp;
}player_all[100]={{"你好",800,800,10,5,0,100,1,0,1000},{"再见",700,700,20,5,0,100,1,0,1000}};
//函数声明
void Save();
void Read();
void color(int);
void slowplay();
void fastplay();
void juqingchat();
void Map_move();
void shop();
void move();
void Map_move_01();
void draw_Map();
void draw_Map_01();
void move_01();
void draw_fight();
//变量声明区
int number=0;
int dudang;
int Lock(int);
int UnLock(int);
bool juqing[1000];
string chat;
char ch;
char bh;
int Exit=0;
int x,y,x_next,y_next;
int level=0;
int level_01=0;
bool chengjiu[1000];
char lanmu[100][100]={
" 普攻 战技 大招",
" * "
};
char Map[100][100][100]={
{
"########################################",
"########################################",
"########################################",
"########################################",
"########################################",
"########################################",
"## @",
"## @",
"##* @",
"## @",
"## @",
"########################################",
"########################################",
"########################################",
"########################################",
"########################################",
"########################################",
},
{
"########################################",
"########################################",
"########################################",
"########################################",
"########################################",
"########################################",
"@ @",
"@ @",
"@ * @",
"@ @",
"@ @",
"########################################",
"########################################",
"########################################",
"########################################",
"########################################",
"########################################",
},
{
"########################################",
"########################################",
"########################################",
"########################################",
"#药店#####武馆##########################",
"########################################",
"##++## ##++## # 施 @",
"## ## ## ## # 工 @",
"@ * # 中 @",
"## ## # ... @",
"##++## # 请稍等 @",
"########################################",
"彩票店##################################",
"########################################",
"########################################",
"########################################",
"########################################",
}
};
char Map_01[100][100][100]={
{
"########################################",
"########################################",
"#################++#####################",
"########################################",
"################ ####################",
"################ ####################",
"################ ####################",
"################ ####################",
"################ ####################",
"################ ####################",
"################ * ####################",
"################ ####################",
"#############@@@@@@@@@##################",
"########################################",
"########################################",
"########################################",
"########################################",
},
{
"########################################",
"########################################",
"#################--#####################",
"########################################",
"################ ####################",
"################ ####################",
"################ ####################",
"################ ####################",
"################ ####################",
"################ ####################",
"################ * ####################",
"################ ####################",
"#############@@@@@@@@@##################",
"########################################",
"########################################",
"########################################",
"########################################",
},
{
"########################################",
"########################################",
"#################++#####################",
"########################################",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# * #",
"# #",
"#############@@@@@@@@@@@################",
"########################################",
"########################################",
"########################################",
"########################################",
}
};
int main()
{
chat="要读档吗。。。";
slowplay();
cout<<"1读!2NO"<<endl;
cin>>dudang;
if(dudang==1) {
chat="请稍等(你如果没存档那后果自负)";
slowplay();
Read();
}
if(dudang==2) {
chat="请输入你的名字";
slowplay();
cin>>player.na;
cout<<"你好"<<player.na<<" 请开始你的冒险"<<endl;
Sleep(2000);
}
start:
system("cls");
/*****地图*****/
/*****初始化*****/
cout<<"小游戏(@是出口)"<<endl;
/*****打印Map(a)*****/
for (int i=0;i<=16;i++)
{
for (int j=0;j<=39;j++)
{
if(Map[level][i][j]=='#') color(1);
else color(6);
if (Map[level][i][j]=='*') x=i,y=j;
printf("%c",Map[level][i][j]);
}
cout<<endl;
}
/*****移动*****/
while(1){
Save();
move();
juqingchat();
Map_move();
shop();
system("cls");
cout<<"小游戏(@是出口)"<<endl;
for (int i=0;i<=16;i++)
{
for (int j=0;j<=39;j++)
{
if(Map[level][i][j]=='#') color(1);
else color(6);
if (Map[level][i][j]=='*') x=i,y=j;
printf("%c",Map[level][i][j]);
}
cout<<endl;
}
cout<<"x标"<<x<<" "<<"y标"<<y<<" "<<"地图"<<level<<" "<<endl;
}
return 0;
}
//加密
int Lock(int x)
{
return (x+3141)*592-6535897+9323846;
}
//解密
int Unlock(int x)
{
return (x-9323846+6535897)/592-3141;
}
//字体颜色
void color(int a)
{
switch(a)
{
//黑底白字
case 1:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);break;
//黑底红字
case 2:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);break;
//黑底绿字
case 3:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);break;
//黑底黄字
case 4:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);break;
//黑底蓝字
case 5:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);break;
//黑底品红
case 6:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);break;
//黑底青色
case 7:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);break;
}
}
//慢输出
void slowplay()
{
int l=chat.length();
for(int i=0;i<l;i++)
printf("%c",chat[i]),Sleep(85);cout<<endl;
}
//快输出
void fastplay()
{
int l=chat.length();
for(int i=0;i<l;i++)
printf("%c",chat[i]),Sleep(2);cout<<endl;
}
//移动
void move(){
ch=_getch();
if(ch=='a'){
if(Map[level][x][y-1]!='#'&&Map[level][x][y-1]!='+'&&Map[level][x][y-1]!='@'){
Map[level][x][y]=' ';
y--;
Map[level][x][y]='*';
}
}
if(ch=='s'){
if(Map[level][x+1][y]!='#'&&Map[level][x+1][y]!='+'&&Map[level][x+1][y]!='@'){
Map[level][x][y]=' ';
x++;
Map[level][x][y]='*';
}
}
if(ch=='d'){
if(Map[level][x][y+1]!='#'&&Map[level][x][y+1]!='+'&&Map[level][x][y+1]!='@'){
Map[level][x][y]=' ';
y++;
Map[level][x][y]='*';
}
}
if(ch=='w'){
if(Map[level][x-1][y]!='#'&&Map[level][x-1][y]!='+'&&Map[level][x-1][y]!='@'){
Map[level][x][y]=' ';
x--;
Map[level][x][y]='*';
}
}
}
//副本移动
void move_01(){
bh=_getch();
if(bh=='a'){
if(Map_01[level_01][x][y-1]!='#'&&Map_01[level_01][x][y-1]!='+'&&Map_01[level_01][x][y-1]!='@'){
Map_01[level_01][x][y]=' ';
y--;
Map_01[level_01][x][y]='*';
}
}
if(bh=='s'){
if(Map_01[level_01][x+1][y]!='#'&&Map_01[level_01][x+1][y]!='+'&&Map_01[level_01][x+1][y]!='@'){
Map_01[level_01][x][y]=' ';
x++;
Map_01[level_01][x][y]='*';
}
}
if(bh=='d'){
if(Map_01[level_01][x][y+1]!='#'&&Map_01[level_01][x][y+1]!='+'&Map_01[level_01][x][y+1]!='@'){
Map_01[level_01][x][y]=' ';
y++;
Map_01[level_01][x][y]='*';
}
}
if(bh=='w'){
if(Map_01[level_01][x-1][y]!='#'&&Map_01[level_01][x-1][y]!='+'&&Map_01[level_01][x-1][y]!='@'){
Map_01[level_01][x][y]=' ';
x--;
Map_01[level_01][x][y]='*';
}
}
}
//地图移动
void Map_move()
{
if(y==38) {
level++;
}
if(y==1){
level--;
}
}
//副本地图
void Map_move_01(){
while(Exit==0){
move_01();
draw_Map_01();
if(x==11){
Map_01[level_01][x][y]=' ';
Map_01[level_01][9][17]='*';
Exit++;
}
}
Exit=0;
return;
}
//商店交互
void shop(){
if(level==2&&y==2&&x==7||y==3&&x==7&&level==2){
chat="药店";
slowplay();
Map_move_01();
level_01=0;
}
if(level==2&&y==2&&x==9||y==3&&x==9&&level==2){
chat="彩票";
slowplay();
Map_move_01();
level_01=1;
}
if(level==2&&y==11&&x==7||y==12&&x==7&&level==2){
chat="武馆";
level_01=2;
slowplay();
Map_move_01();
}
}
//画地图
void draw_Map_01(){
system("cls");
cout<<"小游戏(@是出口)"<<endl;
for (int i=0;i<=16;i++)
{
for (int j=0;j<=39;j++)
{
if(Map_01[level_01][i][j]=='#') color(1);
else color(6);
if (Map_01[level_01][i][j]=='*') x=i,y=j;
cout<<Map_01[level_01][i][j];
}
cout<<endl;
}
cout<<x<<" "<<y<<" "<<level<<endl;
}
void draw_Map(){
system("cls");
cout<<"小游戏(@是出口)"<<endl;
for (int i=0;i<=16;i++)
{
for (int j=0;j<=39;j++)
{
if(Map[level][i][j]=='#') color(1);
else color(6);
if (Map[level][i][j]=='*') x=i,y=j;
cout<<Map[level][i][j];
}
cout<<endl;
}
cout<<x<<" "<<y<<" "<<level<<endl;
}
//存档(已完成)
void Save()
{
ofstream out("Save_map.txt");
//presonal information
out<<player.na<<'\n';
out<<Lock(player.health)<<' '<<Lock(player.maxhealth)<<' '<<Lock(player.attack)<<' '<<Lock(player.speed)<<' ';
out<<Lock(player.magic)<<' '<<Lock(player.maxmagic)<<' '<<Lock(player.level)<<' '<<Lock(player.money)<<' '<<Lock(player.exp)<<' '<<Lock(player.maxexp)<<'\n';
//书&询问
out<<level<<' '<<'\n';
for (int i=0;i<1000;i++){
out<<juqing[i]<<' '<<chengjiu[i]<<' '<<'\n';
}
out.close();
}
//读档(已完成)
void Read()
{
ifstream in("Save_map.txt");
int lalala;
//presonal information
in>>player.na;
in>>(player.health)>>(player.maxhealth)>>(player.attack)>>(player.speed);
in>>(player.magic)>>(player.maxmagic)>>(player.level)>>(player.money)>>(player.exp)>>(player.maxexp);
player.health=Unlock(player.health);
player.maxhealth=Unlock(player.maxhealth);
player.attack=Unlock(player.attack);
player.speed=Unlock(player.speed);
player.magic=Unlock(player.magic);
player.maxmagic=Unlock(player.maxmagic);
player.level=Unlock(player.level);
player.money=Unlock(player.money);
player.exp=Unlock(player.exp);
player.maxexp=Unlock(player.maxexp);
//level
in>>level;
for (int i=0;i<1000;i++){
in>>juqing[i]>>chengjiu[i];
}
in.close();
}
void draw_fight(){
ch=_getch();
if(ch=='a'){
if(number!=0){
lanmu[x][y]=' ';
number-=1;
y-=11;
lanmu[x][y]='*';
}
}
if(ch=='d'){
if(number!=2){
lanmu[x][y]=' ';
number+=1;
y+=11;
lanmu[x][y]='*';
}
}
system("cls");
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<player_have[0].na<<" "<<player_have[1].na<<endl<<endl;
for (int i=0;i<2;i++){
for(int j=0;j<32;j++){
cout<<lanmu[i][j];
if(lanmu[i][j]=='*') x=i,y=j;
}
cout<<endl;
}
}
//剧情
void juqingchat()
{
if(y==5&&level==0&&juqing[0]==0){
Map[0][8][6]='*';
draw_Map();
chat="神秘人:你终于醒来了...";
slowplay();
Sleep(500);
chat="神秘人:时间不多了,快离开这,快!";
slowplay();
juqing[0]++;
Map[0][8][6]=' ';
}
if(y==24&&level==1&&juqing[1]==0){
Map[1][8][26]='*';
Map[1][9][26]='*';
Map[1][7][26]='*';
draw_Map();
chat="雇佣兵1号:老大,那小子无路可逃了";
fastplay();
Sleep(500);
chat="雇佣兵2号:只要抓到他,我们3人就吃穿不愁了";
fastplay();
chat="雇佣兵老大:那愣着干啥,快上!";
fastplay();
juqing[1]++;
chat="获得成就---无路可逃";
slowplay();
chengjiu[0]++;
chat="空灵的回响...";
slowplay();
chat="雇佣兵团伙:啊!!!不要";
fastplay();
Sleep(500);
Map[1][8][26]=' ';
Map[1][9][26]=' ';
Map[1][7][26]=' ';
}
}
昨天忘记补上了,下一次更新敌人和基础战斗系统(1v1)