Inform 6 : help

Ok,

Dans le kit de démo,

Quelle est la différence entre le glulxe.exe qui est dans outil_win/gargoyle_inform et celui qui est juste dans outil_win ?

Comment se fait-il que le premier soit ainsi customisé (taille de fenetre, typo…) contrairement au second ?

Comment peut on customiser ces apparences ?

Merci pour vos réponses !

JB

Bon, comme quoi y a pas d’heure pour coder, je suis obligé de prendre le glulxe.exe qui est juste dans outil_win car l’autre qui est dans outil_win/gargoyle_inform pose des problèmes au niveau de la gestion des fenetres.

Pourquoi le ogg marchait pas ? Parce que dans la version Gluxle de base téléchargeable sur internet, y a pas tous les dll qui étaient là, notamment le ogg.dll

Par contre, j’aimerais bien pouvoir customiser le gluxle.

J’ai créé un fichier .cfg qui change 2 - 3 choses mais y a t il une doc plus complète ?

JB

Ok c’est bon.

JB

Salut JB,

je suis ravis que mon kit débutant ait pu servir à un programmeur vétéran qui a déjà plus de 7 jeux à son actif ! :wink:

Alors pour répondre à tes questions, le fichier css ne sert que pour les fichiers html (readme). Il y avait une suggestion pour utiliser un fichier de style dans glulxe, mais je ne sais pas trop où ça en est, il me semble que c’est encore à l’étude, ce qui pourrait être très pratique. Pour le code coloré, j’avais utilisé un outil en ligne mais je ne sais plus lequel

Pour les numéros de ressources, tu peux mettre ce que tu veux, il me semble que tu peux avoir le même numéro attribué aux sons et images, mais selon les packageurs, c’est pas garanti que cela fonctionne (tu peux faire quand même l’essai). Je conseille plutôt d’utiliser des centaines, ou milliers, pour différencier le type de ressources, en plus l’avantage c’est que si tu les recherches dans ton code tu trouveras plus facilement un long numéro genre 1002 que 2, qui a dû être utilisé une centaine de fois ailleurs dans un autre contexte.

Pour la différence entre le glulxe de gargoyle, et celui dans outils_win, normalement à part la typo, il n’y en a pas de fondamentale, le fenêtrage devrait fonctionner pareil dans un cas comme dans l’autre. L’apparence de gargoyle est souvent plus jolie quand même (pas de bordure entre les fenêtres). Je viens d’essayer le Glulxe.exe (pas celui de gargoyle) avec un émulateur, et même si je n’ai pas les fichiers ogg.dll et vorbis.dll dans le dossier, j’ai quand même le son (pour info c’est vorbis qui gère le son, ogg c’est pour empaqueter ce son). Peut-être que c’est une ressource partagée qui se trouve dans les dossiers de windows ? Si tu penses que cela manque, tu peux contacter David Kinder qui s’occupe de winglulxe.

Ces fichiers dans le kit sont quand même un peu vieux, essaye de récupérer la dernière version de gargoyle sur code.google.com/p/garglk/

J’ai mis un fichier de configuration, à adapter selon la taille de fenêtre souhaitée, ici : ifiction.free.fr/index.php?id=affichage (mais c’est uniquement pour gargoyle, car c’est le seul qui est multiplateforme et dont on est certain qu’il s’affichera pareil sur windows, mac os x et linux.

Tu peux m’envoyer ton fichier blb à l’occasion, je pourrais le tester et te dire ce qu’il en est.

C’est surement obsolète mais voici peur-être une réponse pour :
« Je suis avec un bug qui me rend fou… bon, le héros conduit un bus et tourne à gauche ou à droite. » :

[TurnLeftSub ; print « ^That would be irrelevant, now.^ » ; ];
[TurnRightSub ; print « ^That would be irrelevant, now.^ » ; ] ;
Extend ‹ turn › replace

  • ‹ left › → TurnLeft
  • ‹ right › → TurnRight;

Cela ne peut pas faire autre chose que de renvoyer un message par défaut puisque il n’y a aucun message envoyé à l’objet « bus ».
Donc inutile d’essayer de l’intercepter avec un « before: ». La routine affiche simplement le message.
Un petit exemple qui fonctionne :

Constant Story "Le bus en folie.";
Constant Headline "^Inform 6 game.^";
!============================================================================
Include "Parser";
!============================================================================
[ ParserError error_type;
	switch (error_type) {
		SCENERY_PE: PrintOrRunVar(location.description); rtrue;
	}
	rfalse;
];
!============================================================================
Include "VerbLib";
!============================================================================
Object bus "Sur la route..."
	with
		name 'bus',
		initial "^C'est parti pour le Bus en folie...",
		describe "Vous êtes au volant du bus le pied au plancher...",
		description "C'est un vrai bolide!",
		before [ w swn; ! sauvegarde de wn!?			
			TurnLR: 
				swn = wn; wn = 3;
				w = NextWord();
				print "Hé Hop... CRIIIIII...^une bonne embardée à ",(address) w,"...^";
				wn = swn;
				rtrue;
		],
		cant_go [;
			if (noun < u_obj)
				"VROOOOM-VRAOUM... à fond vers ", (the) noun,"...";
			"Hé... c'est qu'un bus!";
		],
	has static enterable light
; 
!============================================================================
[ Initialise ;
	location = bus;
	lookmode = 2;
];
!============================================================================
Include "Grammar";
!============================================================================
[ TurnLRSub;
	! bus.before(); ! inutile en fait; le bus est ici une room.
];
Extend 'tourner' replace
Verb 'tourner'
	* 'a' 'droite'/'gauche' -> TurnLR
;

ParserError() est simplement là pour une petite astuce avec « describe » et « description » (Bus est ici une « Room »); rien à voir avec le sujet.

Un peu plus compliqué!

Constant Story "Le bus en folie.";
Constant Headline "^Inform game.^";
!============================================================================
Include "Parser";
!============================================================================
[ ParserError error_type;
	switch (error_type) {
		SCENERY_PE: PrintOrRunVar(location.description); rtrue;
	}
	rfalse;
];
!============================================================================
Include "VerbLib";
!============================================================================
Object bus "Sur la route..."
	with
		name 'bus',
		initial "^C'est parti pour le Bus en folie...",
		describe "Vous êtes au volant du bus le pied au plancher...",
		description "C'est un vrai bolide!",
		before [ w swn; ! sauvegarde de wn!?			
			TurnLR: 
				swn = wn; wn = 3;
				if (~~w) w = NextWord();
				print "Hé Hop... CRIIIIII...^une bonne embardée à ",(address) w,"...^";
				wn = swn;
				rtrue;
		],
		compass_look [ obj w saction;
			if (obj >= n_obj && obj < u_obj) {
				w = random('drrroite','gauuuche');
				saction = action; ! sauvegarde de action!?	
				action = ##TurnLR;
				self.before(w);
				action = saction;
				print "CRIIIIII... criiiiii... vroooom-vraoum...^";
				rtrue;
			}
		],
		cant_go [;
			if (noun >= n_obj && noun < u_obj)
				"VROOOOM-VRAOUM... à fond vers ", (the) noun,"...";
			"Hé... c'est qu'un bus!";
		],
		each_turn [;
			if (random(3)~=1) rfalse;
			"@<< ", (string) random("TUT! TUUUT", "COIN! COIN", "POUET! POUET", "PIN-PON! PIN-PON"), "!... @>>";
		],
	has static enterable light
; 
!============================================================================
[ Initialise ;
	location = bus;
	lookmode = 2;
];
!============================================================================
Include "Grammar";
!============================================================================
[ TurnLRSub;
	! bus.before(); ! inutile en fait; le bus est ici une room.
];
Extend 'tourner' replace
Verb 'tourner'
	* 'a' 'droite'/'gauche' -> TurnLR
;

Cette fois le « Bus » est bien un objet dans une « Room »

Constant Story "Le bus en folie.";
Constant Headline "^Inform 6 game.^";
!============================================================================
Include "Parser";
Include "VerbLib";
!============================================================================
Object route "Sur la route..."
	with
		description [;
			if (player in bus) "La route défile à vive allure...";
			"Un super bus est stationné ici."; 
		],
		cant_go "Montez dans le bus!",
	has light
;
Object bus "super bus" route
	with
		name 'bus',
		!inside_description "",
		description "C'est un vrai bolide!",
		react_before [;
			GO: 
				if (player in bus) {
					if (noun >= n_obj && noun < u_obj)
						"VROOOOM-VRAOUM... à fond vers ", (the) noun,"...";
					"Hé... c'est qu'un bus!";
				}
		],
		before [ w swn; ! sauvegarde de wn!?
			Vbus: 
				switch (verb_word) {
					'tourner':
						swn = wn; wn = 3; w = NextWord();
						print "Hé Hop... CRIIIIII...^une bonne embardée à ",(address) w,"...^";
						wn = swn; rtrue;
					'accelerer': "VROOOOM-VRAOUM!...";
					'freiner': "CRIIIIIiiiiiii!...";
					'klaxonner': "TUTU TUUU!...";
				}
		],
 has  static enterable concealed transparent
;
!============================================================================
[ Initialise ;
	location = bus; lookmode = 2;
];
!============================================================================
Include "Grammar";
!============================================================================
[ VbusSub;
	if (player in bus) {
		if (verb_word == 'tourner')
			testArg();
		bus.before();
	}
	else
	"Hé! du calme... vous n'êtez pas encore dans le bus.";
];

[ testArg; ! Si tourner sans arguments : > tourner
#Ifdef TARGET_ZCODE;
	if (parse->1 == 1) {
		parse-->(2*2-1) = 'a';
		parse-->(3*2-1) = random('droite', 'gauche');
		parse->1 = 3;
		wn = 4;
	}
#Ifnot; TARGET_GLULX
	if (parse-->0 == 1) {
		parse-->(2*3-2) = 'a';
		parse-->(3*3-2) = random('droite', 'gauche');
		parse-->0 = 3;
		wn = 4;
	}
#Endif;
];

Extend 'tourner' first
	* -> Vbus
	* 'a//' 'droite'/'gauche' -> Vbus
;
Verb 'accelerer' 'freiner' 'klaxonner' ! etc
	*  -> Vbus
;