2 dias y no veo que fallo.

Iniciado por raulpixardo, 20 Noviembre 2015, 21:32 PM

0 Miembros y 1 Visitante están viendo este tema.

raulpixardo

Buenas chicos estoy empezando con java y me estoy desesperando, me mandan un ejercicio "basico" y tengo que entregarlo el domingo y ya como ultima opcion a la desesperacion os pediria ayuda. Uso eclipse kepler. Todo a nivel principiante.

el enunciado del ejercicio es el siguiente.

Juego tanques:
Por otra parte el alumno debe generar un programa en Java que simule el juego de ataque mutuo.

Para ello se dispondrá de una clase Tanque, que tendrá una posición determinada en el tablero (dos coordenadas).
Se deben realizar dos constructores de la clase Tanque, una sin parámetros (que automáticamente asigne una posición al tanque, entre 0 y 20). Y otro donde se le pasen las coordenadas del mismo.
El alumno debe decidir que información (atributos) además deberá incluir en dicha clase Tanque.
El juego consiste en que alternativamente, los participantes (Tanques), utilizarán un método llamado disparaTanque() que solicitará al usuario dos coordenadas de disparo.
El tanque que primero alcance al otro habrá ganado el juego.
Se debe crear además un método llamado moverTanque(int direccion), que reciba un número según la dirección en la que se desee mover el tanque. Si el tanque está en una posición hay ocho posibles direcciones de movimiento.
Para probar dichas, se debe crear un programa principal con el método main(), lance el juego en una clase llamada LanzaJuegoTanques.


Bien ahora creo la primera clase Tanque:
Código (java) [Seleccionar]

package Tanque;

import java.util.Random;

public class Tanque {

private int coorX;
private int coorY;
private int coordisparo1;
private int coordisparo2;

public int getCoorX() {
return coorX;
}
public void setCoorX(int coorX) {
this.coorX = coorX;
}
public int getCoorY() {
return coorY;
}
public void setCoorY(int coorY) {
this.coorY = coorY;
}
public int getCoordisparo1() {
return coordisparo1;
}
public void setCoordisparo1(int coordisparo1) {
this.coordisparo1 = coordisparo1;
}
public int getCoordisparo2() {
return coordisparo2;
}
public void setCoordisparo2(int coordisparo2) {
this.coordisparo2 = coordisparo2;
}

public Tanque(int coorX, int coorY) {
this.coorX = coorX;
this.coorY = coorY;
}
public Tanque() {
Random r = new Random();
coorX = r.nextInt(21);
coorY = r.nextInt(21);
}
public String toString() {
return "Tanques [coordenadaX=" + coorX + ", coordenadaY="
+ coorY + "]";
}

public void dispararTanque(int x, int y){
System.out.println("Se ha disparado a la posición "+x+","+y);
}

public void moverTanque(int direccion) {
switch (direccion) {
case 1:
coorX = 0;
coorY = 0;
break;
case 2:
coorX = 1;
coorY = 0;
break;
case 3:
coorX = 2;
coorY = 0;
break;
case 4:
coorX = 0;
coorY = 1;
break;
case 5:
coorX = 2;
coorY = 1;
break;
case 6:
coorX = 0;
coorY = 2;
break;
case 7:
coorX = 1;
coorY = 2;
break;
case 8:
coorX = 2;
coorY = 2;
break;
}
}


}

Y el main LanzaJuegoTanques:
package Tanque;

import java.util.Scanner;

public class LanzaJuegoTanque {

public static void main(String[] args) {
int direccionT1;
int direccionT2;
int ganador=0;

Scanner sc1 = new Scanner(System.in);
Scanner sc2 = new Scanner(System.in);
Tanque t1 = new Tanque();
Tanque t2= new Tanque(1,1);

do{
System.out.println("TANQUE 1\nIntroduzca la direccion a la que se desea mover:");
direccionT1 = sc1.nextInt();
t1.moverTanque(direccionT1);

System.out.println("TANQUE 2\nIntroduzca la direccion a la que se desea mover:");
direccionT2 = sc2.nextInt();
t2.moverTanque(direccionT2);

System.out.println("Turno TANQUE 1");
t1.dispararTanque(direccionT1, direccionT2);
if((t1.getCoordisparo1()==t2.getCoorX())&&(t1.getCoordisparo2()==t2.getCoorY())){
System.out.println("El TANQUE 1 es el ganador del juego.");
ganador=1;
break;
}

System.out.println("Turno TANQUE 2");
t2.dispararTanque(direccionT1, direccionT2);
if((t2.getCoordisparo1()==t1.getCoorX())&&(t2.getCoordisparo2()==t1.getCoorY())){
System.out.println("El TANQUE 2 es el ganador del juego.");
ganador=1;
break;
}
}while(ganador!=0);


sc1.close();
sc2.close();
}

}

haber si hay algun alma caritativa y me echa una mano, infinitas gracias

[MOD] para publicar codigo, usar etiquetas GeSHi.

DarK_FirefoX

Aja! ¿Y cuál es el problema? ¿Qué no sabes hacer? ¿En qué te has trabado?

Recuerda plantear bien tus preguntas, y no plantear el enunciado de un ejercicio/problema/tarea, pues no se resuelven tareas.

¿Qué has hecho? ¿Qué has pensado?

Plantea tus dudas concretas y bien planteadas para poder ayudarte.

Salu2s

0xFer

Como dice DarK_FirefoX, es muy difícil recibir ayuda si no estás diciendo cuál es el problema, así que sólo queda tratar de adivinar.

Creo que las posiciones posibles es de 21x21, teniendo en cuenta eso la forma en la que tu código hace los movimientos está mal porque va de la posición 0 a 2 en x y 0 a 2 en y. debería ser así:

pongamos que  estas en una posicion así

11   12   13
21  *22   23
31   32   33

tú estás en 22, es decir cuando x = 2, y = 2, si te quieres mover hacia arriba simplemente tienes que decrementar a x, la nueva posición sería 12, x = 1, y = 2. si te quieres mover a 33 tienes que incrementar tanto a x como a y.

otra cosa, estás confundiendo la coordenada en la que se quiere mover el tanque con la coordenada en la que quiere disparar.

saludos
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

raulpixardo

#3
en ningun momento he pedido que me resolvais el ejercicio si fuera asi habria puesto el enunciado sin mas no? jejej
Pues mis dudas son:
-El bucle no se me crea por algun error que estoy confundido con la posicion de los tanques y el disparo.
-cuando meto las coordenadas a un tanque las toman los 2 tanque y automaticamente los 2 tanques disparan a la misma posicion
-No me guarda las posiciones de los tanques.
- No se que más, tengo la cabeza ya que no se ni lo que veo jajajajaj

gracias por contestarme haber si sacamos el ejercicio jeje