Initial commit: C++ courseware
This commit is contained in:
commit
4a4ee7c287
1789 files changed
+373489
No files matched your search
@@ -0,0 +1,144 @@
|
||||
//
|
||||
// Created by xiaolinquan on 2024/12/21.
|
||||
//
|
||||
#include <iostream>
|
||||
#include <cstdlib>
|
||||
#include <ctime>
|
||||
#include <cmath>
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
using namespace std;
|
||||
int randNum;
|
||||
|
||||
// 设置控制台文本颜色
|
||||
void setConsoleColor(int color) {
|
||||
#ifdef _WIN32
|
||||
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);
|
||||
#else
|
||||
cout << "\033[" << color << "m";
|
||||
#endif
|
||||
}
|
||||
|
||||
// 恢复控制台文本颜色
|
||||
void resetConsoleColor() {
|
||||
#ifdef _WIN32
|
||||
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
|
||||
#else
|
||||
cout << "\033[0m";
|
||||
#endif
|
||||
}
|
||||
|
||||
// 奖励机制函数
|
||||
void calculateReward(int attempts, int &smallSnacks) {
|
||||
if (attempts <= 1){
|
||||
smallSnacks = 10;
|
||||
}else if (attempts <= 2) {
|
||||
smallSnacks = 7;
|
||||
}else if (attempts <= 4) {
|
||||
smallSnacks = 5;
|
||||
} else if (attempts <= 7) {
|
||||
smallSnacks = 2;
|
||||
} else {
|
||||
smallSnacks = 1;
|
||||
}
|
||||
}
|
||||
|
||||
// 提示机制函数
|
||||
void giveHint(int guessNum, int randNum) {
|
||||
int difference = abs(guessNum - randNum);
|
||||
if (difference == 0) return;
|
||||
|
||||
// 1. 基础提示
|
||||
setConsoleColor(14);
|
||||
if (difference <= 5) cout << "非常非常接近了!!" << endl;
|
||||
else if (difference <= 10) cout << "接近了!" << endl;
|
||||
else if (difference <= 25) cout << "差距适中。" << endl;
|
||||
else cout << "!差距很大哦!" << endl;
|
||||
|
||||
// 2. 随机触发一种额外提示 (抽取 0-5)
|
||||
int hintType = rand() % 10;
|
||||
|
||||
switch (hintType) {
|
||||
case 0: // 奇偶性
|
||||
if (randNum % 2 == 0) cout << "线索:它是偶数。" << endl;
|
||||
else cout << "线索:它是奇数。" << endl;
|
||||
break;
|
||||
case 1: // 各位数字之和
|
||||
cout << "线索:各位数字之和是 " << (randNum/10 + randNum%10) << endl;
|
||||
break;
|
||||
case 2: // 尾数 (你的原逻辑)
|
||||
cout << "线索:最后一位数字是 " << randNum % 10 << endl;
|
||||
break;
|
||||
case 3: // 倍数
|
||||
if (randNum % 3 == 0) cout << "线索:是 3 的倍数。" << endl;
|
||||
else if (randNum % 5 == 0) cout << "线索:是 5 的倍数。" << endl;
|
||||
else cout << "线索:不是 3 也不是 5 的倍数。" << endl;
|
||||
break;
|
||||
case 4:
|
||||
cout << "这次没有额外线索,靠直觉吧!" << endl;
|
||||
break;
|
||||
case 5: // 什么都不提示
|
||||
cout << "这次没有额外线索,靠直觉吧!" << endl;
|
||||
break;
|
||||
default:
|
||||
cout << "这次没有额外线索,靠直觉吧!" << endl;
|
||||
|
||||
}
|
||||
|
||||
resetConsoleColor();
|
||||
}
|
||||
|
||||
int main() {
|
||||
|
||||
srand((unsigned int)time(nullptr));
|
||||
int round = 1;
|
||||
|
||||
while (true) {
|
||||
randNum = rand() % 100 + 1;
|
||||
int guessNum = -1;
|
||||
int attempts = 0;
|
||||
|
||||
setConsoleColor(11); // 设置颜色为亮青色
|
||||
cout << "开始第" << round << "轮竞猜!" << endl;
|
||||
resetConsoleColor();
|
||||
|
||||
while (guessNum != randNum) {
|
||||
cout << "请输入你要猜的数字(范围1-100): ";
|
||||
cin >> guessNum;
|
||||
attempts++;
|
||||
|
||||
if (guessNum > randNum) {
|
||||
setConsoleColor(12); // 红色
|
||||
cout << "你猜得太大了!" << endl;
|
||||
resetConsoleColor();
|
||||
} else if (guessNum < randNum) {
|
||||
setConsoleColor(12); // 红色
|
||||
cout << "你猜得太小了!" << endl;
|
||||
resetConsoleColor();
|
||||
}
|
||||
|
||||
// 提示玩家
|
||||
giveHint(guessNum, randNum);
|
||||
|
||||
if (guessNum == randNum) {
|
||||
setConsoleColor(10); // 绿色
|
||||
cout << "你猜中了!!恭喜!" << endl;
|
||||
resetConsoleColor();
|
||||
|
||||
int Snacks = 0;
|
||||
calculateReward(attempts,Snacks);
|
||||
|
||||
setConsoleColor(13); // 紫色
|
||||
cout << "你获得了 " << Snacks << " 个零食!" << endl;
|
||||
resetConsoleColor();
|
||||
}
|
||||
}
|
||||
|
||||
round++;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user