0

だから、テーブルの周りに座っているプレーヤーに関するプログラミングの割り当てに問題があります。プログラムは、ターンしたばかりのプレーヤーの後にプレーヤーを追加できる必要があります。割り当ては、どこでもリンクされたリストにデータを追加する方法を示すことになっています。そのため、PLAY コマンドを使用すると問題が発生します。これにより、1 人のプレイヤーが手番を行えるようになります。

たとえば、プレイヤー A、B、および C がいて、PLAY コマンドが実行されると、コンソールに「プレイヤー A がターンを実行します」と表示されます。もう一度PLAYを実行すると、「Player B takes a turn」と表示されます。

私のコードでは、リストの最初のプレイヤーがプレイできますが、次のノード/プレイヤーには移動しません。

void CircleList::play()
{
    LinkedListOfPlayersNode *p=(*pFront).pNext;
    if (p->pData!=NULL)
    {
        cout<<p->pData->getName()+" takes a turn\n";
        p-> pNext; //My attempt to move to the next node.
    }
    else
    {
        cout<<"There are no players. Please ADD a player.\n";
    }
}

したがって、これは明らかに機能しません。次のプレイヤーに移動する方法を誰か説明してもらえますか?

PS - コードは C++ です

4

2 に答える 2

2

You'll need a member in your class that retains the last player that took a turn.

class CircleList
{
   //...
   PlayerNode* pLastPlayer;
};

initially, this is set to pFront and you move it to the next player every time play is called.

void CircleList::play()
{
   //logic with pLastPlayer here

   //at the end move it
   pLastPlayer = pLastPlayer->next;
}
于 2012-09-23T19:34:38.300 に答える
1

この線

p-> pNext; //My attempt to move to the next node.

次のノードには何も移動しません。p->pNext おそらく何かを保存/割り当てるべきです。

于 2012-09-23T19:43:20.270 に答える