名人说:莫听穿林打叶声,何妨吟啸且徐行。—— 苏轼《定风波·莫听穿林打叶声》
Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder)
目录
- 一、项目描述
- 二、项目实现
- 三、项目步骤
- 四、项目扩展方向
更多项目内容,请关注我、订阅专栏《项目探索实验室》,内容持续更新中…
项目名称:猜数字游戏
一、项目描述
创建一个猜数字游戏,玩家需要在限定次数内猜出一个由计算机随机生成的数字。
游戏规则如下:
- 计算机生成一个1到100之间的随机整数。
- 玩家有有限次数(如10次)来猜这个数字。
- 每次猜测后,计算机会告诉玩家猜的数字是太大了还是太小了。
- 如果玩家在限定次数内猜对,显示胜利信息。
- 如果玩家用完所有次数还未猜对,显示失败信息并告知正确数字。
二、项目实现
可以选择简单地用函数来实现这个游戏,也可以定义一个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;
}
效果如图:
四、项目扩展方向
可以根据需要扩展项目,例如:
- 增加难度选择(如选择猜测范围或最大次数)。
- 增加一个计分系统,根据猜测次数和成功与否来评分。
Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder)
点赞加关注,收藏不迷路!本篇文章对你有帮助的话,还请多多点赞支持!