Un petit système de dialogues "dynamiques"

Pour discuter des langages que nous utilisons pour réaliser nos jeux : problèmes, solutions, suggestions...

Modérateurs: Stormi, Otto Grimwald

Un petit système de dialogues "dynamiques"

Messagepar StephaneF le Jeu Oct 10, 2013 11:03 pm

Hello

Un petit truc pour avoir des dialogues sous formes de menus (comme dans Planescape Torment par exemple) où les répliques possibles sont numérotées, et changent en fonction du contexte du jeu - la difficulté étant ensuite de "comprendre" la réponse du joueur.

Code: Tout sélectionner
World is a room. Pierre is a man in World.

A person can be beau or moche.

A person can be riche or pauvre. A person is usually pauvre.

A person can be réponseattendue. A person is usually not réponseattendue.

Pointsgiving is an action applying to one number. Understand "[a number]" as pointsgiving.

The QuestionNumber is a number that varies.
The NombreDeRéponses is a number that varies.

Before talking to Pierre :
now the QuestionNumber is 1 ;
now the NombreDeRéponses is 0 ;
say "[line break]QuestionNumber : [QuestionNumber] - NombreDeRéponses : [NombreDeRéponses]." ;
say line break ;
[ LE JOUEUR ]
[ --- beauté --- ]
if a random chance of 1 in 2 succeeds
begin ;
   now the player is moche ;
otherwise ;
   now the player is beau ;
end if ;
[ --- richesse --- ]
if a random chance of 1 in 2 succeeds
begin ;
   now the player is riche ;
otherwise ;
   now the player is pauvre ;
end if ;
[ PIERRE ]
[ --- beauté --- ]
if a random chance of 1 in 2 succeeds
begin ;
   now Pierre is beau ;
otherwise ;
   now Pierre is moche ;
end if ;
[ --- richesse --- ]
if a random chance of 1 in 2 succeeds
begin ;
   now Pierre is riche ;
otherwise ;
   now Pierre is pauvre ;
end if ;
[ ---------------------------------------------- DIALOGUE ---------------------------------------------- ]
say "[QuestionNumber]. Salut, je suis Stef." ; increase the QuestionNumber by 1 ; increase the NombreDeRéponses by 1 ;
say "[QuestionNumber + 1]. Quelle heure est-il ?" ; increase the QuestionNumber by 1 ; increase the NombreDeRéponses by 1 ;
if the player is pauvre and Pierre is riche
begin ;
   say "[QuestionNumber]. Donne moi des sous, je suis pauvre !" ; increase the QuestionNumber by 1 ; increase the NombreDeRéponses by 1 ;
otherwise if the player is riche and Pierre is pauvre ;
   say "[QuestionNumber]. Tiens, mendiant, pour tes bonnes oeuvres !" ; increase the QuestionNumber by 1 ; increase the NombreDeRéponses by 1 ;
end if ;
if the player is moche
begin ;
   say "[QuestionNumber]. Tu as vu comme je suis laid ?" ; increase the QuestionNumber by 1 ; increase the NombreDeRéponses by 1 ;
end if ;
if Pierre is moche
begin ;
   say "[QuestionNumber]. Tu es laid et je vais te casser la gueule." ; increase the QuestionNumber by 1 ; increase the NombreDeRéponses by 1 ;
otherwise ;
   say "[QuestionNumber]. Tu es beau et je vais te faire des bisous." ; increase the QuestionNumber by 1 ; increase the NombreDeRéponses by 1 ;
end if ;
say "[QuestionNumber]. Bonne journée, Pierre." ; increase the NombreDeRéponses by 1 ;
now the player is réponseattendue ;
say "[line break]QuestionNumber : [QuestionNumber] - NombreDeRéponses : [NombreDeRéponses]." ;
stop the action.

Instead of pointsgiving when the player is réponseattendue :
let BBB be the number understood ;
if the NombreDeRéponses is 4
begin ;
   if BBB is 1, say "Salut, moi je suis Pierre." ;
   if BBB is 2, say "Il est 14h." ;
   if BBB is 3, say "[if Pierre is moche]Salaud, je me défendrai.[otherwise]Merci, je suis fan des bisous.[end if]" ;
   if BBB is 4, say "Pareillement." ;
otherwise if the NombreDeRéponses is 5;
   if BBB is 1, say "Salut, moi je suis Pierre." ;
   if BBB is 2, say "Il est 14h." ;
   if BBB is 3, say "La transaction se fait." ;
   if BBB is 4, say "[if Pierre is moche]Salaud, je me défendrai.[otherwise]Merci, je suis fan des bisous.[end if]" ;
   if BBB is 5, say "Pareillement." ;
otherwise if the NombreDeRéponses is 6;
   if BBB is 1, say "Salut, moi je suis Pierre." ;
   if BBB is 2, say "Il est 14h." ;
   if BBB is 3, say "La transaction se fait." ;
   if BBB is 4, say "Oui, tu es atroce à voir." ;
   if BBB is 5, say "[if Pierre is moche]Salaud, je me défendrai.[otherwise]Merci, je suis fan des bisous.[end if]" ;
   if BBB is 6, say "Pareillement." ;
end if ;
now the player is not réponseattendue ;
now the QuestionNumber is 1 ;
now the NombreDeRéponses is 0.
Dernière édition par StephaneF le Jeu Oct 10, 2013 11:17 pm, édité 1 fois.
Avatar de l’utilisateur
StephaneF
Grand Ancien
 
Messages: 554
Inscription: Jeu Déc 27, 2007 3:53 pm
Localisation: Moselle

Re: Un petit système de dialogues "dynamiques"

Messagepar StephaneF le Jeu Oct 10, 2013 11:06 pm

Ce qui peut donner, en situation, par exemple :

World
Vous pouvez voir Pierre.

>talk to pierre

1. Salut, je suis Stef.
3. Quelle heure est-il ?
3. Donne moi des sous, je suis pauvre !
4. Tu as vu comme je suis laid ?
5. Tu es beau et je vais te faire des bisous.
6. Bonne journée, Pierre.

>3
La transaction se fait.

>talk to pierre

1. Salut, je suis Stef.
3. Quelle heure est-il ?
3. Tu es laid et je vais te casser la gueule.
4. Bonne journée, Pierre.

>4
Pareillement.

>talk to pierre

1. Salut, je suis Stef.
3. Quelle heure est-il ?
3. Tiens, mendiant, pour tes bonnes oeuvres !
4. Tu es laid et je vais te casser la gueule.
5. Bonne journée, Pierre.

>4
Salaud, je me défendrai.

>talk to pierre

1. Salut, je suis Stef.
3. Quelle heure est-il ?
3. Tu as vu comme je suis laid ?
4. Tu es laid et je vais te casser la gueule.
5. Bonne journée, Pierre.

>3
Oui, tu es atroce à voir.

>talk to pierre
Avatar de l’utilisateur
StephaneF
Grand Ancien
 
Messages: 554
Inscription: Jeu Déc 27, 2007 3:53 pm
Localisation: Moselle

Re: Un petit système de dialogues "dynamiques"

Messagepar Otto Grimwald le Ven Oct 11, 2013 12:54 pm

j'aime bien la génération automatique des numbres, ce qui pourrait permettre de présenter les dialogues dans le désordre ou d'en intercaler si nécessaire, mais j'aime moins le fait d'avoir répété les réponses possibles (selon s'il y a 3, 4 ou 5 réponses). Peut-être qu'une possibilité serait d'utiliser les tableaux, d'associer une réponse à une question, et de piocher dedans selon les questions posées.

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

Re: Un petit système de dialogues "dynamiques"

Messagepar StephaneF le Ven Oct 11, 2013 1:01 pm

Oui, mais les choses peuvent être plus compliquées, par exemple si telle réponse entraine telle modification de variable.
Avatar de l’utilisateur
StephaneF
Grand Ancien
 
Messages: 554
Inscription: Jeu Déc 27, 2007 3:53 pm
Localisation: Moselle


Retourner vers Questions techniques et aide pour votre code

Qui est en ligne

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

cron