2008-12-16 77 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]”?