玩到崩溃文字游戏

我自己做的

玩到崩溃

还有一个乡村没做完

有bug,或疑问,建议,要改进私信我

#include<bits/stdc++.h>
#include<iostream>
#include<windows.h>

#define sys system
#define Sep Sleep(1000)
#define prn printf("\n")
#define cls system("cls")
#define pause system("pause")
#define kd(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
/***制作者:CSDN wxn小学***/ 
using namespace std;
struct node
{
	int species;
	bool condition;
	bool vip;
	int liabilities;
	int deposit;
	int experience;
	string name;
}my;

/***输出***/
void prin(string s,int a,int b)
{
	for(int i=0;i<s.size();i++){
		cout<<s[i];
		Sleep(a);
	}
	Sleep(b);
	return;
}

/***存档***/ 
void cd(void)
{
    FILE* fp = fopen("玩家属性.txt","wb");
    //fprintf(fp,"%c\n",my.name);
    fprintf(fp,"%d\n",my.condition);
    fprintf(fp,"%d\n",my.vip);
    fprintf(fp,"%d\n",my.liabilities);
    fprintf(fp,"%d\n",my.deposit);
    fprintf(fp,"%d\n",my.species);
    fprintf(fp,"%d\n",my.experience);
    fclose(fp);
    return;
}

/***读档***/ 
void dd(void)
{
	FILE* fp = fopen("玩家属性.txt","rb");
    if(fp != NULL)
	{
        //fprintf(fp,"%s\n",my.name);
        fscanf(fp,"%d\n",&my.condition);
        fscanf(fp,"%d\n",&my.vip);
        fscanf(fp,"%d\n",&my.liabilities);
        fscanf(fp,"%d\n",&my.deposit);
        fscanf(fp,"%d\n",&my.species);
        fscanf(fp,"%d\n",&my.experience);
        fclose(fp);
    }
	else
	{
        printf("未找到存档\n");
        Sep; 
    }
    return;
}

/***覆盖清屏**/ 
void gotoxy_cover(int x, int y)//覆盖清屏 ,指定行列覆盖
{
	COORD pos = {x,y};
	HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleCursorPosition(hOut, pos);
	return;
}

/***影藏光标***/
void HideCursor()
{
	CONSOLE_CURSOR_INFO cursor_info = {1,0};
	SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
	return;
}

/***移动光标***/ 
void gotoxy(int x,int y)
{
    COORD pos;pos.X=y*2;
	pos.Y=x;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}

/***颜色***/ 
void yanse(int ForgC, int BackC)//SetColorAndBackground函数(颜色函数) 
{
	WORD wColor=((BackC & 0x0F)<<4)+(ForgC & 0x0F);
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
	return ;
}

/***存读档***/
void CDD()
{
	prin("0|读档\n",10,0);
	prin("1|继续\n",10,0);
	while(1)
	{
        if(kd('0')||kd(VK_NUMPAD0))
        {
        	dd();
        	cls;
			break;
		}
		if(kd('1')||kd(VK_NUMPAD1))
		{
			cls;
			Sleep(100);
			break;
		}
    }
    return;
}

/***城市***/ 
void city()
{
	cls;
	sys("title 城市");
	Sep;
	while(1)
	{
		gotoxy_cover(0,0);
		printf("1|打工\n");
		printf("2|幸运商店\n");
		printf("3|银行\n");
		printf("4|医院\n");
		printf("5|<<返回\n");
		if(kd('1')||kd(VK_NUMPAD1))
		{
			printf("输入工作时长(H),每小时 经验 金币(等待越长,金币越多)\n");
			int a;
			scanf("%d",&a);
			a*=3600000;
			printf("正在打工……");
			Sleep(a);
			prn;
			printf("\a钉钉~~~");
			a/=3600000;
			my.species+=a*my.experience;
			Sep;
			cls;
			cd();
		}
		if(kd('2')||kd(VK_NUMPAD2))
		{
			cls;
			sys("title 幸运商店");
			prin("HEIIO~~~\n",100,0);
			prin("您已来到",10,0);
			yanse(12,0);
			prin("幸运商店\n",300,0);
			yanse(15,0);
			cls;
			while(1)
			{
				gotoxy_cover(0,0);
				printf("金币:%d\n",my.species);
				printf("0|<<返回         0金币\n");
				printf("1|抽奖           1金币\n");
				printf("2|开通VIP       100金币\n");
				printf("3|经验        经验*1000金币");
            	if(kd('0')||kd(VK_NUMPAD0))
            	{
            		cls;
            		break;
			    }
            	if(kd('1')||kd(VK_NUMPAD1))
            	{
            		if(my.species!=0)
            		{
            			my.species--;
            			int a=rand()%3+1;
            			printf("您中了%d个金币!",a);
            			my.species+=a;
            			Sep;
            			cls;
            			cd();
					}
					else MessageBox(NULL,TEXT("ERR1:金币不足!"),TEXT("ERROR"),MB_ICONWARNING);
				}
				if(kd('2')||kd(VK_NUMPAD2))
				{
				    if(my.species>=100 && my.vip==false)
				    {
				    	cls;
				    	prin("已开通!",10,1000);
				    	my.vip=true;
				    	my.species-=100;
				    	cd();
				    	cls;
					}
					else if(my.vip==true)
					{
						cls;
						printf("您已是VIP!");
						Sep;
						cls;
					}
					else MessageBox(NULL,TEXT("ERR1:金币不足!"),TEXT("ERROR"),MB_ICONWARNING);
				}
				if(kd('3')||kd(VK_NUMPAD3))
				{
				    if(my.experience*1000<=my.species)
				    {
				    	my.species-=my.experience*1000;
				    	my.experience++;
				    	printf("\a钉钉~~~");
				    	Sep;
						cls;
						cd();
					}
					else MessageBox(NULL,TEXT("ERR1:金币不足!"),TEXT("ERROR"),MB_ICONWARNING);
				} 
			}
		}
		if(kd('3')||kd(VK_NUMPAD3))
		{
		cls;
			Sleep(200);
			sys("title 银行");
			while(1)
			{
			    gotoxy_cover(0,0);
			    printf("贷款:%d\n",my.liabilities);
				printf("存款:%d\n",my.deposit);
				printf("1|借钱\n"); 
				printf("2|存钱\n");
				printf("3|还钱\n");
				printf("4|取钱\n");
				printf("5|<<返回\n");
				if(kd('1')||kd(VK_NUMPAD1))
				{
					printf("借:");
					int a;
					scanf("%d",&a);
					my.species+=a;
					my.liabilities+=a;
					prn;
					printf("\a钉钉~~~");
					Sep;
					cls;
					cd();
					break;
				}
				if(kd('2')||kd(VK_NUMPAD2))
				{
					printf("存:");
					int a;
					scanf("%d",&a);
					my.species-=a;
					my.deposit+=a;
					prn;
					printf("\a钉钉~~~");
					Sep;
					cls;
					cd();
					break;
				}
				if(kd('3')||kd(VK_NUMPAD3))
				{
					printf("还:");
					int a;
					scanf("%d",&a);
					if(a<=my.species)
					{
						my.species-=a;
						my.liabilities-=a;
						prn;
						printf("\a钉钉~~~");
						Sep;
						cls;
					}
			 		else
			 		{
			 			MessageBox(NULL,TEXT("ERR1:金币不足!"),TEXT("ERROR"),MB_ICONWARNING);
						cls;	
					}
					cd();
					break;
				}
				if(kd('4')||kd(VK_NUMPAD4))
				{
					printf("取:");
					int a;
					scanf("%d",&a);
					if(a<=my.deposit)
					{
						my.species+=a;
						my.deposit-=a;
						prn;
						printf("\a钉钉~~~");
						Sep;
						cls;
					}
					else
					{
						MessageBox(NULL,TEXT("ERR1:金币不足!"),TEXT("ERROR"),MB_ICONWARNING);
						cls;
					}
					cd();
					break;
				}
				if(kd('5')||kd(VK_NUMPAD5))
				{
					cls;
					Sleep(100);
					break;
				}
			}
		}
		if(kd('4')||kd(VK_NUMPAD4))
		{
			sys("title 医院");
			while(1)
			{
				gotoxy_cover(0,0);
				printf("1|当护士          10经验");
				printf("2|当医生          100经验");
				printf("3|<<退出           0经验"); 
				if(kd('1')||kd(VK_NUMPAD1))
				{
					if(my.experience>=10)
					{
						printf("输入工作时长(M),每分钟 经验 金币(等待越长,金币越多)\n");
						int a;
						scanf("%d",&a);
						a*=60000;
						printf("正在打工……");
						Sleep(a);
						prn;
						printf("\a钉钉~~~");
						a/=60000;
						my.species+=a*my.experience;
						Sep;
						cls;
						cd();
					}
					else  MessageBox(NULL,TEXT("ERR2:经验不足!"),TEXT("ERROR"),MB_ICONWARNING);
				}
				if(kd('2')||kd(VK_NUMPAD2))
				{
					if(my.experience>=100)
					{
						printf("输入工作时长(S),每秒 经验 金币(等待越长,金币越多)\n");
						int a;
						scanf("%d",&a);
						a*=1000;
						printf("正在打工……");
						Sleep(a);
						prn;
						printf("\a钉钉~~~");
						a/=1000;
						my.species+=a*my.experience;
						Sep;
						cls;
						cd();
					}
					else  MessageBox(NULL,TEXT("ERR2:经验不足!"),TEXT("ERROR"),MB_ICONWARNING);
				}
				if(kd('3')||kd(VK_NUMPAD3))
				{
					cls;
					Sleep(100);
					break;
				} 
			}
		}
		if(kd('5')||kd(VK_NUMPAD5))
		{
			cls;
			Sleep(100);
			break;
		}
	}
}

/***游戏***/ 
void game()
{
	cls;
	sys("title 游戏");
	while(1)
	{
	    gotoxy_cover(0,0);
		printf("1|去城市!\n");
	    printf("2|去乡村!\n");
		printf("3|去冒险!\n");
		printf("4|<<返回\n");
	    if(kd('1')||kd(VK_NUMPAD1))
	    {
	    	city();
		}
		if(kd('2')||kd(VK_NUMPAD2))
	    {
	    	
		}
		if(kd('3')||kd(VK_NUMPAD3))
	    {
	    	int l;
	    	int j;
	    	bool b;
	    	while(1)
	    	{
	    		cls;
	    		printf("%d.前面有路:\n",l);
	    		prin("0|<<返回\n",5,0);
	    	    prin("1|走\n",5,0);
	    	    int a=rand()%2;
	    	    while(1)
	    	    {
	    	    	if(kd('0')||kd(VK_NUMPAD0))
	    	    	{
	    	    		b=true;
	    	    		cls;
			            break;
					}
					if(kd('1')||kd(VK_NUMPAD1))
					{
						if(a)
						{
							prin("恭喜,你对了,金币+10",10,1000);
							my.species+=10;
							cd();
							break;
						}
						else 
						{
							prin("很遗憾,你错了,金币-10",10,1000);
							my.species-=10;
							cd();
							break;
						}
					}
				}
				l++;
				if(b)break;
			}
			break;
		}
		if(kd('4')||kd(VK_NUMPAD4))
		{
			cls;
			Sleep(100);
			break;
		}
	}
	return;
}

/***界面***/ 
void MIF()
{
	sys("title 主界面");
	srand((unsigned)time(NULL));
	if(my.condition==false)
	{
		printf("您的名字:");
	    cin>>my.name; 
	    if(my.name=="wxn"||my.name=="CSDN wxn小学1236174 IP属地;BYNC")
	    {
	        my.vip=true;
	        printf("已开启VIP");
	        Sep;
        }
	    else 
	    {
		    printf("欢迎!!! 您是新手:金币+1\n");
		    my.species++;
		    Sep;
		    Sep;
	    }
	    cls;
	    my.condition=true;
	    cd();
	}
	MessageBox(NULL,TEXT("建议先看游戏详情!"),TEXT("002消息:"),MB_ICONWARNING);
	while(1)
	{
		
		gotoxy_cover(0,0);
		gotoxy(0,11);
		if(my.vip==true) 
		{
			yanse(5,0);
			printf("您是VIP用户\n");
		}
		else
		{
			printf("您好,");
			cout<<my.name;
			printf("用户\n"); 
		}
		yanse(15,0);
		gotoxy(1,10);
		printf("===============");
		gotoxy(2,10);
		printf("我的经验:%d",my.experience);
		gotoxy(3,10);
		printf("我的金币:%d",my.species);
		gotoxy(4,10);
		printf("我的贷款:%d",my.liabilities);
		gotoxy(5,10);
		printf("我的存款:%d",my.deposit);
		gotoxy(6,10);
		printf("===============");
		gotoxy(7,11);
		printf("1|开始游戏");
		gotoxy(8,11);
		printf("2|游戏详情");
		gotoxy(9,11);
		printf("3|作者的话");
		gotoxy(10,11);
		printf("4|公告");
		gotoxy(11,11);
		printf("5|设置");
		if(kd('1')||kd(VK_NUMPAD1))
		{
			Sleep(100);
			game();
		}
		if(kd('2')||kd(VK_NUMPAD2))
		{
			cls;
			sys("title 游戏详情");
			prin("开始制作日期;2024/08/04\n",10,0);
			prin("结束制作日期:2024/08/15\n",10,0);
			prin("制作人:CSDN wxn小学1236174 IP属地;BYNC\n",10,0);
			prin("可存档\n",10,0); 
			prin("版本:1.0.3\n",10,0);
			my.condition=true;
			pause;
			cls;
		}
		if(kd('3')||kd(VK_NUMPAD3))
		{
			cls;
			sys("title 作者的话");
			prin("打怪升级,幸运商店等你来!!!\n",10,0);
			prin("作者:CSDN wxn小学1236174 IP属地;BYNC\n",10,0);
			printf("1|进入作者主页\n");
			printf("2|<<返回\n");
			while(1)
			{
			    if(kd('1')||kd(VK_NUMPAD1)) sys("start https://blog.csdn.net/wxnccc");
			    if(kd('2')||kd(VK_NUMPAD2)) 
				{
					Sleep(100);
					cls;
					break;
				}
		    }
		}
		if(kd('4')||kd(VK_NUMPAD4))
		{
			cls;
			sys("title 公告");
			prin("版本1.0.0(2024.8.5-2024.8.7)\n",10,0);
			prin("没游戏。\n",10,0);
			prin("版本1.0.1(2024.8.7-2024.8.9)\n",10,0);
			prin("基本完成,只差游戏。\n",10,0);
			prin("版本1.0.2(2024.8.10-2024.8.12)\n",10,0);
			prin("冒险能玩。\n",10,0);
			prin("版本1.0.3(2024.8.13-2024.8.15)\n",10,0);
			prin("超级更新!\n",10,0);
			prin("如要转载请按下列步骤\n",10,0);
			prin("返回——>作者的话——>进入主页——>私信",10,0);
			pause;
			cls; 
		}
		if(kd('5')||kd(VK_NUMPAD6))
		{
			cls;
			printf("0|<<返回\n");
			printf("1|存档\n");
			while(1)
            {
            	if(kd('0')||kd(VK_NUMPAD0))
            	{
            		cls;
            		Sleep(100);
            		break;
				}
            	if(kd('1')||kd(VK_NUMPAD1))
            	{
            		cd();
            		prin("已存档",10,1000); 
            		cls;
            		Sep;
					break;
				}
            }
		}
	}
	return;
}

/***main 不用说***/ 
int main()
{
	HideCursor();
	my.experience=1;
	sys("mode con cols=66 lines=20");
	printf("Hello\n");
	Sep;
	printf("制作者:CSDN wxn小学\n");
	Sep;
	printf("版本:1.0.3\n");
	Sep;
	pause;
	cls;
	printf("欢迎来到本小游戏\n");
	Sep;
	cls;
	printf("正在启动……\n");
	printf("..");
	Sep;
	printf("..");
	Sep;
	printf("..");
	Sep;
	gotoxy(1,0);
	printf("      ");
	Sep;
	gotoxy(1,0);
	printf("..");
	Sep;
	printf("..");
	Sep;
	printf("..");
	Sep;
	cls;
	MessageBox(NULL,TEXT("即将转接……"),TEXT("001消息"),MB_ICONINFORMATION);
	CDD();
	MIF();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值