• C++
  • 逆转裁判太没有技术含量了 所以我写了一个猜数字

  • @ 2024-8-25 18:42:06
#include<iostream>
#include<cstdlib>
#include<ctime>
#include<limits>
#include<fstream>
#include<cmath>

using namespace std;

int best[4];

void clear(){
	
	cin.clear();
	cin.ignore(numeric_limits<streamsize>::max(),'\n');
	
	return;
}

const char* red(){
	
	return "\033[1;31m";
}

const char* green(){
	
	return "\033[1;32m";
}

const char* blue(){
	
	return "\033[1;34m";
}

const char* purple(){
	
	return "\033[1;35m";
}

const char* cyan(){
	
	return "\033[1;36m";
}

const char* yellow(){
	
	return "\033[33m";
}

const char* black(){
	
	return "\033[1;30m";
}

int main()
{
	
	ifstream is(".//game_record.txt");
	
	if(is.good() == true){
		
		is >> best[0] >> best[1] >> best[2] >> best[3];
	}

	cout << red() << "猜 " << green() << "数 " << blue() << "字" << endl << endl;

	while(true) {
		
		int sum = 1;

		cout << purple() << "请选择难度:" << endl << cyan() << "1.简单(数字范围为0 ~ 100)" << endl << yellow() << "2.中等(数字范围为0 ~ 10000)" << endl << red() << "3.困难(数字范围为0 ~ 1000000)" << endl << black() << "4.地狱(数字范围为0 ~ 100000000)" << endl << endl << red() << "输入1~4选择难度" << endl << green();

		int choose;

		while(true) {

			cin >> choose;

			if(choose < 1 || choose > 4) {

				clear();
			}

			else {

				break;
			}
		}

		srand(time(NULL));
		unsigned long long num = pow(rand(),3);
		
		cout << purple();

		if(choose == 1) {

			num %= 101;

			cout << "您已选择简单难度" << endl;
		}

		else if(choose == 2) {

			num %= 10001;

			cout << "您已选择中等难度" << endl;
		}

		else if(choose == 3) {

			num %= 1000001;

			cout << "您已选择困难难度" << endl;
		}

		else {

			num %= 100000001;

			cout << "您已选择地狱难度" << endl;
		}

		while(true) {

			int n;
			cin >> n;

			if(cin.fail() == true) {

				clear();
				cout << "请输入数字" << endl;
				
				continue;
			}

			else if(n > num) {

				cout << "太大了" << endl;
			}

			else if(n < num) {

				cout << "太小了" << endl ;
			}

			else {
				
				if(best[choose - 1] == 0){
					
					best[choose - 1] = sum;
					
					cout << "恭喜你 猜对了! 你一共猜了" << sum << "次!" << "这是你目前最好的记录!" << endl << endl;
				}
				
				else if(best[choose - 1] > sum){
					
					cout << "恭喜你 猜对了! 你一共猜了" << sum << "次!" << "超越了你曾经的最好记录" << best[choose - 1] << "次!" << endl << endl;
					
					best[choose - 1] = sum;
				}

				else{
					
					cout << "恭喜你 猜对了! 你一共猜了" << sum << "次!" << endl << endl;
				}

				break;
			}

			sum++;
		}

		cout << blue() << "输入1以再玩一局 输入2以退出游戏" << endl << green();

		while(true) {

			int h;
			cin >> h;

			if(h != 1 && h != 2){

				clear();
			}
			
			else if(h == 1){
				
				break;
			}

			else if(h == 2){
				
				ofstream os(".//game_record.txt");
				
				if(os.good() == true){
					
					os << best[0] << ' ' << best[1] << ' ' << best[2] << ' ' << best[3];
				}

				cout << "\033[0m" << black();

				return 0;
			}
		}
	
		cout << endl;
	}
}

4 comments

  • @ 2024-8-28 10:14:11

    成就比我想象中的难写啊 累死了

    • @ 2024-8-27 8:56:38

      没有用

    • @ 2024-8-25 21:06:04

      现在存档会存到一个叫game_recore的文本文件里 里面存的是你的最好成绩

      • @ 2024-8-25 18:42:41

        逆转裁判太阴间了 根本写不完

      • 1