我目前正在尝试使用OOP创建一个简单的游戏。现在,我正在尝试让游戏中的两个玩家各自下注赢。
这是我的player.cpp当前的样子-
function sortComments() {
$("#sort_comments").on("click", function (e) {
e.preventDefault();
var id = this.dataset.linkid
fetch(`/links/${id}/comments.json`)
.then(r => r.json())
.then(comments =>
comments.sort(({body: a}, {body: b}) => a.localeCompare(b))
);
};
}
为此,int投注,int钱包和int分数存储在player.h / player.cpp中。
在main内部,我使用玩家构造函数,然后像这样创建下注-
Player::Player() : score(0), wallet(1000) { }
void Player::setWager() {
std::cout << "Please enter your wager." << std::endl;
std::cin >> wager;
wallet -= wager;
}
int Player::getWallet() {
return wallet;
}
int Player::getWager() {
return wager;
}
现在,我也有一个.h / .cpp文件,用于播放游戏的桌子。我希望能够采用为p1和p2形成的下注,并将它们存储到table.cpp中名为winWager的int中,就像(在伪代码中)-
int main() {
Player p1;
Player p2;
p1.setWager();
p2.setWager();
}
当然,int winWager被保存在table.h中。我该如何在main(或player?)中从p1和p2进行下注并将其用于table.cpp?我是OOP的新手,所以这一直令人困惑。我正在使用C ++。感谢您的帮助。
答案 0 :(得分:1)
我猜你基本上有两种选择
您可以将玩家作为参数传递给setWinWager方法
void Table::setWinWager(const Player& p1, const Player& p2) {
winWager = p1.wager + p2.wager;
}
或者您可以让Table对象有两个玩家作为成员,大概是通过其构造函数传入的。
class Table
{
public:
Table(const Player& p1, const Player& p2);
void setWinWager();
private:
Player p1;
Player p2;
int winwager;
};
哪个是正确的?这取决于您的Table对象代表什么,实际上这只是您可以回答的问题。