Jump to content
playerVfox

Trabalhando no jogo Batalha Naval

Recommended Posts

playerVfox

Oi pessoal tudo bem? Estou fazendo um jogo de batalha naval mas agora fiquei engatado no projecto:

Gostaria, a partir de um arrasto de uma label(barco) para um tabuleiro(gerado com ciclo "for" feito em botões), quero que a imagem dos botões mude consoante o sítio onde eu deixar a label para assim formar um barco com a imagem nos botões. Estou utilizando as funções de “mouse” (“mousePressed”, “mouseDragged”, “mouseReleased”). Não sei como fazer isso, mas talvez tenha a ver com as coordenadas onde

deixamos a label, ou a posição onde o rato deixou a label.

Têm alguma forma de fazer isso? Se tiverem alguma dúvida no problema

posso anexar o projecto.

Cumprimentos para todos.

Share this post


Link to post
Share on other sites
Knitter

A forma como fazes isso depende um pouco dos componentes que usas. Não sei se usar botões é mais simples ou mais complicado que usar, por exemplo, JTable. Sem saber bem como tens o código é complicado dar sugestões mas dá uma vista de olhos ao tutorial de drag'n drop da Sun, http://java.sun.com/docs/books/tutorial/uiswing/dnd/index.html e a este blog que tem exemplos de uso "melhorado", http://www.jroller.com/gfx/page/Archives

Share this post


Link to post
Share on other sites
playerVfox

Boas pessoal, tudo bem?

Ainda no mesmo projecto, estou tentando fazer a parte jogador contra

cpu, mas não consigo distribuir os barcos do cpu pela matriz lógica

sem que os barcos fiquem uns em cima dos outros. Podem-me indicar que

fazer com este código para que os barcos fiquem espalhados

aleatoriamente sem estarem uns por cima dos outros?

import java.util.Random;

public class MatrizCpu {
     public static int[ ][ ] matrizJogador2 = new int[10][10];

    public static void main(String args[ ]) {
        posicaoNavios();
        imprimeTabuleiro();
    }

public static void posicaoNavios() {
        int minas = 2;
        int submarino = 3;
        int fragata = 6;
        int batalha = 4;
        int avioes = 5;
        Random rnd = new Random();
        int x, y;

        do {
            x = rnd.nextInt(9);
            y = rnd.nextInt(9);
        } while (matrizJogador2[y] != 0);
        //Caça-Minas
        if (((x + 1) <= 9) && (minas == 2)) { //Posicionar o navio
Minas no tabuleiro cpu
            matrizJogador2[y] = minas;
            matrizJogador2[x + 1][y] = minas;
            minas = 0;                     //O navio Minas fica
bloqueado, nao volta a ser posicionado
        } else {
            minas = 2;
            posicaoNavios();
        }
        //Submarino
        if (((x + 2) <= 9) && (submarino == 3)) { //Posicionar o navio
Minas no tabuleiro cpu
            matrizJogador2[y] = submarino;
            matrizJogador2[x + 1][y] = submarino;
            matrizJogador2[x + 2][y] = submarino;
            submarino = 0;                     //O navio Minas fica
bloqueado, nao volta a ser posicionado
        } else {
            submarino = 3;
            posicaoNavios();
        }
        /*//fragata
        if (((x + 2) <= 9) && (fragata == 6)) { //Posicionar o navio
Minas no tabuleiro cpu
            matrizJogador2[y] = fragata;
            matrizJogador2[x + 1][y] = fragata;
            matrizJogador2[x + 2][y] = fragata;
            fragata = 0;                     //O navio Minas fica
bloqueado, nao volta a ser posicionado
        } else {
            submarino = 3;
            posicaoNavios();
        }
        //navio de batalha
        if (((x + 3) <= 9) && (batalha == 4)) { //Posicionar o navio
Avioes no tabuleiro cpu
            matrizJogador2[y] = batalha;
            matrizJogador2[x + 1][y] = batalha;
            matrizJogador2[x + 2][y] = batalha;
            matrizJogador2[x + 3][y] = batalha;

            batalha = 0;                     //O navio Avioes fica
bloqueado, nao volta a ser posicionado
        } else {
            batalha = 4;
            posicaoNavios();
        }
        //Porta-Aviões
        if (((x + 4) <= 9) && (avioes == 5)) { //Posicionar o navio
Avioes no tabuleiro cpu
            matrizJogador2[y] = avioes;
            matrizJogador2[x + 1][y] = avioes;
            matrizJogador2[x + 2][y] = avioes;
            matrizJogador2[x + 3][y] = avioes;
            matrizJogador2[x + 4][y] = avioes;
            avioes = 0;                     //O navio Avioes fica
bloqueado, nao volta a ser posicionado
        } else {
            avioes = 5;
            posicaoNavios();
        }*/
    }

public static void imprimeTabuleiro() { //aparecer tabela na linha de
comandos
        System.out.println("    0   1   2   3   4   5   6   7   8
9"); //numero da coluna
        System.out.println("
_______________________________________");
        for (int l = 0; l <= 9; l++) {//preenche as linhas com
elementos de 0 a 9
            System.out.print(l + " ");   //numero da linhas do lado do
tabuleiro
            for (int c = 0; c <= 9; c++) {//preenche as colunas com
elementos de 0 a 9//
                System.out.print("| " + matrizJogador2[c][l] + " ");
            }
            System.out.println("|");
            System.out.println("_______________________________________");
        }
    }

} 

Share this post


Link to post
Share on other sites
Pontus

Boas. Dei uma vista de olhos rápida, e penso que o que está a falhar é uma verificação antes de colocares as peças no tabuleiro, ou seja, antes de colocares um navio, tens de verificar se o espaço já esta preenchido e com o que

Share this post


Link to post
Share on other sites
overload

Viva,

playerVfox, tou com o mesmo problema mas para um programa (Sopa de letras) em que tenho de colocar palavras predefinidas, aleatoriamente no tabuleiro nas 8 direcções dos pontos cardeais. O problema é que não tou a ver como verifico se as posições do array estão vazias e se a palavra me vai caber dentro do tabuleiro.

Se pudesses enviar-me essa parte do código, agradecia.

Obrigado.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.