几周前我刚刚开始学习 C++,现在正在尝试制作 Blackjack 游戏。 我试图做的是创建一个包含所有卡的变量的数组,例如:h1、hj、c4、ck;这些分别代表红心 1、红心 J、梅花 4 和梅花 K。
我希望这些变量既包含字符串(卡的名称)又包含整数(要添加的数字的值)。
有没有办法让一个变量包含两个值?
谢谢。
您可以为您需要的变量创建一个结构。
struct card
{
string name;
int value;
};
然后按如下方式使用:
card.name = "hearts";
card.value = 1;
简单来说有两个解决方案:
1)使用元组
std::tuple<std::string,int> Hearts1=std::make_tuple("h1", 12);
std::tuple<std::string,int> Clubs1=std::make_tuple("c1", 13)
查看更多:http://en.cppreference.com/w/cpp/utility/tuple
2)使用对象
class Hearts
{
std::string name;
int value;
};
class Clubs
{
std::string name;
int value
};
int main()
{
Clubs CO; CO.name="abc"; CO.value=12;
Hearts HO; HO.name="dce"; HO.value=13;
}
我建议在进行这样的项目之前学习 C++ 编程的基础知识。我强烈推荐从《C++ 编程语言》(B.Stroustrup) 开始。
现在现代 C++ 变量模板可用。
//DECLARE
template <typename T> T hearts[3];
//TESTING
int main()
{
hearts<std::string>[0] = "Jack";
hearts<int>[0] = 11;
hearts<std::string>[1] = "Queen";
hearts<int>[1] = 12;
hearts<std::string>[2] = "King";
hearts<int>[2] = 13;
for (int i = 0; i < 3; i++)
{
std::cout << hearts<std::string>[i] << std::endl;
std::cout << hearts<int>[i] << std::endl;
}
return 0;
}
您还可以使用具有相同索引的两个数组。只要确保它们同时创建和更新,以便具有相同索引的元素引用同一张卡片。