我自己做的
玩到崩溃
还有一个乡村没做完
有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();
}