2017-04-09 7 views
0

マイリスト構造機能 - C

struct Path{ 
    int h; //horisental 
    int v; //vertical 
    Path_t * next; 
}; 

そのリストの最初の要素のリストのPath_t * nextポイント、

int型の最後の要素を意味し、円形のリスト、 H値は、(0)は何も、(1)RIGHTまたは(-1)LEFT

は、int型のV値はDOWN

(0)NOTHING、(1)UPまたは(-1)ので、私はつもりではないされていますその方向を使ってshを動かす私は私のリストの一つの要素を取得し、私は図形を移動することに基づいて関数を記述する必要が

、と私はそれを呼び出す次回は、私が取得します:猿

NOW HEREは問題であり、既にチェックされているリストではなく、リストの次の要素

答えて

0

グローバル変数を定義して実装することができます。たとえば、次のように

Path_t *currPath = NULL; 

との「getNextPath」という名前の説明機能としましょう:

Path_t *getNextPath() 
{ 
    Path_t *pathToReturn = NULL; 

    if (currPath == NULL) 
    { 
     currPath = headOfYourList; 
     pathToReturn = currPath; 
    } 
    else 
    { 
     pathToReturn = currPath->next; 
     currPath = pathToReturn; 
    } 

    return pathToReturn;  
} 

当初、「currPathは」NULLとあなたのリストの先頭「getNextPath」の最初の呼び出しになりますが返されます。そうでなければ、前のパスの "次"(前のパスは "getNextPath"の最後の呼び出しで返されたパスです)が返され、関数の次の呼び出しのために格納されます)。

0

私は私のPath_tリストを埋め終わったとき、私はPath_t dirリストの先頭を与え、私は本当に私の場合には、グローバル変数を使用することはできませんので、私は

typedef struct { 
     int type; 
     clock_t appear; 
     int x; 
     int y; 
     int health; 
     float freq; 
     Path_t dir; //for the current Path 
     Shot_t * shot; 
     char ** shape; 
     Path_t * path; 
    }Invader_t; 

と右のようなものをやりました私が侵入者を動かすたびに、私はPath_t * dirの値を変更し、うまく動作します。