2010-07-29 80 views
0

的問題,我有這個代碼的問題:noob問題(JAVA):用簡單的戰艦遊戲

import java.util.Random; 

public class DotComObjects { 

public int[][] setBarcos(int tablero[][]) { 

    boolean repetido; //Variable booleana para comprobar si una casilla ya esta ocupada por otro barco 

    do { 

    repetido = false; //Suponesmos que no esta ocupada ninguna de las casillas 
    Random aRandom = new Random(); 
    boolean horizontal = aRandom.nextBoolean(); //Booleana al azar para la colocacion del barco. True = horizontal, false = vertical 

    if (horizontal == true) { //Si el barco va en horizontal 

    int ancho = aRandom.nextInt(tablero.length - 2); //Calculamos al azar la casilla 
    int alto = aRandom.nextInt(tablero[0].length); //central del barco (tendra 3) 

    if ((tablero[ancho - 1][alto] == 1) || (tablero[ancho][alto] == 1) || (tablero[ancho + 1][alto] == 1)) { //Si una de las casillas ya esta ocupada 

    repetido = true; //Variable booleana repetida en true 

    } 

    } else { //Si el barco va en vertical 

    int ancho = aRandom.nextInt(tablero.length); //Calculamos al azar la casilla 
    int alto = aRandom.nextInt(tablero[0].length - 2); //central del barco (tendra 3) 

    if ((tablero[ancho][alto - 1] == 1) || (tablero[ancho][alto] == 1) || (tablero[ancho][alto + 1] == 1)) { //Si una de las casillas ya esta ocupada 

    repetido = true; //Variable booleana repetida en true 
    } 

    } 

    } while (repetido == true); //Repetimos hasta que no haya una casilla ocupada (variable repetido = false) 

*** if (horizontal == true) { //Si el barco va en horizontal 

*** tablero[ancho - 1][alto] = 1; 
*** tablero[ancho][alto] = 1; //Colocamos el barco en el tablero 
*** tablero[ancho + 1][alto] = 1; 

    } else { //Si el barco va en vertical 

*** tablero[ancho][alto - 1] = 1; 
*** tablero[ancho][alto] = 1; //Colocamos el barco en el tablero 
*** tablero[ancho][alto + 1] = 1; 

    } 

    return tablero; //Devolvemos el tablero con el barco colocado 

} 

} 

及其對***秒。 3個變量的問題相同:水平/ ancho/alto無法解析爲變量。

謝謝。

+0

您可以嘗試重新格式化您之前的消息並在整個代碼周圍使用代碼塊嗎?它會使閱讀更容易。 – Chrisc 2010-07-29 16:00:30

+0

如果您的問題已解決,最好通過單擊旁邊的複選標記來選擇一個已發佈的解決方案作爲答案。 – Joel 2010-07-31 01:26:48

回答

3

這是一個關鍵的範圍界定問題。

所有這三個變量都在do {] while循環內聲明,因此它們不在其外部。

爲了解決這個問題,移動聲明到do ... while循環內聲明的do

boolean repetido; //Variable ..... 
boolean horizontal = false; 
int ancho = 0; 
int alto = 0; 
do { 

    repetido = false; //Suponesmos ... 
    Random aRandom = new Random(); 
    horizontal = aRandom.nextBoolean(); 
    ancho = aRandom.nextInt(tablero.length - 2); //Calculamos ... 
    alto = aRandom.nextInt(tablero[0].length); //central ... 
+0

Thx很多。不知道這件事。 – Javi 2010-07-29 21:33:10

0

你的變量之前,所以他們不能在循環的外部訪問。

+0

你也是。正如我所說,不知道它。 – Javi 2010-07-29 21:33:41