2013-01-08 119 views
0

我試圖初始化一個數組來存儲蛇的段爲一蛇遊戲「int」類型的參數與類型「segment *」的參數不兼容 - 爲什麼它不接受對象?

類型「段」的結構在這裏被定義

typedef struct snakeSegment { 
    int x,y; 
    }segment 

然後我聲明蛇的結構(由段組成)

struct snakeSegment snake[200]; 

以下代碼是蛇陣列的初始化

/*****************************************/ 
/* Create snake array of length snake_length */ 
void initSnake(segment snake[], int snake_length) 
{ 
    int x = 50; 
    int y = 50; 
    snake[0].x= x; 
    snake[0].y= y; 
    for (int i = 1; i < 21; i++) 
    { 
    snake[i].x= snake[i-1].x; 
    snake[i].y= snake[i-1].y; 
    x++; 
    } 
} 

它達到一個問題一旦進入的主要方法和改掉運行initSnake()函數

這裏的主要功能是

int main() { 
    initDevices(); 
    remainingSnakes = initGame(); 
    while (remainingSnakes) { 
    // waitForStart(); 
    snakeInPlay= 1; 
    currentDirection= 'N'; 
    initSnake(snake_length, snake); 
    renderSnake(snake_length); 
    }} 

在initSnake()的代碼行,它產生編譯時發生此錯誤:類型爲「int」的 與類型爲「segment *」的參數不兼容

我問過我的同事,有些人似乎有此問題。我們會尋找替代解決方案,但我們提供了一個不會有太大改變的主要功能。 任何反饋將不勝感激,因爲我不知道爲什麼我收到此錯誤。謝謝!

這裏是我們想用的模型針對的主要功能:

initialiseDevices(); 
remainingSnakes= initialiseGame(); 
while (remainingSnakes) { 
waitForStart(); 
snakeInPlay= 1; 
currentDirection= N; 
snakeLength= 10; 
initialiseSnake(snake, snakeLength); 
renderSnake(snake, snakeLength); 
while (snakeInPlay) { 
newDirection= ReadBoardAngle(); 
currentDirection= moveSnake (snake, newDirection, snakeLength); 
snakeInPlay= testSnakeCollision(snake, snakeLength); 
delay(); 
} 
} 
+1

的它出現的參數'initSnake ()'的順序是錯誤的。 – hmjd

+1

*我問過我的同事,有些人似乎有這個問題。*你問過多個人,但沒有人發現這個問題? – cnicutar

+0

你能告訴我們正在學習一學期的工作嗎?沒有太多的C經驗。我不知道他們的順序會導致任何問題... –

回答

3

這是不是你的參數函數有:initSnake(snake_length, snake);

你可能是指initSnake(snake, snake_length);

+0

這是問題,我是一個扳手 –

1

看起來你切換參數定義的函數和調用它之間initSnake。

3

你有它編寫方式,參數snakesnake_length被顛倒,所以你試圖傳遞一個int它期待蛇*。

2

您以錯誤的順序傳遞參數。

你的方法簽名是:

void initSnake(segment snake[], int snake_length) 

你傳入:

initSnake(snake_length, snake); 

您傳遞int值作爲第一個參數,而不是segment陣列

相關問題