Foro de elhacker.net

Programación => Java => Mensaje iniciado por: m@o_614 en 8 Mayo 2012, 20:34 pm



Título: juego del gato
Publicado por: m@o_614 en 8 Mayo 2012, 20:34 pm
Saludos

Tengo este codigo que es en si una traducción de C, y me salen los siguientes errores en las líneas 35,58 y 78 que dice g cannot be resolved y no se si es porque tengo que utilizar herencia o por que

Código
  1. public class Gato {
  2. final int MAX_FILA=3;
  3. final int MAX_COLUM=3;
  4. final int MAX_TURNO=9;
  5. char gato[][];
  6. public Gato(){
  7. gato=new char[MAX_FILA][MAX_COLUM];
  8. }
  9. public int verificarFilas(){
  10. int i,j,suma=0,ganador;
  11. for(i=0;i<MAX_FILA;i++){
  12. for(j=0;j<MAX_COLUM;j++){
  13. suma+=gato[i][j];
  14. }
  15. if(suma==264){
  16. System.out.println("El ganador es el jugador X");
  17. ganador=1;
  18. return ganador;
  19. }
  20. else if(suma==237){
  21. System.out.println("El ganador es el jugador O");
  22. ganador=2;
  23. return ganador;
  24. }
  25. else
  26. ganador=0;
  27. }
  28. if(ganador==0)
  29. g.verificarColumnas();
  30. return ganador;
  31. }
  32. public int verificarColumnas(){
  33. int i,j,suma=0,ganador;
  34. for(i=0;i<MAX_FILA;i++){
  35. for(j=0;j<MAX_COLUM;j++){
  36. suma+=gato[j][i];
  37. }
  38. if(suma==264){
  39. System.out.println("El ganador es el jugador X");
  40. ganador=1;
  41. return ganador;
  42. }
  43. else if(suma==237){
  44. System.out.println("El ganador es el jugador O");
  45. ganador=2;
  46. return ganador;
  47. }
  48. else
  49. ganador=0;
  50. }
  51. if(ganador==0)
  52. g.verificarDiagonal();
  53. return ganador;
  54. }
  55. public int verificarDiagonal(){
  56. int i,suma=0,ganador;
  57. for(i=0;i<MAX_FILA;i++)
  58. suma+=gato[i][i];
  59. if(suma==264){
  60. System.out.println("El ganador es el jugador X");
  61. ganador=1;
  62. return ganador;
  63. }
  64. else if(suma==237){
  65. System.out.println("El ganador es el jugador O");
  66. ganador=2;
  67. return ganador;
  68. }
  69. else
  70. ganador=0;
  71. if(ganador==0)
  72. g.verificarDiagonalInv();
  73. return ganador;
  74. }
  75. public int verificarDiagonalInv(){
  76. int i,j,suma=0,ganador;
  77. for(i=2,j=0;j<MAX_COLUM;i--,j++)
  78. suma+=gato[i][j];
  79. if(suma==264){
  80. System.out.println("El ganador es el jugador X");
  81. ganador=1;
  82. return ganador;
  83. }
  84. else if(suma==237){
  85. System.out.println("El ganador es el jugador O");
  86. ganador=2;
  87. return ganador;
  88. }
  89. else
  90. ganador=0;
  91. if(ganador==0)
  92. return ganador;
  93. }
  94. public void imprimirTablero(char gato[][]){
  95. int i,j;
  96. for(i=0;i<MAX_FILA;i++){
  97. for(j=0;j<MAX_COLUM;j++){
  98. if((gato[i][j])=='X'||(gato[i][j])=='O')
  99. System.out.println(" "+gato[i][j]);
  100. else
  101. System.out.println(" ");
  102. System.out.println("|");
  103. }
  104. System.out.println("\n");
  105. System.out.println("_____");
  106. System.out.println("\n");
  107. }
  108. }
  109. public void turnoJugador(){
  110. Gato g=new Gato();
  111. final int MAX_JUG=2;
  112. int i,fila,columna,turno;
  113. char jugador[]={'X','O'},letra;
  114. turno=1;
  115. do
  116. {
  117. for(i=0;i<MAX_JUG;i++){
  118. System.out.println("Es turno del jugador "+jugador[i]);
  119. System.out.print("Dime la fila (1 a 3):");
  120. fila=ScanF.leeInt();
  121. System.out.println(" "+fila);
  122. System.out.print("Dame la columna (1 a 3):");
  123. columna=ScanF.leeInt();
  124. System.out.println(" "+columna);
  125. letra=jugador[i];
  126. gato[fila-1][columna-1]=letra;
  127. g.imprimirTablero(gato);
  128. }
  129.  
  130. }while((turno<=MAX_TURNO));
  131. }
  132. public static void main(String[] args) {
  133. int i,ganador;
  134. final int MAX_JUG=2;
  135. System.out.println("Juego del Gato v1.0");
  136. Gato g=new Gato();
  137. g.turnoJugador();
  138. ganador=g.verificarFilas();
  139. if(ganador!=0)
  140.                                   i=MAX_JUG+1;
  141. }
  142. }

gracias


Título: Re: juego del gato
Publicado por: Proteus1989 en 8 Mayo 2012, 21:14 pm
Resumiendo está fatal xD
Variables usadas sin inicializar, uso de g. en métodos donde no se han definido...

Te recomiendo instales eclipse donde al dejar el ratón por encima te diga todos los fallos que tienes.

Para empezar quita todos lo g. que veas que no estén en el main
int verificarDiagonalInv() no tiene un return al final, siempre están dentro de condicionales, y aunque sepas a ciencia cierta que tiene que pasar por algún return el compilador se va a quejar.
ScanF.leeInt(); no existe. Usa la clase Scanner o bufferedReader (busca ejemplos en internet)

Con eso en principio no debería darte errores de sintaxis, otra cosa es que los algoritmos estén bien construidos.


Título: Re: juego del gato
Publicado por: m@o_614 en 8 Mayo 2012, 21:16 pm
la clase ScanF no se necesita porque tengo dos clases en un mismo archivo la clase Gato y la clase ScanF por eso no se ocupa


Título: Re: juego del gato
Publicado por: s00rk en 8 Mayo 2012, 21:45 pm
Si durante la partida uno gana y aunno terminan los turnos seguiran jugando y al final si los dos ganan y puede que salte al falso ganador, eso dependiendo de tu la forma que checas el ganador.

Segun yo ya lo habias hecho bien en C++ recordando tu tema, no entiendo porque te complicas en algunas cosas heheh.
Suerte ;D


Título: Re: juego del gato
Publicado por: m@o_614 en 8 Mayo 2012, 22:04 pm
si el programa en C ya compila bien, en cuanto encuetra ganador termina el programa, lo que sucede es que apenas voy empezando en esto de Java y creo que me fallan algunos conceptos

saludos