Como hacer juegos atractos en pilas

Hola que tal.

Hacia mucho tiempo que no me pasaba por aqui por motivos de trabajo,no tenia tiempo ni para respirar jejeje.Ahora que estoy un poco mas desahogado vuelvo con mi querido pilas pero no me queda mas remedio que volver a ver todos los videotutoriales para repasar porque no me acuerdo de casi nada.

Bueno a lo que voy,cuando termine de ver todos lo videotutoriales de hugo me gustaria hacer juegos abstractos de tipo damas,hay un canal en youtube que muestra muchos tipos de estos juegos y me gusta bastante,el problema es que son para dos y no tengo con quien jugar porque ahora la gente prefiere otro tipo de divertimento.

En pc no hay nada excepto el tipico ajedrez y poco mas,me gustaria hacer estos juegos para jugarlo yo y compartirlos tambien pero no tengo ni idea de por donde empezar,no he visto nunca como se hacen este tipo de juegos.

Entonces me gustaria empezar creando el juego de damas y con esa base ir haciendo los otros que me vallan gustando de ese canal,alguien tiene idea de como hacer el juego de damas.

Dejo el canal de estos juegos por si interesa mirarlo:

Aunque parezca chiste, hacer juegos de mesa en tableros es más dificil que hacer un rpg. No es que utilice cosas complejas, sino que toda la programación del juego consta de hacer las reglas como que se muevan en diagonal y que no se hagan movimientos ilegales.
Si te es de ayuda te comentó algunos aspectos de cómo yo haría el juego de las damas:

  1. this.x = this.pilas.ajustar(this.x, 64) es una línea que ajustará la posición X de un actor a una cuadrícula de 64 píxeles cada cuadrado.
  2. this.aprender("arrastrable") permite que el actor pueda ser arrastrado por el mouse.
  3. Una variable del proyecto llamada turno_de podría usarse paran identificar a quién le toca mover. La variable cambiaría entre dos valores cuando_termina_de_hacer_click. Así una pieza blanca sería “arrastrable” solo cuando la variable turno_de tiene el valor “blancas”.

Lo más dificil creo que sería programar el movimiento en diagonal. No se me ocurre ahora mismo, pero debes evitar utilizar colisiones y hacer un actor por cada pieza del tablero. A veces las colisiones fallan o colisionas sobre varios objetos y no está claro que funcione como queremos. Lo idea sería usar las posiciones permitidas, pero parece mucho trabajo.

Cuando termine con los videos tal vez haga un pequeño juego a modo de calentamiento y luego intentare hacer uno de tableros,aunque no tengo ni idea de como hacerlo lo intentare haber que sale.

1 Like

He empezado con el juego pero me he encontrado con algunos problemas que no se solucionar,cuando se agarra una ficha del jugador esta se puede soltar en cualquier casilla y incluso fuera del tablero,he probado algunas consas pero no he conseguido nada,entonces como hago para que al soltar la ficha del jugador solo pueda soltarse en las casillas negras y si es una casilla blanca o fuera del tablero se vuelva a su casilla de donde salio.

Tengo mas preguntas pero voy de una en una.Otra cosa,no veo la forma de subr el archivo de pilas para compartir.

Abrir este proyecto en el editor de pilas

Hola @hokuto , no conozco mucho sobre juegos de mesa, pero tengo entendido que antes de realizar un movimiento en un juego de tableros deberías tener una forma de validar el movimiento. Es decir, saber si el movimiento está permitido o no, si el jugador gana o pierde en ese movimiento etc…

Encontré un artículo que señala como hacer eso en javascript, y creo que te puede servir para obtener la estrategia de validación: How I built a checkers game with javaScript | by Marius NIEMET | Medium

Obviamente para pilas vas a tener que adaptar algunas partes de código, pero me parece que te servir de todas formas.

Lo veo bastante lioso el codigo,vere si puedo sacar algunas ideas y adaptarlo al juego he intentar de hacerlo de una forma mucha mas sencilla de como esta escrito en esa pagina.

Hay algo que no se como hacerlo que esta en esa pagina.

// add the piece if the case isn't empty
      if (board[i][j] === 1) {
        occupied = "whitePiece";
      } else if (board[i][j] === -1) {
        occupied = "blackPiece";
      } else {
        occupied = "empty";
      }

Esta accediendo a la lista del tablero y le indica que si es 1 o -1 que le cambie el valor a esa variable pero en pilas estoy usando las funciones de crear y definir mapa,entonces como se puede acceder a la lista que esta siendo creada con esas funciones.

Hola @hokuto !!, perdón por la demora… estuve jugando a hacer un tablero con posiciones permitidas y prohibidas y encontré algunas ideas interesantes.

Te paso lo que pude investigar:

  • Para empezar, te conviene tener una matriz con todas las posiciones permitidas y prohibidas. Es mucho más fácil si armas una matriz en lugar de usar un mapa de pilas.
  • Mientras el usuario mueve la ficha, te conviene ir calculando en qué parte del tablero se quiere hacer el movimiento.
  • Solo deberías permitir movimientos a casilleros vacíos.
  • Al momento de comenzar a “arrastrar” la ficha, puedes guardar la posición del actor para regresarlo ahí si el movimiento es inválido.

Este es el código de ejemplo que armé para mostrarte la idea. Puse varios comentarios en el código para que lo puedas analizar. Lo más interesante está en el método cuando_termina_de_hacer_click_en_la_pantalla del actor ficha:

Abrir este proyecto en el editor de pilas

Avisanos si te sirve el código de ejemplo!!!

2 Likes

Hola Hugo,acabo de ver el mensaje y perdon por la demora pero pensaba que no ibas a contestar mas y por eso no habia visto esto.

Voy a estudiar el codigo que me has pasado porque lo que yo tenia hecho lo habia dejado de lado por no saber como continuar.Un saludo