2008-12-16 75 views
0

我工作在一個非常簡單的遊戲(主要是冰滑動拼圖),現在在一個文件中,唯一地把整個事情是完全空白的任何形式的障礙的。它引發了一些錯誤。我目前的煩惱是一個預期的主要表達錯誤,誰能告訴我如何解決它(它拋出了99行)?C++預期主要表達

這裏的整個事情,

#include <allegro.h> 

BITMAP* buffer; 

int x = 15; 
int y = 11; 

int tempX = 15; 
int tempY = 11; 

//This will be our background, 1 = clouds, 2 = brick, 3 = floor 
int map[24][32] = {{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
        {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
        {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
        {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
        {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
        {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
        {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
        {1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1}, 
        {1,1,1,1,1,1,1,1,1,1,2,3,3,3,3,3,3,3,3,3,2,1,1,1,1,1,1,1,1,1,1,1}, 
        {1,1,1,1,1,1,1,1,1,1,2,3,3,3,3,3,3,3,3,3,2,1,1,1,1,1,1,1,1,1,1,1}, 
        {1,1,1,1,1,1,1,1,1,1,2,3,3,3,3,3,3,3,3,3,2,1,1,1,1,1,1,1,1,1,1,1}, 
        {1,1,1,1,1,1,1,1,1,1,2,3,3,3,3,3,3,3,3,3,2,1,1,1,1,1,1,1,1,1,1,1}, 
        {1,1,1,1,1,1,1,1,1,1,2,3,3,3,3,3,3,3,3,3,2,1,1,1,1,1,1,1,1,1,1,1}, 
        {1,1,1,1,1,1,1,1,1,1,2,3,3,3,3,3,3,3,3,3,2,1,1,1,1,1,1,1,1,1,1,1}, 
        {1,1,1,1,1,1,1,1,1,1,2,3,3,3,3,3,3,3,3,3,2,1,1,1,1,1,1,1,1,1,1,1}, 
        {1,1,1,1,1,1,1,1,1,1,2,3,3,3,3,3,3,3,3,3,2,1,1,1,1,1,1,1,1,1,1,1}, 
        {1,1,1,1,1,1,1,1,1,1,2,3,3,3,3,3,3,3,3,3,2,1,1,1,1,1,1,1,1,1,1,1}, 
        {1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1}, 
        {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
        {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
        {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
        {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
        {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
        {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}}; 

//This will contain all the objects, 100 = player 
int objMap[24][32] = {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}; 

void setupGame(){ 

    buffer = create_bitmap(640, 480); 

    for (int i = 0; i <= 24; i++){ 

     for(int t = 0; t <= 32; t++){ 

      if(map[i][t] == 1) rectfill(buffer, t * 20, i * 20, (t + 1) * 20, (i + 1) * 20, makecol(128, 255, 255)); 
      else if(map[i][t] == 2) rectfill(buffer, t * 20, i * 20, (t + 1) * 20, (i + 1) * 20, makecol(255, 128, 0)); 
      else if(map[i][t] == 3) rectfill(buffer, t * 20, i * 20, (t + 1) * 20, (i + 1) * 20, makecol(0, 0, 255)); 

      }  

    } 

    for (int i = 0; i <= 24; i++){ 

     for(int t = 0; t <= 32; t++){ 

      if(objMap[i][t] == 100) circlefill(buffer, (t * 20) + 10, (i * 20) + 10, 10, makecol(255, 255, 0)); 

      }  

    } 

    draw_sprite(screen, buffer, 0, 0); 

} 

void movePlayer(){ 

    tempX = x; 
    tempY = y; 

    if (key[KEY_UP] && map[y - 1][x] == 3){ 
      for ([y - 1][x] == 3; --y){ // these lines are the ones    
       } 
       } 

    else if(key[KEY_DOWN] && map[y + 1][x] == 3){ 
      for ([y + 1][x] == 3; ++y){ 
       } 
       } 

    else if(key[KEY_RIGHT] && map[y][x + 1] == 3){ 
      for ([y][x + 1] == 3; ++x){ 
       } 
       } 

    else if(key[KEY_LEFT] && map[y][x - 1] == 3){ 
      for ([y][x - 1] == 3; --x){ 
       } 
       } 

    acquire_screen(); 

    rectfill(buffer, tempX * 20, tempY * 20, (tempX + 1) * 20, (tempY + 1) * 20, makecol(255, 0, 0)); 

    circlefill(buffer, (x * 20) + 10, (y * 20) + 10, 10, makecol(255, 255, 0)); 

    draw_sprite(screen, buffer, 0, 0); 
    release_screen(); 

    rest(20); 
} 

int main(){ 

    allegro_init(); 
    install_keyboard(); 
    set_color_depth(16); 
    set_gfx_mode(GFX_AUTODETECT, 640, 480, 0, 0); 

    setupGame(); 

    while(!key[KEY_ESC]){ 

      modePlayer(); 

    } 

    return 0; 

} 

END_OF_MAIN(); 

,這裏是壓垮部分;

void movePlayer(){ 

    tempX = x; 
    tempY = y; 

    if (key[KEY_UP] && map[y - 1][x] == 3){ 
      for ([y - 1][x] == 3; --y){    
       } 
       } 

    else if(key[KEY_DOWN] && map[y + 1][x] == 3){ 
      for ([y + 1][x] == 3; ++y){ 
       } 
       } 

    else if(key[KEY_RIGHT] && map[y][x + 1] == 3){ 
      for ([y][x + 1] == 3; ++x){ 
       } 
       } 

    else if(key[KEY_LEFT] && map[y][x - 1] == 3){ 
      for ([y][x - 1] == 3; --x){ 
       } 
       } 

這是它不喜歡的線條。

感謝,如果你可以提供幫助。

+0

如果您要在您的代碼中引用行號,那麼至少在該行所在的代碼塊中有文檔。 – eduffy 2008-12-16 19:45:02

回答

3

這可能幫助:

void movePlayer(){ 

    tempX = x; 
    tempY = y; 

    if (key[KEY_UP] && map[y - 1][x] == 3) 
     for (; map[y - 1][x] == 3; --y){    
     } 

    else if(key[KEY_DOWN] && map[y + 1][x] == 3) 
     for (; map[y + 1][x] == 3; ++y){ 
     } 

    else if(key[KEY_RIGHT] && map[y][x + 1] == 3) 
     for (; map[y][x + 1] == 3; ++x){ 
     } 

    else if(key[KEY_LEFT] && map[y][x - 1] == 3) 
     for (; map[y][x - 1] == 3; --x){ 
     } 
+0

結合這與答案的答案,這是完美的,謝謝:D – user33061 2008-12-16 19:54:46

+0

我不相信我曾經寫這樣可怕的代碼。 – pyon 2012-11-20 10:18:55

4

的爲()statment採用由分隔開的三個部分 ';'

for(<init>;<test>;<post>) 
{ 
} 

任何這三個部分可以是空的,但「;」必須在那裏。

您也想你應該在每對()語句測試部分索引的對象。

for(; map[BLA][BLA] == <VALUE>;<INC>) 
6

這到底是怎麼回事?

[y - 1][x] == 3 

您是不是要找:

map[y - 1][x] == 3 
1

你的 「for」 循環缺少的部分。通常有三部分:初始化,條件和後迭代操作。從我可以告訴的是,你有最後兩個,但沒有初始化。編譯器目前解釋第一個 「for」 循環,例如,如:

  1. 檢查3反對[Y-1] [X]
  2. 雖然0 =(遞減Y的結果)...
  3. 什麼就做什麼

我想你的意思出現的情況是:

  1. 假設一切都被初始化
  2. 雖然3 == [Y-1] [X] ...
  3. 做力所能及的事,和減量ÿ每次迭代後

如果是的話,這應該是這樣的:

for (; [y-1][x]==3; --y) 
{ 
    // do whatever 
} 

這適用於所有「for」循環。

的另一個問題是,你是不是使用一個數組變量,但只是用指數偏移。你的意思是說「map [y-1] [x]」?