|
| Question sur réalisation d'un jeu | |
| | Auteur | Message |
---|
Txiruli C'est quoi la Tasse Bleue ?
Nombre de messages : 14
Age : 42
Localisation : Bordeaux
Date d'inscription : 03/08/2009
| Sujet: Question sur réalisation d'un jeu Jeu 13 Aoû 2009 - 18:33 | |
| Bonsoir bonsoir... Comme certains l'on noté, je me suis attaqué à un petit jeu histoire de me faire la main avant de faire un jeu complexe... J'ouvre ce sujet pour poster mes questions "au kilomètre"... Alors, les questions du jour sont : 1) existe-t-il un moyen pour passer d'une ligne à uune autre sur le script (comme goto)... c'est pas très propre, mais c'est plus rapide pour tester des "trucs" 2) la gestion des entiers/flottants est AFFREUSE ou j'ai raté quelque chose ? pour afficher en Display() un flottant (ici un temps en seconde), je suis obligé de faire un truc comme ça : - Code:
-
IntToFloat(FloatToInt(IntToFloat(val_timer)/60.0, eRoundDown) 3) comme mon jeu sera simple, il sera très court et assez linéaire... du coup, je voudrais mettre un compte à rebour... La IconBar aura cette allure : (cliquer pour agrandir) et là, je m'arrache les cheveux !!! :s - premier essai : - Code:
-
function repeatedly_execute() { Wait(40); // ... // gestion de l'affichage du temps // ... (je n'ai plus le code, j'affiche juste le principe !) }
... problème, j'ai un sablier et jamais la main (par contre, le compte à rebour fonctionne... mais bon) - deuxième essai avec SetTimer à la place de Wait Rien ne se passe... sauf si je regle le timeout à 1 - Code:
-
(SetTimer(1,1); ... ce qui est trop court pour moi (40eme de sec) - troisième essai : - Code:
-
function repeatedly_execute() { // put anything you want to happen every game cycle, even when // the game is paused, here
if (IsGamePaused() == 1) return;
// put anything you want to happen every game cycle, but not // when the game is paused, here
while(val_timer != 0) // val_timer est ma valeur initiale de compte à rebour { SetTimer(1, 40); if (IsTimerExpired(1)) { val_timer = val_timer - 1; // préparation texte : String text_min = String.Format("%02d",FloatToInt(IntToFloat(val_timer)/60.0, eRoundDown)); float timer_sec = IntToFloat(val_timer)/60.0 - IntToFloat(FloatToInt(IntToFloat(val_timer)/60.0, eRoundDown)); timer_sec = timer_sec * 60.0; String text_sec = String.Format("%02d",FloatToInt(timer_sec, eRoundNearest)); Label7.Text = text_min; Label9.Text = text_sec; } } // fin du compte à rebour Ma boucle While plante (trop d'itération possible... j'ai tenté "noloopcheck"... et suis parti en boucle infini avec un crash du programme)... Du coup, est-ce qu'il y a une autre fonction possible ? Est-ce qu'il faut que je ne me mette pas dans la boucle function repeatedly_execute() ? Bref... HELP !!! :? |
| | | Asraroth Disciple de la Grande Tasse Bleue
Nombre de messages : 1468
Age : 49
Date d'inscription : 20/10/2006
| Sujet: Re: Question sur réalisation d'un jeu Jeu 13 Aoû 2009 - 19:02 | |
| 1°/ Pas de GOTO dans AGS à ma connaissance... Pour éviter des lignes de code, tu peux mettre des commentaires (// ou /* puis */), ou faire un "return" pour interrompre l'exécution d'une fonction. 2°/ et oui... j'ai pas trouvé mieux non plus. C'est pénible, hein ? 3°/ Oula ! Pas d'instruction "Wait" dans la fonction "Repeatdly Execute". Cette fonction est sensé s'exécuter environ 40 fois par secondes. L'instruction "Wait" bloque l'exécution du jeu... d'où le blocage que tu obtiens. Fait plutôt quelque chose comme çà : - Code:
-
int chrono = 0; function repeatedly_execute() { chrono++; if (chrono >= 40) { chrono = 0; // gestion de l'affichage du timer } }
Par contre, çà ne sera pas très précis... Si tu veux un "vrai" chronométrage à la seconde prêt, il faudra utiliser une fonction "Date" ou "Timer" (je m'y suis pas encore interressé.. je sais pas exactement) Si tu trouves pas dans l'aide, je jetterai un zoeil demain ---- Tu devrais séparer tes questions, et faire un topic avec un titre explicite à chaque fois. Ça permet de faire des recherches sur le forum, et d'éviter à d'autres membres de reposer les mêmes questions. |
| | | Txiruli C'est quoi la Tasse Bleue ?
Nombre de messages : 14
Age : 42
Localisation : Bordeaux
Date d'inscription : 03/08/2009
| Sujet: Re: Question sur réalisation d'un jeu Jeu 13 Aoû 2009 - 19:39 | |
| Merci m'sieur ! 1) bon, ben tant pis ! 2) OK, bon, moi qui connait mieux le FORTRAN (et oui, c'est vieux !), j'avais l'habitude d'avoir plein plein de fonctions mathématiques 3) je m'étais douté que le wait était lié au "sablier"... Pour la fonction que tu présentes, j'y avais déjà pensé, mais j'avais peur que ça ne donne pas le même temps de jeu suivant la puissance du processeur... un peu comme les vieux jeux dos que l'on doit ralentir avec les processeurs récents... A moins qu'AGS ne fasse que 40 cycles/seconde, quelque soit le PC ? Je regarderai si je peux faire un truc simple avec la date et heure système... :travaille: Enfin, pour un sujet par question, je vais inonder le forum de sujet !!! O_O Non ? M'enfin, dis moi ce qui te parait le mieux... il y a la fonction "recherche" pour balayer les posts... Et j'ai encore une question : 4) il n'y a pas de "watch" sur AGS, pour contrôler la valeur des variables lorsqu'il y a un breackpoint ? Provisoirement j'ai utilisé "display()" mais bon, c'est vite ch... contraignant ! |
| | | Asraroth Disciple de la Grande Tasse Bleue
Nombre de messages : 1468
Age : 49
Date d'inscription : 20/10/2006
| Sujet: Re: Question sur réalisation d'un jeu Jeu 13 Aoû 2009 - 19:56 | |
| - Txiruli a écrit:
- Merci m'sieur !
1) bon, ben tant pis !
2) OK, bon, moi qui connait mieux le FORTRAN (et oui, c'est vieux !), j'avais l'habitude d'avoir plein plein de fonctions mathématiques
3) je m'étais douté que le wait était lié au "sablier"... Pour la fonction que tu présentes, j'y avais déjà pensé, mais j'avais peur que ça ne donne pas le même temps de jeu suivant la puissance du processeur... un peu comme les vieux jeux dos que l'on doit ralentir avec les processeurs récents... A moins qu'AGS ne fasse que 40 cycles/seconde, quelque soit le PC ?
Je regarderai si je peux faire un truc simple avec la date et heure système... :travaille:
Enfin, pour un sujet par question, je vais inonder le forum de sujet !!! O_O Non ? M'enfin, dis moi ce qui te parait le mieux... il y a la fonction "recherche" pour balayer les posts...
Et j'ai encore une question : 4) il n'y a pas de "watch" sur AGS, pour contrôler la valeur des variables lorsqu'il y a un breackpoint ? Provisoirement j'ai utilisé "display()" mais bon, c'est vite ch... contraignant ! 2/ Le FORTRAN ! O_O à 27 ans ??? Tu as été cryogénisé pendant quelques décennies ? Austin Power est parmi nous !!! 3/ oui... c'est mieux d'utiliser la date système pour faire un chrono... De toutes façons, Wait(40) t'aurais posé le même problème... Ca aurait attendu 40 cycles.. et donc pas forcement 1 seconde en fonction du processeur. Pour l'inondation du forum avec des questions, faut voir avec la :reine: ce qu'elle en pense... Mais, bon ! un forum, c'est fait pour çà à la base 4/ Non.. pas d'espion en mode debug pour l'instant (cà, c'est vraiment la m*rde)... Quand il n'y a pas d'affichage possible dans le jeu, en cours de debug, j'utilise le module "DLog" que j'ai fait. Ça écrit dans un fichier texte la valeur des variables que tu veux... Ça fait un peu comme une trace Cobol. |
| | | Txiruli C'est quoi la Tasse Bleue ?
Nombre de messages : 14
Age : 42
Localisation : Bordeaux
Date d'inscription : 03/08/2009
| Sujet: Re: Question sur réalisation d'un jeu Mar 15 Sep 2009 - 8:07 | |
| De retour après mes vacances (bien méritées... enfin, je crois ) : 2/ non... mais... euh des fois, c'est dans les vieilles marmites qu'on fait les meilleures soupes... euh... 3/ bon, j'ai pas donné de nouvelles, ça veut dire que ça va bien. J'ai testé comme suivant : * en 1er : la fonction RawDate (de mémoire) pour avoir une mesure du temps passé entre le début et fin de boucle : ça marche nickel, mais le zéro étant un zéro absolu, ça ne prend pas en compte l'affichage du menu pour la mise en pause... * en 2eme : la fonction Date, convertie en seconde... ça marche nickel aussi, mais la conversion est plus lourde à faire * et finalement, comme j'ai changé d'avis, j'ai mis un compte à rebours "simple" avec une boucle et un affichage du temps qui ne correspond pas au temps réel... (oui, je sais, j'aurai pu y penser avant ! ) Merci Asraroth ! |
| | | Contenu sponsorisé
| Sujet: Re: Question sur réalisation d'un jeu | |
| |
| | | | Question sur réalisation d'un jeu | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |