我正在为简单的扑克游戏编写代码。我遇到的问题是正确使用指针。我确实看了下面的链接,并做了一些谷歌研究,但我错过了一些东西,我知道它的一些简单。我很感激帮助。
Trouble deciphering function parameters: pointer and pointer to pointer
好的,我有能力随机生成面部和卡的价值。我想把它作为一个字符串传递给一个数组...所以基本上如果wFace [column]是王者而wSuit [row]是Heart。 我想把国王的心传递到一个阵列......玩家1 ...我无法弄清楚如何做到这一点......我尝试了...但它只收集了脸的第一个价值......它没有得到诉讼值。
当我尝试下面的代码时,我得到的错误如下 73 35 E:\ C ++ lab \ pokerGame2.cpp [错误]将'const char *'赋值给'char * [5]'不兼容的类型
[代码]
void deal(const int wDeck[][13], const char *wFace[],
const char *wSuit[], char *wplayer1[][5], const char *wplayer2[5] )
{
int card;
int row;
int column;
int s;
for(card =1; card <= 10; card++){
if(card<=5){
for(row = 0; row <= 3; row++){
for(column = 0; column <= 12; column++){
if(wDeck[row][column] ==card){
wplayer1[card] = wFace[column];
for(s=0; s<1; s++){
wplayer1[s] = wSuit[row];
}
//wplayer1[card][card]= (wFace[column], wSuit[row]);
cout<<wFace[column]<<" of "<<wSuit[row]<<"\n";
cout<<"player1 cards "<< wplayer1[card][s];
}
}
}
}
else if(card>5 && card <=10){
for(row = 0; row <= 3; row++){
for(column = 0; column <= 12; column++){
{if(wDeck[row][column] ==card){
wplayer2[card]= wFace[column], wSuit[row];
cout<<wFace[column]<<" of "<<wSuit[row]<<"\n";
}
}
}
}
}
}
enter code here
[/代码]
答案 0 :(得分:0)
欢迎使用Stack Overflow
。
我已经回复了你的previous question,你在那里提供了完整的代码,所以我觉得我在这篇文章中明白了你的想法。在回答这个问题之前,请允许我解释为什么人们对格式如此认真。
格式本身不是罪魁祸首,内容是。
如果您无法将问题分解为干净的概念,则很难用干净的格式来描述它。首先消化你的问题,然后问一个干净的问题。
请参阅
The SSCCE - Short, Self Contained, Correct (Compilable), Example和
学习如何提出一个好问题需要时间,但请相信我,这值得你花时间。
除了消化问题本身就是一个学习过程这个事实,有时你甚至可以在尝试分解问题时自己找到解决方案。
请记住Stack Ovedrflow
更像是一个 Q&amp; A网站而不是传统论坛。这里的人对格式更加严格。我们希望看到一个干净,易于理解的问题,以便我们可以通过较少的讨论快速回答它(请记住它不像传统的论坛)。讨论可以在聊天室中进行,也可以仅在评论中进行,但线程仍然是Q&amp; A的简洁形式。
现在让我们回到你的问题。
问题不在于&#34;如何将两个值传递到2个dem阵列&#34; 但&#34;为什么要传递这类数据?&#34 ;
由于您使用的是C++
,因此您可以使用class
格式化数据。
看一下下面一个简单的例子:
#include <stdlib.h>
#include <iostream>
#include <ctime>
#include <algorithm>
using namespace std;
const char* FaceString[13] = {"Ace", "2", "3", "4",
"5", "6", "7", "8",
"9", "10", "Jack", "Queen", "King"};
const char* SuitString[4] = {"Spades", "Hearts", "Diamonds", "Clubs"};
class Card
{
public:
int face;
int suit;
void toString() {
cout<<FaceString[face]<<" of "<<SuitString[suit]<<endl;
}
};
int main()
{
// Create a deck of cards
Card deck[52];
for (int i = 0; i < 52; i++) {
deck[i].face = i % 13;
deck[i].suit = i % 4;
}
// Shuffle
srand (unsigned(time(0)));
random_shuffle(&deck[0], (&deck[0]+52));
// Display cards
for (int j = 0; j < 52; j++) {
cout<< "Card_" << (j+1) << ": ";
deck[j].toString();
}
return 0;
}
class Card
是扑克牌的抽象(概括)。
在main()
中,我按Card deck[52]
创建了一副牌,并通过
for (int i = 0; i < 52; i++) {
deck[i].face = i % 13;
deck[i].suit = i % 4;
}
在这种情况下,您可以简单地将一维和有组织的对象数组deck
混乱,并传递整个对象(带有它的自己的脸和套装参数的扑克牌)作为值。
我在std库中使用random_shuffle()来洗牌,然后我给你留下了处理。
这将使您的程序更清晰,更易理解。我认为这个例子足以为您提供如何解决问题的方向。
Stack Overflow
是一个很棒的Q&amp; A网站,如果你放弃它,对你来说是一个巨大的损失。
坚持下去,你会变得更好。