2013-05-16 78 views
0

好吧我卡在我的程序的特定部分。 我試圖根據它在2D數組中的位置來繪製矩形迭代和繪圖C++

2D數組存儲我試圖使用畫布繪製的迷宮(以文本/字符形式)。 例如,它存儲這樣的:

AAAAAAAAAAAAAAAAAAA 
A     A 
A     A 
A     A 
A     A 
A     A 
A     A 
AAAAAAAAAAAAAAAAAAA 

我曾寫過這樣我的代碼:

void MazeGame::DrawMap(Canvas &canvas, char (&map)[26][20]) 
{ 
    double drawx = 200; 
    double drawy = 200; 
     for(int i = 0; i < 20; i++) 
     { 
      for(int j = 0; j < 26; j++) 
      { 
       if(map[i][j] == 'A') 
       { 
        drawx+=10; 
        drawy+=10; 
        canvas.DrawFillRect(drawx*j, drawy, 10, 10); 

       } 
      } 

     } 

在canvas.DrawFillRect參數,前兩個參數是x & y座標/值和最後兩個是寬度&矩形的長度

有人告訴我,我的錯誤是,我沒有修改drawx和drawy,而是修改我& j 。我知道我需要在DrawFillRect的參數中,但是我只是沒有看到任何其他寫這個的方式,而沒有它看起來要修改我& j。

我想,如果我修改drawx & drawy,它會得出正確的迷宮

有什麼建議?真的卡住了這一點,我不是很擅長C++

+0

小心你的範圍在'我和j'。 'i'應該取26的範圍,或者參數必須是'char map [20] [26]'。 – mr5

回答

0

我不確定你是否有意圖開始繪製200像素,所以我只是添加變量來處理它。你需要做的是以10像素爲間隔繪製矩形,基於x和y座標,由ij給出。示例:如果j爲2,則width*j將爲您提供第三列矩形的x座標,或從左邊開始的20像素。變量offsetxoffsety用於控制從側面和頂部開始繪製多遠。 width,height,offsetxoffsety不需要改變,因爲它們定義設置的像素量。 ij是這裏需要改變的唯一變量,因爲它們將字符從數組中取出,並告訴程序在哪裏繪製。

void MazeGame::DrawMap(Canvas &canvas, char (&map)[26][20]) 
{ 
    double width = 10; // define the width and height here so that if they need 
    double height = 10; // to change, it's all in one place 
    double offsetx = 200; 
    double offsety = 200; 
    for(int i = 0; i < 20; i++) 
    { 
     for(int j = 0; j < 26; j++) 
     { 
      if(map[i][j] == 'A') 
      { 
       canvas.DrawFillRect(width * j + offsetx, 
            height * i + offsety, 
            width, height); 
      } 
     } 
    } 
+0

是啊多數民衆贊成在我的意思是「drawx」和「drawy」 - 開始繪製200像素 – user2188311

+0

我試過類似的東西,但它沒有工作好 – user2188311

+0

我的代碼碰巧爲你工作嗎? – jonhopkins