新手練習項目 7:猜數字游戲

名人說:莫聽穿林打葉聲,何妨吟嘯且徐行。—— 蘇軾《定風波·莫聽穿林打葉聲》
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 generatorsrand(static_cast<unsigned int>(time(0)));// Generate a random number between 1 and 100secretNumber = 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.pswp.cn/diannao/38150.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/38150.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/38150.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

comsol學習筆記

comsol巖土力學與流固耦合的學習 comsol的相關視頻教程 https://www.bilibili.com/video/BV1Cu4y1r7Gn/?spm_id_from333.337.search-card.all.click&vd_source02b2bad477a153eaeb9c48cbbedaf8df [這里面有講解地應力平衡技術] https://www.bilibili.com/video/BV17C4y1j…

打靶記錄——靶機medium_socnet

靶機下載地址 https://www.vulnhub.com/entry/boredhackerblog-social-network,454/ 打靶過程 由于靶機和我的Kali都處于同一個網段&#xff0c;所以使用arpscan二次發現技術來識別目標主機的IP地址 arpscan -l除了192.168.174.133&#xff0c;其他IP都是我VMware虛擬機正…

【Spring Boot】認識 JPA 的接口

認識 JPA 的接口 1.JPA 接口 JpaRepository2.分頁排序接口 PagingAndSortingRepository3.數據操作接口 CrudRepository4.分頁接口 Pageable 和 Page5.排序類 Sort JPA 提供了操作數據庫的接口。在開發過程中繼承和使用這些接口&#xff0c;可簡化現有的持久化開發工作。可以使 …

springboot學習,如何用redission實現分布式鎖

目錄 一、springboot框架介紹二、redission是什么三、什么是分布式鎖四、如何用redission實現分布式鎖 一、springboot框架介紹 Spring Boot是一個開源的Java框架&#xff0c;由Pivotal團隊&#xff08;現為VMware的一部分&#xff09;于2013年推出。它旨在簡化Spring應用程序…

大數據面試題之Spark(1)

目錄 Spark的任務執行流程 Spark的運行流程 Spark的作業運行流程是怎么樣的? Spark的特點 Spark源碼中的任務調度 Spark作業調度 Spark的架構 Spark的使用場景 Spark on standalone模型、YARN架構模型(畫架構圖) Spark的yarn-cluster涉及的參數有哪些? Spark提交jo…

橫穿自動駕駛

如果有一條線&#xff0c;可以穿起來所有自動駕駛的核心模塊&#xff0c;那么我感覺它就是最優化&#xff0c;選擇優化變量、構造優化問題、求解優化問題&#xff0c;這幾個步驟貫穿了自動駕駛的始終。 先從我的自身接觸順序寫起。最開始做個一點深度學習&#xff0c;那還是20…

編碼大模型系列:Meta創新的“代碼編譯優化”的LLM

魯班號導讀正式上線。移步“魯班秘笈”&#xff0c;查閱更多內容。 大型語言模型 (LLM) 已在各種軟件工程和編碼任務中展現出卓越的能力。然而&#xff0c;它們在代碼和編譯器優化領域的應用仍未得到充分探索。訓練LLM需要大量資源&#xff0c;需要大量的 GPU時間和大量的數據…

23、架構-服務網格之透明通信涅槃

通信成本 在現代分布式系統中&#xff0c;服務之間的通信是不可避免的。然而&#xff0c;這種通信帶來了額外的復雜性和成本。傳統的通信方式如RPC&#xff08;Remote Procedure Call&#xff09;和REST&#xff08;Representational State Transfer&#xff09;&#xff0c;雖…

Hive 實操案例五:統計每個類別中 Top10 的視頻熱度

一、數據表結構 視頻表 t_video 字段注釋描述videoId視頻唯一 id&#xff08;String&#xff09;11 位字符串uploader視頻上傳者&#xff08;String&#xff09;上傳視頻的用戶名 Stringage視頻年齡&#xff08;int&#xff09;視頻在平臺上的整數天category視頻類別&#xff0…

一個合理的前端應用文件結構

在大型應用中&#xff0c;最關鍵且最具挑戰性的方面之一就是擁有一個良好且合理的文件結構。在考慮通過微前端將代碼庫拆分成多個應用之前&#xff0c;可以遵循一些步驟來改善項目級別的架構&#xff0c;并在您考慮這一路徑時使過渡更容易。 我們的目標是應用某種模塊化方法&am…

MSPM0G3507——定時器例程講解4——timx_timer_mode_periodic

以下示例以周期模式配置TimerG并切換LED。周期從500ms開始&#xff0c;每次切換減少50ms&#xff0c;直到周期為100ms&#xff0c;然后重復。設備在等待中斷時保持待機模式 #include "ti_msp_dl_config.h"/* ((32KHz / (321)) * 0.5s) 45 - 1 495 due to N1 ticks …

MySQL入門學習-MySQL日志.錯誤日志

錯誤日志是 MySQL 中一種記錄服務器運行過程中錯誤信息的日志文件。它可以幫助管理員或開發人員快速定位和解決問題。 一、MySQL 中的錯誤日志具有以下特點&#xff1a; - 記錄錯誤信息&#xff1a; 錯誤日志主要記錄服務器在運行過程中發生的錯誤信息&#xff0c;包括但不限…

【算法 之選擇排序 原理及案例】

選擇排序&#xff08;Selection Sort&#xff09; 是一種簡單直觀的排序算法。它的工作原理是&#xff1a;首先在未排序序列中找到最小&#xff08;或最大&#xff09;元素&#xff0c;存放到排序序列的起始位置&#xff0c;然后&#xff0c;再從剩余未排序元素中繼續尋找最小…

Memcached的API使用指南:常用操作與示例代碼

Memcached 是一個高性能、分布式內存對象緩存系統&#xff0c;常用于加速動態Web應用程序&#xff0c;減輕數據庫負載。本文將介紹如何使用Memcached的API進行常用操作&#xff0c;并提供示例代碼。 1. 安裝Memcached客戶端庫 在使用Memcached之前&#xff0c;需要安裝相應的…

Qt中用QLabel創建狀態燈

首先ui設計中分別創建了4個大燈和4個小燈。 編輯.h文件 #ifndef LED_H #define LED_H#include <QWidget> #include <QLabel>QT_BEGIN_NAMESPACE namespace Ui { class Led; } QT_END_NAMESPACEclass Led : public QWidget {Q_OBJECTpublic:Led(QWidget *parent n…

Spring MVC數據綁定和響應——復雜數據綁定(四)JSON數據綁定

一、消息轉換器—HttpMessageConverter接口 客戶端不同的請求&#xff0c;HttpServletRequest中數據的MediaType可能會不同&#xff0c;如果想將HttpServletRequest中的數據轉換成指定對象&#xff0c;或者將對象轉換成指定格式的數據&#xff0c;就需要使用對應的消息轉換器來…

服務器硬件以及RAID配置

目錄 一、RAID磁盤陣列原理&#xff08;嘎嘎重要&#xff09; 1、RAID的概述 2、常用的RAID 2.1、RAID 0 2.2、RAID 1 2.3、RAID 5 2.5、RAID 10 3、陣列卡介紹 二、建立軟件RAID磁盤陣列 1、添加硬盤 2、使用fdisk分區&#xff0c;類型為fd 3、mdata命令使用參數 …

安全與加密常識(3)什么是數字簽名和數字證書

文章目錄 數字簽名工作原理關鍵特點應用實例 數字證書數字證書和數字簽名趣味實例 數字簽名 數字簽名是一種通過密碼運算生成的數據&#xff0c;用于驗證信息的完整性和來源&#xff0c;確保數據在傳輸過程中未被篡改&#xff0c;同時提供發送者的身份認證和防止抵賴的功能。它…

Qt: QPushButton 按鈕實現 上圖標下文字

效果如下&#xff1a; 實現有如下幾種方式&#xff1a; 1. 使用 QPushButton 設置 setStyleSheet 例&#xff1a; ui->recorder->setStyleSheet("QPushButton{"\"border: 1px solid #00d2ff; "\"min-height: 60px; "\"col…

python多繼承的3C算法

python多繼承的3C算法 有很多地方都說python多繼承的繼承順序&#xff0c;是按照深度遍歷的方式&#xff0c;其實python多繼承順序的算法&#xff0c;不是嚴格意義上的深度遍歷&#xff0c;而是基于深度遍歷基礎上優化出一種叫3C算法 python多繼承的深度遍歷 class C:def ru…