游戏终端服务器分享(1.1版)

Posted eason66-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了游戏终端服务器分享(1.1版)相关的知识,希望对你有一定的参考价值。

(使用前请新建一个game.txt和data.txt)

#include<stdlib.h>
#include<stdio.h>
#include<time.h> //suiji
#include<string.h>
#include<windows.h> //SLEEP函数
#include<iostream>
#include<algorithm>
#include<conio.h>
#include<pthread.h>
#include<fstream>
#include <queue>
#include <math.h>
#define Height 25 //迷宫的高度,必须为奇数
#define Width 25 //迷宫的宽度,必须为奇数
#define Wall 1
#define Road 0
#define Start 2
#define End 3
#define Esc 5
#define Up 1
#define Down 2
#define Left 3
#define Right 4
using namespace std;
#define next 32
string UsersName;
int getint4(int *index=NULL){
	char c;
	int a;
	while((c=getch())!=13){
		cout << c-‘0‘;
		a*=10;
		a+=c-‘0‘;
	}
	cout << "
";
	return a;
}
#define getint getint4
int getint3(){
	int a;
	a=getch()-‘0‘;
	return a;
}//用按键读入数字(0~9) 
void print(string a,int speed=100){
	for(int i=0;i<a.length();i++){
		printf("%c",a[i]);
		Sleep(speed);
	}
}
struct monster{
	string name,thing;
	int gongji,fangyu,hp,gold_ko,gold_koi,thing_number;
}
strongman={"森林巨人","",350,350,500,100,1500,0},big_strongman={"巨人之王","巨人之臂",350*5,350*5,500*5,100*5,1500*5,1},xiyi={"森林蜥蜴","铁甲",100,100,200,30,500,2},whitch={"森林女巫","防弹衣",180,180,350,50,1000,3},bee={"草原黄蜂","剑",100,100,200,30,500,4},horse={"草原野马","碧血剑",180,180,350,50,1000,5},lion={"草原雄狮","绝世好剑",350,350,500,100,1500,6},shitu={"使徒","",350*7,350*7,500*7,0,0,0},guai;
struct player{
	string name;
	int hp,gongji,fangyu,gold,thing_fang,thing_gong,max_hp,level,exp,max_exp;
}
play={"",100,50,40,500,0,0,100,1,0,100};
bool frees=false;
int plase=0;
int grass=3,bag=2,medicine=2,super_medicine=1,boom=3,dead=2,hoom=1;
int clothes,tie,fang,gold_clothes,arm,very_small,small,big,good;
bool vs_now;
int number;
void choose_things(){
	char data[100];
	sprintf(data,"===================
1.止血草%d个   2.急救包%d个    3.云南白药%d个   4.超级云南白药%d个     5.手雷%d个   6.毒标%d个    7.手抛式原子弹%d个    0.退出
",grass,bag,medicine,super_medicine,boom,dead,hoom);
	printf(data);
	number=getint();
	switch(number){
		case 1:if(grass==0){
			print("没有止血草了
");
			break;
		}
		if(play.hp+50>play.max_hp){
			print("hp过多,不需要止血草
");
			break;
		}
		play.hp+=50;
		grass--;
		break;
		case 2:if(bag==0){
			print("没有急救包了
");
			break;
		}
		if(play.hp+80>play.max_hp){
			print("hp过多,不需要急救包
");
			break;
		}
		play.hp+=80;
		bag--;
		break;
		case 3:if(medicine==0){
			print("没有云南白药了
");
			break;
		}
		if(play.hp+100>play.max_hp){
			print("hp过多,不需要云南白药
");
			break;
		}
		play.hp+=100;
		medicine--;
		break;
		case 4:if(super_medicine==0){
			print("没有超级云南白药了
");
			break;
		}
		if(play.hp+200>play.max_hp){
			print("hp过多,不需要超级云南白药了
");
			break;
		}
		play.hp+=200;
		super_medicine--;
		break;
		case 5:if(!vs_now){
			print("非战斗状态,不能使用手雷
");
			break;
		}
		if(boom==0){
			print("没有手雷了
");
			break;
		}
		print("使用手雷,敌人hp减少100");
		guai.hp-=100;
		boom--;
		print("

");
		cout << guai.name;
		print("反击!!你的hp减少");
		cout << guai.gongji/3-play.fangyu;
		play.hp-=guai.gongji/3-play.fangyu;
		cout << "
";
		break;
		case 6:if(!vs_now){
			print("非战斗状态,不能使用毒标
");
			break;
		}if(dead==0){
			print("没有毒标了
");
			break;
		}
		print("使用毒标,敌人hp减少200

");
		guai.hp-=200;
		cout << guai.name;
		dead--;
		print("反击!!你的hp减少");
		cout << guai.gongji/3-play.fangyu;
		play.hp-=guai.gongji/3-play.fangyu;
		cout << "
";
		break;
		case 7:if(!vs_now){
			print("非战斗状态,不能使用手抛式原子弹
");
			break;
		}
		if(hoom==0){
			print("没有手抛式原子弹了
");
			break;
		}
		hoom--;
		print("使用手抛式原子弹,敌人hp减少500

");
		char data[100];
		guai.hp-=500;
		cout << guai.name;
		sprintf(data,"反击!!你的hp减少了%d",guai.gongji/3-play.fangyu);
		play.hp-=guai.gongji/3-play.fangyu;
		printf(data);
	}
}
void check(){
	char data[200];
	sprintf(data,"



====================
攻击力%d+%d   防御力%d+%d     hp:%d/%d

等级%d   还需要%d经验升级    金币%d
",play.gongji,play.thing_gong,play.fangyu,play.thing_fang,play.hp,play.max_hp,play.level,play.max_exp-play.exp,play.gold);
	printf(data);
}
void vs(){
	srand(rand());
	vs_now=true;
	while(play.hp>0&&guai.hp>0){
		print("






=====================================


要怎么办?
1.攻击   2.物品    3.查看状态   4.逃跑
",0);
		number=getint();
		switch(number){
			case 1:cout << play.name;
			print("攻击!!敌人hp减少");
			cout << play.gongji+play.thing_gong-guai.fangyu/3;
			guai.hp-=play.gongji+play.thing_gong-guai.fangyu/3;
			print("

");
			cout << guai.name;
			print("反击!你的hp减少");
			cout << guai.gongji/3-play.fangyu-play.thing_fang;
			play.hp-=guai.gongji/3-play.fangyu-play.thing_fang;
			cout << "
";
			break;
			case 2:choose_things();break;
			case 3:check();break;
			case 4:int s=rand()%10;
			srand(rand());
			if(s<4){
				print(play.name);
				print("逃跑了~
");
				return ;
			}
			else{
				print(play.name);
				print("逃跑失败!
");
			}
			break;
		}
		print("




");
	}
	if(play.hp==0){
		print(play.name);
		print("战死!!金币掉落");
		cout << guai.gold_koi;
		play.gold-=guai.gold_koi;
		if(play.gold<0){
			play.gold=0;
		}
		play.hp=play.max_hp;
	}
	else{
		if(guai.name=="使徒"){
			print("战斗胜利,救出公主!!");
			frees=true;
			return ;
		}
		else{
			print("战斗胜利!!!获得经验100,金币");
			cout << guai.gold_ko;
			play.exp+=100;
			play.gold+=guai.gold_ko;
			int s=rand()%10;
			print("


");
			if(s<4){
				print("从敌人尸体中发现");
				cout << guai.thing;
				switch(guai.thing_number){
					case 0:gold_clothes++;break;
					case 1:arm++;break;
					case 2:tie++;break;
					case 3:fang++;break;
					case 4:small++;break;
					case 5:big++;break;
					case 6:good++;break;
				}
				print("



");
			}
			while(play.exp>=play.max_exp){
				print(play.name);
				print("升级!!攻击力+3,防御力+2,hp上限+100
");
				play.gongji+=3;
				play.fangyu+=2;
				play.max_hp+=100;
				play.exp-=play.max_exp;
				play.max_exp+=100;
				print("

");
			}
			play.hp=play.max_hp;
		}
	}
}
int zbg(int number,int power,string name){
	if(number==0){
		print("没有");
		print(name);
		print("了
");
		return 0;
	}
	print("拿起了");
	print(name);
	play.thing_gong=power;
	return 0;

}
int zbf(int number,int power,string name){
	if(number==0){
		print("没有");
		print(name);
		print("了
");
		return 0;
	}
	print("穿上了");
	print(name);
	play.thing_fang=power;
	return 0;

}
int drink(int x){
	if(play.gold<x){
		print("钱不够!!!
");
		return 0;
	}
	if(play.hp+x>play.max_hp){
		print("hp太多,不用喝酒
");
		return 0;
	}
	play.hp+=x;
	play.gold-=x;
	return 0;
}
int cs(){
	srand(time(0));
	int bar=rand(),hotel=rand(),forest_1=rand(),forest_2=rand(),forest_3=rand(),grass_1=rand(),grass_2=rand(),grass_3=rand();
	print("这是一个勇者的世界!!雅丽萨斯国的罗茜公主被陌生人绑架了!!


伟大的勇者啊,拿起武器,营救公主!!!


");
	play.name=UsersName;
	if(play.name=="EVA初号机"){
		print("封印多年的EVA初号机啊,你终于可以重见天日了!!!


EVA初号机,重新启动...随即,暴走!!!
");
		play.fangyu+=10000;
		play.gongji+=10000;
		play.max_hp+=10000;
		play.hp+=10000;
	}
	if(play.name=="seven"||play.name=="eason"||play.name=="carolyn"){
		print("曾救出公主的勇士啊,你终于回来了!!!随即,暴走!!!!!
");
		play.fangyu+=10000;
		play.gongji+=10000;
		play.max_hp+=10000;
		play.hp+=10000;
	}
	bool say=false;
	while(!frees){
		print("



===========================================




要做什么?
1.移动  2.物品   3.对话   4.查看状态  5.装备  0.退出
",0);
		number=getint();
		switch(number){
			case 1:print("





================================================


要去哪里?
1.酒吧   2.旅店    3.森林一层   4.森林二层   5.森林三层   6.草原一层   7.草原二层   8.草原三层
",0);
			number=getint();
			switch(number){
				case 1:plase=bar;break;
				case 2:plase=hotel;
				print("要住店吗?200个金币,可以让你hp变满哦
1.是  0.否");
				number=getint();
				if(number){
					if(play.gold<200){
						print("金币不够!!!");
						break;
					}
					play.gold-=200;
					print("第二天了
	hp满了
		下次再来!");
					int s=rand()%10;
					if(s<4){
						print("临走时发现其他客人遗留的");
						s=rand()%8+1;
						if(s<=3){
							print("止血草");
							grass++;
						}else if(s<=5){
							print("急救包");
							bag++;
						}
						else if(s<=7){
							print("云南白药");
							medicine++;
						}
						else{
							print("超级云南白药");
							super_medicine++;
						}
						print("一个和");
						s=rand()%6+1;
						if(s<=3){
							print("手雷");
							boom++;
						}else if(s<=5){
							print("毒标");
							dead++;
						}
						else{
							print("手抛式原子弹");
							hoom++;
						}
						print("一个
");
					}
					play.hp=play.max_hp;
					break;
				}
				else{
					print("下次再来!
");
					break;
				}
				case 3:plase=forest_1;
				int s;
				s=rand()%10;
				if(s<7){
					guai=xiyi;
					print("森林蜥蜴扑了过来!
");
					vs();
				}
				else if(s<9){
					guai=whitch;
					print("森林女巫扑了过来!!
");
					vs();
				}
				else{
					print("这里安全
");
				}
				break;
				case 4:plase=forest_2;
				s=rand()%10;
				if(s<7){
					guai=whitch;
					print("森林女巫扑了过来!!
");
					vs();
				}
				else if(s<9){
					guai=strongman;
					print("森林巨人扑了过来!!!
");
					s=rand()%10;
					if(s<8){
						guai.thing="黄金圣衣";
						guai.thing_number=0;
					}
					else{
						guai.thing="巨人之臂";
						guai.thing_number=1;
					}
					vs();
				}
				else{
					print("这里安全
");
				}
				break;
				case 5:plase=forest_3;
				s=rand()%10;
				if(s<7){
					guai=strongman;
					print("森林巨人扑了过来!!!
");
					s=rand()%10;
					if(s<8){
						guai.thing="黄金圣衣";
						guai.thing_number=0;
					}
					else{
						guai.thing="巨人之臂";
						guai.thing_number=1;
					}
					vs();
				}
				else if(s<9){
					guai=big_strongman;
					print(guai.name);
					print("扑了过来!!!!
");
					vs();
				}
				else{
					print("这里安全
");
				}
				break;
				case 6:plase=grass_1;
				s=rand()%10;
				if(s<7){
					guai=bee;
					print("草原黄蜂扑了过来!
");
					vs();
				}else if(s<9){
					guai=horse;
					print("草原野马扑了过来!!
");
					vs();
				}
				else{
					print("这里安全
");
				}
				break;
				case 7:plase=grass_2;
				s=rand()%10;
				if(s<7){
					guai=horse;
					print("草原野马扑了过来!!
");
					vs();
				}else if(s<9){
					guai=lion;
					print("草原雄狮扑了过来!!!
");
					vs();
				}
				else{
					print("这里安全
");
					vs();
				}
				break;
				case 8:plase=grass_3;
				s=rand()%10;
				if(s<7){
					guai=lion;
					print("草原雄狮扑了过来!!!
");
					vs();
				}else if(s<9){
					if(arm==0){
						if(say){
							print("神秘老人:加油吧,年轻人,争取获得巨人之臂!^_^
");
						}
						else{
							print("神秘老人:如果你有巨人之臂,我就告诉你公主的下落哦!^_^
");
						}
					}
					else{
						print("神秘老人:年轻人,做的不错。不过……嘿嘿,你上当了。巨人之臂我要了,公主你也别想带走!!!


");
						guai=shitu;
						print("使徒扑了过来!!!!
");
						vs();
					}
				}
				else{
					print("这里安全
");
				}
			}
			break;
			case 2:choose_things();break;
			case 3:if(plase==bar){
				print("要和谁说话?
1.红发女郎    2.赏金猎人    3.酒吧老板
");
				cin >> number;
				switch(number){
					case 1:print("红发女郎:吧台那边的猎人好帅啊!!^_^
");break;
					case 2:if(clothes==0){
						print("赏金猎人:你要救公主啊,好胆量!不过外面的草原和丛林很险恶,而且越深越危险。这是匕首和布衣,对你会有帮助的。

");
						print(play.name);
						print("心想:这位大叔人真好啊!
");
						clothes++;
						very_small++;
						break;
					}
					else{
						print("赏金猎人:加油吧,年轻人,不要被外面的丛林和草原所吓倒!^_^");
						break;
					}
					case 3:print("酒吧老板:要喝点什么?1.二锅头25金币,hp+25    2.xo酒50金币,hp+50      3.人头马面100金币,hp+100    4.青花郎200金币,hp+200     5.茅台酒500金币,hp+500
");
					number=getint();
					switch(number){
						case 1:drink(25);break;
						case 2:drink(50);break;
						case 3:drink(100);break;
						case 4:drink(200);break;
						case 5:drink(500);break;
					}
					break;
				}
				break;
			}
			else{
				print("这里好像没人可以聊天");
				break;
			}
			break;
			case 4:check();break;
			case 5:print("选择要更换的装备:

");
			#undef data
			char data[100];
			sprintf(data,"1.匕首%d个    2.剑%d个     3.碧血剑%d个     4.绝世好剑%d个      
5.布衣%d个     6.铁甲%d个     7.防弹衣%d个         8.黄金圣衣%d个
",very_small,small,big,good,clothes,tie,fang,gold_clothes);
			printf(data);
			number=getint();
			switch(number){
				case 1: zbg(very_small,30,"匕首");break;
				case 2: zbg(small,50,"剑");break;
				case 3: zbg(big,100,"碧血剑");break;
				case 4: zbg(good,200,"绝世好剑");break;
				case 5: zbf(clothes,30,"布衣");break;
				case 6: zbf(tie,50,"铁甲");break;
				case 7: zbf(fang,100,"防弹衣");break;
				case 8: zbf(gold_clothes,200,"黄金圣衣");break;
			}
			break;
			case 0: print("确定退出游戏?
1.是    0.否");
			number=getint();
			if(number){
				return 0;
			}
			break;
		}
	}
	system("pause");
	return 0;
}
int ctjdb()
{
    int a,b,s=0,t;
    cout<<"请选择计算机的速度,一个整数,越大越慢。";
    t=getint();
    for(;;)
    {
        cout<<"请选择出什么:
1.石头
2.剪刀
3.布
4.不玩了
";
        for(int i=1;i<=t;i++)
          b=rand()%3;
        b+=1;
        a=getint();
        if(a==4)
          break;
        if(b==1)
          cout<<"计算机出石头,";
        if(b==2)
          cout<<"计算机出剪刀,";
        if(b==3)
          cout<<"计算机出布,";
        if(a+1==b||a-2==b)
          cout<<"你赢了!!
";
        if(a-1==b||a+2==b)
          cout<<"你输了!!
";
        if(a==b)
          cout<<"平局。。
";
        s++;
    }
    cout<<"下次再来哟~~";
    return 0;
}
int n,m;
bool c[100005];
int cq3_1()
{
    cout<<"猜数 3.1
";
    srand(time(NULL));
    cout<<"==============================================================
几人猜数(只支持100000人以内)??
";
    n=getint();
    cout<<"==============================================================
0~几??
";
    m=getint();
    for(;;)
    {
        cout<<"==============================================================
开始!!!
";
        int x=rand()%(m+1),y,h=0,e=m,t=rand()%n;
        bool hh=1,ee=1;
        do
        {
            cout<<"
==============================================================
";
            cout<<h<<"~"<<e<<endl;
            ++t;
            t-=t>n?n:0;
            if(!c[t])
              cout<<t<<"号猜(电脑帮猜?输-1 设置TA为电脑?输-2)
",y=getint();
            if(y==-2)
              c[t]=1;
            if(y==-1||c[t])
            {
                y=(h+e)/2;
                cout<<"帮"<<t<<"号猜猜成"<<y<<endl;
                if(y==x)
                  break;
                if(y>x)
                {
                    cout<<"大了";
                    e=y;
                    continue;
                }
                if(y<x)
                {
                    cout<<"小了";
                    h=y;
                    continue;
                }
            }
            if(y<h||y>e)
            {
                cout<<"浪费机会!!!";
                continue;
            }
            if(!h&&!y)
              if(hh)
                hh=0;
              else {cout<<"浪费机会!!!";continue;}
            if(e==m&&y==m)
              if(ee)
                ee=0;
              else {cout<<"浪费机会!!!";continue;}
            if(y>x)
            {
                cout<<"大了";
                e=y;
            }
            if(y<x)
            {
                cout<<"小了";
                h=y;
            }
        }while(x!=y);
        cout<<t<<"号赢了!!!
==============================================================
再来一局吗?
y/n
";
        char a;
        a=getch();
        if(a==‘n‘||a==‘N‘)
          break;
    }
    getchar();
    cout<<"==============================================================
byebye!
==============================================================
双击任意键结束,单机空格关机!";
    char a=getch();
    if(a==‘ ‘)
    {
        cout<<"
确定吗??确定点空格一下,否则双击任意键结束。";
        a=getch();
        if(a==‘ ‘)
          system("shutdown -s -t 0");
    }
    return 0;
}
int cq3_2()
{
    cout<<"猜数 3.2
"; 
    srand(time(NULL));
    cout<<"==============================================================
几人猜数(只支持100000人以内)??";
    getint(&n);
    cout<<"==============================================================
0~几??";
    m=getint();
    for(;;)
    {
        cout<<"==============================================================
开始!!!";
        int x=rand()%(m+1),y,h=0,e=m,t=rand()%n;
        bool hh=1,ee=1;
        do
        {
            cout<<"
==============================================================
";
            cout<<h<<"~"<<e<<endl;
            ++t;
            t-=t>n?n:0;
            if(!c[t])
              cout<<t<<"号猜(电脑帮猜?输-1 设置TA为电脑?输-2)",y=getint();
            if(y==-2)
              c[t]=1;
            if(y==-1||c[t])
            {
                y=(h+e)/2;
                cout<<"帮"<<t<<"号猜猜成"<<y<<endl;
                if(y==x)
                  break;
                if(y>x)
                {
                    cout<<"大了";
                    e=y; 
                    continue;
                }
                if(y<x)
                {
                    cout<<"小了";
                    h=y; 
                    continue;
                }
            } 
            if(y<=h||y>=e)
            {
                cout<<"浪费机会!!!";
                continue;
                if(!h&&!y)
                  if(hh)
                    hh=0;
                else
                {
                    cout<<"浪费机会!!!";
                    continue;
                }
                if(e==m&&y==m)
                  if(ee)
                    ee=0;
                else
                {
                    cout<<"浪费机会!!!";
                    continue;
                }
            }
            if(y>x)
            {
                cout<<"大了";
                e=y; 
            }
            if(y<x)
            {
                cout<<"小了";
                h=y; 
            }
        }while(x!=y);
        cout<<t<<"号赢了!!!
==============================================================
再来一局吗?
y/n
";
        char a;
        a=getch();
        if(a==‘n‘||a==‘N‘)
          break; 
    }
    getchar();
    cout<<"==============================================================
byebye!
==============================================================
双击任意键结束,单机空格关机!";
    char a=getch();
    if(a==‘ ‘)
    {
        cout<<"
确定吗??确定点空格一下,否则双击任意键结束。";
        a=getch();
        if(a==‘ ‘)
          system("shutdown -s -t 0");
    }
    return 0; 
}

int f[111][111];
int i,d[10],a,j,ett=0,headx[10],t1,d8=1,dev_c,heady[10],k=7,rm[10],d2[10],k1,l,t=250,i3;
int fdx[1111],fdy[1111],v=10,hd[10],tl[10],djx,djy,typ,dj[111],x4[10][10000],y4[10][10000],i1,vt;
pthread_t tid,sna,tim;
double sc,hsc;
FILE* f3;
char ch;
/******************************
*0 up ;1 down ;2 left; 3 right*
*i是循环变量 t是sleep时间,n是*
*长,m是宽,k1,x4和y4是方向临时变量  *
*f是地图,fdx和fdy是食物位置  *
*hd头,tl尾  是队列, *
*i1是循环变量,sc是分数,tid是*
*线程 f3是文件指针,ch是y/n。 *
******************************/
void co1()
{
    COORD c;
    c.X=0;
    c.Y=0;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}
void co(int color1)
{
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),color1);
}
void* f1(void* args)//另一个线程,负责拐弯
{
    for(;;)
    {
        if(ett==1)//线程结束哨兵
        return 0;
        a=getch();
        if(a==224)
        {
            a=getch();  //上下左右方向键
            if(a==72&&d2[7]!=1)//防止掉头
            d[7]=0;
            if(a==80&&d2[7]!=0)
            d[7]=1;
            if(a==75&&d2[7]!=3)
            d[7]=2;
            if(a==77&&d2[7]!=2)
            d[7]=3;
        }
        else
        {
            if(a==119&&d2[6]!=1)   //WASD
            d[6]=0;
            if(a==115&&d2[6]!=0)
            d[6]=1;
            if(a==97&&d2[6]!=3)
            d[6]=2;
            if(a==100&&d2[6]!=2)
            d[6]=3;
        }
    }
}
void* f2(void* args)
{
    for(;;)
    {
        Sleep(1000);
        d8++;
    }
}
void print()
{
    printf("score=%.2lf
",sc);
    printf(" ");
    for(i=0;i<m*2;i++)
    printf("-");//边框
    printf("
");
    for(i=1;i<=n;i++)
    {
        printf("|");
        for(j=1;j<=m;j++)
        {
            if(f[j][i]==0)
            printf(" ");//空间
            else if(f[j][i]==8)
            printf("◆");//食物
            else if(f[j][i]>=257)
            printf("□");
            else
            {
                co(f[j][i]+8);
                for(i1=1;i1<=7;i1++)
                {
                    if(j==x4[i1][hd[i1]]&&i==y4[i1][hd[i1]])
                    {
                        co(f[j][i]+4);
                    }
                }
                printf("█");//蛇身
                co(7);
            }
        }
        printf("|");
        printf("
");
    }
    printf(" ");
    for(i=0;i<m*2;i++)
    printf("-");
    printf("
");
    printf("
score=%.2lf

highest score is%.2lf
",sc,hsc);
}
int check(int b1)
{
    int er=1;
    for(i=1;i<=v;i++)
        {
            if(x4[b1][hd[b1]]==fdx[i]&&y4[b1][hd[b1]]==fdy[i])
            {
                sc+=sqrt((hd[b1]-tl[b1])*1.0/v/sqrt(m*n*d8))*40;
                i3=0;
                do
                {
                    i3++;
                    fdx[i]=rand()%m+1;//随机生成食物
                    fdy[i]=rand()%n+1;
                }while(f[fdx[i]][fdy[i]]!=0&&i3<10000);
                f[fdx[i]][fdy[i]]=8;
                if(i3>9998)
                {
                    er=2;
                    goto re;
                }
                if(rand()%3==0&&djx==0&&djy==0)
                {
                    do
                    {
                        djx=rand()%m+1;
                        djy=rand()%n+1;         //生成道具
                    }while(f[djx][djy]!=0);
                    typ=1;
                    f[djx][djy]=typ+256;
                }
                er=0;
            }
        }
        if(x4[b1][hd[b1]]==djx&&y4[b1][hd[b1]]==djy)
        {
            f[djx][djy]=b1;
            djx=0;
            djy=0;
            if(rand()%7==0)
            sc*=1.5;
            else if(rand()%6==1)
            sc/=1.5;
            else if(rand()%5==2)
            {
                t*=1.5;
                sc*=0.9;
            }
            else if(rand()%4==3)
            {
                t/=1.5;
                sc*=1.1;
            }
            else
            {
                rm[b1]=rand()%3+2;
                sc=sc+rand()%10-4;
            }
        }
    re:return er;
}
void do1(int b1)
{
    int d1=d[b1];
        hd[b1]++;
        x4[b1][hd[b1]]=x4[b1][hd[b1]-1];
        y4[b1][hd[b1]]=y4[b1][hd[b1]-1];
        if(d1==0)
        {
            y4[b1][hd[b1]]--;
        }
        if(d1==1)
        {
            y4[b1][hd[b1]]++;
        }
        if(d1==2)
        {
            x4[b1][hd[b1]]--;//移动
        }
        if(d1==3)
        {
            x4[b1][hd[b1]]++;
        }
        if(x4[b1][hd[b1]]<1)
        x4[b1][hd[b1]]=m;
        else if(y4[b1][hd[b1]]<1)
        y4[b1][hd[b1]]=n;
        else if(x4[b1][hd[b1]]>m)//穿墙
        x4[b1][hd[b1]]=1;
        else if(y4[b1][hd[b1]]>n)
        y4[b1][hd[b1]]=1;
        if(!vt)
        i3=check(b1);
        if(i3==2)
        {
            vt=1;//停止检测
            sc+=(rand()%10)/10.0;
        }
        else if(i3==1)//检测是否吃到东西
        {
            f[x4[b1][tl[b1]]][y4[b1][tl[b1]]]=0;//尾动
            tl[b1]++;
        }
        for(i=tl[b1];i<hd[b1]-1;i++)
        if((x4[b1][hd[b1]]==x4[b1][i]&&y4[b1][hd[b1]]==y4[b1][i]))
        {
            f3=fopen("snake.ini","w");
            hsc=hsc>sc?hsc:sc;
            fprintf(f3,"%lf
",hsc);
            fprintf(f3,"%d %d %d %d %d
",n,m,v,t1,k1);
            fclose(f3);
            f3=fopen("snake.log","a");
            fprintf(f3,"%lf
",sc);
            fprintf(f3,"%d %d %d %d %d

",n,m,v,t1,k1);
            fclose(f3);
            if(MessageBoxA(NULL,TEXT("想在玩一局吗"),TEXT("snake"),MB_YESNO|MB_SYSTEMMODAL)==IDYES)//弹出在玩一局
            {
                ett=1;//结束线程
                Sleep(1);
                system("snake");//不要脸的重新开始
            }
            exit(0);
        }
        f[x4[b1][hd[b1]]][y4[b1][hd[b1]]]=b1;//头动
    return;
}
void init()
{
    system("mode con cols=180 lines=180");
    system("title SnakeBata0.6.3");
    printf("自定义(Y)/默认(N)/上一次(L)?Y/N/L
");
    ch=getch();
    f3=fopen("snake.ini","a");
    fclose(f3);
    f3=fopen("snake.ini","r");
    fscanf(f3,"%lf",&hsc);
    if(ch==‘L‘||ch==‘l‘)
    fscanf(f3,"%d %d %d %d %d",&n,&m,&v,&t,&k1);
    fclose(f3);
    if(ch==‘y‘||ch==‘Y‘)
    {
        printf("输入行数 列数 食物数 速度 蛇数
(一个一个输,输完了一个后别忘了换行哦亲~)");
        //scanf("%d %d %d %d %d",&n,&m,&v,&t,&k1);
        n=getint4();
        getint4(&m);
        getint4(&v);
        t=getint();
        k1=getint4();
        k=8-k1;
        if(k<0)
        k=1;
    }
    f3=fopen("snake.ini","w");
    fprintf(f3,"%lf
",hsc);
    fprintf(f3,"%d %d %d %d %d",n,m,v,t,k1);
    fclose(f3);
    t1=t;
    srand(time(NULL));
    pthread_create (&tid,NULL,f1,NULL);
    pthread_create (&tim,NULL,f2,NULL);
    for(i=7;i>=k;i--)
    {
        hd[i]=1;
        tl[i]=1;
        x4[i][1]=rand()%m+1;//随机生成蛇的初始位置
        y4[i][1]=rand()%n+1;
        f[x4[i][1]][y4[i][1]]=i;
    }
    for(i=1;i<=v;i++)
    {
        do
        {
            fdx[i]=rand()%m+1;//随机生成食物
            fdy[i]=rand()%n+1;
        }while(f[fdx[i]][fdy[i]]!=0);
        f[fdx[i]][fdy[i]]=8;
    }
}
int tcs()
{
	n=m=15;
    init();
    system("cls");
    for(;;)//主循环
    {
        d2[6]=d[6];
        d2[7]=d[7];
        Sleep(t);
        for(i1=7;i1>=k;i1--)
        {
            if(rm[i1]==0)
            do1(i1);
            else
            {
                if(hd[i1]-tl[i1]>5)
                {
                    f[x4[i1][tl[i1]]][y4[i1][tl[i1]]]=0;
                    tl[i1]++;
                    rm[i1]--;
                }
                else
                {
                    rm[i1]=0;
                    do1(i1);
                }
            }
            for(i=tl[i1];i<=hd[i1];i++)
            f[x4[i1][tl[i1]]][y4[i1][tl[i1]]]=i1;
        }
        if(t>t1)
        t--;
        else if(t<t1)
        t++;
        co1();
        //system("cls");
        print();
    }
	free(&a);
}
int map[Height+2][Width+2];
void gotoxy(int x,int y) //移动坐标
{
COORD coord;
coord.X=x;
coord.Y=y;
SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord );
}
void hidden()//隐藏光标
{
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO cci;
GetConsoleCursorInfo(hOut,&cci);
cci.bVisible=0;//赋1为显示,赋0为隐藏
SetConsoleCursorInfo(hOut,&cci);
}
void create(int x,int y) //随机生成迷
{
int c[4][2]={0,1,1,0,0,-1,-1,0}; //四个方向
int i,j,t;
//将方向打乱
for(i=0;i<4;i++)
{
j=rand()%4;
t=c[i][0];c[i][0]=c[j][0];c[j][0]=t;
t=c[i][1];c[i][1]=c[j][1];c[j][1]=t;
}
map[x][y]=Road;
for(i=0;i<4;i++)
if(map[x+2*c[i][0]][y+2*c[i][1]]==Wall)
{
map[x+c[i][0]][y+c[i][1]]=Road;
create(x+2*c[i][0],y+2*c[i][1]);
}
}
int get_key() //接收按键
{
char c;
while(c=getch())
{
if(c==27) return Esc; //Esc
if(c!=-32)continue;
c=getch();
if(c==72) return Up; //上
if(c==80) return Down; //下
if(c==75) return Left; //左
if(c==77) return Right; //右
}
return 0;
}
void paint(int x,int y) //画迷宫
{
gotoxy(2*y-2,x-1);
switch(map[x][y])
{
case Start:
printf("入");break; //画入口
case End:
printf("出");break; //画出口
case Wall:
printf("▇");break; //画墙
case Road:
printf(" ");break; //画路
}
}
char aa;
void game()
{
int x=2,y=1; //玩家当前位置,刚开始在入口处
int c; //用来接收按键
while(1)
{
gotoxy(2*y-2,x-1);
printf("●"); //画出玩家当前位置
if(map[x][y]==End) //判断是否到达出口
{
gotoxy(30,24);
printf("到达终点,按任意键结束
");
break;
}
c=get_key();
if(c==Esc)
{
gotoxy(0,24);
break;
}
switch(c)
{
case Up: //向上走
if(map[x-1][y]!=Wall)
{
paint(x,y);
x--;
}
break;
case Down: //向下走
if(map[x+1][y]!=Wall)
{
paint(x,y);
x++;
}
break;
case Left: //向左走
if(map[x][y-1]!=Wall)
{
paint(x,y);
y--;
}
break;
case Right: //向右走
if(map[x][y+1]!=Wall)
{
paint(x,y);
y++;
}
break;
}
}
}
int mg()
{
	system("title MgBata0.6.3");
int i,j;
srand((unsigned)time(NULL)); //初始化随即种子
hidden(); //隐藏光标
for(i=0;i<=Height+1;i++)
for(j=0;j<=Width+1;j++)
if(i==0||i==Height+1||j==0||j==Width+1) //初始化迷宫
map[i][j]=Road;
else map[i][j]=Wall;
create(2*(rand()%(Height/2)+1),2*(rand()%(Width/2)+1)); //从随机一个点开始生成迷宫,该点行列都为偶数
for(i=0;i<=Height+1;i++) //边界处理
{
map[i][0]=Wall;
map[i][Width+1]=Wall;
}
for(j=0;j<=Width+1;j++) //边界处理
{
map[0][j]=Wall;
map[Height+1][j]=Wall;
}
map[2][1]=Start; //给定入口
map[Height-1][Width]=End; //给定出口
for(i=1;i<=Height;i++)
for(j=1;j<=Width;j++) //画出迷宫
paint(i,j);
game(); //开始游戏
return 0;
}
#define n2 20
using namespace std;

//函数定义
void sch(int color);
void fileout();
void print(const char a[],int b);
void Initialize();
void gotoxy(int x,int y);
void cursor(bool a);
void shop(int c);
void warout(int xx,int yy);
void war(int c);
void game();
bool issame(string x);
bool charsame(char a[105],char b[105],int blen);
int canfind(int len);
bool login_register();
void enter();

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//存档系统
struct users{
    char name[105];int namelen;
    char password[105];int passwordlen;
    int gold,h,u;
}user[100005];
int usertot,nowuser;
void fileout(){
    freopen("game.txt","w",stdout);
    cout<<usertot<<endl;
    for (int i=1;i<=usertot;i++)cout<<user[i].name<<‘ ‘<<user[i].namelen<<‘ ‘<<user[i].password<<‘ ‘<<user[i].passwordlen<<‘ ‘<<user[i].gold<<‘ ‘<<user[i].h<<‘ ‘<<user[i].u<<endl;
    exit(0);
}
//存档系统
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//工具程序
void sch(int color){
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);
    return;
}
void print(const char a[],int b){
    int s=strlen(a);
    for(int i=0;i<s;i++){
        printf("%c",a[i]);
        Sleep(b);
    }
}
void Initialize(){
    system("color f0");
    RECT rect;
    HWND hwnd=GetForegroundWindow();
    GetWindowRect(hwnd,&rect);
    MoveWindow(hwnd,0,0,rect.right-rect.left,rect.bottom-rect.top,TRUE);
    system("mode con cols=90 lines=30");
}
void gotoxy2(int x,int y){
    COORD pos;
    pos.X=2*x;
    pos.Y=y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
void cursor(bool a){
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_CURSOR_INFO CursorInfo;
    GetConsoleCursorInfo(handle, &CursorInfo);
    CursorInfo.bVisible = a;
    SetConsoleCursorInfo(handle, &CursorInfo);
}
//工具程序
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//神之商城
void shop(int c){
    system("cls");
    cout<<"剩余金币:"<<user[c].gold<<endl;
    cout<<"按H购买武器"<<endl;
    cout<<"按U购买技能"<<endl;
    char x;
    x=getch();
    if(x>=‘a‘){
    	x-=‘a‘-‘A‘;
	}
    if (x!=‘H‘&&x!=‘U‘){cout<<"操作失败!"<<endl;Sleep(500);return;}
    if (x==‘H‘){
        cout<<endl<<"请输入武器编号购买武器"<<endl;
        cout<<"1 神之剑 花费0金币"<<endl;
        cout<<"2 激光枪 花费200金币" <<endl;
        cout<<"3 激光炮 花费400金币"<<endl;
        cout<<"4 概率枪 花费1500金币"<<endl;
        cout<<"5 电之弓 花费1000金币"<<endl;
        int cost[105]={0,0,200,400,1500,1000};
        char s=getch();
        if (s<‘1‘||s>‘5‘){cout<<"操作失败"<<endl;Sleep(500);return;}
        if ((user[c].h&(1<<s-1-48))||(user[c].gold<cost[s-48])){cout<<"操作失败!"<<endl;Sleep(500);return;}
        user[c].h|=(1<<s-1-48),user[c].gold-=cost[s-48];
        cout<<"购买成功!"<<endl;
        Sleep(500);
    }
    if (x==‘U‘){
        cout<<endl<<"请输入技能编号购买技能"<<endl;
        cout<<"1 箭雨 花费0金币"<<endl;
        cout<<"2 生命法阵 花费600金币" <<endl;
        cout<<"3 法术传送 花费800金币"<<endl;
        cout<<"4 突刺 花费600金币"<<endl;
        cout<<"5 时空跃迁 花费1000金币"<<endl;
        int cost[105]={0,0,600,800,600,1000};
        char s=getch();
        if (s<‘1‘||s>‘5‘){cout<<"操作失败!"<<endl;Sleep(500);return;}
        if ((user[c].u&(1<<s-1-48))||(user[c].gold<cost[s-48])){cout<<"操作失败!"<<endl;Sleep(500);return;}
        user[c].u|=1<<(s-1-48),user[c].gold-=cost[s-48];
        cout<<"购买成功!"<<endl;
        Sleep(500);
    }
    return;
}
//神之商城
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//神域战争
struct warmap{
    int a,b,hp;
}mp[30][30];
int ccc[30][30];
void warout(int xx,int yy){
    system("cls");
    for (int i=1;i<=n;i++){
        for (int j=1;j<=n;j++){
            if (ccc[i][j]){
                cout<<‘@‘;
            }
            else{
                if (mp[i][j].b){
                    cout<<mp[i][j].hp;
                }
                else if(i!=xx||j!=yy)cout<<‘.‘;
                else{
                    cout<<"#";
                }
            }
        }
        cout<<endl;
    }
    Sleep(700);
    return;
}
void war(int c){
    int book[30][30];
    int cd[105]={0,10,30,5,8,10};
    for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
            mp[i][j].a=mp[i][j].b=0;
    srand((unsigned)time(NULL));
    char hc,uc;
    if (user[c].h==0||user[c].u==0){
        system("cls");
        cout<<"请先购买武器和技能"<<endl;
        Sleep(500);
        return;
    }
    system("cls");
    int sss=user[c].h;
    cout<<"请输入编号选择武器"<<endl;
    if (sss&1)cout<<"1 神之剑"<<endl;
    if (sss&2)cout<<"2 激光枪"<<endl;
    if (sss&4)cout<<"3 激光炮"<<endl;
    if (sss&8)cout<<"4 概率枪"<<endl;
    if (sss&16)cout<<"5 电之弓"<<endl;
    hc=getch();
    if (hc<‘1‘||hc>‘5‘||(!(sss&(1<<(hc-48-1))))){
        system("cls");
        cout<<"操作失败!"<<hc-48-1<<endl;
        Sleep(500);
        return;
    }
    else cout<<"选择成功!"<<endl;
    Sleep(500);
    hc-=48;
    system("cls");
    sss=user[c].u;
    cout<<"请输入编号选择技能"<<endl;
    if (sss&1)cout<<"1 箭雨"<<endl;
    if (sss&2)cout<<"2 生命法阵"<<endl;
    if (sss&4)cout<<"3 法术传送"<<endl;
    if (sss&8)cout<<"4 突刺"<<endl;
    if (sss&16)cout<<"5 时空跃迁"<<endl;
    uc=getch();
    if (uc<‘1‘||uc>‘5‘||(!(sss&(1<<(uc-1-48))))){
        system("cls");
        cout<<"操作失败!"<<endl;
        Sleep(500);
        return;
    }
    else cout<<"选择成功!"<<endl;
    uc-=48;
    Sleep(500);
    int hp=5;
    int xx=1+rand()%n;
    int yy=1+rand()%n;
    int ucd=cd[uc],gold=0;
    int cnt=0,kill=0,killl;
    int lx=xx,ly=yy,last=0;
    while(1){
        if (cnt==200){
            system("cls");
            for (int i=1;i<=n;i++){
                for (int j=1;j<=n;j++)
                    cout<<‘!‘;
                cout<<endl;
            }
            Sleep(1500);
            for (int i=1;i<=n;i++){
                for (int j=1;j<=n;j++)
                    mp[i][j].b=0;
            }
            cout<<"通关了!"<<endl;
            user[c].gold+=1000;
            cout<<"获得1000金币!"<<endl;
            Sleep(3000);
            return;
        }
        for (int i=4;i;i--)
            if (rand()%i){
                int x=1+rand()%n;
                int y=1+rand()%n;
                if (mp[x][y].b==0&&(x!=xx||y!=yy)){
                    mp[x][y].b=1;
                    mp[x][y].hp=1+rand()%9;
                }
            }
        system("cls");
        for (int i=1;i<=n;i++){
            for (int j=1;j<=n;j++)
                if (mp[i][j].b){
                    cout<<mp[i][j].hp;
                }
                else if(i!=xx||j!=yy)cout<<‘.‘;
                else{
                    cout<<"#";
                }
            cout<<endl;
        }
        Sleep(500);
        if (hp<=0){
            system("cls");
            cout<<"神失败了!"<<endl;
            cout<<"共进行"<<cnt<<"回合"<<endl;
            cout<<"共获得"<<gold<<"金币"<<endl;
            cout<<"共击杀"<<killl<<"敌人"<<endl;
            user[c].gold+=gold;
            Sleep(2000);
            return;
        }
        cout<<"当前生命值:"<<hp<<endl;
        cout<<"当前能量值:"<<kill<<endl;
        cout<<"当前回合数:"<<cnt<<endl;
        cout<<"移动请输入W或A或S或D"<<endl;
        cout<<"技能请输入U 当前CD:"<<ucd<<endl;
        cout<<"攻击请输入I或J或K或L"<<endl;
        cout<<"消耗40能量值回复生命请输入H"<<endl;
        cout<<"消耗100能量值清除所有敌人请输入C"<<endl;
        cout<<"退出游戏请输入B"<<endl;
        char cc=getch();
        if (cc==‘B‘){
            system("cls");
            cout<<"共获得"<<gold<<"金币"<<endl;
            user[c].gold+=gold;
            Sleep(500);
            return;
        }
        if (cc==‘H‘&&kill>=40){
            kill-=40;
            hp=5;
            cout<<"回复成功!"<<endl;
        }
        if (cc==‘C‘&&kill>=100){
            kill-=100;
            system("cls");
            for (int i=1;i<=n;i++){
                for (int j=1;j<=n;j++)
                    if (mp[i][j].b)cout<<mp[i][j].hp;
                    else if(i!=xx||j!=yy)cout<<‘.‘;
                    else cout<<"#";
                cout<<endl;
            }
            for (int i=1;i<=n;i++)
                for (int j=1;j<=n;j++)
                    mp[i][j].b=0;
            Sleep(500);
        }
        if (cc==‘W‘&&xx>1&&mp[xx-1][yy].b==0)xx--;
        if (cc==‘A‘&&yy>1&&mp[xx][yy-1].b==0)yy--;
        if (cc==‘S‘&&xx<n&&mp[xx+1][yy].b==0)xx++;
        if (cc==‘D‘&&yy<n&&mp[xx][yy+1].b==0)yy++;
        if (cc==‘U‘&&ucd==0&&uc==1){
            system("cls");
            for (int i=1;i<=n;i++){
                for (int j=1;j<=n;j++)
                    if (mp[i][j].b)cout<<mp[i][j].hp;
                    else if(i!=xx||j!=yy)cout<<‘.‘;
                    else cout<<"#";
                cout<<endl;
            }
            Sleep(500);
            ucd=cd[uc]+1;
            for (int i=1;i<=n;i++)
                for (int j=1;j<=n;j++){
                    if (mp[i][j].b){
                        mp[i][j].hp-=2;
                        if (mp[i][j].hp<=0)mp[i][j].b=0,gold+=rand()%3,kill++,killl++;
                    }
                }
        }
        if (cc==‘U‘&&ucd==0&&uc==2){
            hp=5;
            ucd=cd[uc]+1;
        }
        if (cc==‘U‘&&ucd==0&&uc==3){
            int nx=1+rand()%n,ny=1+rand()%n;
            while(mp[nx][ny].b)nx=1+rand()%n,ny=1+rand()%n;
            xx=nx,yy=ny;
            ucd=cd[uc]+1;
        }
        if (cc==‘U‘&&ucd==0&&uc==4){
            cout<<"请选择突刺方向,输入I或J或K或L"<<endl;
            char inc;
            inc=getch();
            if (inc!=‘I‘&&inc!=‘J‘&&inc!=‘K‘&&inc!=‘L‘){
                cout<<"操作失败!"<<endl;
                Sleep(500);
            }
            int nnx=xx,nny=yy;
            if (inc==‘I‘){
                memset(ccc,0,sizeof(ccc));
                for (int i=1;i<=3&&xx>i;i++){
                    ccc[xx-i][yy]=1;
                    if (mp[xx-i][yy].b)gold+=rand()%3,kill++,killl++;
                    mp[xx-i][yy].b=0;
                }
                xx=max(xx-3,1);
            }
            if (inc==‘J‘){
                memset(ccc,0,sizeof(ccc));
                for (int i=1;i<=3&&yy>i;i++){
                    ccc[xx][yy-i]=1;
                    if (mp[xx][yy-i].b)gold+=rand()%3,kill++,killl++;
                    mp[xx][yy-i].b=0;
                }
                yy=max(yy-3,1);
            }
            if (inc==‘K‘){
                memset(ccc,0,sizeof(ccc));
                for (int i=1;i<=3&&xx+i<=n;i++){
                    ccc[xx+i][yy]=1;
                    if (mp[xx+i][yy].b)gold+=rand()%3,kill++,killl++;
                    mp[xx+i][yy].b=0;
                }
                xx=min(xx+3,n);
            }
            if (inc==‘L‘){
                memset(ccc,0,sizeof(ccc));
                for (int i=1;i<=3&&yy+i<=n;i++){
                    ccc[xx][yy+i]=1;
                    if (mp[xx][yy+i].b)gold+=rand()%3,kill++,killl++;
                    mp[xx][yy+i].b=0;
                }
                yy=min(yy+3,n);
            }
            ccc[nnx][nny]=1;
            warout(nnx,nny);
            ucd=cd[uc]+1;
        }
        if (cc==‘U‘&&ucd==0&&uc==5){
            cout<<"请选择移动方向,输入I或J或K或L"<<endl;
            char inc;
            inc=getch();
            if (inc==‘I‘)xx=1;
            if (inc==‘J‘)yy=1;
            if (inc==‘K‘)xx=n;
            if (inc==‘L‘)yy=n;
            ucd=cd[uc]+1;
            mp[xx][yy].b=0;
        }
        if (cc==‘I‘||cc==‘J‘||cc==‘K‘||cc==‘L‘){
            memset(ccc,0,sizeof(ccc));
            if (hc==1&&cc==‘I‘){
                if (xx>1)ccc[xx-1][yy]=1;
                if (xx>2)ccc[xx-2][yy]=1;
                warout(xx,yy);
                if (xx>1&&mp[xx-1][yy].b){
                    if (!mp[xx-1][yy].b)continue;
                    mp[xx-1][yy].hp-=8;
                    if (mp[xx-1][yy].hp<=0)gold+=rand()%3,kill++,killl++,mp[xx-1][yy].b=0;
                }
                if (xx>2&&mp[xx-2][yy].b){
                    if (!mp[xx-2][yy].b)continue;
                    mp[xx-2][yy].hp-=8;
                    if (mp[xx-2][yy].hp<=0)gold+=rand()%3,kill++,killl++,mp[xx-2][yy].b=0;
                }
            }
            if (hc==1&&cc==‘J‘){
                if (yy>1)ccc[xx][yy-1]=1;
                if (yy>2)ccc[xx][yy-2]=1;
                warout(xx,yy);
                if (yy>1&&mp[xx][yy-1].b){
                    if (mp[xx][yy-1].b)mp[xx][yy-1].hp-=8;
                    if (mp[xx][yy-1].b&&mp[xx][yy-1].hp<=0)gold+=rand()%3,kill++,killl++,mp[xx][yy-1].b=0;
                }
                if (yy>2&&mp[xx][yy-2].b){
                    if (mp[xx][yy-2].b)mp[xx][yy-2].hp-=8;
                    if (mp[xx][yy-2].hp<=0&&mp[xx][yy-2].b)gold+=rand()%3,kill++,killl++,mp[xx][yy-2].b=0;
                }
            }
            if (hc==1&&cc==‘K‘){
                if (xx+1<=n)ccc[xx+1][yy]=1;
                if (xx+2<=n)ccc[xx+2][yy]=1;
                warout(xx,yy);
                if (xx+1<=n&&mp[xx+1][yy].b){
                    if (mp[xx+1][yy].b)mp[xx+1][yy].hp-=8;
                    if (mp[xx+1][yy].hp<=0&&mp[xx+1][yy].b)gold+=rand()%3,kill++,killl++,mp[xx+1][yy].b=0;
                }
                if (xx+2<=n&&mp[xx+2][yy].b){
                    if (mp[xx+2][yy].b)mp[xx+2][yy].hp-=8;
                    if (mp[xx+2][yy].hp<=0&&mp[xx+2][yy].b)gold+=rand()%3,kill++,killl++,mp[xx+2][yy].b=0;
                }
            }
            if (hc==1&&cc==‘L‘){
                if (yy+1<=n)ccc[xx][yy+1]=1;
                if (yy+2<=n)ccc[xx][yy+2]=1;
                warout(xx,yy);
                if (yy+1<=n&&mp[xx][yy+1].b){
                    if (mp[xx][yy+1].b)mp[xx][yy+1].hp-=8;
                    if (mp[xx][yy+1].hp<=0&&mp[xx][yy+1].b)gold+=rand()%3,kill++,killl++,mp[xx][yy+1].b=0;
                }
                if (yy+2<=n&&mp[xx][yy+2].b){
                    if (mp[xx][yy+2].b)mp[xx][yy+2].hp-=8;
                    if (mp[xx][yy+2].hp<=0&&mp[xx][yy+2].b)gold+=rand()%3,kill++,killl++,mp[xx][yy+2].b=0;
                }
            }
            if (hc==2&&cc==‘I‘){
                for (int i=xx-1;i;i--)ccc[i][yy]=1;
                warout(xx,yy);
                for (int i=xx-1;i;i--){
                    if (!mp[i][yy].b)continue;
                    mp[i][yy].hp-=3+rand()%3;
                    if (mp[i][yy].hp<=0)gold+=rand()%3,kill++,killl++,mp[i][yy].b=0;
                }
            }
            if (hc==2&&cc==‘J‘){
                for (int i=yy-1;i;i--)ccc[xx][i]=1;
                warout(xx,yy);
                for (int i=yy-1;i;i--){
                    if (!mp[xx][i].b)continue;
                    mp[xx][i].hp-=3+rand()%3;
                    if (mp[xx][i].hp<=0)gold+=rand()%3,kill++,killl++,mp[xx][i].b=0;
                }
            }
            if (hc==2&&cc==‘K‘){
                for (int i=xx+1;i<=n;i++)ccc[i][yy]=1;
                warout(xx,yy);
                for (int i=xx+1;i<=n;i++){
                    if (!mp[i][yy].b)continue;
                    mp[i][yy].hp-=3+rand()%3;
                    if (mp[i][yy].hp<=0)gold+=rand()%3,kill++,killl++,mp[i][yy].b=0;
                }
            }
            if (hc==2&&cc==‘L‘){
                for (int i=yy+1;i<=n;i++)ccc[xx][i]=1;
                warout(xx,yy);
                for (int i=yy+1;i<=n;i++){
                    if (!mp[xx][i].b)continue;
                    mp[xx][i].hp-=3+rand()%3;
                    if (mp[xx][i].hp<=0)gold+=rand()%3,kill++,killl++,mp[xx][i].b=0;
                }
            }
            if (hc==3&&cc==‘I‘){
                for (int i=xx-1;i;i--){
                    ccc[i][yy-1]=1;
                    ccc[i][yy]=1;
                    ccc[i][yy+1]=1;
                }
                warout(xx,yy);
                for (int i=xx-1;i;i--){
                    if (mp[i][yy].b){
                        mp[i][yy].hp-=2+rand()%2;
                        if (mp[i][yy].hp<=0)gold+=rand()%3,kill++,killl++,mp[i][yy].b=0;
                    }
                    if (mp[i][yy-1].b){
                        mp[i][yy-1].hp-=2+rand()%2;
                        if (mp[i][yy-1].hp<=0)gold+=rand()%3,kill++,killl++,mp[i][yy-1].b=0;
                    }
                    if (mp[i][yy+1].b){
                        mp[i][yy+1].hp-=2+rand()%2;
                        if (mp[i][yy+1].hp<=0)gold+=rand()%3,kill++,killl++,mp[i][yy+1].b=0;
                    }
                }
            }
            if (hc==3&&cc==‘J‘){
                for (int i=yy-1;i;i--){
                    ccc[xx][i]=1;
                    ccc[xx-1][i]=1;
                    ccc[xx+1][i]=1;
                }
                warout(xx,yy);
                for (int i=yy-1;i;i--){
                    if (mp[xx][i].b){
                        mp[xx][i].hp-=2+rand()%2;
                        if (mp[xx][i].hp<=0)gold+=rand()%3,kill++,killl++,mp[xx][i].b=0;
                    }
                    if (mp[xx-1][i].b){
                        mp[xx-1][i].hp-=2+rand()%2;
                        if (mp[xx-1][i].hp<=0)gold+=rand()%3,kill++,killl++,mp[xx-1][i].b=0;
                    }
                    if (mp[xx+1][i].b){
                        mp[xx+1][i].hp-=2+rand()%2;
                        if (mp[xx+1][i].hp<=0)gold+=rand()%3,kill++,killl++,mp[xx+1][i].b=0;
                    }
                }
            }
            if (hc==3&&cc==‘K‘){
                for (int i=xx+1;i<=n;i++){
                    ccc[i][yy-1]=1;
                    ccc[i][yy]=1;
                    ccc[i][yy+1]=1;
                }
                warout(xx,yy);
                for (int i=xx+1;i<=n;i++){
                    if (mp[i][yy].b){
                        mp[i][yy].hp-=2+rand()%2;
                        if (mp[i][yy].hp<=0)gold+=rand()%3,kill++,killl++,mp[i][yy].b=0;
                    }
                    if (mp[i][yy-1].b){
                        mp[i][yy-1].hp-=2+rand()%2;
                        if (mp[i][yy-1].hp<=0)gold+=rand()%3,kill++,killl++,mp[i][yy-1].b=0;
                    }
                    if (mp[i][yy+1].b){
                        mp[i][yy+1].hp-=2+rand()%2;
                        if (mp[i][yy+1].hp<=0)gold+=rand()%3,kill++,killl++,mp[i][yy+1].b=0;
                    }
                }
            }
            if (hc==3&&cc==‘L‘){
                for (int i=yy+1;i<=n;i++){
                    ccc[xx-1][i]=1;
                    ccc[xx][i]=1;
                    ccc[xx+1][i]=1;
                }
                warout(xx,yy);
                for (int i=yy+1;i<=n;i++){
                    if (mp[xx][i].b){
                        mp[xx][i].hp-=2+rand()%2;
                        if (mp[xx][i].hp<=0)gold+=rand()%3,kill++,killl++,mp[xx][i].b=0;
                    }
                    if (mp[xx-1][i].b){
                        mp[xx-1][i].hp-=2+rand()%2;
                        if (mp[xx-1][i].hp<=0)gold+=rand()%3,kill++,killl++,mp[xx-1][i].b=0;
                    }
                    if (mp[xx+1][i].b){
                        mp[xx+1][i].hp-=2+rand()%2;
                        if (mp[xx+1][i].hp<=0)gold+=rand()%3,kill++,killl++,mp[xx+1][i].b=0;
                    }
                }
            }
            if (hc==4&&cc==‘I‘){
                for (int i=xx-1;i;i--)ccc[i][yy]=1;
                warout(xx,yy);
                for (int i=xx-1;i;i--){
                    if (!mp[i][yy].b)continue;
                    int r=rand()%3;
                    mp[i][yy].hp-=mp[i][yy].hp*r;
                    if (mp[i][yy].hp<=0)gold+=rand()%3,kill++,killl++,mp[i][yy].b=0;
                }
            }
            if (hc==4&&cc==‘J‘){
                for (int i=yy-1;i;i--)ccc[xx][i]=1;
                warout(xx,yy);
                for (int i=yy-1;i;i--){
                    if (!mp[xx][i].b)continue;
                    int r=rand()%3;
                    mp[xx][i].hp-=mp[xx][i].hp*r;
                    if (mp[xx][i].hp<=0)gold+=rand()%3,kill++,killl++,mp[xx][i].b=0;
                }
            }
            if (hc==4&&cc==‘K‘){
                for (int i=xx+1;i<=n;i++)ccc[i][yy]=1;
                warout(xx,yy);
                for (int i=xx+1;i<=n;i++){
                    if (!mp[i][yy].b)continue;
                    int r=rand()%3;
                    mp[i][yy].hp-=mp[i][yy].hp*r;
                    if (mp[i][yy].hp<=0)gold+=rand()%3,kill++,killl++,mp[i][yy].b=0;
                }
            }
            if (hc==4&&cc==‘L‘){
                for (int i=yy+1;i<=n;i++)ccc[xx][i]=1;
                warout(xx,yy);
                for (int i=yy+1;i<=n;i++){
                    if (!mp[xx][i].b)continue;
                    int r=rand()%3;
                    mp[xx][i].hp-=mp[xx][i].hp*r;
                    if (mp[xx][i].hp<=0)gold+=rand()%3,kill++,killl++,mp[xx][i].b=0;
                }
            }
            if (hc==5&&cc==‘I‘){
                int i;
                for (i=xx;i;i--)
                    if (mp[i][yy].b)break;
                mp[i][yy].hp-=5;
                if (mp[i][yy].hp<=0)gold+=rand()%3,kill++,killl++,mp[i][yy].b=0;
                if (i){
                    memset(ccc,0,sizeof(ccc));
                    ccc[i][yy]=1;
                    warout(xx,yy);
                    if (rand()%10==0){
                        memset(ccc,0,sizeof(ccc));
                        for (int i=1;i<=n;i++)
                            for (int j=1;j<=n;j++)
                                if (mp[i][j].b){
                                    mp[i][j].hp--;
                                    if (mp[i][j].hp<=0)gold+=rand()%3,kill++,killl++,mp[i][j].b=0;
                                }
                        for (int i=1;i<=n;i++)
                            for (int j=1;j<=n;j++)
                                ccc[i][j]=1;
                        warout(xx,yy);
                    }
                }
            }
            if (hc==5&&cc==‘J‘){
                int i;
                for (i=yy;i;i--)
                    if (mp[xx][i].b)break;
                mp[xx][i].hp-=5;
                if (mp[xx][i].hp<=0)gold+=rand()%3,kill++,killl++,mp[xx][i].b=0;
                if (i){
                    memset(ccc,0,sizeof(ccc));
                    ccc[xx][i]=1;
                    warout(xx,yy);
                    if (rand()%10==0){
                        memset(ccc,0,sizeof(ccc));
                        for (int i=1;i<=n;i++)
                            for (int j=1;j<=n;j++)
                                if (mp[i][j].b){
                                    mp[i][j].hp--;
                                    if (mp[i][j].hp<=0)gold+=rand()%3,kill++,killl++,mp[i][j].b=0;
                                }
                        for (int i=1;i<=n;i++)
                            for (int j=1;j<=n;j++)
                                ccc[i][j]=1;
                        warout(xx,yy);
                    }
                }
            }
            if (hc==5&&cc==‘K‘){
                int i;
                for (i=xx;i<=n;i++)
                    if (mp[i][yy].b)break;
                mp[i][yy].hp-=5;
                if (mp[i][yy].hp<=0)gold+=rand()%3,kill++,killl++,mp[i][yy].b=0;
                if (i<=n){
                    memset(ccc,0,sizeof(ccc));
                    ccc[i][yy]=1;
                    warout(xx,yy);
                    if (rand()%10==0){
                        memset(ccc,0,sizeof(ccc));
                        for (int i=1;i<=n;i++)
                            for (int j=1;j<=n;j++)
                                if (mp[i][j].b){
                                    mp[i][j].hp--;
                                    if (mp[i][j].hp<=0)gold+=rand()%3,kill++,killl++,mp[i][j].b=0;
                                }
                        for (int i=1;i<=n;i++)
                            for (int j=1;j<=n;j++)
                                ccc[i][j]=1;
                        warout(xx,yy);
                    }
                }
            }
            if (hc==5&&cc==‘L‘){
                int i;
                for (i=yy;i<=n;i++)
                    if (mp[xx][i].b)break;
                mp[xx][i].hp-=5;
                if (mp[xx][i].hp<=0)gold+=rand()%3,kill++,killl++,mp[xx][i].b=0;
                if (i<=n){
                    memset(ccc,0,sizeof(ccc));
                    ccc[xx][i]=1;
                    warout(xx,yy);
                    if (rand()%10==0){
                        memset(ccc,0,sizeof(ccc));
                        for (int i=1;i<=n;i++)
                            for (int j=1;j<=n;j++)
                                if (mp[i][j].b){
                                    mp[i][j].hp--;
                                    if (mp[i][j].hp<=0)gold+=rand()%3,kill++,killl++,mp[i][j].b=0;
                                }
                        for (int i=1;i<=n;i++)
                            for (int j=1;j<=n;j++)
                                ccc[i][j]=1;
                        warout(xx,yy);
                    }
                }
            }
        }
        memset(book,0,sizeof(book));
        for (int i=1;i<=n;i++)
            for (int j=1;j<=n;j++){
                if (book[i][j])continue;
                if (!mp[i][j].b)continue;
                int movex[4]={1,0,0,-1};
                int movey[4]={0,1,-1,0};
                int s=rand()%4;
                int mmm=rand()%4;
                int nx,ny;
                if (!mmm)nx=i+movex[s],ny=j+movey[s];
                else{
                    nx=i,ny=j;
                    int mmmm=rand()%2;
                    if (nx==xx)mmmm=1;
                    if (nx==yy)mmmm=0;
                    if (mmmm==0){
                        if (nx<xx)nx++;
                        if (nx>xx)nx--;
                    }
                    if (mmmm==1){
                        if (ny<yy)ny++;
                        if (ny>yy)ny--;
                    }
                }
                if (nx<1||ny<1||nx>n||ny>n)continue;
                book[nx][ny]=1;
                if (nx==xx&&ny==yy){
                    hp-=2;
                    mp[i][j].b=0;
                    system("cls");
                    for (int i=1;i<=n;i++){
                        for (int j=1;j<=n;j++)
                            if (mp[i][j].b)cout<<mp[i][j].hp;
                            else if(i!=xx||j!=yy)cout<<‘.‘;
                            else cout<<"!";
                        cout<<endl;
                    }
                    Sleep(500);
                    continue;
                }
                if (!mp[nx][ny].b){
                    mp[i][j].b=0;
                    mp[nx][ny].b=1;
                    mp[nx][ny].hp=mp[i][j].hp;
                }
            }
        if (xx==lx&&yy==ly)last++;
        else last=0,lx=xx,ly=yy;
        if (last>=5){
            system("cls");
                for (int i=1;i<=n;i++){
                    for (int j=1;j<=n;j++)
                        if (mp[i][j].b)cout<<mp[i][j].hp;
                        else if(i!=xx||j!=yy)cout<<‘.‘;
                        else cout<<"!";
                    cout<<endl;
                }
            Sleep(500);
            hp--;
        }
        ucd--;
        ucd=max(ucd,0);
        cnt++;
    }
    return;
}
//神域战争
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void game2(){
    char x;
    while(x!=‘B‘&&x!=‘b‘){
        cout<<"退出并保存游戏请输入:B"<<endl;
        cout<<"打开神之商城请输入:S"<<endl;
        cout<<"进入神域战争请输入:W"<<endl;
        x=getch();
        if (x==‘S‘||x==‘s‘)shop(nowuser);
        if (x==‘W‘||x==‘w‘)war(nowuser);
        system("cls");
    }
    return;
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//注册 登录
char rere[105];
bool issame(string x){
    for (int i=1;i<x.size();i++)
        if (rere[i]!=x[i])return 0;
    return 1;
}
bool charsame(char a[105],char b[105],int blen){
    for (int i=0;i<blen;i++)if (a[i]!=b[i])return 0;
    return 1;
}
int canfind(int len){
    int ansi=0;
    for (int i=1;i<=usertot;i++)
        if (charsame(rere,user[i].name,user[i].namelen)&&len==user[i].namelen)ansi=i;
    return ansi;
}
bool login_register(){
    char k=getch();
    while(k!=‘1‘&&k!=‘2‘){
        system("cls");
        cout<<"抱歉,请您再试一次"<<endl;
        cout<<"登陆请按1"<<‘ ‘<<"用户名"<<‘ ‘<<"密码"<<endl;
        cout<<"注册请按2"<<‘ ‘<<"用户名"<<‘ ‘<<"密码"<<endl;
        k=getch();
    }
    system("cls");
    if (k==‘1‘){
        if (usertot==0){cout<<"ERROR"<<endl;return 0;}
        cout<<"请输入用户名:"<<endl;
        int len;
        scanf("%s",rere);
        len=strlen(rere);
        system("cls");
        while(!canfind(len)){
            cout<<"抱歉,未找到用户名"<<endl;
            cout<<"请重新输入"<<endl;
            scanf("%s",rere);
            len=strlen(rere);
            system("cls");
        }
        nowuser=canfind(len);
        cout<<"请输入密码:"<<endl;
        scanf("%s",rere);
        len=strlen(rere);
        system("cls");
        while(!charsame(rere,user[nowuser].password,user[nowuser].passwordlen)||(len!=user[nowuser].passwordlen)){
            cout<<"抱歉,密码错误"<<endl;
            cout<<"请重新输入"<<endl;
            scanf("%s",rere);
            len=strlen(rere);
            system("cls");
        }
    }
    if (k==‘2‘){
        usertot++;
        nowuser=usertot;
        cout<<"请输入用户名:"<<endl;
        scanf("%s",rere);
        while(canfind(strlen(rere))){
            system("cls");
            cout<<"抱歉,用户名重复,请重新输入"<<endl;
            scanf("%s",rere);
        }
        for (int i=0;i<strlen(rere);i++)user[usertot].name[i]=rere[i];
        user[usertot].namelen=strlen(rere);
        cout<<"请输入密码:"<<endl;
        scanf("%s",user[usertot].password);
        user[usertot].passwordlen=strlen(user[usertot].password);
        user[usertot].gold=user[usertot].h=user[usertot].u=0;
    }
    return 1;
}
//注册 登录
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

int sy(){
    freopen("game.txt","r",stdin);
    cin>>usertot;
    for (int i=1;i<=usertot;i++)cin>>user[i].name>>user[i].namelen>>user[i].password>>user[i].passwordlen>>user[i].gold>>user[i].h>>user[i].u;
   // enter();
    freopen("CON", "r", stdin);
    cout<<"登陆请按1"<<endl;
    cout<<"注册请按2"<<endl;
    string name,password;
    if (!login_register())return 0;
    cout<<"欢迎,"<<user[nowuser].name<<"!"<<endl;
    Sleep(1500);
    game();
    system("cls");
    cout<<"保存中,请稍等..."<<endl;
    fileout();
    system("cls");
    return 0;
}
struct Users{
	string key;
	string name;
	Users(string key="",string name=""):key(key),name(name) {}
};
queue <Users> name;
string getint2(string *index){
	char c;
	string a;
	while((c=getch())!=13){
		cout << "*";
		a.push_back(c);
	}
	*index=a;
	return a;
}
int zc(){
	system("cls");
	cout << "用户名(最多不超过20个字符,不建议使用中文):";
	//system("pause");
	string name2;
	cin >> name2;
	cout << "密码(最多不超过20个字符,建议用上数字、大写字母、小写字母、特殊字符(%、$、#等),不建议使用中文、不支持backspace和delate):";
//	system("pause");
	string key;
	getint2(&key);
	cout << "
确认密码:";
	string key2;
//	system("pause");
	getint2(&key2);
	if(key==key2){
		cout << "注册成功!注册信息存储中......
可能会出现提示“句柄无效”,不用管他
需要再次运行登录哦~";
		freopen("data.txt","r",stdin);
		int n;
		cin >> n;
		for(int i=0;i<n;i++){
			Users a;
			cin >> a.name >> a.key;
			name.push(a);
		}
		name.push(Users(key,name2));
		n++;
		if(n==101){
			name.pop();
			n--;
		}
		fclose(stdin);
		freopen("data.txt","w",stdout);
		cout << n << "
";
		for(int i=0;i<n;i++){
			cout << name.front().name << " " << name.front().key << "
";
			name.pop();
		}
		fclose(stdout);
		return 0;
	}
	else{
		cout << "
密码不相同  :(  请重新注册~";
		cout << "
密码1:" << key << " 密码2" << key2;
		Sleep(900);
		zc();
		return 0;
	}
}
int dl(){
	system("cls");
	cout << "用户名:
";
//	system("pause");
	string name2;
	cin >> name2;
	string key2;
	cout << "密码:
";
//	system("pause");
	getint2(&key2);
	cout << "
";
	freopen("data.txt","r",stdin);
	int n;
	cin >> n;
	string key;
	char name3[20];
	int i;
	for(i=0;i<n;i++){
		cin >> name3 >> key;
		if(name3==name2){
			i--;
			break;
		}
	}
	fclose(stdin);
	if(i==n-1){
		cout << "用户名不存在,可能因为电脑内存不够,自动清理一些注册信息,(电脑最多容纳100条注册信息)敬请谅解。

 1.重新登录   2.重新注册";
		//system("pause");
		int number;
		number = getch();
		while(number>2){
			cout << "输入错误!!!重新输入!!!
";
		//	system("pause");
			number=getch();
		}
		if(number==1){
			dl();
			return 0;
		}
		else{
			zc();
			return 0;
		}
	}
	if(key2==key){
		cout << "登陆成功!~";
		Sleep(100);
		UsersName=name3;
		return 0;
	}
	else{
		cout << "密码错误!重新登录!!";
		Sleep(100);
		dl();
		return 0;
	}
}
void enter(){
	print("







                               ",0);
	print("GC Server1.0",100);
	print("
                                         ",0);
	print("——by eason66");
	Sleep(1000);
	system("cls");
	Sleep(10);
	print("





                                  ",0);
	print("感谢vijos开发的游戏");
	print("
                               ",0);
	print("按v或V打开vijos,按其他键继续
");
	char c=getch();
	if(c==‘v‘||c==‘V‘){
		system("start https://vijos.org/discuss/游戏");
		print("                                ",0);
		system("pause");
	}
	system("cls");
}
#undef n
int main(){
	enter();
	cout << "要做什么?
 1.登陆   2.注册   3.退出
";
	//system("pause");
	int number;
	cin >> number;
	while(number>3){
		cout << "输入错误 :( 重新输入";
		cin >> number;
	}
//	cout << "登陆或注册前先把游戏信息写在data.txt后(1.传奇  2.石头剪刀布   3.猜数     4.贪吃蛇   5.迷宫  0.退出)";
	if(number==3){
		return 0;
	}
	if(number==1){
		dl();
	}
	else{
		zc();
		return 0;
	}
	system("cls");
	cout << UsersName << "欢迎你!";
	while(number!=0){
	cout << "选择哪一款游戏?
  1.猜数  2.石头剪刀布   3.传奇     4.贪吃蛇   5.迷宫  6.神域 0.退出
";
	//system("pause");";
	number=getint4();
	while(number>6){
		cout << "输入错误 :( 请重新输入
";
		number=getint();
	}
	switch(number){
		case 0:break;
		case 2:system("cls");ctjdb();break;
		case 1:system("cls");if(MessageBox(NULL,"该游戏做了更新,使用最新的3.2版本?(测试版)","管理员",MB_YESNO|MB_SYSTEMMODAL)==IDYES){
			MessageBox(NULL,"测试版有误,无法继续!","Error!",MB_OK);
			break;
		}
		else{
			cq3_1();
		}break;
		case 3:system("cls");cs();break;
		case 4:system("cls");system("snake");break;
		case 6:if(MessageBox(NULL,"该游戏也有登录系统,暂不能与本游戏登陆系统兼容,确定继续吗?","管理员",MB_YESNO|MB_SYSTEMMODAL)==IDYES){
			system("cls");
			MessageBox(NULL,"该游戏无法正常工作!","Error!",MB_OK);
			break;
		}system("cls");break;
		default:system("cls");mg();break;
	}
	}
	cout << "下次再来哦 ^_^";
	Sleep(1000);
	return 0;
}

  

互动环节:求各位大佬给我施舍一点改进建议吧,若有详细方案,甚是感谢??。(注意事项:代码随时会改进,有改进建议或问题点请尽快回复,以免被我抢先,谢谢大佬配合)

以上是关于游戏终端服务器分享(1.1版)的主要内容,如果未能解决你的问题,请参考以下文章

学习python:实例3.终端版拼图游戏

分享《Python 游戏编程快速上手(第3版)》高清中文版PDF+高清英文版PDF+源代码

分享《Python游戏编程快速上手(第3版)》+PDF+源码+Al Sweigart+李 强

分享《Python 游戏编程快速上手(第3版)》高清中文版PDF+高清英文版PDF+源代码

使用Python写俄罗斯方块,以游戏的方式学习编程

使用Python写俄罗斯方块,以游戏的方式学习编程