Premier jeu, un Sudoku ambitieux!
Posté le 10/01/2013 21:49
Bonjour a tous, c'est mon premier post.
Ca fait un moment que je lui ce forum et j'ai toujours pu y trouver des reponses, mais la j'aurais besoin d'un peu plus de conseil, c'est pour cela que je me suis inscrit et que j'ai fait ce post.
Il y a quelques années déjà, j'ai eu ma graph 35+ au moment de sa sortie, et j'adorais les sudokus... A l'époque j'avais beaucoup de temps libre et j'ai appris le basic pour écrire un générateur de grilles de sudoku completement aléatoire, chose qui n'existe pas (ou en tout cas que je n'ai pas trouvé).
Apres peu de temps je me suis rendu compte qu'il s'agit d'un probleme np complet et que donc produire 100% de grilles de sudoku 100% aléatoirement est tres difficile. J'ai donc simplifié le probleme, et j'ai écrit un moteur a recursion simple, qui est (beaucoup) plus rapide, au prix de quelques grilles fausses(68% de réussite en moyenne).
Vous pouvez voir le prog de démonstration que j'ai utilisé pour débugger ce moteur, il génère une grille a partir de zéro aléatoirement. Je l'ai appelé
SUDONGIN pour sudoku-engine.
Il a la particularité de pouvoir remplir indifféremment des grilles vierges et des grilles partiellement remplies.
J,ai ensuite écrit rapidement un jeu,
SUDOKU qui exploite cette caractéristique en étant doté non seulement d'un mode de jeu normal, mais aussi d'un solveur.
Fichier joint
Citer : Posté le 10/01/2013 21:58 | #
Tu veux savoir comment faire un générateur de sudoku avec 100% de réussite ? Concrètement c'est facile mais trop long pour du Basic.
En C/C++ je fais ça par une fonction récursive (=qui se rappelle elle-même) en tirant aléatoirement chaque nombre de la grille jusqu'à ce qu'elle marche. J'ai également fait un solveur de sudoku comme ça
Citer : Posté le 10/01/2013 22:01 | #
T'aurai pas pu faire encore plus bourrin Louloux ?
Sérieusement, ton programme mérite d'être vu je pense, c'est rare d'avoir des algos aussi complexes en Basic
Citer : Posté le 10/01/2013 22:01 | #
nan j'ai essayé, on n'atteint pas les 100%, ou aors je vois pas comment. J'ecris la suite de l'histoire, vous etes trop rapides ici
Ajouté le 10/01/2013 à 22:06 :
La suite de l\'histoire : Vous pourrez voir en testant le prog que meme si j\'ai essayé d\'accélérer le processus de génération, il reste tres lent (et encore c\'est la version 5 du moteur basic, la premiere était dix fois plus lente!)
Donc j\'ai abandonné tout ca en voyant que c\'était peine perdue. Mais c\'était sans compter qu\'un jour je passe par ici et que je decouvre que je pouvais installer des add ons dans ma 35 en la modifiant!!!
Alors j\'ai sauté sur l\'occase et j\'ai direct repris le boulot. Ca a été facile, je conaissais déjà le C# et le C++. En essayant de profiter non seulement de la vitesse du langage compilé mais aussi des facilités du C, notamment les typedef.
Mais maintemant je me heurte a un probleme qui m\'empeche de continuer : je n\'arrive pas a appeler l\'horloge! J\'ai bien vu RTC_GetTicks dans le forum, mais ca ne compile pas! Faut il une librairie spéciale?
Ajouté le 10/01/2013 à 22:09 :
PS : si vous trouvez que mon générateur peut etre amélioré, je le sais et j\'y ai réfléchi pendant deux mois. cette version est vraiment le melleur compromis que j\'aie pu imaginer (tout en restant 100% aléatoire et en conservant la capaciter de remplir des grilles partielles bien sûr)
Citer : Posté le 10/01/2013 22:09 | #
static int (*SysCall)( int R4, int R5, int R6, int R7, int FNo ) = (void*)&SysCallCode;
int time_getTicks()
{
return (*SysCall)(0, 0, 0, 0, 0x3B);
}
ajoute ca dans un .c
et ca dans un .h
(moi j'ai un fichier usefull.h/usefull.c ou je mes toutes mes fonctions utiles, comme celle-la)
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 10/01/2013 22:11 | #
Pourquoi t'as besoin de l'horloge interne pour un sudoku ? Par contre c'est vrai que faire un add-in est la meilleure chose.
Citer : Posté le 10/01/2013 22:12 | #
pour generer le hasard?
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 10/01/2013 22:12 | #
Ok merci bien, je teste de suite!
Ajouté le 10/01/2013 à 22:13 :
C\'est pour generer le hasard et aussi pour chronométrer le temps de jeu.
Citer : Posté le 10/01/2013 22:14 | #
Pour le temps je comprends, pour le hasard j'avoue qu'il y a d'autres solutions
Citer : Posté le 10/01/2013 22:15 | #
Ah bon lesquelles? Je suis intéressé
Citer : Posté le 10/01/2013 22:15 | #
fais quand meme un peu gaffe, l'horloge n'est pas toujours réglée, et si elle passe minuit, elle la valeur renvoyée passera de 11 059 200 a 0 donc fais attention avec ça.
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 10/01/2013 22:18 | #
nan mais c'est pour chronométrer la partie, donc c'est bon, si je vois que la valeur de rtc a diminué, ca veut dire qu'il y a eu overflow et donc j'ajoute le max et je soustrait a l'échantillon précédent. comme ca c'est bon. J'ai l'habitude des overflow avec l'asssembleur, j'y avais pensé.
Citer : Posté le 10/01/2013 22:20 | #
ok, il ne me reste qu'a te souhaiter bonne chance alors
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 10/01/2013 22:32 | #
J'ai encore une question, quand je compile, j'ai tout le temps l'erreur :
WARNING: The following dependant file(s) do not exist: "Sudoku.h". Line: 71
pourtant ce header existe bien, je l'ai ecrit moi meme!
D'ailleurs il ne contient que ça :
typedef struct Possib Possib;
struct Possib
{
int val[9];
};
je compte ajouter d'autres choses par la suite.
(c'est pour faire des tableaux nombres a neuf parties si ça vous intéresse)
Citer : Posté le 10/01/2013 22:36 | #
t'inquiete, c'est normal, le SDK n'aime juste pas avoir des .h dans la fenetre "files in project" et ce n'est pas dangereux / embetant.
mais si ca te gene vraiment, tu peut dans "files in project faire clic droit et puis delete sur tout les .h du projet, et cela t'enlevera le warning, meme si ca ne change rien au final
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 10/01/2013 22:39 | #
Merci beaucoup!
Au fait, c'est de loin le pire compilateur que j'aie vu de ma vie! des messages d'erreurs cryptiques, pas de coloration syntaxique et une gestion catastrophique de la programmation multifichiers...... et j'en passe
Citer : Posté le 10/01/2013 22:43 | #
je te conseille de coder sur un autre SDK (genre code::blocks) et d'utiliser le SDK officiel juste pour compiler et tester: en effet, il suffit de sauvegarder les fichiers modifiés sur un autre SDK pour que les fichiers soient rechargé rapidement sur le SDK officiel, et du coup pour la programmation, ca va aussi vite d'utiliser un autre editeur ou l'officiel, mais c'est beaucoup plus confortable.
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 10/01/2013 22:52 | #
moi bof, j'aime mieux quand meme rester sur le sdk de casio, ca m'aprendra la rigueur... lol
Ajouté le 10/01/2013 à 23:21 :
PS : question un peu bete, elle envoie un tick tous les combien l\'horloge?
Ajouté le 10/01/2013 à 23:25 :
je dirais 128 a vue de pouce.
Ajouté le 10/01/2013 à 23:31 :
PPS : c\'est combien la valeur du get_tick avant le retour a zéro?
Citer : Posté le 11/01/2013 07:06 | #
toute les 1/128 de seconde et je pense que c'est 11 059 200 avant le retour a zero
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 11/01/2013 16:45 | #
Le SDK de Casio manque d'un bon éditeur, donc moi j'utilise celui de VC++ avec coloration syntaxique, indentation automatique intelligente et numéros des lignes.
Pour le compilo : il est mal fait, particulièrement quand on s''en sert en C++, mais ce n'est pas si dérangeant quand on code autrement qu'avec les pieds
Citer : Posté le 11/01/2013 18:26 | #
Sinon, j'utilise Notepad++, qui a l'avantage de géré tout types de fichiers, d'avoir l'indentation automatique, d'être gratuit, de pouvoir modifier les couleurs de coloration, et d'être très léger donc qui tient sur n'importe quelle clé USB, même de 128Mo
Je sais, je fait de la pub, mais bon...