Forum d'entraide à la création de jeux d'aventure
 
PortailAccueilFAQRechercherS'enregistrerMembresConnexion

Partagez | 
 

 Question sur réalisation d'un jeu

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Txiruli
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?


Nombre de messages : 14

Age : 34

Localisation : Bordeaux

Date d'inscription : 03/08/2009


MessageSujet: 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) triste

- 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 !!! :?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Asraroth
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue


Nombre de messages : 1431

Age : 41

Date d'inscription : 20/10/2006


MessageSujet: 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 ? sourire

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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Txiruli
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?


Nombre de messages : 14

Age : 34

Localisation : Bordeaux

Date d'inscription : 03/08/2009


MessageSujet: 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 sourire

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 ! clin d\\\\'oeil
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Asraroth
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue


Nombre de messages : 1431

Age : 41

Date d'inscription : 20/10/2006


MessageSujet: 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 sourire

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 ! clin d\\\\'oeil

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 triste (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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Txiruli
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?


Nombre de messages : 14

Age : 34

Localisation : Bordeaux

Date d'inscription : 03/08/2009


MessageSujet: 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 sourire ) :

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 ! langue )

Merci Asraroth !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Question sur réalisation d'un jeu   Aujourd'hui à 19:19

Revenir en haut Aller en bas
 
Question sur réalisation d'un jeu
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Général] question pour la réalisation de flocage maison
» Question sur cities xl 2011
» Question 3DO
» Question sur diverses choses dans wow (Lore)
» Topic d'aide et de question GS.

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Adventure Games Studio fr :: CREATION DE JEUX :: Questions / Réponses-
Sauter vers: