Aide pour créer un système de commerce dans mon jeu

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

Modérateurs: Stormi, Otto Grimwald

Aide pour créer un système de commerce dans mon jeu

Messagepar StephaneF le Ven Mar 16, 2012 5:11 pm

Bonjour bonjour

comme le titre du topic l'indique, j'ai sévèrement besoin d'aide pour inclure dans mon jeu un système monétaire (minimaliste : une monnaie, pas de centimes, que des pièces, etc, bref : An écu is a kind of thing et basta) ainsi qu'un système commercial.

Déjà, j'ai de grosses lacunes en syntaxe informienne, car je ne sais même pas comment faire pour que le joueur puisse donner X pièces à un PNJ (ni l'inverse). Et je ne trouve pas, dans le manuel :(

Je pensais à un truc simple du genre par exemple :

Code: Tout sélectionner
A thing has a number called price.

Instead of buying something (called S):
let P be the price of S;
say "Vous payez [P] écus.";
move S to player;
[b]... et là , comment je retranche les P écus de l'inventaire du joueur ???[/b]
Avatar de l’utilisateur
StephaneF
Grand Ancien
 
Messages: 547
Inscription: Jeu Déc 27, 2007 3:53 pm
Localisation: Moselle

Re: Aide pour créer un système de commerce dans mon jeu

Messagepar Otto Grimwald le Ven Mar 16, 2012 6:24 pm

j'avais fait un truc comme ça ici http://ifiction.free.fr/concours2006/sa ... source.txt

l'argent s'appelle klitt ou glutt, mais je n'avais sans doute pas prévu tous les cas de figure possibles.

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

Re: Aide pour créer un système de commerce dans mon jeu

Messagepar StephaneF le Ven Mar 23, 2012 1:58 pm

Merci Otto, je trouverai sans doute dans ton code, des choses qui m'aideront par ailleurs, mais en fait ça ne répond pas à ma question fondamentale (au delà de l'objet " monnaie ") : comment faire pour donner X objets du même type à un PNJ , ou qu'un PNJ donne X objets du même type au joueur ?

si le joueur porte 5 bananes, comment dire au jeu : " transfère ces 5 bananes du player au pnj trucmuche " ?
Avatar de l’utilisateur
StephaneF
Grand Ancien
 
Messages: 547
Inscription: Jeu Déc 27, 2007 3:53 pm
Localisation: Moselle

Re: Aide pour créer un système de commerce dans mon jeu

Messagepar StephaneF le Ven Mar 23, 2012 5:34 pm

Inform does have a special syntax for creating up to 100 indistinguishable instantiations of things:
A coin is a kind of thing.
55 coins are in the couch. 3 coins are carried by the player. There are 7 coins. [the last definition creates objects without putting them anywhere]

There's many things to know about this. One, it only works on kinds (classes), not pre-existing instantiations, so creating a subclass for the purpose is usually needed. Two, the subclass must be defined before the multi-instantiation; else we'll have a single object called "55 coins". Three, unlike an array of objects, neither the programmer nor the player can specify any particular instance, such as "the thirty-second coin". Four, the programmer can't specify a quantity of them, as in "move 3 coins to the recliner" or "try taking three coins" because Inform will say "which 3 coins?". (As a general rule, Inform does not allow the programmer to specify several things for an action.) Five, the player can "TAKE THREE COINS" if he spells-out the number, and the action's Understand line applies to [things], as the Taking action is already declared to be.


Ok, il semblerait que ce que je veuille faire, soit tout simplement impossible.
Avatar de l’utilisateur
StephaneF
Grand Ancien
 
Messages: 547
Inscription: Jeu Déc 27, 2007 3:53 pm
Localisation: Moselle

Re: Aide pour créer un système de commerce dans mon jeu

Messagepar Natrium le Ven Mar 23, 2012 7:59 pm

Je pense qu'il y a d'autres solutions. Tu n'est pas obligé de créer des écus physiques, mais ce serait plutôt une variable que tu pourrais afficher dans la barre en haut par exemple.

Code: Tout sélectionner
The player has a number called money. A thing has a number called price.

Instead of buying something (called S):
decrease the money of the player by the price of S;
etc.

Comme ça, il n'y a pas de limites d'argent. Parce que si tu créé 100 pièces dès le départ, ça prend beaucoup de mémoire et une fois que le joueur a dépensé toutes ces pièces, elles se retrouvent où ? Hors du jeu ? Elles prennent de la place inutililement, alors.




Par contre, j'ai quand même trouvé une solution avec de vrais écus:

Code: Tout sélectionner
A thing has a number called price.

Instead of buying something (called S):
let P be the price of S;
say "Vous payez [P] écus.";
move S to player;
repeat with x running from 1 to P:
     let C be a random écu carried by the player;
     remove C from play

Ce que ça fait, ça choisi une pièce au hasard dans l'inventaire du joueur (on s'en fiche laquelle, puisque elles sont toutes pareilles), l'enlève du jeu, et ça le refait autant de fois que le prix de l'objet acheté (une boucle for, quoi). Comme ça, Inform ne se demande pas "which 3 coins?", puisque c'est du hasard.
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1165
Inscription: Mar Oct 04, 2011 11:18 pm

Re: Aide pour créer un système de commerce dans mon jeu

Messagepar StephaneF le Sam Mar 24, 2012 1:34 pm

Ca m'a l'air bien, ça, je vais essayer :) merci beaucoup
Avatar de l’utilisateur
StephaneF
Grand Ancien
 
Messages: 547
Inscription: Jeu Déc 27, 2007 3:53 pm
Localisation: Moselle

Re: Aide pour créer un système de commerce dans mon jeu

Messagepar StephaneF le Sam Mar 24, 2012 3:23 pm

hummm en fait je me retrouve avec ça :

Problem. The phrase or rule definition 'Instead of buying something (called S)' is written using the 'colon and indentation' syntax for its 'if's, 'repeat's and 'while's, where blocks of phrases grouped together are indented one tab step inward from the 'if ...:' or similar phrase to which they belong. But the tabs here seem to be misaligned, and I can't determine the structure. The first phrase going awry in the definition seems to be 'let P be the price of S' , in case that helps.


J'ai inséré le code à peu près tel quel :

Code: Tout sélectionner
A marchand is a kind of man.
An échoppe is a kind of room.

EchoppeOmarBjärn is an échoppe. It is southwest from ForêtKohnstla. "[line break]Sous une simple tenture, une table est posée, derrière laquelle [bold type]Omar Bjärn[roman type] vend des bananes.".

Omar Bjärn is a marchand. Omar Bjärn is in EchoppeOmarBjärn.

50 bananes are in EchoppeOmarBjärn.

A thing has a number called price.

The price of a banane is 2.

Instead of buying something (called S) :
let P be the price of S;
say "Vous payez [P] écus.";
move S to player;
repeat with x running from 1 to P:
let C be a random écu carried by the player;
remove C from play.
Avatar de l’utilisateur
StephaneF
Grand Ancien
 
Messages: 547
Inscription: Jeu Déc 27, 2007 3:53 pm
Localisation: Moselle

Re: Aide pour créer un système de commerce dans mon jeu

Messagepar Natrium le Sam Mar 24, 2012 5:38 pm

Ça me l'avait fait aussi, j'aurais dû préciser. En fait il faut que tu indentes les deux dernières lignes (un coup de tab) pour qu'inform comprenne qu'elles font partie du repeat et pas du instead of.
Normalement, ça devrait marcher.
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1165
Inscription: Mar Oct 04, 2011 11:18 pm

Re: Aide pour créer un système de commerce dans mon jeu

Messagepar StephaneF le Sam Mar 24, 2012 9:32 pm

Je ne savais pas que la mise en forme du texte avait une réelle incidence, tiens ... merci encore !
Avatar de l’utilisateur
StephaneF
Grand Ancien
 
Messages: 547
Inscription: Jeu Déc 27, 2007 3:53 pm
Localisation: Moselle

Re: Aide pour créer un système de commerce dans mon jeu

Messagepar StephaneF le Lun Mar 26, 2012 9:34 pm

Hum ... désolé, mais en fait ... j'ai toujours le même message d'erreur ... :oops:
Avatar de l’utilisateur
StephaneF
Grand Ancien
 
Messages: 547
Inscription: Jeu Déc 27, 2007 3:53 pm
Localisation: Moselle

Re: Aide pour créer un système de commerce dans mon jeu

Messagepar StephaneF le Mar Mar 27, 2012 8:29 am

Bien, à force de tâtonner voilà un truc qui fonctionne

A marchand is a kind of man.
An échoppe is a kind of room.

EchoppeOmarBjärn is an échoppe. It is southwest from Champs. "[line break]Sous une simple tenture, une table est posée, derrière laquelle [bold type]Omar Bjärn[roman type] vend des bananes.".

Omar Bjärn is a marchand. Omar Bjärn is in EchoppeOmarBjärn. Omar Bjärn carries a torche.

A banane is a kind of fruit.

A goyave is a kind of fruit.

50 bananes are in EchoppeOmarBjärn.

10 goyaves are in EchoppeOmarBjärn.

A thing has a number called price.

The price of a banane is 2.
The price of a goyave is 20.

Instead of buying something (called S) :
let P be the price of S;
say "Vous payez [P] écus pour [if S is male]un[otherwise if S is female]une[end if] [the printed name of S].";
move S to player;
repeat with x running from 1 to P
begin;
let C be a random écu carried by the player;
let M be a random marchand in the location of the player;
move C to M;
end repeat.
Avatar de l’utilisateur
StephaneF
Grand Ancien
 
Messages: 547
Inscription: Jeu Déc 27, 2007 3:53 pm
Localisation: Moselle

Re: Aide pour créer un système de commerce dans mon jeu

Messagepar StephaneF le Mar Mar 27, 2012 4:22 pm

désolé de monologuer !

par contre là j'ai un nouveau problème qui se pose : quand le joueur veut acheter un objet d'un type qu'il possède déjà (exemple, il a une gourde dans son inventaire, mais veut en acheter une deuxième, à vendre chez un marchand) , le jeu ne " comprend " pas de lui même qu'il achète ... la gourde qu'il n'a pas sur lui ! :'(
Avatar de l’utilisateur
StephaneF
Grand Ancien
 
Messages: 547
Inscription: Jeu Déc 27, 2007 3:53 pm
Localisation: Moselle

Re: Aide pour créer un système de commerce dans mon jeu

Messagepar Otto Grimwald le Jeu Mai 03, 2012 5:21 pm

hmm, je pense que ce n'est pas possible de base. Faudrait sans doute faire une fonction spéciale pour ça. Je pense que dans la doc il y a des exemples de ce type.

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


Retourner vers Questions techniques et aide pour votre code

Qui est en ligne

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