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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Ayuda con código de Tres en Raya Java en Processing
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con código de Tres en Raya Java en Processing  (Leído 4,259 veces)
IO4

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Ayuda con código de Tres en Raya Java en Processing
« en: 15 Abril 2019, 14:42 pm »

Tengo una tarea donde se me pide que

 -crear una función que determine cuando se gana el juego o no.
-a más de determinar quién gana el juego, se debe dibujar una línea en los elementos que
hicieron el 3 en raya.
-Esta función debe ser llamada cada vez que un jugador hace su movida.

Me parece relevante también decir que este código esta hecho en processing. Por favor ayuda no entiendo muy bien de Java


Código
  1.  
  2. //declarando variables
  3. char [][] tablero;
  4. final int fil = 3;
  5. final int col = 3;
  6. boolean player1;
  7. boolean player2;
  8.  
  9.  
  10. void setup () {
  11.  size (600, 600);
  12.  tablero = new char [fil][col];
  13.  for (int f = 0; f<fil; f++) {
  14.    for (int c = 0; c<col; c++) {
  15.      tablero [f][c]='v';
  16.    }
  17.  }
  18. }
  19.  
  20. void draw () {
  21.  background(0);
  22.  stroke (255);
  23.  
  24. //dibujando el tablero
  25.  line (0, height/3, width, height/3);
  26.  line (0, height/3*2, width, height/3*2);
  27.  line (width/3, 0, width/3, height);
  28.  line (width/3*2, 0, width/3*2, height);
  29.  
  30.  
  31.  for (int f = 0; f < fil; f++) {
  32.    for (int c = 0; c < col; c++) {
  33.      if (tablero [f][c] == 'x') {
  34.  
  35. // dibujando la 'o'
  36.        rectMode (CENTER);
  37.        noFill();
  38.        ellipse ((100 +200*c)-5, (100 +200*f)-5, 100, 100);
  39.      }
  40.  
  41. // dibujando la 'x'
  42.      if (tablero [f][c] == 'o') {
  43.        rectMode (CENTER);
  44.        line((100 +200*c)-50, (100 +200*f)-50, (100 +200*c)+50, (100 +200*f)+50);
  45.        line((100 +200*c)+50, (100 +200*f)-50, (100 +200*c)-50, (100 +200*f)+50);
  46.      }
  47.    }
  48.  }
  49. }
  50.  
  51. // cada vez que los jugadores den click se posiciona una 'x' o un 'o'
  52.  
  53. void mouseClicked() {
  54.  
  55.  int fclic = (int) mouseY/200;
  56.  int cclic = (int) mouseX/200;
  57.  if (tablero[fclic][cclic] == 'v') {
  58.    if (player1) {
  59.      tablero [fclic][cclic] = 'o';
  60.      player1 = false;
  61.    } else {
  62.      tablero [fclic][cclic] = 'x';
  63.      player1 = true;
  64.    }
  65.  }
  66.  
  67. // ubicar donde se está dando el click
  68.  for (int f = 0; f < fil; f++) {
  69.    for (int c = 0; c < col; c++) {
  70.      print (tablero [f][c] + " ");
  71.    }
  72.    println ();
  73.  }
  74.  
  75.  println ("fila es:" + (int) mouseY/200);
  76.  println ("columna es:" + (int) mouseX/200);
  77. }
  78.  
  79.  


« Última modificación: 15 Abril 2019, 14:48 pm por IO4 » En línea

srWhiteSkull


Desconectado Desconectado

Mensajes: 444



Ver Perfil WWW
Re: Ayuda con código de Tres en Raya Java en Processing
« Respuesta #1 en: 16 Abril 2019, 15:39 pm »

Processing es similar a Java, no entiendo el problema.

Si sabes Processing simplemente debes olvidar el concepto de funciones y pensar que todo son objetos o estructuras. Entonces lo que tienes que aprender es POO. Yo creo que es imposible enseñarte con una respuesta que no supere más de 100 líneas que es la POO.

Aprende Java y deja el Processing, céntrate en un lenguaje de momento.

https://docs.oracle.com/javase/tutorial/

Luego para afrontar el problema de la función es tan sencillo como lo que muestras en el código. Simplemente debes comprobar las casillas de la tabla en horizontal, vertical y diagonal, fin. Y además, es qu eni necesitas ayuda porque en el código muestras que sabes recorrer una tabla de un lado a otro, con un bucle anidado en otro bucle, y la comprobación diagonal es la más sencilla ya que sólo requiere un bucle X=Y por lo tanto tablero[f][f] o tablero[c][c] (me imagino que f será de fila y c de columna).

Mientras compruebas la verticalmente, horizontalmente y diagonal a cada jugador usa una bandera que indique de momento que tresEnRaya=true, y si en el recorrido el caso es que es diferente el valor de la casilla a la anterior o simplemente entendemos que si compruebas si el jugador X tiene tres en raya y encuentras O entonces tresEnRaya=false. Al final comprueba la bandera y si el tresEnRaya continúa true es que gana, así de sencillo.


« Última modificación: 16 Abril 2019, 15:43 pm por srWhiteSkull » En línea

rub'n


Desconectado Desconectado

Mensajes: 1.217


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: Ayuda con código de Tres en Raya Java en Processing
« Respuesta #2 en: 17 Abril 2019, 11:11 am »

Nada fácil para empezar dog, descárgate el IDE de processing  https://www.processing.org/download/ para que vallas haciendo, el código funciona, y dibuja tanto las x como o, el método líne() que esta en dentro del método draw() ver línea 25, es el que deberás usar para hacer la ralla completa en la matriz.

Yo me imagino que no sabes nada de programación  :-\ , mínimo debes de saber arrays y bi arrays para imprimir las filas columnas y diagonales, la diagonal principal es fácil la segunda no tanto  :xD y métodos al menos para resolver esto.

« Última modificación: 17 Abril 2019, 12:20 pm por rub'n » En línea

rubn0x52.com KNOWLEDGE  SHOULD BE FREE.
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen king
CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: Ayuda con código de Tres en Raya Java en Processing
« Respuesta #3 en: 17 Abril 2019, 15:59 pm »

Si mantienes algo de memoria adicional, es posible saber si uno de los jugadores gano' sin hacer recorridos, ni ciclos.

Mientras se juega hay que actualizar esa memoria adicional, lo que tampoco requiere hacer recorridos ni ciclos.

La idea es asignar 2 valores opuestos a cada jugador, por ejemplo 1 y -1. Si un jugador ha ganado, la suma de esa fila, columna o diagonal sera 3 (o -3). Cualquier valor distinto a eso, no hay ganador.
En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
tres en raya con integrdos
Electrónica
resistron 2 3,272 Último mensaje 24 Junio 2007, 21:24 pm
por resistron
Problema en el tres en Raya
Java
H4CKO_R 4 3,808 Último mensaje 31 Diciembre 2008, 20:56 pm
por Castiblanco
Aporte - Tres en Raya (con IA)
Programación Visual Basic
rob1104 9 10,172 Último mensaje 9 Marzo 2009, 22:35 pm
por peib0l
Ayuda con tres en raya en python
Ejercicios
c0na 1 6,145 Último mensaje 29 Octubre 2010, 16:36 pm
por [L]ord [R]NA
tres en raya
Scripting
jalbtercero 1 2,408 Último mensaje 11 Marzo 2016, 23:46 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines