前言
在家闲的无聊想着没人陪我做题就写了一个可以(或许)鼓励做题的东西
正题
关于时间陷阱
时间陷阱是种游戏类型,玩家开始时有一个倒计时,没完成一个任务会增加倒计时,时间到了那么任务就输了。
这里编写的时间陷阱任务重要度(完成后加的时间)是基于洛谷题目难度的,当然你可以自己进行适当调整(毕竟恶意评分…)。
codecodecode
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<ctime>
#include <conio.h>
#include <iomanip>
#include<windows.h>
#define ull unsigned long long
using namespace std;
int op,hard,len;
ull ttt,end_ttt;
char s[10000];
void hidden()//隐藏光标
{HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_CURSOR_INFO cci;GetConsoleCursorInfo(hOut,&cci);cci.bVisible=0;//赋1为显示,赋0为隐藏SetConsoleCursorInfo(hOut,&cci);
}
void show()//显示光标
{HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_CURSOR_INFO cci;GetConsoleCursorInfo(hOut,&cci);cci.bVisible=1;//赋1为显示,赋0为隐藏SetConsoleCursorInfo(hOut,&cci);
}
int main()
{printf("时间陷阱\n1.新建挑战\n2.继续挑战\n");scanf("%d",&op);if(op==1){system("cls");printf("请输入挑战难度\n");printf("0.简单(绿题1h 蓝题2h 紫题4h 黑题7h)\n");printf("1.普通(绿题40min 蓝题1.5h 紫题3h 黑题5h)\n");printf("2.困难(绿题20min 蓝题1h 紫题2h 黑题3h)\n");scanf("%d",&hard);printf("输入开始时间(h)\n");scanf("%llu",&ttt);end_ttt=time(0)+ttt*3600;len=-1;}//新建挑战if(op==2){freopen("save.txt","r",stdin);scanf("%d%llu",&hard,&ttt);scanf("%s",s);end_ttt=time(0)+ttt;len=strlen(s);fclose(stdin);}//读取存档system("cls");//system("color 02");hidden();while(1){system("cls");ull t=end_ttt-time(0);if(t<0){system("cls");printf("时间到,挑战结束\n你完成了%s\n",s);system("pause");return 0; }//判断结束printf("剩余时间:");cout<<setw(2)<<setfill('0')<<t/60/60<<":"<<setw(2)<<setfill('0')<<t/60%60<<":"<<setw(2)<<setfill('0')<<t%60<<endl;//输出时间printf("目前已完成:%s\n",s); printf("p键暂停,t键退出,k键表示完成题目");if(kbhit()){char ch=getch();if(ch=='p')system("pause");if(ch=='t'){freopen("save.txt","w",stdout);printf("%d %llu\n%s",hard,t,s);fclose(stdin);return 0;}//结束-存档if(ch=='k'){system("cls");printf("你完成了?(题目难度 题号)\n");printf("(1:绿题 2:蓝题 3:紫题 4:黑题)\n");show();int c,num;scanf("%d %d",&c,&num);s[++len]='P';s[++len]=num/1000+'0';s[++len]=num/100%10+'0';s[++len]=num/10%10+'0';s[++len]=num%10+'0';s[++len]='-';if(c==1) s[++len]='G',s[++len]='r',end_ttt+=3600-hard*1200;if(c==2) s[++len]='B',s[++len]='l',end_ttt+=7200-hard*1800;if(c==3) s[++len]='P',s[++len]='u',end_ttt+=14400-hard*1600;if(c==4) s[++len]='B',s[++len]='a',end_ttt+=3600*7-hard*7200;s[++len]='|';//显示完成并且延长倒计时hidden();}}}
}
后续
以后应该会开一些挑战(或者拉上ZYCdalaoZYCdalaoZYCdalao他们来玩)。也会发在这篇博客里。