游戏截图:
游戏设计概述
本游戏设计旨在让用户猜测一个1到100之间的随机数,用户输入的数与随机数之差越小,获得的分数越多。游戏共进行10轮,每轮都会生成一个新的随机数,并计算用户得分,最后输出每轮的随机数、用户输入的数、两者之差以及当前总分数。
游戏逻辑
-
初始化分数:游戏开始时,用户有一个基础分数,设为1000分。
-
生成随机数:每轮游戏开始时,使用
rand()
函数生成一个1到100之间的随机数。 -
用户输入:提示用户输入一个数,并使用
std::cin
读取用户输入。 -
计算分数:计算用户输入的数与随机数之差的绝对值,并根据差值计算本轮得分。差值越小,得分越高。
-
更新总分:将本轮得分加到用户总分上。
-
输出结果:输出本轮的随机数、用户输入的数、两者之差以及当前总分数。
-
重复进行:重复上述步骤,共进行10轮游戏。
关键函数
-
Difference(int user, int num)
:计算用户输入的数与随机数之差的绝对值。 -
calcScore(int result)
:根据差值计算得分,差值越小,得分越高。
通过这个游戏,用户可以在猜测数字的过程中体验到乐趣,并尝试通过减小猜测误差来提高得分。
完整代码:
#include<iostream>
#include<cstdlib>
#include<ctime>
#include<cmath>
int Difference(int user, int num) {
int result = std::abs(user - num);
if(result<=5){
std::cout <<"perfect!!!!" << std::endl;
}
return result;
}
int calcScore(int result) {
// 防止除以零,并使用倒数(加1以避免除以零)作为分数的基础
int score = 20000 / (result + 1);
// 你可以根据需要调整这个公式
return score;
}
int main() {
srand(static_cast<unsigned int>(time(nullptr))); // 初始化随机数种子
int score = 0; // 初始分数为0
int num = 0;
int userinput = 0;
for(int i = 0; i < 10; i++) {
std::cout << "Please guess the number: ";
num = rand() % 100 + 1;
std::cin >> userinput;
int diff = Difference(num, userinput);
score += calcScore(diff);
std::cout << "Number: " << num << ", Difference: " << diff << ", Score: " << score << std::endl;
}
std::cout << "Final Score: " << score << std::endl;
return 0;
}