2013-12-15 125 views
-1

我想調用一個函數,它會在我的地圖上顯示一個俄羅斯方塊形狀。下面的函數包含所有不同的俄羅斯方塊形狀,它需要一個參數ShapeType以便它知道要放下哪個形狀。該參數將是隨機的,但我們將以1爲例。調用void函數

void TetrisShapes(char ShapeType){ 
    if (ShapeType == 1){ 
     Map[0][0] = ' '; Map[1][0] = 'X'; Map[2][0] = ' '; Map[3][0] = ' '; 
     Map[0][1] = ' '; Map[1][1] = 'X'; Map[2][1] = ' '; Map[3][1] = ' '; 
     Map[0][2] = ' '; Map[1][2] = 'X'; Map[2][2] = 'X'; Map[3][2] = ' '; 
     Map[0][3] = ' '; Map[1][3] = ' '; Map[2][3] = ' '; Map[3][3] = ' '; 
    } 

    if(ShapeType == 2){ 
     Map[0][0] = ' '; Map[1][0] = ' '; Map[2][0] = ' '; Map[3][0] = ' '; 
     Map[0][1] = ' '; Map[1][1] = 'X'; Map[2][1] = 'X'; Map[3][1] = ' '; 
     Map[0][2] = 'X'; Map[1][2] = 'X'; Map[2][2] = ' '; Map[3][2] = ' '; 
     Map[0][3] = ' '; Map[1][3] = ' '; Map[2][3] = ' '; Map[3][3] = ' '; 
    } 
} 

一旦形狀被選擇,我們採取的形狀,並調用它,並與特定的座標ShapePosXShapePosY你可以看到下面

Map[ShapePosX][ShapePosY] = TetrisShapes(1); 

現在我的問題是,將其放置在地圖上我不能調用上面的行,因爲該函數是無效的,並且不會返回任何東西..但是它應該返回顯示在ShapePosXShapePosY的座標中的俄羅斯方塊片段的數組。

我該怎麼做才能在這個特定問題中調用函數?謝謝

+0

我會建議讀一本書在'C'上。調用一個函數並返回值是關於函數編程最基本的組成部分。 –

+0

是否有任何特定的原因,你爲什麼選擇了返回類型'void',儘管你顯然想要返回一些東西? – Mario

+1

從代碼判斷,Map是一個在函數外定義的全局變量。第二個片段,任務,也使用一個名爲'Map'的變量;這也是全球變量嗎?在表面上,你只需要調用'TetrisShapes(1);'而不需要任何賦值,並且全局變量將被初始化。如果您需要將「Map」數組頂部的素材複製到其他地方,則可以最有效地將目標(「ShapePosX」和「ShapePosY」)作爲額外參數傳遞給「TetrisShapes()」,並安排代碼在那裏放置形狀在正確的地方。 –

回答

2

由於您使用C++進行編程,因此可以將數組作爲參數傳遞給函數。

所以基本上你的函數的原型變爲:

void TetrisShapes(char ShapeType, char Map[][3]) 

然後,假設你已經宣佈陣圖,你會打電話給你的功能:

TetrisShapes(1, Map);