Autor
|
Tema: Ayuda con código de Tres en Raya Java en Processing (Leído 4,259 veces)
|
IO4
Desconectado
Mensajes: 1
|
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 //declarando variables char [][] tablero; final int fil = 3; final int col = 3; boolean player1; boolean player2; void setup () { size (600, 600); tablero = new char [fil][col]; for (int f = 0; f<fil; f++) { for (int c = 0; c<col; c++) { tablero [f][c]='v'; } } } void draw () { background(0); stroke (255); //dibujando el tablero line (0, height/3, width, height/3); line (0, height/3*2, width, height/3*2); line (width/3, 0, width/3, height); line (width/3*2, 0, width/3*2, height); for (int f = 0; f < fil; f++) { for (int c = 0; c < col; c++) { if (tablero [f][c] == 'x') { // dibujando la 'o' rectMode (CENTER); noFill(); ellipse ((100 +200*c)-5, (100 +200*f)-5, 100, 100); } // dibujando la 'x' if (tablero [f][c] == 'o') { rectMode (CENTER); line((100 +200*c)-50, (100 +200*f)-50, (100 +200*c)+50, (100 +200*f)+50); line((100 +200*c)+50, (100 +200*f)-50, (100 +200*c)-50, (100 +200*f)+50); } } } } // cada vez que los jugadores den click se posiciona una 'x' o un 'o' void mouseClicked() { int fclic = (int) mouseY/200; int cclic = (int) mouseX/200; if (tablero[fclic][cclic] == 'v') { if (player1) { tablero [fclic][cclic] = 'o'; player1 = false; } else { tablero [fclic][cclic] = 'x'; player1 = true; } } // ubicar donde se está dando el click for (int f = 0; f < fil; f++) { for (int c = 0; c < col; c++) { print (tablero [f][c] + " "); } println (); } println ("fila es:" + (int) mouseY/200); println ("columna es:" + (int) mouseX/200); }
|
|
« Última modificación: 15 Abril 2019, 14:48 pm por IO4 »
|
En línea
|
|
|
|
srWhiteSkull
|
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
Mensajes: 1.217
(e -> λ("live now")); tatuar -> λ("α");
|
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 y métodos al menos para resolver esto.
|
|
« Última modificación: 17 Abril 2019, 12:20 pm por rub'n »
|
En línea
|
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
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
tres en raya con integrdos
Electrónica
|
resistron
|
2
|
3,272
|
24 Junio 2007, 21:24 pm
por resistron
|
|
|
Problema en el tres en Raya
Java
|
H4CKO_R
|
4
|
3,808
|
31 Diciembre 2008, 20:56 pm
por Castiblanco
|
|
|
Aporte - Tres en Raya (con IA)
Programación Visual Basic
|
rob1104
|
9
|
10,172
|
9 Marzo 2009, 22:35 pm
por peib0l
|
|
|
Ayuda con tres en raya en python
Ejercicios
|
c0na
|
1
|
6,145
|
29 Octubre 2010, 16:36 pm
por [L]ord [R]NA
|
|
|
tres en raya
Scripting
|
jalbtercero
|
1
|
2,408
|
11 Marzo 2016, 23:46 pm
por engel lex
|
|