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

passing value from an object to a two dimensional array

本文关键字:二维数组 对象      更新时间:2023-10-16

我正在为一个简单的扑克游戏编写代码。我遇到的问题是指针的正确使用。我确实看了下面的链接,也在谷歌上做了一些研究,但我遗漏了一些东西,我知道这很简单。非常感谢您的帮助。

解密功能参数时出现问题:指针和指针对指针

好的,我有一个函数,可以随机生成卡片的面值。我想把它作为一个字符串传递到数组中。。。所以基本上,如果wFace[column]是国王,wSuit[row]是心脏。我想把国王的心传给一个阵列。。player1…我不知道该怎么做。。这是我试过的。。但它只收集了face的第一个值。。它没有得到套装的价值。

当我尝试下面的代码时,我得到的错误如下73 35 E:\C++lab\pokerGame2.cpp[Error]将"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

[/code]

欢迎使用Stack Overflow

我已经回答了你之前的问题,你给出了完整的代码,所以我想我确实理解你在这篇文章中想要什么。在回答这个问题之前,请允许我解释一下为什么人们对格式如此认真

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

如果你不能把你的问题分解成一个干净的概念,那么就很难用干净的格式来描述它。先消化你的问题,然后问一个干净的问题。

请参阅

  1. SSCCE-简短、独立、正确(可编辑),示例和

  2. 如何询问

学会问一个好问题需要时间,但相信我,这值得你花时间。

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

请记住,CCD_ 2更像是一个Q&一个网站而不是传统论坛。这里的人对格式要求更严格。我们希望看到一个清晰易懂的问题,这样我们就可以用更少的讨论快速回答它(记住,它不像传统的论坛)。讨论可以在聊天室里进行,也可以简单地在评论中进行,但帖子仍然是一种干净的问答形式;A.


现在让我们回到你的问题上来。

问题不在于"如何将两个值传递到2 dem数组",而在于"为什么要传递这种数据?"

由于您使用的是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()来洗牌,然后交给你处理。

这将使您的程序更加清晰易懂。我认为这个例子足以为你提供一个如何解决问题的方向。

CCD_ 9是一个很好的Q&一个网站,如果你放弃它,对你来说是一个巨大的损失。

坚持下去,你会好起来的。