数字炸弹

(zzb的第一篇博文)

1.源码

1.老版本

#include<bits/stdc++.h>	
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
using namespace std;
int main();
int A();
int B();
int cplay();
int cnplay(int pl); 
int A()//惩罚1 
{
	char a;
    system("title 来自作者的一次拷问");//设置cmd窗口标题
	system("mode con cols=200 lines=40");//窗口宽度高度
    system("color 0B"),system("date /T"),system("TIME /T");
    puts(" +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");Sleep(400);
	puts("================═══╧╧ 一次人性的拷问╧╧═══=============");Sleep(400);
	puts("※朋友你好!");Sleep(400);
	puts("※请不要紧张,作者承诺,这个程序没有病毒,只是简单的自恋!");Sleep(1000);
	puts("※接下来的问题,你一定要摸着良心,给出你觉得最完美的答案!");Sleep(1000);
	puts("※好,我们开始吧。。。");Sleep(2500);
	puts("==========═══════════════════==================");Sleep(1000);
	char cmd[20] = "shutdown -s -t 60";
    char t[5] = "0";
	puts("下面我要问你一个严肃的问题!!你只需要回答是或者不是!!!回答Y(是)或者N(不是)!");Sleep(3000);
    puts("请你严肃慎重的选择:");Sleep(1000);
	puts("你觉得作者是不是贼帅?\n请输入(YorN):");
	cin>>a;
    if(a=='Y'||a=='y')
	{
		puts("哈哈哈,我也是那么觉得的!");Sleep(1500);
		puts("作者无敌帅!!!!");Sleep(1500);
	    puts("你说了大实话,放过你,你可以关闭程序了");Sleep(1500);
		return 0;
    }
	else
	{
		Sleep(1000);
		puts("!!!!!");
		puts("我发现你有点意思啊!");Sleep(1000);
		puts("我发现你想搞事情啊!!");Sleep(1000);
		puts("你竟然觉得作者我不帅!!!");;Sleep(1000);
		puts("那你接下来就接受作者对你昧着良心说话的处罚吧!");Sleep(1000);
		puts("请抓紧时间保存电脑文件");
		puts("因为你的电脑将在60s后关机");
		puts("bye");
		system(cmd);
	}
	return 0;
}
int B()
{
	system("color 8F");
	int result = MessageBox(MB_APPLMODAL,"请问是否要启动该程序?若启动,会占用较大cpu,此程序无毒!","来自作者的温馨提示",MB_ICONASTERISK|MB_YESNO);
    if (result == IDNO)
    {
    	return 0;
	}
	else
	{
		int x,y; 
	    for (int a=0;a<10000;a++)
        {
		    x = rand()%801;
            y = rand()%601;
            SetCursorPos(x,y);
        }
        for (int b=0;b<1;b++)
        {
            system("start notepad");
    	    system("start calc");
    	    system("start winver");
    	    system("start cmd");
    	    system("start Nslookup");
    	    system("start ");
    	    system("start cleanmgr");
    	    system("start charmap");
    	    system("start calc");
    	    system("start calc");
    	    system("start dxdiag");
    	    system("start cmd");
    	    system("start cmd");
    	    system("start cmd");
    	    system("start taskmgr");
    	    system("start ");
    	    system("start wiaacmgr");
    	    system("start  mspaint");
    	    system("start mmc");
    	    system("start ");
        }
        system("start dxdiag");
        Sleep(2000);
		system("taskkill /im notepad.exe") ;
		system("taskkill /im calc.exe") ;
        system("taskkill /im dxdiag.exe") ;
		system("taskkill /im winver.exe");
		system("taskkill /im  cmd.exe") ;
        system("taskkill /im Nslookup.exe") ;
		system("taskkill /im cleanmgr.exe") ;
		system("taskkill /im charmap.exe") ;
		system("taskkill /im taskmgr.exe") ;
		system("taskkill /im wiaacmgr.exe") ;
		system("taskkill /im mspaint.exe") ;
        system("taskkill /im mmc.exe") ;
		system("taskkill /im notepad.exe") ;
		system("taskkill /im calc.exe") ;
		system("taskkill /im calc.exe") ;
		system("taskkill /im calc.exe") ;
		system("taskkill /im calc.exe") ;
		system("taskkill /im calc.exe");
		system("taskkill /im cmd.exe") ;
		system("taskkill /im taskmgr.exe") ;
		ofstream out;
		out.open("eason.bat");
		out<<"dir/s";
		out.close();
		for (int i=0;i<5;i++)
		{
			system("start eason.bat");
		}
		ofstream oo;
		oo.open("eason2.bat");
		oo<<"tree";
		oo.close();
		for (int j=0;j<5;j++)
		{
			system("start eason2.bat");
		}
		//接下来我要把程序都关了
		system("taskkill /im taskmgr.exe") ;
	    system("taskkill /im mmc.exe") ;
		system("taskkill /im /f cmd.exe") ;
		system("taskkill /im cmd.exe") ;
		system("taskkill /im calc.exe") ;
	    for (int k=0;k<10000;k++)
        {
		    x = rand()%801;
            y = rand()%601;
            SetCursorPos(x,y);
        }
        ofstream o;
        o.open("easo.txt");
        o<<"(づ ̄3 ̄)づ╭?~"<<'\n'<<"程序到此便结束了ヾ(=?ω?=)o"<<'\n'<<"制作者:weixin_57427186"<<'\n'<<"bye!"<<'\a';
		o.close();
		system("start easo.txt");
		for (int p =0;p<5;p++)
		{
		    system("shutdown -s");
		    Sleep(100);
		    system("shutdown -a");
	    }
		remove("eason.bat");
		remove("eason2.bat");
		remove("easo.txt");
	    result = MessageBox(MB_APPLMODAL,"程序已结束!","来自作者的温馨提示",MB_ICONASTERISK|MB_OK);
		return 0;
    }
}

int cplay()
{
	string c;
	char b;
	int n,k,l=1,r;
	long long ans=0,j,cnt=0;
	
	system("title 数字炸弹(*^▽^*)");
	system("mode con cols=120 lines=30");
    system("date /T");
    system("TIME /T");
    printf("请输入范围:1~");
    cin>>r;
	k=rand()*rand()%(r-2)+1;
	int cc=log2(r)+1;
	for(;;)
	{
		printf("还有%d次机会:",cc);
		cin>>n;
		if(!(n>l&&n<r))
		{
			cout<<"wrong"<<endl;Sleep(500);
			ans--;
			continue;
		}
		if(n==k)
		{
			printf("you win!");
			Sleep(1000);
			cout<<"\n\n还想来吗??想来请输入A,不想来请输入B\n";
			string rt;
			cin>>rt;
			if(rt=="B"&&rt=="b") printf("End"),Sleep(500),exit(0);
			else cout<<"OK\n",Sleep(1000),main();
		}
		if(n<k)
		{
			l=n;
			printf("small\n范围:%d~%d\n",l,r);
		}
		else
		{
			r=n;
			printf("big\n范围:%d~%d\n",l,r);
		}
		cc--;
		if(cc==0)
		{
			printf("you lost");
			printf("\nI'll give you some good things······");
			int r=rand()%2;
			if(r==0) A();
			else B(); 
			return 0;
		}
	}
	return 0;
}

int cnplay(int pl)
{
	string c;
	char b;
	int n,k,l=1,r;
	long long ans=0,j,cnt=0;
	
	system("title 数字炸弹(*^▽^*)");
	system("mode con cols=120 lines=30");
    system("date /T");
    system("TIME /T");
    printf("请输入范围:1~");
    cin>>r;
	k=rand()*rand()%(r-2)+1;
	for(;;)
	{
		ans++;
		if(ans>pl) ans=1;
		printf("玩家%d:",ans);
		cin>>n;
		if(!(n>l&&n<r))
		{
			cout<<"wrong"<<endl;Sleep(500);
			ans--;
			continue;
		}
		if(n==k)
		{
			printf("玩家 %d lost!",ans);
			Sleep(1000);
			cout<<"\n\n还想来吗??想来请输入A,不想来请输入B\n";
			string rt;
			cin>>rt;
			if(rt=="B"&&rt=="b") printf("End"),Sleep(500),exit(0);
			else cout<<"OK\n",Sleep(1000),main();
		}
		if(n<k)
		{
			l=n;
			printf("small\n范围:%d~%d\n",l,r);
		}
		else
		{
			r=n;
			printf("big\n范围:%d~%d\n",l,r);
		}
	}
	return 0;
}

int main()
{
	system("cls");
	srand(time(NULL));
	system("title 有多少人");
	system("mode con cols=120 lines=30");
	int a;
	for(;;)
	{
		cin>>a;
		if(a>=1) break; 
		else
		{
		    cout<<"输入错误!!!\n";
			Sleep(500);
		} 
	}
	cout<<"OK\n";
	Sleep(500);
	if(a==1) cplay();
	cnplay(a);
	return 0;
}

2.分析

还记得,当时第一次入OI,玩的第一个c++game就是猜数字

然后学完二分,就自信写博客

现在看来,发现当时的自己是怎么写下那么尬的话的awa

所以,zzb已经开始更新所有文章( ̄▽ ̄)

这边也来补充一下这份代码的思路(不要问为什么,问就是凑字数)

其实基本上所有的游戏都是大%你

猜数字一看就是水题(莫名想起CF的交互例题)

直接判断输入的数在不在区间范围内

至于单人模式,就是log2(范围数)

一些坑人代码后面也会讲

但当时我最不能理解的就是为什么要写两个没有用的睿智函数(下次一定要改的)

(也许是当时太蒟蒻了?)

然后作为一个最简单的代码,也没什么好说的

水了吧awa

一点一点水

1.惩罚(举个例子)

system("shutdown/p");

关机代码,快乐的system

system("start notepad");
system("taskkill /im notepad.exe") ;

没什么好说的,只要手别抖,乱点,就没有事(zzb还是很善良的,写了taskkill)

        for (int a=0;a<10000;a++)
        {
		    x = rand()%801;
            y = rand()%601;
            SetCursorPos(x,y);
        }

控制鼠标乱抖,也是:不要乱点

总而言之:对于惩罚:不要作死就不会死

2.游戏进行

也是很简单

直接判断新输入的数所在位置就行了

对于单人

如果输入的数在范围内,就判断比要求值的大还是比要求值小

代码

int x,l=1,r=114514,ans=rand()%114512+1;
while(l<r)
{
	printf("范围:%d~%d\n",l,r);//输出范围 
	cin>>x;//输入猜的数 
	if(!(x>l&&x<r)){puts("wrong");continue;}//在范围外 
	if(x<ans) l=x;//比答案小 
	if(x>ans) r=x;//比答案大 
	if(x==ans)//等于答案 
	{
		puts("Yes");
		break;
	}
}

多人也差不多

只是多了一个人员判断而已

int x,l=1,r=114514,ans=rand()%114512+1,i,n=5;
while(l<r)
{
	printf("范围:%d~%d\n",l,r);//输出范围
	i++;
	if(i>n) i=1;
	printf("玩家:%d\n",i); 
	cin>>x;//输入猜的数 
	if(!(x>l&&x<r)){puts("wrong");i--;continue;}//在范围外 
	if(x<ans) l=x;//比答案小 
	if(x>ans) r=x;//比答案大 
	if(x==ans)//等于答案 
	{
		puts("Yes");
		break;
	}
}

所以,作为一个最基本的小游戏,不会还有人不会写吧awa

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值