啊,已经有3个月每更新了,都在上学(呃,我比较懒也是一个原因)。不久前看到了一个挺好玩的网站:死亡时钟,https://deathclock.com,可以检测出你的死亡时间(嗐,确实就是玩玩的,没啥依据,结果也不是多惊心动魄)。说实话,最近几个c++作品一起在做,一时半会都完不成,又不能迟迟不更,就做了个c++版死亡时钟,可以来玩玩。本程序仅供娱乐,切勿当真,生命易逝,务必珍惜。还有,程序中在显示出你的剩余生命时间时,长按E键可以体验剩余生命时间归零会发生什么。不说了,看代码。
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include <windows.h>
#include <ctime>
#include <vector>
#include<stdlib.h>//清屏代码所需要用到的头文件
#include<cstdlib>//随机函数所需要的头文件
#include<time.h> //随机种子设置时间不同需要的头文件
#include<cstdio>
#include<cmath>
using namespace std;
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
POINT p;
HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
HWND h=GetForegroundWindow();
CONSOLE_FONT_INFO consoleCurrentFont;
//----------移动光标----------
void gotoxy(int x, int y) {
COORD pos = {x,y};
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);// 获取标准输出设备句柄
SetConsoleCursorPosition(hOut, pos);//两个参数分别是指定哪个窗体,具体位置
}
//----------隐藏光标----------
void HideTheCursor() {
CONSOLE_CURSOR_INFO cciCursor;
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
if(GetConsoleCursorInfo(hStdOut, &cciCursor)) {
cciCursor.bVisible = FALSE;
SetConsoleCursorInfo(hStdOut, &cciCursor);
}
}
int main(){
//提示:程序中在显示出你的剩余生命时间时,长按E键可以体验剩余生命时间归零会发生什么
DrawMenuBar(GetConsoleWindow());//调用MessageBox函数句柄
DeleteMenu(GetSystemMenu(GetConsoleWindow(),FALSE),SC_CLOSE,MF_BYCOMMAND);//使程序框无法关闭
system("color 4E");
string cut1[4][4]={{"普通","悲观","残酷","乐观"},{"普通","大","小"," "},{"男","女"," "," "},{"抽烟","不抽烟"," "," "}};
int mode,BMI,yl,xb,cyf,cyear,cmon,cday,yday[12]={31,28,31,30,31,30,31,31,30,31,30,31},x,y;
char cy[100000];
float By,Bt;
MessageBox(NULL," 欢迎来到死亡时钟程序!","死亡时钟程序",MB_OK);
int tuichu = MessageBox(NULL," 如果不敢玩的话,可以按“是”退出程序,因为在程序运行的过程中我会让你无法退出。关闭本消息框将默认为继续","死亡时钟程序",MB_YESNO|MB_DEFBUTTON2);
//↑如果用户按了“是”,返回值是IDYES,会存储到整数变量tuichi里
if(tuichu==IDYES){//如果用户按了“是”,返回值是IDYES
DeleteMenu(GetSystemMenu(GetConsoleWindow(),TRUE),SC_CLOSE,MF_BYCOMMAND);//使程序框可以关闭
return 0;
}
MessageBox(NULL," 本程序仅供娱乐,无真实依据,切勿当真。生命易逝,务必珍惜","死亡时钟程序",MB_OK);
Sleep(100);
system("color FE");
Sleep(30);
system("color 4E");
cout<<" --你的死亡时钟--"<<endl;
cout<<" 输入你的信息-↓-"<<endl<<endl;
cout<<"心态:1.普通 2.悲观 3.残酷 4.乐观 输入:";
cin>>mode;
if(mode<1||mode>4){
MessageBox(NULL," 你输入的数字没有对应的选项!已确认为默认值","死亡时钟程序",MB_OK);
mode=1;
}
gotoxy(0,3);
cout<<" ";
gotoxy(0,3);
cout<<"心态:"<<cut1[0][mode-1];
gotoxy(0,5);
cout<<"BMI值:\n 身高(cm):";
cin>>By;
gotoxy(0,6);
cout<<" ";
gotoxy(0,6);
cout<<" 身高:"<<By<<"cm\n 体重(kg):";
cin>>Bt;
gotoxy(0,7);
cout<<" ";
gotoxy(0,7);
cout<<" 体重:"<<Bt<<"kg";
Sleep(500);
BMI=Bt/((By/100)*(By/100));
gotoxy(0,6);
cout<<" \n ";
gotoxy(7,5);
cout<<BMI;
gotoxy(0,7);
cout<<"压力:1.普通 2.大 3.小 输入:";
cin>>yl;
if(yl<1||yl>3){
MessageBox(NULL," 你输入的数字没有对应的选项!已确认为默认值","死亡时钟程序",MB_OK);
yl=1;
}
gotoxy(0,7);
cout<<" ";
gotoxy(0,7);
cout<<"压力:"<<cut1[1][yl-1];
gotoxy(0,9);
cout<<"性别:1.男 2.女 输入:";
cin>>xb;
if(xb<1||xb>2){
MessageBox(NULL," 你输入的数字没有对应的选项!已确认为默认值","死亡时钟程序",MB_OK);
xb=1;
}
gotoxy(0,9);
cout<<" ";
gotoxy(0,9);
cout<<"性别:"<<cut1[2][xb-1];
gotoxy(0,11);
cout<<"是否抽烟:1.抽 2.不抽 输入:";
cin>>cyf;
if(cyf<1||cyf>2){
MessageBox(NULL," 你输入的数字没有对应的选项!已确认为默认值","死亡时钟程序",MB_OK);
cyf=2;
}
gotoxy(0,11);
cout<<" ";
gotoxy(0,11);
cout<<"是否抽烟:"<<cut1[3][cyf-1];
gotoxy(0,13);
cout<<"出生日:\n 出生年份:";
cin>>cyear;
if(cyear>=2024){
MessageBox(NULL," 你输入的时间不合理!已确认为默认值","死亡时钟程序",MB_OK);
cyear=2013;
}
gotoxy(0,14);
cout<<" ";
gotoxy(0,14);
cout<<" 出生年份:"<<cyear<<"年\n 出生月份(填阿拉伯数字):";
cin>>cmon;
if(cmon>12||cmon<1){
MessageBox(NULL," 你输入的时间不合理!已确认为默认值","死亡时钟程序",MB_OK);
cmon=1;
}
gotoxy(0,15);
cout<<" ";
gotoxy(0,15);
cout<<" 出生月份:"<<cmon<<"月\n 出生于"<<cmon<<"月几日:";
cin>>cday;
if(cmon==2&&(cday>29||((cyear%4!=0||(cyear%100==0&&cyear%400!=0))&&cday>28))){
MessageBox(NULL," 你输入的时间不合理!已确认为默认值","死亡时钟程序",MB_OK);
cday=1;
}else
if(cmon==2&&cday<1){
MessageBox(NULL," 你输入的时间不合理!已确认为默认值","死亡时钟程序",MB_OK);
cday=1;
}else
if(cmon!=2&&(cday>yday[cmon-1]||cday<1)){
MessageBox(NULL," 你输入的时间不合理!已确认为默认值","死亡时钟程序",MB_OK);
cday=1;
}
gotoxy(0,16);
cout<<" ";
gotoxy(0,16);
cout<<" "<<cmon<<"月"<<cday<<"日";
Sleep(500);
gotoxy(0,13);
cout<<" \n";
cout<<" \n";
cout<<" \n";
cout<<" \n";
cout<<" ";
gotoxy(0,13);
cout<<"出生日:"<<cyear<<"年"<<cmon<<"月"<<cday<<"日";
gotoxy(0,25);
cout<<" ________________________\n";
cout<<" | |\n";
cout<<" |右键点此检测你的死亡时钟|\n";
cout<<" |________________________|\n";
bool bb=false;
while(1){
z1:
if(KEY_DOWN(VK_RBUTTON)){
POINT p;
GetCursorPos(&p);
ScreenToClient(h,&p); //获取鼠标在窗口上的位置
GetCurrentConsoleFont(hOutput, FALSE, &consoleCurrentFont); //获取字体信息
x=p.x/=consoleCurrentFont.dwFontSize.X;
y=p.y/=consoleCurrentFont.dwFontSize.Y;
bb=true;
}else
if((!(KEY_DOWN(VK_RBUTTON)))&&bb==true){
goto z2;
}
Sleep(20);
}
z2:
bb=false;
if(!(x>23&&x<50&&y>25&&y<29)){
goto z1;
}
system("cls");
gotoxy(0,14);
cout<<" 检测中";
long long sday,shour,smin,ssec;
int zyear,zmon,zday,zmon2,zday2,ran;
for(int i=0;i<3;i++){
Sleep(1000);
cout<<".";
}
system("color F4");
system("color 4E");
Sleep(100);
system("color F4");
system("color 4E");
Sleep(70);
system("color F4");
system("color 4E");
Sleep(50);
system("color F4");
system("color 4E");
Sleep(30);
system("color F4");
system("color 4E");
Sleep(10);
int ii=10;
while(ii--){
system("color F4");
system("color 4E");
Sleep(10);
}
Sleep(1000);
system("cls");
srand(time(0));
zyear=cyear+80+rand()%8 + -3;
zmon2=rand()%12+1;
if((zmon2+cmon)>12){
zmon2=zmon2+cmon-12;
zyear++;
}
zmon=cmon+zmon2;
ran=yday[zmon-1];
zday2=rand()%ran+1;
if(zday2+cday>(yday[zmon-1])){
zday2=zday2-yday[zmon-1];
}
zday=zday2+cday;
while(1){
system("cls");
cout<<"\n 你将于: "<<zyear<<"年"<<zmon<<"月"<<zday<<"日 逝世\n";
time_t nowtime;//调用时间
time(&nowtime);
tm* p = localtime(&nowtime);
sday=(zyear-(p->tm_year + 1900))*365;
if((p->tm_mon + 1)>zmon){
sday=sday-365+(12-(p->tm_mon + 1)+zmon)*30;
}else
sday+=(zmon-(p->tm_mon + 1))*30;
if((p->tm_mday)>zday){
sday=sday-30+(yday[p->tm_mon + 1]-(p->tm_mday)+zday);
}else
sday+=zday-(p->tm_mday);
shour=sday*24+(24-(p->tm_hour));
smin=60-(p->tm_min);
ssec=60-(p->tm_sec);
if(KEY_DOWN('E')){// ←长按E键可以体验剩余生命时间归零会发生什么
shour=0;
smin=0;
ssec=0;
}
cout<<" 你的生命还有:"<<shour<<"时"<<smin<<"分"<<ssec<<"秒\n";
cout<<"-----------------------------------------------------------\n";
cout<<" 逝 者 安 息";
Sleep(1000);
if(shour==0&&smin==0&&ssec==0){
MessageBox(NULL," 抱歉,你的时间到了。祝你拥有美好的一天","死亡时钟程序",MB_OK);
DeleteMenu(GetSystemMenu(GetConsoleWindow(),TRUE),SC_CLOSE,MF_BYCOMMAND);
while(1){
Sleep(10000);
}
}
}
}