Interra : Bientôt un nouveau jeu !

Espace libre pour faire connaître vos dernières réalisations ou les événements concernant la communauté (concours, jeux individuels, etc.)

Modérateurs: Stormi, Otto Grimwald

Interra : Bientôt un nouveau jeu !

Messagepar Yoruk le Jeu Juil 12, 2007 10:56 am

Je termine l'adaptation de l'un de mes anciens jeux DOS en inform. Mais avant de le soumettre à des béta testeurs, j'aurais besoin de quelques conseils pour terminer la programmation... :)

Le premier est (je pense :wink: ) tout simple : à l'époque où je programmais en BASIC, je n'utilisais pas de système de score au sein de mes jeux. Et pour terminer le jeu, je rajoutait quelques lignes de code, qui affichaient un message puis stoppaient l'éxécution du programme. Sous inform, existe-il une sub à appeler afin de terminer un jeu ? Où suis-je obligé d'utiliser le système de score ?
Yoruk, SATOR AREPO TENET OPERA ROTAS
Avatar de l’utilisateur
Yoruk
Grand Ancien
 
Messages: 1065
Inscription: Lun Juin 11, 2007 9:50 am
Localisation: Chiddes, à 150 mètres du lavoir

Messagepar Otto Grimwald le Jeu Juil 12, 2007 11:03 am

il suffit juste d'appeler :

deadflag=2 (pour gagner). 3 c'est indéfini, et 1 c'est perdu je crois.

Pour ne pas avoir de score, il faut ajouter une référence à noscore mais je n'ai pas la syntaxe exacte en tête. Il me semble que c'est :

Constant NOSCORE;

Avatar de l’utilisateur
Otto Grimwald
Très Ancien
 
Messages: 3028
Inscription: Mar Aoû 24, 2004 12:02 pm

La suite

Messagepar Yoruk le Jeu Juil 12, 2007 8:08 pm

Alors deadflag=2 ça marche mais pas la constante de score, mais ce n'est pas grave...

Je rajoute une question : comment puis-je bricoler un pont ultra simple (à double passage/face)? Il n'y a pas de piège, pas de clé... bref, un truc tout simple :)
Yoruk, SATOR AREPO TENET OPERA ROTAS
Avatar de l’utilisateur
Yoruk
Grand Ancien
 
Messages: 1065
Inscription: Lun Juin 11, 2007 9:50 am
Localisation: Chiddes, à 150 mètres du lavoir

Messagepar JB le Jeu Juil 12, 2007 9:26 pm

Sauf si je me plante, traite le comme une room normale avec deux directions possibles ?

JB
Avatar de l’utilisateur
JB
Grand Ancien
 
Messages: 510
Inscription: Mar Aoû 24, 2004 11:00 am
Localisation: Paris

Messagepar Otto Grimwald le Jeu Juil 12, 2007 11:28 pm

apparemment c'est plutôt :

Code: Tout sélectionner
Constant NO_SCORE;


voilà :)

Avatar de l’utilisateur
Otto Grimwald
Très Ancien
 
Messages: 3028
Inscription: Mar Aoû 24, 2004 12:02 pm

Messagepar Yoruk le Ven Juil 13, 2007 10:02 am

Oui merci otto, No_score fonctionne

Par contre, vous pourriez regarder la fin de mon jeu : cette sub est appelée lorsque le joueur examine un objet. Tout se déroule bien à l'exécution, mais un 1 apparaît juste avant le texte "Vous avez gagné"


Code: Tout sélectionner
!sub qui gère la pause
[Pause notNeeded;
@read_char 1 notNeeded;
rtrue;
];


!sub qui est appelée pour terminer le jeu
[Fin notNeededb;
Pause();
print "Après quelques instants, vous remarquez que votre reflet n'y apparaît pas.^^";
Pause();
print "Finalement, c'est le reflet de votre chambre qui s'offre à votre regard.^^";
Pause();
print "La très faible lumière ambiante s'estompe soudain...^^";
Pause();
print "Vous ouvrez les yeux, et vous vous aperçevez que vous êtes rentré chez vous...^^";
Pause();
print "Après un long voyage dans le monde d'Interra.^^^";

!print "^";




@read_char 1 notNeededb;

deadflag=2;

!];


!deadflag=2;

!rfalse;
!return;

];



J'ai pourtant enlevé des 1 sur d'autres passages mais ici je n'y suis pas arrivé... :( (merci d'avance)
Yoruk, SATOR AREPO TENET OPERA ROTAS
Avatar de l’utilisateur
Yoruk
Grand Ancien
 
Messages: 1065
Inscription: Lun Juin 11, 2007 9:50 am
Localisation: Chiddes, à 150 mètres du lavoir

Messagepar Stormi le Ven Juil 13, 2007 10:11 am

Le problème ne vient probablement pas de la fonction en elle-même mais de la manière dont tu l'appelles, tu peux nous donner l'extrait ?
Samuel V.
Avatar de l’utilisateur
Stormi
Grand Ancien
 
Messages: 1205
Inscription: Dim Avr 16, 2006 8:07 pm
Localisation: Lyon

Objet en question

Messagepar Yoruk le Ven Juil 13, 2007 2:13 pm

Voilà. Quand on examine l'objet, la sub est appelée.

Code: Tout sélectionner
Object O3 "Miroir"       

with name "miroir",

before[;
Examine:   "C'est un miroir en pied, entouré de très fines ferronneries.^^" ,   Fin(); 
],

found_in L30,
has scenery static;




Rien de bien sorcier je pense... c'est sans doute un problème de virgule ou de point virgule juste avant l'appel de la sub... :?
Yoruk, SATOR AREPO TENET OPERA ROTAS
Avatar de l’utilisateur
Yoruk
Grand Ancien
 
Messages: 1065
Inscription: Lun Juin 11, 2007 9:50 am
Localisation: Chiddes, à 150 mètres du lavoir

Re: Objet en question

Messagepar Stormi le Ven Juil 13, 2007 2:15 pm

Yoruk a écrit:Rien de bien sorcier je pense... c'est sans doute un problème de virgule ou de point virgule juste avant l'appel de la sub... :?


Ben voilà, tu as trouvé la solution tout seul :)

Remplace la virgule par un point virgule juste avant l'appel de la sub et c'est gagné.
Samuel V.
Avatar de l’utilisateur
Stormi
Grand Ancien
 
Messages: 1205
Inscription: Dim Avr 16, 2006 8:07 pm
Localisation: Lyon

Messagepar Stab le Ven Juil 13, 2007 3:37 pm

euh en mettant un point virgule, il n'est pas certain qu'il execute la procedure Fin() du coup puisque le fait de faire "C'est un miroir..." fait un print et un return en une seul fonction, du coup la fonction d'après n'est sans doute pas exécutée... Tu devrais essayer:

Code: Tout sélectionner
before[;
    Examine:   
        print "C'est un miroir en pied, entouré de très fines ferronneries.^^"; 
        Fin();
        return true;
],



Enfin d'après mes souvenirs d'inform, ça fait longtemps :P
Avatar de l’utilisateur
Stab
Celui qui attend à l'affût
 
Messages: 126
Inscription: Lun Jan 10, 2005 11:01 am
Localisation: R'lyeh

Messagepar Stormi le Ven Juil 13, 2007 3:45 pm

Tout juste, j'avais oublié ce petit petit petit détail :)
Samuel V.
Avatar de l’utilisateur
Stormi
Grand Ancien
 
Messages: 1205
Inscription: Dim Avr 16, 2006 8:07 pm
Localisation: Lyon

Re: Objet en question

Messagepar Yoruk le Ven Juil 13, 2007 3:55 pm

Effectivement ça marche. Merci à vous :D

Et juste une petite question : comment puis-je spécifier dans une room un texte qui s'affiche au moment où l'on part vers une direction ? Genre je vais au nord et "Vous marchez en direction du nord sur une petite route bordée d'arbres" ?
Yoruk, SATOR AREPO TENET OPERA ROTAS
Avatar de l’utilisateur
Yoruk
Grand Ancien
 
Messages: 1065
Inscription: Lun Juin 11, 2007 9:50 am
Localisation: Chiddes, à 150 mètres du lavoir

Messagepar Stab le Ven Juil 13, 2007 4:04 pm

Code: Tout sélectionner
[n_to;
    print "Vous marchez en direction du nord sur une petite route bordée d'arbres";
    move player to petiteRoute;

];



Mais y'a surement plus simple :)
Avatar de l’utilisateur
Stab
Celui qui attend à l'affût
 
Messages: 126
Inscription: Lun Jan 10, 2005 11:01 am
Localisation: R'lyeh

Suite

Messagepar Yoruk le Ven Juil 13, 2007 6:34 pm

Ca marche pas :(

Il y a plein d'erreurs à la compilation. J'ai un peu modifié pour qu'il n'y ait plus d'erreurs mais la direction n'est pas reconnue...


Code: Tout sélectionner
n_to[;
    print "Vous marchez en direction du nord sur une petite route bordée d'arbres.^";
    move player to petiteRoute;
],


L'interpréteur me renvoie "Vous ne pouvez pas aller là."
Yoruk, SATOR AREPO TENET OPERA ROTAS
Avatar de l’utilisateur
Yoruk
Grand Ancien
 
Messages: 1065
Inscription: Lun Juin 11, 2007 9:50 am
Localisation: Chiddes, à 150 mètres du lavoir

Messagepar Stab le Ven Juil 13, 2007 6:49 pm

oups désolés ça faisait longtemps et j'avais pas de compilateur inform sous la main :P

maintenant oui 8) :

Code: Tout sélectionner
Object clairiere "Dans la clairière..."
    with description "Les oiseaux gazouillent et les mouches pètent, tout va pour le mieux à l'orée de la forêt...",
    n_to petiteRoute,
    before [;
        Go:
            if(noun == n_obj)
                print "Vous marchez en direction du nord sur une petite route bordée d'arbres.^";
                   
    ],
    has light;


Avatar de l’utilisateur
Stab
Celui qui attend à l'affût
 
Messages: 126
Inscription: Lun Jan 10, 2005 11:01 am
Localisation: R'lyeh

Re: Suite

Messagepar Stormi le Ven Juil 13, 2007 7:29 pm

Yoruk a écrit:Ca marche pas :(

Il y a plein d'erreurs à la compilation. J'ai un peu modifié pour qu'il n'y ait plus d'erreurs mais la direction n'est pas reconnue...


Code: Tout sélectionner
n_to[;
    print "Vous marchez en direction du nord sur une petite route bordée d'arbres.^";
    move player to petiteRoute;
],


L'interpréteur me renvoie "Vous ne pouvez pas aller là."


La routine n_to doit renvoyer soit false soit un nom de lieu et ne doit pas faire le deplacement du joueur elle-meme.

Ainsi, cela devrait fonctionner (non testé) :
Code: Tout sélectionner
n_to[;
    print "Vous marchez en direction du nord sur une petite route bordée d'arbres.^";
    return petiteRoute;
],
Samuel V.
Avatar de l’utilisateur
Stormi
Grand Ancien
 
Messages: 1205
Inscription: Dim Avr 16, 2006 8:07 pm
Localisation: Lyon

Messagepar Stab le Ven Juil 13, 2007 7:39 pm

en effet !!! bien joué... ça m'apprendra à ne pas toucher à inform pendant presque un an :?
Avatar de l’utilisateur
Stab
Celui qui attend à l'affût
 
Messages: 126
Inscription: Lun Jan 10, 2005 11:01 am
Localisation: R'lyeh

Messagepar Otto Grimwald le Ven Juil 13, 2007 8:51 pm

sinon move c'est pour des objets. Pour déplacer le joueur lui-même il faut utiliser playerto(endroit); (si ma mémoire est bonne)

Avatar de l’utilisateur
Otto Grimwald
Très Ancien
 
Messages: 3028
Inscription: Mar Aoû 24, 2004 12:02 pm

La suite

Messagepar Yoruk le Sam Juil 14, 2007 8:43 am

Merci à vous tous j'ai beaucoup avancé dans la programmation. :D

C'est pas encore pour tout de suite mais comment puis-je partager le fichier zcode de mon jeu afin de le soumettre à vos tests ? Dois-je utiliser le dépot ?

Tant que j'y pense, y a t-il de grosses différences entre un fichier compilé en Z5 et en Z8 ? Je constate en effet que les 2 types cohabitent.
Yoruk, SATOR AREPO TENET OPERA ROTAS
Avatar de l’utilisateur
Yoruk
Grand Ancien
 
Messages: 1065
Inscription: Lun Juin 11, 2007 9:50 am
Localisation: Chiddes, à 150 mètres du lavoir

Messagepar Yoruk le Dim Juil 15, 2007 8:23 am

J'ai quasiment fini la version béta de mon jeu :) . Encore quelques petites corrections et je pourrais partager le fichier.

Comment puis-je faire pour partager un fichier ?

Et au niveau des bétas tests, comment ça se déroule ? vous postez vos rapports de bugs ici et moi ensuite je corrige ?
Yoruk, SATOR AREPO TENET OPERA ROTAS
Avatar de l’utilisateur
Yoruk
Grand Ancien
 
Messages: 1065
Inscription: Lun Juin 11, 2007 9:50 am
Localisation: Chiddes, à 150 mètres du lavoir

Suivante

Retourner vers Annonces

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron