机器人二分猜数游戏C++

这个游戏主要就是随机后,产生一个范围内的数,然后在规定的次数中让玩家猜数,还可以设置不同困难,不同次数
那么,一个游戏就玩成了


#include<bits/stdc++.h>
#include<windows.h>
#include <conio.h>
using namespace std;
string s="二分猜数游戏\n作者:Accteped\n",nd;
int jminn=0,pminn=0,nminn=0,csc;
int pc=3;
void sc(string s){
	int sum=s.size();
	for(int i=0;i<sum;++i){
		cout<<s[i];
		Sleep(100);
	}
}
void sleep(){
	cout<<"加载中";	
	for(int i=0;i<3;++i){
		cout<<'.';Sleep(1000);
	}
}
void dd(int a){
	Sleep(a);
}
void qp(){
	system("cls");
} 
int main(){
	srand(time(0));
	sc(s); 
	cout<<"按k键开始";
	a:
	char c=_getch();
	if(c!='k')goto a;
	qp();
	sleep();
	qp();
	cout<<"程序加载完成!";
	dd(1000);
	cw:
	qp(); 
	sr:
	cout<<"请输入范围(格式:a 100<=范围<=10000)"<<endl;
	int a;
	cin>>a;
	if(a>=1000){
		pc=100;csc=8;
	}
	if(a<200&&a>=150){
		pc=5;csc=6;
	}
	if(a>200&&a<1000){
		pc=10;csc=7;
	}
	if(a>=100&&a<150){
		pc=4;csc=6;
	}
	if(a<100||a>10000){
		qp();
		cout<<"输入错误!";
		dd(1000); 
		qp();
		goto sr;
	}
	int ans=rand()%a+1,dans,cs;
	z:
	qp();
	cout<<"1.简单("<<csc<<"次)\n2.普通("<<csc-1<<"次)\n3.困难("<<csc-2<<"次)\n0.重玩\n";
	char d=_getch();
	switch(d){
		case '1':cs=csc;nd="简单";break;
		case '2':cs=csc-1;nd="普通";break;
		case '3':cs=csc-2;nd="困难";break;
		case '0':goto cw;break;
		default:cout<<"输入错误!";goto z;
	}qp();
	bool sl=0;
	while(cs>0){
		cout<<nd<<":\n开始猜数(范围1~"<<a<<",偏差"<<pc<<")\n";
		cout<<"次数剩余:"<<cs<<endl;
		cin>>dans;
		cout<<"你猜的数是:"<<dans;
		if(abs(dans-ans)<=pc||dans==ans){
			sl=1;
			break;
		}else if(dans<ans){
			cout<<"猜错了\n小了";
			dd(2000);
		}else if(dans>ans){
			cout<<"猜错了\n大了";
			dd(2000);
		}qp();cs--;
	}
	qp();
	if(sl){
		system("color 18");
		cout<<"恭喜你答对了!\n机器人猜的数是"<<dans<<"\n你的得分:"<<cs;
		if(cs>jminn&&nd=="简单"){
			jminn=cs;
		}
		if(cs>pminn&&nd=="普通"){
			pminn=cs;
		}
		if(cs>nminn&&nd=="困难"){
			nminn=cs;
		}
		if(nd=="简单")cout<<nd<<"\n最高得分:"<<jminn;
		if(nd=="普通")cout<<nd<<"\n最高得分:"<<pminn;
		if(nd=="困难")cout<<nd<<"\n最高得分:"<<nminn;
		cout<<"\n按c重玩 按0退出";
		char t=getch();
		if(t=='c'){
			system("color 0F");
			goto cw;	
		}
		if(t=='0'){
			system("color 0F");
			qp();
			cout<<"欢迎下次再来!"; 
			Sleep(2000);
			system("pause>nul");
			exit(0);
		}
	}
	cout<<"失败!机器人猜的数是:"<<ans<<"\n次数已用完!\n0.重玩\n1.退出\n"; 
	Sleep(2000);
	char b=getch();
	if(b=='0')goto cw;
	if(b=='1') {
		qp();
		cout<<"欢迎下次再来!"; 
		system("pause>nul");
		exit(0);
	}
	cout<<ans;
}

这个游戏本来可以做的很短,但我加了很多别的内容

所以有很多行

### 如何用C++编写游戏 #### 游戏逻辑概述 该游戏的核心在于让计算机随机生成一个介于1到100之间的整,玩家有五次机会去测这个值。每次输入后,程序会告知用户所猜数字是太大还是太小,直至找到正确答案或耗尽所有尝试次。 #### 完整代码示例 下面是一个完整的C++实现版本: ```cpp #include <iostream> #include <cstdlib> // For rand() and srand() #include <ctime> // For time() using namespace std; int main(){ int secretNumber, guess; bool hasWon = false; // 初始化随机种子并设置秘密号码 srand(static_cast<unsigned>(time(0))); secretNumber = (rand() % 100) + 1; cout << "欢迎来到猜数字游戏!" << endl; cout << "已经为您准备了一个1至100间的神秘字..." << endl; cout << "您总共有5次机会来找出它." << endl; for(int i=1;i<=5 && !hasWon;++i){ cout << "\n第" << i << "/5轮:" ; while(true){ // 输入验证循环 cin >> guess; if(!cin || guess<1||guess>100){ cin.clear(); // 清除错误状态标志 cin.ignore(numeric_limits<streamsize>::max(), '\n'); // 跳过非法输入 cout << "请输入有效的1-100范围内的整。\n"; }else{ break; } } if(guess==secretNumber){ cout << "恭喜你赢了! 正确的字就是:" << secretNumber << "." << endl; hasWon=true; } else { if(i!=5){ cout << ((guess<secretNumber)? "更大一点":"更小一点") << ",再试一次吧!\n"; } else { cout << "很遗憾,您的机会已用完... 正解应该是: " << secretNumber << ".\n"; } } } return 0; } ``` 此段代码实现了上述描述的功能,并加入了基本的据校验机制以防止非预期输入影响正常流程[^1]。 #### 关键知识点解释 - `srand()` 函用于初始化随机序列;`time(NULL)` 提供当前时间作为种子值。 - 使用 `%` 运算符限制产生的随机位于指定范围内。 - 利用了标准库中的流操作函来进行简单的异常处理,确保即使遇到不合法据也能保持良好交互体验。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值