Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Premier jeu, un Sudoku ambitieux!
Earth75 Hors ligne Membre Points: 53 Défis: 0 Message

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


Dark storm En ligne Labélisateur Points: 11641 Défis: 176 Message

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...

Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Louloux Hors ligne Ancien administrateur Points: 7035 Défis: 61 Message

Citer : Posté le 11/01/2013 18:33 | #


Je l'utilise pour html / javascript
Binary_man Hors ligne Ancien rédacteur Points: 1344 Défis: 19 Message

Citer : Posté le 11/01/2013 18:35 | #


Bah en même temps il est bien ce logiciel, perso c'est mon main
Calculettes : Graph 75, Graph 95, classpad 330 et FX-CG20 !!
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 11/01/2013 19:15 | #


+1 notepad++, je n'utilise que lui en dehors du SDK pourave de casio
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Earth75 Hors ligne Membre Points: 53 Défis: 0 Message

Citer : Posté le 12/01/2013 16:30 | # | Fichier joint


bon, bah voila, je vous joins ce que j'ai fait pour le moment, j'ai fait une bonne interface, et une horloge en temps réel.
Et maintenant je commence a porter le moteur que j'ai fait en basic en C.
Si vous testez mon prog vous verrez que meme si le chrono est precis, l'afficheur n'est pas rafraichi en continu. c'est parce que je n'ai pas reussi a rendre GetKey non bloquant, comment faire? J'en ai absolument besoin pour mon jeu puisqu'il faut pouvour s'occuper du curseur et de l'horloge en meme temps...
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 12/01/2013 18:23 | #


tu peut utiliser IsKeyDown(int keyCode);
si la touche en question (par exemple KEY_CTRL_UP ou KEY_CTRL_EXE) est appuyée, la fonction renvoye 1, sinon 0

cf doc
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
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

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
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 !
Earth75 Hors ligne Membre Points: 53 Défis: 0 Message

Citer : Posté le 12/01/2013 18:48 | #


Ah merci! J'avais pas vu cette fonctions, j'ai pas encore bien la main avec fxlib
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 12/01/2013 19:10 | #


n'hesite pas a lire la doc traduite, tu pourra decouvrir des trucs bien utiles!

http://wiki.planet-casio.com/fr/Fxlib.h
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
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

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
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 !
Earth75 Hors ligne Membre Points: 53 Défis: 0 Message

Citer : Posté le 12/01/2013 19:58 | #


cool. J'avais vu aussi AnyKey() de la librairie Ecode, mais je comprends rien de rien de rien a ce qu'elle renvoie, ni comment elle marche.... quand je regarde son code on dirait meme pas du C mais de l'assembleur bizarre... Tu connais par hasard?

Ajouté le 12/01/2013 à 20:50 :
Sinon, c\'est peut etre possible d\'appeler le GetKey du basic dans le programme en C? Ou est ce qu\'on apprend les syscalls j\'ai du mal a trouver sur le forum?
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 12/01/2013 20:53 | #


http://www.planet-casio.com/Fr/forums/topic8995-1-%5BSDK-Graph-85%5D-Les-syscalls.html
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
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

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
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 !
Earth75 Hors ligne Membre Points: 53 Défis: 0 Message

Citer : Posté le 12/01/2013 21:18 | #


oui j'ai regardé.... et apres avoir essayé, ca marche pas. Pourtat je l'ai bien mis greffé sut tin syscall de la RTC... Enfin c'est pas si grave, j'ai trouvé une version non bloquante de GetKey : c'est "GetKeyWait( KEYWAIT_HALTOFF_TIMEROFF, 0, 0, &key); "
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 12/01/2013 21:21 | #


pierrotLL a écrit :
A propos de GetKeyWait :
La fonction incluse dans le SDK n'a jamais fonctionné, c'est une grosse bourde de Casio.
Mais il existe un syscall qui lui fonctionne (j'en avais parlé ici et il y a plus de détails dans la documentation des syscalls)

http://www.planet-casio.com/Fr/forums/topic11632-2-[Liste]-ADD-IN-compatible-SH4-(Edit-au-21-09-12-0745).html

il a dit ca dans ce topic
PS: il faut recopier l'url complete, la balise bugue avec les crochets
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
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

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
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 !
Earth75 Hors ligne Membre Points: 53 Défis: 0 Message

Citer : Posté le 12/01/2013 21:24 | #


sérieux -_- Nan mais ******** quoi merci casio...
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 12/01/2013 21:30 | #


tu peut toujours utiliser le syscall qui fait la meme chose, mais je ne le connais pas
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
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

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
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 !
Earth75 Hors ligne Membre Points: 53 Défis: 0 Message

Citer : Posté le 12/01/2013 21:40 | #


bah je suis en train de lire la doc et de me baser sur le syscall que tu m'as donné pour essayer de la faire marcher.

Ajouté le 12/01/2013 à 23:35 :
bon si j\'ai bien compris il me faut ca : Keyboard_PRGM_GetKey
Et on l\'appelle avec le code 0x6C4

ou bien ca : KeyBoard_GetKeyWait
et la par contre c\'est le code 0x247

C\'est déjà un début....
J\'ai essayé de mettre le meme code que pour RCT_GetTick mais en changeant pas le bon code, mais ca plante tout...

Ajouté le 12/01/2013 à 23:36 :
typedef struct{
  unsigned char hnibble:4;
  unsigned char lnibble:4;
} TBCDbyte;

typedef struct{
    unsigned short exponent:12;
    unsigned short mantissa0:4;
    TBCDbyte mantissa[7];
    char flags;
    short info;
} TBCDvalue;

int Keyboard_PRGM_GetKey( TBCDvalue );
static int SysCallCode[] = {0xD201422B,0x60F20000,0x80010070};
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);
}

Keyboard_PRGM_GetKey( &buffer )
{
      return (*SysCall)(&buffer, 0, 0, 0, 0x6C4);
}


int PRGM_GetKey(){
TBCDvalue buffer;
    Keyboard_PRGM_GetKey( &buffer );
return ( buffer.mantissa0 * 10 + buffer.mantissa[0].hnibble );
}


Ajouté le 12/01/2013 à 23:39 :
Grace a ce code, vous allez pourvoir découvrir de toutes nouvelles erreurs qui vous hanterons pendant des mois!
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 13/01/2013 08:56 | #


t'as pas encore tester les niveaux de gris toi
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
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

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
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 !
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 13/01/2013 15:24 | #


+1 Dodormeur, les sycalls, c'est de la gnognote par rapport aux diaboliques EBR (Exeption Blocked Reset) qu'apportent les niveaux de gris.
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Earth75 Hors ligne Membre Points: 53 Défis: 0 Message

Citer : Posté le 13/01/2013 17:09 | #


je veux bien vous croire^^

Quelqu'un sait comment envoyer le 0x6C4?
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 13/01/2013 18:01 | #


tu n'as pas d'info sur comment il fonctionne?
et est-tu sur du type de la fonction?
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Earth75 Hors ligne Membre Points: 53 Défis: 0 Message

Citer : Posté le 13/01/2013 18:24 | #


Bon bah j'appréhende les syscalls comme je peux.
Dans la doc c'est écrit ceci :
Texte original (en anglais)
Cliquer pour enrouler
0x6C4: int Keyboard_PRGM_GetKey( TBCDvalue*result );
0x6C4 is the PRGM-GetKey function and calls 0x247 with KEYWAIT_HALTOFF_TIMEROFF, t. i. non-blocking.
result is a pointer to a 12 byte buffer. The buffer receives the matrixcode as BCD-value.
In case of the slim the matrixcode is automatically converted to the standard type's code! Hence the function is calc type-independent.
The function decrements the row-number by 1 to prevent the occurrence of the invalid BCD-digit "A". F. i. the key F1 yields 79, whereas syscall 0x0247 would return (0x07;0x0A) in this case.

Exception:
in case of the "AC/on"-key BCD-error 1 is returned, t. i. exponent==0xF00 and first nibble of the mantissa==1.

If no key is available, the function returns a BCD-value 0 in result*.

The function's int-return-value is 0 in case of the "AC/on"-key, else 1.

To yield the same function result as PRGM-GETKEY one could use this:


int PRGM_GetKey(){
unsigned char buffer[12];
Keyboard_PRGM_GetKey( buffer );
return ( buffer[1] & 0x0F ) * 10 + ( ( buffer[2] & 0xF0 ) >> 4 );
}


Donc j'ai essayer de reprendre l'exemple à la fin du texte qui, selon l'auteur "renvoie le meme resultat que le GetKey de PRGM en basic.
Donc j'ai cherché la fonction Keyboard_PRGM_GetKey( buffer );
mais elle est introuvable...

Ajouté le 13/01/2013 à 18:25 :
J\'ai réussi a trouver le format CBD pour mettre le resultat et donc j\'ai repris le code d\'interprétation du buffer comme dans l\'exemple. Mais il me manque le principal!

Ajouté le 13/01/2013 à 18:54 :
ah et au fait, je sais que Keyboard_PRGM_GetKey( buffer ); c\'est la fonction d\'une librairie qui existe, le truc c\'est que je ne l\'ai pas! Tout ce que je sais c\'est que cette fonction appelle le syscall 0x6C4.

Ajouté le 13/01/2013 à 20:08 :
Bon je pense que je me rapproche de la bonne réponse :
static int SysCallCode[] = {0xD201422B,0x60F20000,0x80010070};
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);
}

void Keyboard_PRGM_GetKey(unsigned char* pointer)
{
      *pointer = (*SysCall)(0, 0, 0, 0, 0x6C4);
}

int PRGM_GetKey()
{
unsigned char buffer[12];
Keyboard_PRGM_GetKey( &buffer );
return ( buffer[1] & 0x0F ) * 10 + ( ( buffer[2] & 0xF0 ) >> 4 );
}


Ajouté le 15/01/2013 à 01:23 :
mon problème est réglé grâce à pierrotll! Le développement peut reprendre son cours

Ajouté le 15/01/2013 à 01:26 :
le bon code c\'est donc ça :
void Keyboard_PRGM_GetKey(unsigned char* pointer)
{
      (*SysCall)(pointer, 0, 0, 0, 0x6C4);
}
Earth75 Hors ligne Membre Points: 53 Défis: 0 Message

Citer : Posté le 30/01/2013 23:39 | #


Bon en fait le code de pierotll marche pas mais tant pis. j'ai réécrit la fonction avec iskeydown. voila un build de mon programme :
il contient :
-une manipulation de curseur
-une horloge en temps réel.

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 204 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd