zezepee Posted November 27, 2009 at 05:00 PM Report Share #297796 Posted November 27, 2009 at 05:00 PM Neste programa a ideia é introduzir de uma maneira aleatória barcos, para o jogo da batalha naval, 1 de 4, 2 de 3, 3 de 2 canos e 1 de 1 cano. No momento ainda só tenho o de 4 mas este não aparece numa posição aleatória mas sim sempre na mesma. Nota: o porta-aviões (5) já é dado inicialmente o que quer dizer que os outros barcos terão que aparecer em posições diferentes à do porta-aviões, o que ainda não acontece... Por enquanto o que me aperece é isto, por exemplo: ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 5 4 5 ~ ~ ~ ~ ~ ~ ~ ~ 4 ~ ~ ~ ~ ~ ~ ~ ~ ~ 4 ~ ~ ~ ~ ~ ~ ~ ~ ~ 4 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 4 ~ ~ ~ ~ ~ ~ ~ ~ ~ 4 ~ ~ ~ ~ ~ ~ ~ ~ ~ 4 ~ ~ ~ ~ ~ ~ ~ ~ ~ 4 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 5 ~ ~ ~ ~ ~ ~ ~ 5 5 5 ~ ~ ~ ~ ~ ~ ~ ~ ~ 5 ~ ps: este é a class principal, public class Board { private final char[][] board; public Board(final char[][] board) { this.board = board; } public int linha = 1; public int coluna = 1; Coordinate randomCoordinate = new Coordinate(linha, coluna); public int cont = 0; public char b4 = '4'; //b4 = barco de 4 canos public char b3 = '3'; //b3 = barco de 3 canos public char b2 = '2'; //b2 = barco de 2 canos public char b1 = '1'; //b1 = barco de 1 canos public void completarBarco4Canos() { for(int x = 0; x < board.length - 1; x++) { for(int y = 0; y < board[x].length - 1; y++) { if(board[x][y] == b4 && cont < 3) { board[x + 1][y] = b4; cont++; } } } } public void randomlyDeployBoats(final int[] numberOfBoatsPerSize) { randomCoordinate = CoordinateRandomizer.randomCoordinate(li… coluna); board[linha][coluna] = b4; completarBarco4Canos(); } } este e que é o codigo da class que gera numeros aleatorios: import java.util.Random; public class CoordinateRandomizer { private static Random randomizer = new Random(); public static Coordinate randomCoordinate(final int numberOfLines, final int numberOfColumns) { int line = randomizer.nextInt(numberOfLines); int column = randomizer.nextInt(numberOfColumns); return new Coordinate(line, column); } public static Coordinate nextCoordinate(final int numberOfLines, final int numberOfColumns, final Coordinate coordinate) { int line = coordinate.getLine(); int column = coordinate.getColumn() + 1; if (column == numberOfColumns) { column = 0; line++; if (line == numberOfLines) { line = 0; } } return new Coordinate(line, column); } } Link to comment Share on other sites More sharing options...
brunoais Posted May 28, 2010 at 02:56 PM Report Share #330320 Posted May 28, 2010 at 02:56 PM O teu problema é que tu confias, às cegas, no que o Random devolve como as coordenadas correctas para o próximo barco. Isso não pode acontecer se queres evitar erros. O que tu deves fazer é: Depois de um Random devias verificar se o que ele indica é válido. Se n o for tentas outra vez. "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now