Forum FunLabyrinthe

Le jeu de labyrinthe fun et gratuit - Retour au site

  • Vous n'êtes pas connecté.

#1 nov. 16, 2011 12:34:54

DerF_44
De : Nantes
Enregistré : 2011-10-24
Messages : 271
Réputation: +  0  -
Profil   Envoyer un courriel  

Débutants

Voici une de mes premières bidouilles en FunDelphi, un voleur de clés :

unit LostKeys;

uses
FunLabyBase;
components
LostKeysEffect: TLostKeysEffect;

effect TLostKeysEffect
name ‘voleur de clés’;
image ‘Characters/Angel’;

on Execute do
begin
if player has at least 4 SilverKeys then
Player discards 4 SilverKeys;
if player has at least 3 SilverKeys then
Player discards 3 SilverKeys;
if player has at least 2 SilverKeys then
Player discards 2 SilverKeys;
if player has at least 1 SilverKeys then
Player discards 1 SilverKeys;

if player has at least 4 GoldenKeys then
Player discards 4 GoldenKeys;
if player has at least 3 GoldenKeys then
Player discards 3 GoldenKeys;
if player has at least 2 GoldenKeys then
Player discards 2 GoldenKeys;
if player has at least 1 GoldenKeys then
Player discards 1 GoldenKeys;

end;
end;
end.

Si cela fonctionne parfaitement et qu'à la rencontre de cette charmante personne vous êtes dépouillé de toutes vos clés d'argent et d'or, (dans un maximum de 10) il faut bien avouer que le code n'est pas joli du tout !.. Quelle est donc la “ruse” afin de dérober un maximum de clé sans tomber dans un nombre négatif ?!
Comment connaître le nombre de clés possédées ?
Ou comment forcer une valeur minimale à 0 (genre : si nb. de clé < à 0, alors nb. de clé = 0)
Dans mon scénario le voleur disparaît furtivement et le joueur ne peut rien faire d'autre que de trouver d'autres clés !.. Dans l'idéal j'aurais aimé faire réapparaître le voleur à un autre endroit du labyrinthe et, avec une condition particulière (genre le joueur possède une arme) que le joueur puisse récupérer ses clés !..

Beaucoup plus grave : Comment dépouiller le joueur de TOUT ce qu'il possède !!!!????????

Désolé du caractère (très) débutant de ce post, il n'y a pas urgence, mais je suis en manque d'exemples simples et concrets !.
Merci.

PS: J'ai lu dans l'aide que si 2 outils permettent une même action, le joueur dispose automatiquement du choix de l'outil à utiliser (exemple une clé d'argent et une clé d'argent éternelle) cela ne fonctionne pas chez moi et plante le jeu : Tout est bloqué !. (obligé de tuer le processus “FunLaby.exe”)



(°!°) DerF

Modifié DerF_44 (nov. 16, 2011 12:42:47)

Hors-ligne

#2 nov. 16, 2011 14:46:05

Xaumina
Enregistré : 2011-01-20
Messages : 191
Réputation: +  5  -
Profil   Envoyer un courriel  

Débutants

J'ai le même problème quant aux deux objets avec la même action…

Hors-ligne

#3 nov. 16, 2011 16:16:48

sjrd
De : Belgique
Enregistré : 2010-04-11
Messages : 481
Réputation: +  14  -
Profil   Envoyer un courriel  

Débutants

Eh bien je ferais ceci :
if Player has at least 10 SilverKeys then
Player discards 10 SilverKeys
else
Player.SilverKeys := 0;
et pareil avec les GoldenKeys.


---
Sébastien Doeraene
Auteur de FunLabyrinthe

Hors-ligne

#4 nov. 16, 2011 16:58:23

DerF_44
De : Nantes
Enregistré : 2011-10-24
Messages : 271
Réputation: +  0  -
Profil   Envoyer un courriel  

Débutants

Ok, Vu !.. Impec !!.
(c'est ça que j'admire chez les programmeurs : C'est fluide, propre, net, efficace !)
Je pense que j'aurais peut-être pu trouver cette soluce, mais ça m'aurait pris des plombes !!
Donc merci !.


(°!°) DerF

Hors-ligne

#5 nov. 18, 2011 09:41:42

DerF_44
De : Nantes
Enregistré : 2011-10-24
Messages : 271
Réputation: +  0  -
Profil   Envoyer un courriel  

Débutants

Comment afficher un petit texte de présentation en “plein écran” en début de partie, à la manière du didacticiel !?. Et comment re-déclencher un “plein écran” en cours de jeu ?…




(°!°) DerF

Modifié DerF_44 (nov. 18, 2011 09:41:57)

Hors-ligne

#6 nov. 18, 2011 11:24:14

sjrd
De : Belgique
Enregistré : 2010-04-11
Messages : 481
Réputation: +  14  -
Profil   Envoyer un courriel  

Débutants

Le plus simple est d'aller voir directement comment c'est fait dans le didacticiel. L'utile se trouve dans DidacticielUtils.fnd. Puis avec ça il suffit de faire
ShowFullScreenMessage(Player, 'Le message à afficher en plein écran.');
Pour afficher un message au début du jeu, il faut faire un plugin :
plugin TOnGameStartedPlugin
on message GameStarted do
begin
// Ici les choses à faire au début du jeu
end;
end;


---
Sébastien Doeraene
Auteur de FunLabyrinthe

Modifié sjrd (nov. 18, 2011 11:24:32)

Hors-ligne

#7 nov. 18, 2011 14:01:38

DerF_44
De : Nantes
Enregistré : 2011-10-24
Messages : 271
Réputation: +  0  -
Profil   Envoyer un courriel  

Débutants

sjrd
Le plus simple est d'aller voir directement comment c'est fait dans le didacticiel. L'utile se trouve dans DidacticielUtils.fnd.

Mouais, ben justement, je regarde, je décortique, je dissèque, je copie, et rien ne fonctionne !..
Plus ça va et plus j'y comprends… rien !..
Je vais devoir re-re-re-lire l'aide je crois… Ou prendre un peu de recul..
Mais merci quand même !.

PS: Je vote pour une aide + touffue avec + d'exemples !.


(°!°) DerF

Hors-ligne

#8 nov. 18, 2011 14:12:23

sjrd
De : Belgique
Enregistré : 2010-04-11
Messages : 481
Réputation: +  14  -
Profil   Envoyer un courriel  

Débutants

Bon eh bien copie ceci dans ton .fnd :
uses
FunLabyBase, FullScreenPlayerMessage;

procedure BeginFullScreenMessages(Player: TPlayer);
var
Master: TMaster;
begin
Master := Player.Master;
Player.RemovePlugin(DefaultShowMessagePlugin);
Player.AddPlugin(FullScreenShowMessagePlugin);
end;

procedure EndFullScreenMessages(Player: TPlayer);
var
Master: TMaster;
begin
Master := Player.Master;
Player.RemovePlugin(FullScreenShowMessagePlugin);
Player.AddPlugin(DefaultShowMessagePlugin);
end;

procedure ShowFullScreenMessage(Player: TPlayer; const Text: string);
begin
BeginFullScreenMessages(Player);
try
Player.ShowMessage(Text);
finally
EndFullScreenMessages(Player);
end;
end;
Et avec ça tu peux utiliser les bouts de code de mon message précédent.


---
Sébastien Doeraene
Auteur de FunLabyrinthe

Modifié sjrd (nov. 18, 2011 14:12:54)

Hors-ligne

#9 nov. 18, 2011 15:36:07

DerF_44
De : Nantes
Enregistré : 2011-10-24
Messages : 271
Réputation: +  0  -
Profil   Envoyer un courriel  

Débutants

Vraiment désolé, ça marche pas !..
Suis paumé complet : Je les mets où les bouts de code de ton avant-dernier message ?!.
Dois-je utiliser l'unité “FullScrennPlayerMessage” ??. (via Fichier|unités utilisées…) et mettre à True le plug-in FullScreenShowMessage dans les Plug-in attachés au joueur ?!.
Mais bon sang où est-il situé le petit texte d'intro du didacticiel !!???
Tout s'embrouille !…
Dois-je me mettre au tricot et abandonner le FunDelphi !!!!!???
snif..

PS: Je vote pour un pack de 300 labyrinthes ultra-simples montrants un peu + le tour des milliards de possibilités de FunLabyrinthe !!


(°!°) DerF

Modifié DerF_44 (nov. 18, 2011 15:39:12)

Hors-ligne

#10 nov. 18, 2011 20:14:25

sjrd
De : Belgique
Enregistré : 2010-04-11
Messages : 481
Réputation: +  14  -
Profil   Envoyer un courriel  

Débutants

Il n'est pas nécessaire de mettre FullScreenPlayerMessages dans les unités utilisées. Il ne faut pas non plus mettre le plugin à True.
Il faut juste utiliser
ShowFullScreenMessage(Player, 'Le message');
au lieu de
Player.ShowMessage('Le message');
à n'importe quel endroit où tu veux afficher un message.

Dans le didacticiel, ce “n'importe quel endroit” est entre autres au lancement du labyrinthe. Cela se fait grâce au plugin TDidacticielPlugin (dans l'unité Didacticiel.fnd), grâce au message GameStarted. Il peut être réduit au second bout de code dans mon avant-dernier message.

All in all, si tu veux mettre un message en plein écran au lancement du labyrinthe, tu as besoin de ça :
unit TonLaby;

uses
FunLabyBase, FullScreenPlayerMessage;

components
OnGameStartedPlugin: TOnGameStartedPlugin;

procedure BeginFullScreenMessages(Player: TPlayer);
var
Master: TMaster;
begin
Master := Player.Master;
Player.RemovePlugin(DefaultShowMessagePlugin);
Player.AddPlugin(FullScreenShowMessagePlugin);
end;

procedure EndFullScreenMessages(Player: TPlayer);
var
Master: TMaster;
begin
Master := Player.Master;
Player.RemovePlugin(FullScreenShowMessagePlugin);
Player.AddPlugin(DefaultShowMessagePlugin);
end;

procedure ShowFullScreenMessage(Player: TPlayer; const Text: string);
begin
BeginFullScreenMessages(Player);
try
Player.ShowMessage(Text);
finally
EndFullScreenMessages(Player);
end;
end;

plugin TOnGameStartedPlugin
on message GameStarted do
begin
ShowFullScreenMessage(Player,
'Ici le texte affiché en plein écran au démarrage du jeu');
end;
end;

end.
Puis évidemment il faut mettre à True le plugin OnGameStartedPlugin dans l'inspecteur d'objets.


---
Sébastien Doeraene
Auteur de FunLabyrinthe

Hors-ligne

Pied de page

Modération

Powered by DjangoBB

Lo-Fi Version