elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  2 dias y no veo que fallo.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: 2 dias y no veo que fallo.  (Leído 2,101 veces)
raulpixardo

Desconectado Desconectado

Mensajes: 2


Ver Perfil
2 dias y no veo que fallo.
« en: 20 Noviembre 2015, 21:32 pm »

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
  1. package Tanque;
  2.  
  3. import java.util.Random;
  4.  
  5. public class Tanque {
  6.  
  7. private int coorX;
  8. private int coorY;
  9. private int coordisparo1;
  10. private int coordisparo2;
  11.  
  12. public int getCoorX() {
  13. return coorX;
  14. }
  15. public void setCoorX(int coorX) {
  16. this.coorX = coorX;
  17. }
  18. public int getCoorY() {
  19. return coorY;
  20. }
  21. public void setCoorY(int coorY) {
  22. this.coorY = coorY;
  23. }
  24. public int getCoordisparo1() {
  25. return coordisparo1;
  26. }
  27. public void setCoordisparo1(int coordisparo1) {
  28. this.coordisparo1 = coordisparo1;
  29. }
  30. public int getCoordisparo2() {
  31. return coordisparo2;
  32. }
  33. public void setCoordisparo2(int coordisparo2) {
  34. this.coordisparo2 = coordisparo2;
  35. }
  36.  
  37. public Tanque(int coorX, int coorY) {
  38. this.coorX = coorX;
  39. this.coorY = coorY;
  40. }
  41. public Tanque() {
  42. Random r = new Random();
  43. coorX = r.nextInt(21);
  44. coorY = r.nextInt(21);
  45. }
  46. public String toString() {
  47. return "Tanques [coordenadaX=" + coorX + ", coordenadaY="
  48. + coorY + "]";
  49. }
  50.  
  51. public void dispararTanque(int x, int y){
  52. System.out.println("Se ha disparado a la posición "+x+","+y);
  53. }
  54.  
  55. public void moverTanque(int direccion) {
  56. switch (direccion) {
  57. case 1:
  58. coorX = 0;
  59. coorY = 0;
  60. break;
  61. case 2:
  62. coorX = 1;
  63. coorY = 0;
  64. break;
  65. case 3:
  66. coorX = 2;
  67. coorY = 0;
  68. break;
  69. case 4:
  70. coorX = 0;
  71. coorY = 1;
  72. break;
  73. case 5:
  74. coorX = 2;
  75. coorY = 1;
  76. break;
  77. case 6:
  78. coorX = 0;
  79. coorY = 2;
  80. break;
  81. case 7:
  82. coorX = 1;
  83. coorY = 2;
  84. break;
  85. case 8:
  86. coorX = 2;
  87. coorY = 2;
  88. break;
  89. }
  90. }
  91.  
  92.  
  93. }
  94.  
  95. Y el main LanzaJuegoTanques:
  96. package Tanque;
  97.  
  98. import java.util.Scanner;
  99.  
  100. public class LanzaJuegoTanque {
  101.  
  102. public static void main(String[] args) {
  103. int direccionT1;
  104. int direccionT2;
  105. int ganador=0;
  106.  
  107. Scanner sc1 = new Scanner(System.in);
  108. Scanner sc2 = new Scanner(System.in);
  109. Tanque t1 = new Tanque();
  110. Tanque t2= new Tanque(1,1);
  111.  
  112. do{
  113. System.out.println("TANQUE 1\nIntroduzca la direccion a la que se desea mover:");
  114. direccionT1 = sc1.nextInt();
  115. t1.moverTanque(direccionT1);
  116.  
  117. System.out.println("TANQUE 2\nIntroduzca la direccion a la que se desea mover:");
  118. direccionT2 = sc2.nextInt();
  119. t2.moverTanque(direccionT2);
  120.  
  121. System.out.println("Turno TANQUE 1");
  122. t1.dispararTanque(direccionT1, direccionT2);
  123. if((t1.getCoordisparo1()==t2.getCoorX())&&(t1.getCoordisparo2()==t2.getCoorY())){
  124. System.out.println("El TANQUE 1 es el ganador del juego.");
  125. ganador=1;
  126. break;
  127. }
  128.  
  129. System.out.println("Turno TANQUE 2");
  130. t2.dispararTanque(direccionT1, direccionT2);
  131. if((t2.getCoordisparo1()==t1.getCoorX())&&(t2.getCoordisparo2()==t1.getCoorY())){
  132. System.out.println("El TANQUE 2 es el ganador del juego.");
  133. ganador=1;
  134. break;
  135. }
  136. }while(ganador!=0);
  137.  
  138.  
  139. sc1.close();
  140. sc2.close();
  141. }
  142.  
  143. }
  144.  
haber si hay algun alma caritativa y me echa una mano, infinitas gracias

[MOD] para publicar codigo, usar etiquetas GeSHi.


« Última modificación: 20 Noviembre 2015, 21:56 pm por simorg » En línea

DarK_FirefoX


Desconectado Desconectado

Mensajes: 1.263


Be the change you wanna see in te world


Ver Perfil
Re: 2 dias y no veo que fallo.
« Respuesta #1 en: 20 Noviembre 2015, 22:14 pm »

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


En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: 2 dias y no veo que fallo.
« Respuesta #2 en: 20 Noviembre 2015, 22:27 pm »

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
En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
raulpixardo

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: 2 dias y no veo que fallo.
« Respuesta #3 en: 20 Noviembre 2015, 23:22 pm »

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
« Última modificación: 21 Noviembre 2015, 12:11 pm por raulpixardo » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Wenos dias
Dudas Generales
satolo76 3 2,837 Último mensaje 7 Agosto 2010, 18:13 pm
por Axus
Aprender C++ en 21 dias « 1 2 »
Programación C/C++
WiseHidden 18 38,090 Último mensaje 9 Noviembre 2010, 19:01 pm
por Danyel_Casvill
Faltan 3 Dias. « 1 2 3 4 »
Foro Libre
B€T€B€ 38 13,167 Último mensaje 31 Enero 2013, 15:04 pm
por Stakewinner00
Hola, mi calendario php, da un fallo en los días. (solo muestra el primer día)
PHP
Drakaris 0 2,021 Último mensaje 26 Febrero 2017, 21:28 pm
por Drakaris
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines