将牌从牌组分配到牌组

时间:2015-02-13 22:53:00

标签: c arrays

我有一个纸牌游戏任务,我很困惑如何通过参考呼叫从甲板上正确处理用户和计算机5卡。以下是该功能的要求:此功能从卡座中移除顶部卡并将其返回到调用功能,同时将卡的其余部分向上移动一张卡。请注意,必须减少卡组的大小以反映一张卡的丢失(这应该使用“参考呼叫”来完成。)

这是我目前的功能代码,但我认为没错。请不要过于技术性,我是一个菜鸟。感谢。

int popCard(int *size, int deck[])
{
    int user[5];
    int comp[5];
    int i,j;
    for(j=0; j<=5; j++)
    {
        for(i=51; i>=47; i--)
        {
            user[j]=i;
        }
        for(i=46; i>=42; i--)
        {
            comp[j]=i;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

C中的函数可以通过三种方式改变外部世界:

  1. 修改全局变量(哎呀。避免这种情况。)
  2. 返回一个值(是的!函数完成了某些东西......在这里)
  3. 修改作为指针传递的值。
  4. 所以,让我们说你有一个&#34;套牌&#34;某种对象,以及&#34;手&#34;某种对象,你想要一张卡片。你可以编写一个函数,该函数既可以指向一个套牌也可以一只手,并更新两者:

    void deal(Deck *deck, Hand *hand);
    

    但可能更好的设计是一个甲板功能和一个手功能(假设卡片是int s,它们应该是。)

    int dealfrom(Deck *deck);
    void dealTo(Hand *hand, int card);
    

    然后只是

    dealTo(h, dealFrom(d));
    

    DeckHand应该是具有卡片阵列和当前大小的结构(可能是容量,以及其他需要的东西)。