学习用C++开发你的第一个游戏(英文)
// FBullCowGame.h
#pragma once
# include <string>
class FBullCOwGame {
public:
void Reset(); //ToDo make a more rich return value.
int GetMaxTries();
int GetCurrentTry();
bool IsGameWon();
bool CheckGuessValidity(std::string); // ToDo make a more rich return value.
// Please try and ignore this and focus on the interface above
private:
int MyCurrentTry = 1;
int MyMaxTries = 5;
};
// FBullCowGame.cpp
#include "FBullCowGame.h"
void FBullCOwGame::Reset()
{
return;
}
int FBullCOwGame::GetMaxTries()
{
return MyMaxTries;
}
int FBullCOwGame::GetCurrentTry()
{
return MyCurrentTry;
}
bool FBullCOwGame::IsGameWon()
{
return false;
}
bool FBullCOwGame::CheckGuessValidity(std::string)
{
return false;
}
// CowBull.cpp重命名为Main.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
# include <iostream>
# include <string> // 引入string 库
# include "FBullCowGame.h"
void PrintIntro();
void PlayGame();
std::string GetGuess();
bool AskToPlayAgain();
FBullCOwGame BCGame; // instantiate a new game
// 程序的入口
int main()
{
bool bPlayAgain = false;
do
{
PrintIntro();
PlayGame();
bPlayAgain = AskToPlayAgain();
} while (bPlayAgain);
return 0;
}
void PlayGame()
{
int MaxTries = BCGame.GetMaxTries();
std::cout << MaxTries << std::endl;
// 可猜测的循环次数
for (int cout = 1; cout <= MaxTries; ++cout)
{
std::string Guess = GetGuess();
std::cout << "Your guess was: " << Guess << std::endl;
std::cout << std::endl;
}
}
// 介绍游戏
void PrintIntro()
{
constexpr int WORLD_LENGTH = 9; // 定义一个变量让单词的长度可变
std::cout << "Welocm to Bulls and Cows, a fun word game." << std::endl;
std::cout << "Can you guess the " << WORLD_LENGTH;
std::cout << " letter isogram I'm thinking of?\n";
std::cout << std::endl;
return;
}
// 让玩家猜一个
std::string GetGuess()
{
int CurrentTry = BCGame.GetCurrentTry();
std::cout << "Try" << CurrentTry << ".输入你猜测的结果: ";
std::string Guess = "";
std::getline(std::cin, Guess);
return Guess;
}
bool AskToPlayAgain()
{
std::cout << "你想再玩一次吗?(Y/N)";
std::string Response = "";
std::getline(std::cin, Response);
return (Response[0] == 'y')|| (Response[0] == 'Y');
}