c++死亡时钟游戏

        啊,已经有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);
			}
		}
	}
	
	
 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值