(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