35 Introducing enumerations

学习用C++开发你的第一个游戏(英文)

在这里插入图片描述

// FBullCowGame.h
#pragma once
# include <string>

using FString = std::string;
using int32 = int;

// all values intialised to zero
struct FBullCowCount
{
	int32 Bulls = 0;
	int32 Cows = 0;
};

enum class EWordStatus
{
	OK,
	Not_Isogram,
	Wrong_Lenght,
	Not_Lowercase
};



class FBullCowGame {
public:
	FBullCowGame();	// constructor

	int32 GetMaxTries() const;
	int32 GetCurrentTry() const;
	int32 GethiddenWordLenght() const;

	bool IsGameWon() const;
	EWordStatus CheckGuessValidity(FString) const; 

	void Reset(); //ToDo make a more rich return value.
	FBullCowCount SubmitGuess(FString);

	// Please try and ignore this and focus on the interface above
private:
	// see constructor for initialisation
	int MyCurrentTry;
	int32 MyMaxTries;
	FString MyHiddenWord;
};
// FBullCowGame.cpp
#include "FBullCowGame.h"

using int32 = int;

void FBullCowGame::Reset()
{
	constexpr int32 MAX_TRIES = 8;
	const FString HIIDEN_WORD = "donkey";

	MyCurrentTry = 1;
	MyMaxTries = MAX_TRIES;
	MyHiddenWord = HIIDEN_WORD;
	return;
}

// receives a VALID guess, incriments turn, and returns count
FBullCowCount FBullCowGame::SubmitGuess(FString Guess)
{
	// incriment the turn number
	MyCurrentTry++;

	// setup a return variable
	FBullCowCount BullCowCount;

	// loop through all letters in the guess
	int32 HiddenWordLength = MyHiddenWord.length();
	for (int32 MHWChar = 0; MHWChar < HiddenWordLength; MHWChar++)
	{
		// compare letter aginst the hidden word
		for (int32 GChar = 0; GChar < HiddenWordLength; GChar++)
		{
			// if they match then
			if(Guess[GChar] == MyHiddenWord[MHWChar])
			{
				//if they're in the same place
				if (MHWChar == GChar)
				{
					BullCowCount.Bulls++;// incriment bulls
				}
				else
				{
					BullCowCount.Cows++; // must be a cow
				}

			}
		}
	}
	return BullCowCount;
}

FBullCowGame::FBullCowGame()
{
	Reset();
}

int32 FBullCowGame::GetMaxTries() const
{
	return MyMaxTries;
}

int32 FBullCowGame::GetCurrentTry() const
{
	return MyCurrentTry;
}

int32 FBullCowGame::GethiddenWordLenght() const
{
	return MyHiddenWord.length();
}

bool FBullCowGame::IsGameWon() const
{
	return false;
}

EWordStatus FBullCowGame::CheckGuessValidity(std::string) const
{
	return EWordStatus::OK;	//TODO make actual error
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值