将值从对象传递到二维数组

时间:2014-04-15 15:21:37

标签: c++ pointers reference

我正在为简单的扑克游戏编写代码。我遇到的问题是正确使用指针。我确实看了下面的链接,并做了一些谷歌研究,但我错过了一些东西,我知道它的一些简单。我很感激帮助。

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

[/代码]

1 个答案:

答案 0 :(得分:0)

欢迎使用Stack Overflow

我已经回复了你的previous question,你在那里提供了完整的代码,所以我觉得我在这篇文章中明白了你的想法。在回答这个问题之前,请允许我解释为什么人们对格式如此认真。

格式本身不是罪魁祸首,内容是。

如果您无法将问题分解为干净的概念,则很难用干净的格式来描述它。首先消化你的问题,然后问一个干净的问题。

请参阅

  1. The SSCCE - Short, Self Contained, Correct (Compilable), Example

  2. How to Ask

  3. 学习如何提出一个好问题需要时间,但请相信我,这值得你花时间。

    除了消化问题本身就是一个学习过程这个事实,有时你甚至可以在尝试分解问题时自己找到解决方案。

    请记住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网站,如果你放弃它,对你来说是一个巨大的损失。

    坚持下去,你会变得更好。