新手练习项目 7:猜数字游戏

news2024/11/24 10:52:13

名人说:莫听穿林打叶声,何妨吟啸且徐行。—— 苏轼《定风波·莫听穿林打叶声》
Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder)

目录

        • 一、项目描述
        • 二、项目实现
        • 三、项目步骤
        • 四、项目扩展方向

更多项目内容,请关注我、订阅专栏《项目探索实验室》,内容持续更新中…

项目名称:猜数字游戏

一、项目描述

创建一个猜数字游戏,玩家需要在限定次数内猜出一个由计算机随机生成的数字

游戏规则如下:

  1. 计算机生成一个1到100之间的随机整数。
  2. 玩家有有限次数(如10次)来猜这个数字。
  3. 每次猜测后,计算机会告诉玩家猜的数字是太大了还是太小了。
  4. 如果玩家在限定次数内猜对,显示胜利信息。
  5. 如果玩家用完所有次数还未猜对,显示失败信息并告知正确数字。
二、项目实现

可以选择简单地用函数来实现这个游戏,也可以定义一个GuessingGame类来封装游戏逻辑。

三、项目步骤
#include <iostream>
#include <cstdlib> // for rand() and srand()
#include <ctime>   // for time()

using namespace std;

class GuessingGame {
private:
    int secretNumber;
    int maxAttempts;
    int attemptsLeft;

    void resetGame() {
        // Seed the random number generator
        srand(static_cast<unsigned int>(time(0)));
        // Generate a random number between 1 and 100
        secretNumber = rand() % 100 + 1;
        attemptsLeft = maxAttempts;
    }

public:
    GuessingGame(int maxAttempts) : maxAttempts(maxAttempts), attemptsLeft(maxAttempts) {
        resetGame();
    }

    void play() {
        int guess;
        char playAgain;

        do {
            cout << "欢迎来到猜数字游戏!" << endl;
            cout << "我已经选择了一个1到100之间的数字。" << endl;
            cout << "你有 " << maxAttempts << " 次机会来猜它。" << endl;

            while (attemptsLeft > 0) {
                cout << "请输入你的猜测:";
                cin >> guess;

                if (guess == secretNumber) {
                    cout << "恭喜你!你猜对了这个数字!" << endl;
                    break;
                } else if (guess < secretNumber) {
                    cout << "太小了!" << endl;
                } else {
                    cout << "太大了!" << endl;
                }

                attemptsLeft--;
                cout << "剩余次数:" << attemptsLeft << endl;
            }

            if (attemptsLeft == 0) {
                cout << "很抱歉,你已经用完了所有机会。正确的数字是 " << secretNumber << "。" << endl;
            }

            cout << "你想再玩一次吗?(y/n):";
            cin >> playAgain;

            if (playAgain == 'y' || playAgain == 'Y') {
                resetGame();
            }

        } while (playAgain == 'y' || playAgain == 'Y');

        cout << "感谢你玩猜数字游戏!再见!" << endl;
    }
};

int main() {
    int maxAttempts = 10; // 你可以更改尝试次数
    GuessingGame game(maxAttempts);
    game.play();
    return 0;
}
#include "Book.h"
#include <iostream>
#include <vector>
using namespace std;

void displayMenu() {
    cout << "1. 添加图书" << endl;
    cout << "2. 更新图书信息" << endl;
    cout << "3. 删除图书" << endl;
    cout << "4. 查找图书" << endl;
    cout << "5. 显示所有图书信息" << endl;
    cout << "6. 退出" << endl;
}

void addBook(vector<Book> &books) {
    string title, author, ISBN;
    cout << "输入书名: ";
    cin.ignore();
    getline(cin, title);
    cout << "输入作者: ";
    getline(cin, author);
    cout << "输入ISBN: ";
    getline(cin, ISBN);
    books.push_back(Book(title, author, ISBN));
}

void updateBook(vector<Book> &books) {
    string ISBN, title, author, newISBN;
    cout << "输入要更新的图书的ISBN: ";
    cin.ignore();
    getline(cin, ISBN);
    
    for (Book &book : books) {
        if (book.getISBN() == ISBN) {
            cout << "输入新书名: ";
            getline(cin, title);
            cout << "输入新作者: ";
            getline(cin, author);
            cout << "输入新ISBN: ";
            getline(cin, newISBN);
            book.update(title, author, newISBN);
            return;
        }
    }
    cout << "未找到该ISBN的图书。" << endl;
}

void deleteBook(vector<Book> &books) {
    string ISBN;
    cout << "输入要删除的图书的ISBN: ";
    cin.ignore();
    getline(cin, ISBN);
    
    for (auto it = books.begin(); it != books.end(); ++it) {
        if (it->getISBN() == ISBN) {
            books.erase(it);
            return;
        }
    }
    cout << "未找到该ISBN的图书。" << endl;
}

void findBook(const vector<Book> &books) {
    string ISBN;
    cout << "输入要查找的图书的ISBN: ";
    cin.ignore();
    getline(cin, ISBN);
    
    for (const Book &book : books) {
        if (book.getISBN() == ISBN) {
            book.display();
            return;
        }
    }
    cout << "未找到该ISBN的图书。" << endl;
}

void displayAllBooks(const vector<Book> &books) {
    for (const Book &book : books) {
        book.display();
    }
}

int main() {
    vector<Book> books;
    int choice;

    while (true) {
        displayMenu();
        cin >> choice;

        switch (choice) {
            case 1:
                addBook(books);
                break;
            case 2:
                updateBook(books);
                break;
            case 3:
                deleteBook(books);
                break;
            case 4:
                findBook(books);
                break;
            case 5:
                displayAllBooks(books);
                break;
            case 6:
                return 0;
            default:
                cout << "无效选项,请重新选择。" << endl;
        }
    }

    return 0;
}

效果如图:

image-20240630164032219

四、项目扩展方向

可以根据需要扩展项目,例如:

  • 增加难度选择(如选择猜测范围或最大次数)。
  • 增加一个计分系统,根据猜测次数和成功与否来评分。

Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder)
点赞加关注,收藏不迷路!本篇文章对你有帮助的话,还请多多点赞支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1879689.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

源码学习:文件描述符

在进程描述学习中&#xff0c;扯到了max_fds&#xff0c;接着就联想到了日常运维中常见的ulimit参数、sysctl内核参数&#xff0c;原来以为max_fds与这些个关联性比较强&#xff0c;但经过一早上折腾以后&#xff0c;发现其实还是有一些差距的。但是在学习过程中&#xff0c;却…

java基于ssm+jsp 固定资产管理系统

1前台首页功能模块 固定资产管理系统&#xff0c;在系统首页可以查看首页、设备信息、论坛信息、我的、跳转到后台等内容&#xff0c;如图1所示。 图1前台首页功能界面图 注册&#xff0c;在注册页面可以填写用户名、密码、姓名、性别、头像、身份证、手机等详细内容&#xff…

ASP.NET CORE应用针对IIS有哪两种部署模式?

一、ASP.NET CORE Core Module IIS其实也是按照管道的方式来处理请求的&#xff0c;但是IIS管道和ASP.NET CORE中间件管道有本质的不同。对于部署在IIS中的Web应用来说&#xff0c;从最初接收到请求到最终将响应发出去&#xff0c;这段处理流程被细分为一系列固定的步骤&#x…

设计模式-状态模式和策略模式

1.状态模式 1.1定义 当一个对象的内在状态改变时允许根据当前状态作出不同的行为&#xff1b; 1.2 适用场景 (1)一个对象的行为取决于它的状态,并且它必须在运行时根据状态来决定其行为. (2)代码中包含了大量的与状态有关的条件语句,例如:一个操作含有庞大的多分值语句(if…

【信息安全及等保】网络安全等级保护技术建议书(word原件)

1信息系统详细设计方案 1.1安全建设需求分析 1.1.1网络结构安全 1.1.2边界安全风险与需求分析 1.1.3运维风险需求分析 1.1.4关键服务器管理风险分析 1.1.5关键服务器用户操作管理风险分析 1.1.6数据库敏感数据运维风险分析 1.1.7“人机”运维操作行为风险综合分析 1.2…

3D打印随形水路在注塑生产中的显著优势

3D打印技术在模具制造中已崭露头角&#xff0c;特别是在注塑生产中&#xff0c;3D打印随形水路的应用正变得日益普遍。 首先&#xff0c;该技术能精准优化模具温度。3D打印随形水路随形冷却的设计让模具温度更加均匀&#xff0c;水路更贴近产品&#xff0c;有效提升产品品质和缩…

不知道自己的优势擅长和兴趣爱好,我该如何填报高考志愿选专业?

天生我才必有用&#xff0c;每个人都是独立的个体&#xff0c;拥有自己的优势和擅长&#xff0c;当然这个优势和擅长&#xff0c;不是和别人对比&#xff0c;而是和自己对比产生的。 如果说你不知道自己的优势擅长&#xff0c;不知道自己的兴趣和爱好&#xff0c;那只不过是你没…

李一桐遭遇蜈蚣惊魂

李一桐遭遇“蜈蚣惊魂”&#xff01;刘宇宁展现真男人本色在娱乐圈的幕后&#xff0c;总有一些心跳加速的惊险。近日&#xff0c;李一桐在拍戏时遭遇了一场“蜈蚣惊魂”&#xff0c;让无数粉丝和网友为她捏了一把冷汗。而在这场惊险的遭遇中&#xff0c;刘宇宁展现出了真男人的…

[寄宿日记]韩漫日漫无删减完整版,免费在线观看漫画

[寄宿日记]韩漫日漫无删减完整版&#xff0c;免费在线观看漫画 不能多说&#xff0c;怕审-核不过&#xff0c;自己看图吧。 想要的在这里&#xff1a; https://blog.csdn.net/qq_42098517/article/details/140079915 https://gitee.com/zzwuweijun/manhua/blob/master/README…

【原理】机器学习中的最小二乘法公式推导过程

本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/ 目录 一、什么是最小二乘法1.1. 什么是最小二乘法1.2. 最小二乘法的求解公式 二、最小二乘法求解公式的推导 最小二乘法是基本的线性求解问题之一&#xff0c;本文介绍最小二乘法的原理&#xff0c;和最小二法求解公式…

【PyTorch单点知识】神经元网络模型剪枝prune模块介绍(上,非结构化剪枝)

文章目录 0. 前言1. 剪枝prune主要功能分类2. torch.nn.utils.prune中的方法介绍3. PyTorch实例3.1 BasePruningMethod3.2PruningContainer3.3 identity3.4random_unstructured3.5l1_unstructured 4. 总结 0. 前言 按照国际惯例&#xff0c;首先声明&#xff1a;本文只是我自己…

接口请求网关超时排查和引发的思考

问题描述 前端请求服务端接口&#xff0c;返回504 Gateway Timeout&#xff0c;请求接口为https://profile.noodles.com/user-mail-pub/api/user-mail/user-trash-mails?userId123456 原因分析 观察日志&#xff0c;发现网关链接超时&#xff0c;并且对应请求没有达到对应服…

四川省高等职业学校大数据技术专业建设暨专业质量监测研讨活动顺利开展

6月21日&#xff0c;省教育评估院在四川邮电职业技术学院组织开展全省高等职业学校大数据技术专业建设暨专业质量监测研讨活动。省教育评估院副院长赖长春&#xff0c;四川邮电职业技术学院党委副书记、校长冯远洪&#xff0c;四川邮电职业技术学院党委委员、副校长程德杰等出席…

【python】python知名品牌调查问卷数据分析可视化(源码+调查数据表)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

抓紧收藏!7 款令人惊艳的 AI 开源项目

&#x1f43c; 关注我, 了解更多 AI 前沿资讯和玩法&#xff0c;AI 学习之旅上&#xff0c;我与您一同成长&#xff01; &#x1f388; 进入公众号&#xff0c;回复 AI, 可免费领取超多实用的 AI 资料 和内容丰富的 AI 知识库地址。 自从去年 AIGC 兴起以来&#xff0c;AI 开源…

gin 服务端无法使用sse流式nginx配置

我在本地使用 gin 可以流式的将大模型数据传递给前端。但是当我部署到服务器中时&#xff0c;会阻塞一段时间&#xff0c;然后显示一大段文本。 起初我怀疑是gin 没有及时将数据刷到管道中&#xff0c;但是经过测试&#xff0c;还是会阻塞。 c.Writer.(http.Flusher).Flush()最…

使用LabVIEW报告生成工具包时报错97

问题详情&#xff1a; 在运行使用Excel/Word调用节点的程序时&#xff0c;收到错误97&#xff1a;LabVIEW&#xff1a;&#xff08;十六进制0x61&#xff09;输入中传递了一个空引用句柄或先前已删除的引用句柄。 当运行报告生成工具包中的一个示例程序时&#xff0c;收到错误…

【python】python入门day2——数据类型与运算

python数据类型与运算 一、Python中变量的数据类型1、数据类型分类2、数值类型3、布尔类型4、字符串类型5、其他类型(了解) 二、Python数据类型转换1、使用Python实现超市的收银系统2、Python数据类型的转换方法3、总结 三、Python运算符1、算术运算符3、赋值运算符4、复合赋值…

计算机科学基础简单介绍(1—6)

计算机影响了我们生活的方方面面&#xff0c;在我们这个时代完全渗透了我们的生活。 最早是算盘、星盘、时钟、尺卡等古老的计算工具&#xff0c;后来出现了进步计算机&#xff0c;类似与汽车里程表的一种机械工具&#xff0c;但是他也是手工制品。经过历史的演变与发展&#x…

Prompting已死?DSPy:自动优化LLM流水线

在 LLM 应用中&#xff0c;如何优化一个 pipeline 的流程一直是一个比较头疼的问题。提示词作为一个预定义字符串&#xff0c;往往也没有很好地优化方向。本文中的 DSPy 框架或许能在实际应用中对效果优化起到一定帮助。 当前&#xff0c;在 LLM 的应用中&#xff0c;大家都在探…