【c++】游戏设计:精准猜数

游戏截图:

游戏设计概述

本游戏设计旨在让用户猜测一个1到100之间的随机数,‌用户输入的数与随机数之差越小,‌获得的分数越多。‌游戏共进行10轮,‌每轮都会生成一个新的随机数,‌并计算用户得分,‌最后输出每轮的随机数、‌用户输入的数、‌两者之差以及当前总分数。‌

游戏逻辑

  1.  

    初始化分数‌:‌游戏开始时,‌用户有一个基础分数,‌设为1000分。‌

  2.  

    生成随机数‌:‌每轮游戏开始时,‌使用rand()函数生成一个1到100之间的随机数。‌

  3.  

    用户输入‌:‌提示用户输入一个数,‌并使用std::cin读取用户输入。‌

  4.  

    计算分数‌:‌计算用户输入的数与随机数之差的绝对值,‌并根据差值计算本轮得分。‌差值越小,‌得分越高。‌

  5.  

    更新总分‌:‌将本轮得分加到用户总分上。‌

  6.  

    输出结果‌:‌输出本轮的随机数、‌用户输入的数、‌两者之差以及当前总分数。‌

  7.  

    重复进行‌:‌重复上述步骤,‌共进行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;
}

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天若有情673

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值