Bennu Game Development

Foros en Español => Proyectos => Topic started by: BoMbErLiNk on June 21, 2016, 02:38:52 AM

Title: SudoQ 0.8 (Win,Wiz,N64)
Post by: BoMbErLiNk on June 21, 2016, 02:38:52 AM
He actualizado SudoQ a la versión 0.8, hasta ahora no había versión Bennu para Windows ni post por aquí (era una antigua de Fenix) y la versión para Wiz era una versión antigua de Bennu que daba problemas si antes se ejecutaba otro juego de Bennu de una versión más moderna, no llegaba a arrancar.

(http://bombergames.net/sorr/sudoqwiz.JPG)


En realidad si he vuelto a este jueguecillo es porque estoy aprendiendo a programar en Nintendo 64 (C + libdragon), para tomar experiencia lo primero que he hecho es portarlo, la idea de programar en una maquina limitada siempre me ha gustado  ;D  (imagen en consola)

(http://i.imgur.com/RNwrSED.jpg)

Una de las pegas era como portar los gráficos, N64 solo tiene 4KB de cache de texturas si quiero usar aceleración por hardware, así que el fondo son tiles de 64x16 de 16bits, el resto de gráficos eran casi todos de tamaño impar y la consola se cuelga si no le cargas texturas pares.

Una de las maravillas de Bennu, los procesos, tenía tropecientos procesos funcionando cada uno a su bola con su prioridad de pintado independiente, cada uno con su bucle, para N64 tengo un único bucle principal.

Me ha tomado 3 días portarlo, es prácticamente la misma versión, con un algoritmo más rápido para generar los tableros aleatorios, pero solo viene con 1 fondo (he pasado de convertirlos todos), sin submenú, no trae semi transparencias, tengo los efectos básicos y iré programando sobre la marcha, viene con libmikmod para reproducir unos cuantos MOD y XM  que trae dentro de la rom, tampoco hay función de guardado, paso de usar un Controller pak para eso.

Testearlo ha sido un horror, pantallazo negro si se cuelga y no he podido usar emuladores, así que iba para arriba y abajo con la tarjeta SD.

Estoy trabajando en otro proyecto ya más serio para N64, paralelamente también en Bennu teniendo en cuenta las limitaciones y formas de programar de la consola, por lo pronto tengo un scroll tileado de planos infinitos y he visto que puedo colocar infinidad de sprites sin bajar de 60fps, vamos se puede hacer algo muy majo, supongo que ya iré poniendo avances cuando tenga cosas interesantes  :D

Lo único que está siendo un problema es como tener varios hilos de ejecución en N64, porque las interrupciones se comen el rendimiento, especialmente al llamar al audio, ni pthreads, ni fork parecen implementados.


Bueno, dejo las descargas del SudoQ.

DESCARGAS

Windows (http://bombergames.net/SudoQ_win.rar)

Wiz (http://bombergames.net/SudoQ_wiz.rar)

Nintendo 64 (http://bombergames.net/SudoQ64.rar)

Código Bennu (http://bombergames.net/sudoq_bennusrc.rar)

CAMBIOS

0.8 (10/7/2016)
- Detección de soluciones mejorada

0.7 (7/7/2016)
- Añadido código para detectar combinaciones triples cruzadas

0.6 (5/7/2016)
- Añadido código para detectar lineas o columnas triples inversas

0.5 (4/7/2016)
- Añadido algo de código para evitar tableros con soluciones múltiples
* Lineas o columnas dobles inversas, juntas o separadas
* Diagonales inversas en diferentes formas
* Selección solo de los números más conflictivos (lo cual podría crear soluciones múltiples, por revisar)
- Añadido back tracking para acelerar creación de tablero
- Añadido scale2x para ventana F1/F2 (win)
- En nivel fácil o normal se marcan qué números son repetidos al terminar tablero
- Corregido bug al usar submenú que puede sacar mensajes erróneos de resolución de tablero (win,wiz)
- Corregido leak de memoria al generar tableros (win,wiz)
- Corregido bucle con frame para acelerar creación de tablero (win)
- Se cambia la semilla aleatoria en cada ejecución, al salir del programa y volver a entrar siempre salía la misma en Bennu (win,¿wiz?)
- Código fuente más presentable
- Algunos cambios para el port a Android
- Algunas otras optimizaciones

0.4 (20/6/2016)
- Corregidos varios bugs
- Botón resolver ahora con resultado inmediato
- Presionar X en la ventana cierra y guarda partida (Win)
- Añadido icono de ventana (Win)
- Traducido al inglés
- Posición relativa del ratón con respecto a los controles manuales del tablero
- Botón para marcar casilla con número dudoso (solo en N64)
- Reproductor Mikmod (N64)

0.3 (versión única para Wiz, 2009)
- Soporte táctil
- Submenú al pulsar sobre una casilla
- Reproductor OGG
- Control manual usando mandos

0.2 (2006)
- Fondos alternativos
- Mejoras gráficas
- Corrección de bugs
- Soporte pantalla completa

0.1 (2006)
- Primera versión
Title: Re:SudoQ actualizado (Win,Wiz,N64)
Post by: SplinterGU on June 21, 2016, 03:55:52 AM
gracias bomber! que bueno es verte de nuevo compartiendo tus creaciones!

gracias!
Title: Re:SudoQ actualizado (Win,Wiz,N64)
Post by: FreeYourMind on June 21, 2016, 07:18:17 AM
y pensaba que habias cambiado de vida por saturacion
Title: Re:SudoQ actualizado (Win,Wiz,N64)
Post by: panreyes on June 21, 2016, 09:55:59 AM
Holas Bomber,

Dos cosillas:
- La versión de Windows me la bloquea por virus:
http://go.microsoft.com/fwlink/?linkid=142185&name=Trojan:Win32/Spursint.A!cl&threatid=-2147261593&enterprise=0

- ¿El juego es open source? ¿Te parecería que lo portásemos a PixTudio -> Android?
Title: Re:SudoQ actualizado (Win,Wiz,N64)
Post by: BoMbErLiNk on June 21, 2016, 11:10:12 AM
Que hay Splinter  :) , no sabrás nada del tema de los hilos de ejecución?

Free hace ya 5 años que estaba de descanso xD

Ye Pixel que es un falso positivo en el exe? Cambié la descripción con RESHACK (he actualizado el rar con el exe sin modificar).
Sí, del juego liberé el código en su día, tendría que limpiarlo un poco si lo quieres, es un desastre ahora mismo  :D

(es normal que el foro me haga 2 saltos de linea cada vez que escribo?)
Title: Re:SudoQ actualizado (Win,Wiz,N64)
Post by: panreyes on June 21, 2016, 11:12:16 AM
Ya no recordaba que yo porté SudoQ a GP32 en su día xD

Seguramente sea un falso positivo, pero siempre asusta :\

Si me pasas el código, probaré a portarlo a Android, por curiosidad :)
Title: Re:SudoQ actualizado (Win,Wiz,N64)
Post by: SplinterGU on June 21, 2016, 11:43:44 AM
hola bomber! a que te refieres con hilos de ejecucion? a que nivel? bennugd o C?

Tengo idea de incorporar hilos de ejecucion (a nivel interno) en bennugd2, ahora mismo estoy con los 64bits, haciendo pruebas y fixeando cosas.
Title: Re:SudoQ actualizado (Win,Wiz,N64)
Post by: BoMbErLiNk on June 21, 2016, 12:05:20 PM
Hola Splinter, a nivel de C, el problema que tengo es que el audio debería ser un hilo diferente, en Bennu todo ese tipo de cosas va genial, bennugd2 pinta muy interesante, tengo que ponerme al día y leer todo lo que llevas hecho  :D

Por ejemplo el juego funciona a 60 fps estables, en cada frame hago llamadas a MikMod_Update(); para actualizar el buffer de N64, como solo hay un bucle en todo el programa cuando lo hago baja a 25fps.

El caso es que no es por falta de potencia, he hecho un semáforo para que haga una llamada si y otra no, duplicando el rendimiento pero si hago 3 tiempos y 1 llamada entonces el sonido empieza a petardear, he mirado pthread pero no está implementado (puse bien el link_flags y el include), fork devuelve siempre -1, igual tendría que usar otro método? Uso cygwin + mips64 + libdragon para compilar.

--

Ah Pixel entonces estás acostumbrado al horror xD, te subo el código tal cual  :)
Bennu src (http://bombergames.net/sudoq_bennusrc.rar)
Title: Re:SudoQ actualizado (Win,Wiz,N64)
Post by: SplinterGU on June 21, 2016, 12:18:14 PM
desconozco si hay threads en el API de N64 (cygwin + mips64 + libdragon), de hecho cero experiencia con N64.
Title: Re:SudoQ actualizado (Win,Wiz,N64)
Post by: FreeYourMind on June 21, 2016, 01:27:31 PM
de paso libera el de sorr  ;D
Title: Re:SudoQ actualizado (Win,Wiz,N64)
Post by: panreyes on June 21, 2016, 04:48:46 PM
Bomber:
SudoQ APK -> https://www.dropbox.com/s/hsok00mnpx3bg88/sudoq-1.0-android.apk?dl=0
SudoQ .pixproject -> https://www.dropbox.com/s/82mdxa8e64z0rni/sudoq-1.0.pixproject?dl=0

Y he visto códigos peores xD
Title: Re:SudoQ actualizado (Win,Wiz,N64)
Post by: BoMbErLiNk on June 21, 2016, 05:43:22 PM
Gracias Pixel, lo he probado y el ratón desaparece al tocar los números, también he visto que el nivel de dificultad no se marca (debería ser transparente), en lo demás parece funcionar bien  :D

Ok Splinter, miraré a ver, lo preguntaba por si había algo rudimentario que funcionara en todas las plataformas.

Free ahora mismo lo subo... (http://bombergames.net/linkfun.PNG)
Title: Re:SudoQ actualizado (Win,Wiz,N64)
Post by: Drumpi on June 22, 2016, 12:45:02 AM
Ottia, un Link Bombero por aquí. Cuanto tiempo (otra vez :D)
Anda, pues mola tener un port de Bennu en mi querida N64, una de las consolas que más cariño tengo. Pena no poder probar nada, porque mi consola no admite SDs (a veces, ni los cartuchos originales, los estoy limpiando todos a base de bastoncillo de los oidos y cristasol :D).

Lo cierto es que el juego me encantó en su día, pero los sudokus con múltiples soluciones me ponían de los nervios porque nunca sabía si había hecho algo mal o me había encontrado con uno de estos... y luego no sabía qué hacer. Aun lo debo tener en la mini-negrita.

¿La N64 no usa los cartuchos como RAM para textura y todo lo demás? ¿O es imprescindible copiar en la cache de texturas para mostrarlo? Nunca me he puesto a indagar el HW de la consola.
Title: Re:SudoQ actualizado (Win,Wiz,N64)
Post by: panreyes on June 22, 2016, 07:25:07 AM
Quote from: BoMbErLiNk on June 21, 2016, 05:43:22 PM
Gracias Pixel, lo he probado y el ratón desaparece al tocar los números, también he visto que el nivel de dificultad no se marca (debería ser transparente), en lo demás parece funcionar bien  :D

Bueno, es un quick&dirty port. Te recomiendo descargar PixTudioPM, abrir el archivo .pixproject y trastear :)
Title: Re:SudoQ actualizado (Win,Wiz,N64)
Post by: BoMbErLiNk on June 22, 2016, 12:15:05 PM
Holas Drumpi  :D , es el port de SudoQ, ojalá pudiera portar Bennu porque si se renderiza por hardware es una maquina muy competente.

Para probar las cosas te hace falta un cartucho flash, yo tengo el Everdrive 64, luego hay versiones con solo SD o con USB para desarrollo.

En lo de las soluciones múltiples tienes razón, SudoQ lo primero que hace es generar un tablero 9x9 aleatorio, hasta ahí bien, el problema viene en como borra después las partes del tablero, por ejemplo tendría que ir comprobando si el número 1 y el número 4 está borrado en varias casillas por línea o columna, porque a partir de ahí ya puedes poner el 4 y el 1 al revés y se jode el invento, creo que es algo que pasaba más en el nivel difícil  :P

En N64 puedes usar un buffer temporal para ir cargando cosas desde el cartucho a la RAM, no necesitas tenerlo todo cargado, de hecho la música no se carga en memoria, se va leyendo desde el cartucho, los cartuchos están limitados a 64MB de espacio pero incluso puedes leer cosas desde una SD.

Los sprites por hardware funcionan con memoria dentro del encapsulado del RCP que es el coprocesador de la consola, tienes 8 slots de texturas y 4KB, puedes usar sprites de 16bits y 32bits, esto es una limitación de la libdragon, en el SudoQ cargo un tile cada vez que tengo que pintarlo, descargo y cargo el siguiente, los del fondo son 64x16x16bits/8192=4KB, ya que voy a ir uno a uno almenos que usen toda la memoria y aceleren el pintado.

Si quieres pintar por software no hay limite de tamaño ni tienes que pasar nada a los 4KB, si necesitas que esté en la RAM antes de pintarlo, pero no vas a conseguir tener 2000 sprites a 60fps.

--
Ok Pixel lo miro  :)
PixTudioPM es una variante de Bennu un entorno o algo? Se me hace raro que el flags=4 de los botones no funcione pero sí lo haga el alpha de las casillas.
Title: Re:SudoQ actualizado (Win,Wiz,N64)
Post by: panreyes on June 22, 2016, 12:21:58 PM
Quote from: BoMbErLiNk on June 22, 2016, 12:15:05 PM
Ok Pixel lo miro  :)
PixTudioPM es una variante de Bennu un entorno o algo? Se me hace raro que el flags=4 de los botones no funcione pero sí lo haga el alpha de las casillas.

PixTudio Project Manager es un gestor de proyectos para PixTudio (y en breve soportará también BennuGD)
PixTudio es un fork de BennuGD con aceleración por GPU, TTF, curl, fsock y unas cuantas cosas más, desarrollado por Joseba.
Title: Re:SudoQ actualizado (Win,Wiz,N64)
Post by: Drumpi on June 23, 2016, 02:30:06 AM
Okis, Bomber.
No, por saber cómo va la N64 por dentro. Habia dado por supuesto que, como los cartuchos llevan memorias ROM para almacenar el juego, y estas normalmente son más simples y veloces que la RAM, pues no se necesitaba memoria RAM salvo para los cálculos, almacenar variables temporales y poco más. Pero claro, los chips gráficos precisan de su espacio exclusivo (que también podría haber sido el cartucho) y las cachés son incluso más rápidas que las ROM.
Supongo que el Expansion Pack de poco te sirve ¿no? :D

De todas formas, entonces SudoQ no ha sido portado a N64, sino más bien reescrito para N64 ¿no? :P

Y no, no me voy a gastar 200€ en un everdrive. Antes me lo gasto en una N64 que funcione mejor que la mía (si la llego a cambiar algún día) o en comprar un 64DD ¡QUIERO JUGAR A LA EXPANSIÓN DEL FZERO-X!
Title: Re:SudoQ actualizado (Win,Wiz,N64)
Post by: BoMbErLiNk on June 25, 2016, 01:35:35 PM

Que exagerao  ;D
El Everdrive sale por 100€ y es lo mejor que podría haber hecho, como una segunda juventud para la consola, tienes muchas cosas interesantes para probar, del Fzero X hay el Fzero X climax hecho por aficionados que lleva nuevas pistas montadas con el editor que lleva el 64DD y corre en una 64 normal.

La ROM de N64 no es más rápida que la RDRAM, la tasa de transferencia son unos 5mb/s - 25mb/s para la ROM y de más de 500mb/s para la RAM, además consumes recursos desplazando información de un lado para otro, yo desde luego si voy a usar una textura todo el rato la dejo en la RAM, que son solo 4kB!  :D

El Expansion pak para mi es esencial, lo nuevo que estoy haciendo va con los 8MB en mente, tener memoria unificada en una consola tan antigua es un puntazo, facilita mucho las cosas, la CPU también trabaja muy rápido, genera más rápido los sudoku que en la Wiz, pero seguramente sea por los cambios que he hecho.

El código del SudoQ es el mismo en N64, salvo por el tema de procesos, renderizado, sonido o controles, pero vamos yo a eso le llamo portar el juego a otra plataforma  ;)
--

Ya mismo saco la versión 0.5, espero que sea la última, he añadido:
- En nivel fácil o normal si rellenas tablero con números repetidos te marca cuales
- Corregido bug al usar submenu que puede sacar mensajes erróneos de resolución de tablero (win,wiz)
- Añadido scale2x para ventana F1/F2 (win)
- Búsqueda de números inversos en lineas horizontales y verticales para evitar soluciones múltiples
- He limpiado y organizado el código fuente para lanzarlo en condiciones
- He cambiado los flags por alpha en caso de querer portarlo a Android

Lo único que me queda ahora son las "diagonales inversas", no generan solución multiple tal y como tengo el código ahora mismo, pero te hacen cometer error al solucionar el tablero y poner números repetidos, o te quedas sin poder progresar y necesitas tirar un número sin conocer para seguir.


--
El foro va mal en chrome, cada vez que escribo tengo que volver y eliminar los espacios de linea que me hace, o incluso me pone letras de tamaño minúsculo.
Title: Re:SudoQ actualizado (Win,Wiz,N64)
Post by: Drumpi on June 25, 2016, 04:37:29 PM
100€ sigue siendo demasiado :D Pero me apunto lo del climax. Incluso sé que por ahí circula una ROM con los circuitos, copas y músicas del FZero-X Expansion.
Pero lo ideal es poder diseñarme mis propios circuitos :D Y ya de paso, "completar" el juego (lástima lo del sonido del juego en mono).

Y es raro que una memoria ROM vaya más lenta que una memoria RAM... al menos hablando físicamente del chip en sí. Otra cosa sería que se aumente o reduzca la velocidad por los buses, los chips intermedios, etc, que eso influye, claro.

Lo de cambiar procesos por funciones lo entiendo, es fácil pasar de una cosa a otra, pero el tema de renderizado, donde en Bennu es automático y en N64... bueno, no sé lo automático que es, pero no será tan automático ¿no? ^^U Eso es ya el 40% del código. Pero lo dicho, lo digo desde el más absoluto desconocimiento de la programación en N64.
Title: Re:SudoQ actualizado (Win,Wiz,N64)
Post by: BoMbErLiNk on July 04, 2016, 11:37:26 AM
Bueno pues ya he sacado la versión 0.5 (link primera página).

Ha sido un dolor de cabeza tratar de buscar un código para evitar soluciones múltiples xD, o era demasiado estricto y no dejaba eliminar casillas, o eliminaba algunas vitales y se producía una solución múltiple.

Al final he dado con un código intermedio experimental que no sé muy bien como funcionará (aún se le suele escapar algo), se basa en la teoría de que los números invertidos diagonales están en conflicto con otros números pues todo el tablero es relativo, hay una rutina que primero apunta y bloquea los números que estén más en conflicto, iba a realizar 8 comprobaciones, pero funciona mejor 7 creando resultados impares que me permiten descartar mejor los números.

Luego hay otra que revisa invertidos no diagonales concretos, pues estos podrían darse en 1 sola ocasión.

El código intercepta cosas de este estilo, deja que 3,1 y 1,3 sean invertidos, pero al ser diagonales dependen de otros, remata una doble solución al bloquear el 1 de la siguiente cuadrícula, es arriesgado pero de cualquier otra forma no dejaría borrar demasiados números del tablero, generalmente un tablero en difícil suele llevar entre 60 / 70 números borrados y permite posiciones invertidas únicas para subir más la dificultad.
(http://i.imgur.com/xNSTJUp.png)

También he cambiado un poco la generación aleatoria del tablero, sin backtracking hace más ciclos de loop.
(http://i.imgur.com/6Ihjc0v.png)

Con back tracking permite borrar una cuadrícula que no encaja y probar con otra sin tener que borrar todo el tablero, también había un bucle obsceno para hacer los cálculos con un frame dentro, cosas de recuperar un código con más de 10 años  ;D  , en Windows y N64 (décimas) si que se nota el backtracking, en Wiz inexplicablemente no, sigue tardando décimas, o en algunos casos 1 o 2 segundos en generarlo.
(http://i.imgur.com/Kew6HYi.png)

Por lo pronto no detecta filas rotadas como ésta, pero no debería darse mucho, lo dejo pendiente de afinar.
(http://i.imgur.com/UfCM6Ev.png)

--
Drumpi claro que el renderizado es totalmente distinto en N64, algunos botones están adaptados para caber en la textura de 1 solo pintado, pero vamos yo sigo llamando port a adaptar un juego de una plataforma a otra aunque haya que cambiar mucho o poco.


Bueno ahora voy a pasar a cosas más interesantes  :)
Title: Re:SudoQ 0.7 (Win,Wiz,N64)
Post by: BoMbErLiNk on July 06, 2016, 10:51:45 PM
Versión 0.7, he corregido los enlaces que llevan apuntando mal desde la 0.5 xD

Estaría genial si alguien puede confirmar si siguen saliendo algunas soluciones múltiples, el porcentaje ahora debería ser muy bajo.. drumpi, pixel o alguien que le guste esto?

- Añadida detección de columnas triples inversas
(http://i.imgur.com/UfCM6Ev.png)

- Añadida detección de combinación triple de cuadrículas cuzadas
(http://i.imgur.com/DDqO8Hv.png)

El código también actualizado en la primera página.
Title: Re:SudoQ 0.7 (Win,Wiz,N64)
Post by: FreeYourMind on July 07, 2016, 04:29:37 AM
podrias poner el de n64 tambien ?
Title: Re:SudoQ 0.7 (Win,Wiz,N64)
Post by: BoMbErLiNk on July 07, 2016, 11:44:10 AM
Sí, cuando lo tenga acabado, pero por privado en ese caso, aún se cuelan algunas diagonales con no diagonales en combinaciones de cuadrículas, curioso que se pasen por alto, voy a tener que meter más código a mano..
(http://i.imgur.com/ofDPkfX.png)
Title: Re:SudoQ 0.7 (Win,Wiz,N64)
Post by: FreeYourMind on July 07, 2016, 11:56:24 AM
gracias bomber
Title: Re:SudoQ 0.8 (Win,Wiz,N64)
Post by: BoMbErLiNk on July 11, 2016, 07:54:08 AM
Versión 0.8

A buenas horas leo esto:
QuoteAn Irish mathematician has used a complex algorithm and millions of hours of supercomputing time to solve an important open problem in the mathematics of Sudoku, the game popularized in Japan that involves filling in a 9X9 grid of squares with the numbers 1–9 according to certain rules.

Gary McGuire of University College Dublin shows in a proof posted online on 1 January1 (http://www.nature.com/news/mathematician-claims-breakthrough-in-sudoku-puzzle-1.9751#b1) that the minimum number of clues — or starting digits — needed to complete a puzzle is 17; puzzles with 16 or fewer clues do not have a unique solution. Most newspaper puzzles have around 25 clues, with the difficulty of the puzzle decreasing as more clues are given.

Así que un mínimo de 17 pistas, en el nivel hard de las primeras versiones de SudoQ podían salir 6 o 7, todos eran soluciones múltiples, pensaba que añadiendo demasiadas comprobaciones me quedaba muy lleno el tablero pero no iba tan mal desencaminado, tocando la tolerancia me salen unas 21-23 pistas, seguramente se tachen 2 de 4 en lugar de 1 en algunos casos (o más según qué combinaciones ocurran), pero no está mal usando un generador aleatorio sin normas que se parchea después bloqueando a mano las pistas, lo ideal sería código que resuelva tableros enteros, pero como que no.

He probado muchos puzzles en nivel normal y se completan en 5 o 15 min, según como se complique la cosa con los datos incompletos, los de nivel fácil deberían ser un chiste y los nivel difícil como esos que ponen en los periódicos, entre 21 y 30 pistas aprox.

De difíciles no he hecho demasiados porque esto consume mucho tiempo, pero vamos en casi todos llega un punto donde hay que improvisar poniendo números sin conocer detalles, luego retroceder y corregir pero sin embargo ahora parece hacerlo solo por un único camino, así que aquí lo dejo de forma definitiva, si a alguien le gusta esto y le sale solución múltiple, en el código a partir de la linea 882 se añade la excepción para cubrirla, pues las filas/columnas triples de parejas cruzadas es lo único que no está 100% cubierto y parece ser la combinación más exótica.

Enlaces actualizados en la primera página.

Free ahora te paso el código de N64.
Title: Re:SudoQ 0.8 (Win,Wiz,N64)
Post by: FreeYourMind on July 11, 2016, 08:40:53 AM
mil gracias, que compilador usas por cierto
Title: Re:SudoQ 0.8 (Win,Wiz,N64)
Post by: BoMbErLiNk on July 11, 2016, 08:48:40 AM
con cygwin compilas la libdragon, mira algún tutorial porque hacen falta bastantes librerías
Title: Re:SudoQ 0.8 (Win,Wiz,N64)
Post by: Drumpi on July 11, 2016, 04:01:11 PM
A mi me estaba sonando a chino todas esas comprobaciones que hacías para evitar las soluciones múltiples. Pensaba "estos son algoritmos que se ha encontrado por internet para solucionarlo" :D
Al final se ha necestiado un supercomputador durante horas y un complicadísimo algoritmo para saber que un sudoku de solución única tiene que tener 17 números ya puestos... ¡¡Los mátemáticos se aburren mucho!! Vale que tienen juguetitos que hacen que la Master Race suene a chiste y que haya que aprovecharlos, pero... usa los ratos libres para un Counter a 128K :D :D :D

Bomber ¿Es más fácil compilar en Windows con cygwin o directamente en Linux con cmake?
Title: Re:SudoQ 0.8 (Win,Wiz,N64)
Post by: BoMbErLiNk on July 11, 2016, 04:59:48 PM
Qué va, solo he mirado información para teorías en plan " si dejas 2 números en cada cuadrícula no habrá solución múltiple ", o "si dejas al menos 1 de los 9 números sin borrar en todo el tablero no pasará ", pero esta es la primera regla real que encuentro.

También busqué si la diagonal principal del tablero podía repetir números pensando que igual eso descartaba soluciones múltiples, pero no deja de ser una variante del juego de sudoku y no es necesaria.

Ha sido un horror trabajar en esto, cada vez que veía un bucle dentro de otro, dentro de otro y otro, desplazando arrays que ya vienen con multiplicaciones y divisiones con cambios invertidos para números relativos me daban mareos  ;D

Para cada resultado tenía que guiarme de esto :

1 ,  2,  3,   4,  5,  6,  7,  8,  9
10,11,12, 13,14,15, 16,17,18
19,20,21, 22,23,24, 25,26,27

28,29,30, 31,32,33, 34,35,36
37,38,39, 40,41,42, 43,44,45
46,47,48, 49,50,51, 52,53,54

55,56,57, 58,59,60, 61,62,63
64,65,66, 67,68,69, 70,71,72
73,74,75, 76,77,78, 79,80,81

También he descubierto un error en say() al combinar texto y variables con cálculos, pero no sé decir si es cosa de la versión de Bennu que usaba, la de 2011 y ya fue resuelto, o era cosa de los espacios que dejaba dentro del say.

--
En Linux debería ser más fácil, para muchas cosas haces apt-get y listo, en cygwin toca volver al instalador y marcar si te has dejado algo, o buscar en páginas especiales de cygwin para cosas concretas, también es bastante más rápido compilando en Linux por lo que ví, tengo el entorno en ambas plataformas, ahora de nunca me ha gustado Linux, siempre tiro de win.
Title: Re:SudoQ 0.8 (Win,Wiz,N64)
Post by: Drumpi on July 11, 2016, 08:08:24 PM
Ten cuidado con say porque no es tan inteligente como parece, que a mi más de una vez las operaciones me ha hecho concatenaciones, o al revés. Recuerda usar ITOA para cualquier tipo de peración aritmética.
Aunque Splinter ha resuelto un par de bugs en la r335 de say. Todavía no me ha dado por probarla ^^U

Respecto a compilar, ya depende de gustos. En mi experiencia, compilar para GP2X o Wiz siempre es más sencillo en Linux, porque el compilador viene de serie, etc, etc... mientras que en Windows tienes que tirar de Cygwin, de instalarle librerías... aunque de eso tampoco te libras en Linux, claro :P
Pero si ya cuesta hacer funcionar unas toolchains, no te quiero decir nada 2, y luego mantenlas actualizadas. Por eso siempre quiero saber en qué plataforma es más fácil y no gastar tiempo doblemente.
Title: Re:SudoQ 0.8 (Win,Wiz,N64)
Post by: SplinterGU on July 11, 2016, 09:26:50 PM
drumpi, no es que say tenga bug, sino que say tiene de parametro una string y el motor convierte entonces los valores a strings...

"a" + 1 + 2 = "a12"

pero, si pones

"a" + ( 1 + 2 ) = "a3"

si tenes sumas numericas que queres pasar a string, es conveniente cerrar entre parentesis la parte numerica.

lo mismo pasa en una

string var_string;

var_string = "a" + 1 + 2;

eso es igual a poner

var_string = "a12";

Title: Re:SudoQ 0.8 (Win,Wiz,N64)
Post by: Drumpi on July 12, 2016, 12:26:15 AM
Sí, pero si pones:

say("valor: " + mi_valor);

donde mi_valor = 5, devuelve:

valor: 5

pero si pones

say("valor: " + valor1 + valor2);

donde valor1 = 5  y valor2 = 3... ya no recuerdo cual de las dos cosas te devolvía:

valor: 53
valor: 8

^^U Creo que era la segunda. Ya ni te cuento si le añadías punteros y demás, por eso decía lo de usar ITOA, porque incluso con paréntesis hubo casos que me devolvía "cosas raras" :P
Title: Re:SudoQ 0.8 (Win,Wiz,N64)
Post by: SplinterGU on July 12, 2016, 01:06:18 AM
Quote from: Drumpi on July 12, 2016, 12:26:15 AM
Sí, pero si pones:

say("valor: " + mi_valor);

donde mi_valor = 5, devuelve:

valor: 5

pero si pones

say("valor: " + valor1 + valor2);

donde valor1 = 5  y valor2 = 3... ya no recuerdo cual de las dos cosas te devolvía:

valor: 53
valor: 8

^^U Creo que era la segunda. Ya ni te cuento si le añadías punteros y demás, por eso decía lo de usar ITOA, porque incluso con paréntesis hubo casos que me devolvía "cosas raras" :P

por eso puse

"a" + ( 1 + 2 ) = "a3"

entonces lo que tenes que poner es

say("valor: " + (valor1 + valor2));
Title: Re:SudoQ 0.8 (Win,Wiz,N64)
Post by: BoMbErLiNk on July 12, 2016, 09:35:24 PM
De todas formas el say no fue ningún problema, trabajaba con números del 1 al 9, o 1 a 81, era fácil ver cuando algo no cuadraba, no habéis echo ni un puzzle con la 0.8 verdad?  ;D  Me interesaría tener una segunda opinión.

Ya puestos voy a ver si migro esta "cosa" a Bennu  :P
(http://i.imgur.com/DMieKNO.gif)
Title: Re:SudoQ 0.8 (Win,Wiz,N64)
Post by: SplinterGU on July 12, 2016, 10:42:11 PM
muy bueno eso bomber!
Title: Re:SudoQ 0.8 (Win,Wiz,N64)
Post by: Drumpi on July 13, 2016, 12:39:23 PM
Ostras, cómo mola ver partículas volando por todas partes :D :D :D
¿Metal Slug meets the Mummy? :D