Partagez
Aller en bas
reveurduciel
reveurduciel
Membre

Nombre de messages : 197
Date d'inscription : 18/12/2014

Mon premier script Empty Mon premier script

le Ven 6 Mar 2015 - 4:24
Bonjour, voici mon premier script. Il est assez simple, mais je l'aime bien.
C'est pour mon jeu, le but est le suivant. Quand l'utilisateur clique sur un lieu, le script vérifie dans la banque de 200 "Missions" disponibles celles qui s'appliquent et créé un Array avec seulement les missions pertinentes.

Le premier filtre fait ça :

A - En premier lieu, il isole celles qui sont disponibles sur le lieu cliqué
B - Ensuite rencontre des conditions (exemple, la variable amitié est assez élevé ou le joueur a 2000 po)

Le second filtre fait ça :

C - Il vérifie si la mission et unique (donc ne se répète pas) et si elle est unique et déjà fait, il ne l'ajoute pas.


Ce que j'aime bien, c'est que j'ai réuni toutes les missions (chacune ayant toutes ses infos dans un Array) dans un Array d'Array, donc facilement jouable avec un for, par exemple. J'aime également beaucoup la vérification des conditions (point B) car les conditions sont directement placé dans l'Array de chaque mission. Quand je le créé, le script vérifie si la condition est vraie et remplace la ligne de code par un true ou un false.

Donc, pour commentaire s\'il vous plaît Smile





Code:



class CarteVille

  def initialize

    # Ces variables globales servent à vérifier si les Missions s'appliquent.
    # Par exemple, certaines missions ne se débloquent que quand l'amitié
      # pour un personnage est assez forte.
    
    $chrono         = 0
    $amitieYui      = 30
    $amitieAki      = 30
    $amitieTsuyoki  = 30
    $amitieNashi    = 30  
    $amitieDodu     = 30
    $amitieJolie    = 30
    $amitieCreature = 30
    $amitieMB       = 30
    $amitiePouti    = 30
    
    @eventFait = []
    @eventFait[124] = true
    
  end
  
  def creerMenu(lieu)
 
    missions = [
    # [Numéro Mission, Titre Mision, Nom icone, Conditions, Unique?]
    [20,"Libérer l'École Daikon no Kokoro [Nv 10]",2,"Ecole", $domine_ecole == false, false],
    [21,"Libérer l'École Iwashikumo [Nv 20]",2,"Lycee", $domine_lycee == false, false],
    [22,"Libérer le Parc [Nv 15]",2,"Parc", $domine_parc == false, false],
    [23,"Libérer le Centre Commercial [Nv 20]",2,"Commerce", $domine_commerce == false, false],
    [24,"Libérer la Forêt [Nv 25]",2,"Forêt", $domine_forêt == false, false],
    [25,"Libérer la Plage [Nv 25]",2,"Plage", $domine_plage == false, false],
    [26,"Libérer le Cimetière [Nv 25]",2,"Cimetière", $domine_cimetiere == false, false],
    
    [30,"S'entrainer[Nv 10]",3,"Ecole", false, false],
    [31,"S'entrainer[Nv 10]",3,"Lycee", false, false],
    [32,"S'entrainer[Nv 1-3]",3,"Parc", true, false],
    [33,"S'entrainer[Nv 10]",3,"Commerce", false, false],
    [34,"S'entrainer[Nv 4-6]",3,"Forêt", true, false],
    [35,"S'entrainer[Nv 10]",3,"Plage", false, false],
    [36,"S'entrainer[Nv 7-10]",3,"Cimetière", true, false],
    [50,"Assister à une classe d'art",12,"Ecole", $chrono > 10, true],
    [51,"Assister à un cours de théâtre",12,"Ecole",$amitieYui > 20, true],
    [52,"Promenade dans les jardins",12,"Parc",$amitieYui > 30, true],
    [53,"Aller au cinéma",12,"Commerce",$amitieYui > 40, true],
    [58,"Passer du temps avec Yui",12,"Base",true, false],
    [59,"Déclaration d'amour",12,"Parc",$amitieYui > 20, true],
 
    [60,"Passer du temps aux arcades",13,"Commerce",$amitieAki >=10,true],
    [61,"Jouer à Donjon et Lamentins",13,"Base", $amitieAki >=20, true],
    [62,"Participer à un grandeur nature",13,"Parc", $amitieAki >=30, true],
    [69,"Passer du temps avec Akitoshi",13,"Base",$amitieAki >=10, false],
    
    [70,"S'entrainer au Kendo",14,"Ecole", $amitieTsuyoki >= 10, true],
    [78,"Passer du temps avec Tsuyoki",14,"Ecole", $amitieTsuyoki >= 10, true],
    [79,"Déclaration d'amour",14,"Plage",$amitieTsuyoki > 70, true],
    
    [80,"Courir 5 km", 15, "Parc", $amitieNashi >=10, true],
    [89,"Passer du temps avec Nashi",15,"Base",true, false],
    
    [90,"Discuter de l'Entre-Monde",16,"Ecole", $amitieDodu >= 10, true],
    [99,"Passer du temps avec Dodu-San",16,"Base",true, false],
    
    [100,"Scéance de tir à l'arc",17,"Lycee",$amitieJolie >=10, true],
    [108,"Passer du temps avec la jolie réceptionniste",17,"Lycee", $amitieJolie >= 10, true],
    [109,"Déclaration d'amour",17,"Lycee",$amitieTsuyoki > 80, true],
    
    [118,"Passer du temps avec la créature",18,"Lycee", $amitieCreature >= 10, true],
    [119,"Déclaration d'amour",18,"Forêt",$amitieCreature > 70, true],
    
    [122,"Discuter de mise à jour",19,"Base", $amitieMB >= 30, true],
    [129,"Passer du temps avec Monsieur B.",19,"Lycee", $amitieMB >= 10, true],
    
    [139,"Passer du temps avec Pouti.",20,"Lycee", $amitiePouti >= 10, true],
    
    [150,"Suivre des cours de danse",4,"Commerce",true,false],
    
     [170,"Tailler les arbustres",5,"Parc",true,false],
    [171,"Effaroucher les goélands",5,"Plage", true, false],
    [172,"Nettoyer les pierres tombales",5,"Cimetière",true,false],
      
    [181,"Chercher un artefact",6,"Tous",true,true],
    [182,"Recruter un étudiant",7,"Ecole",true,true],
    [183,"Recruter une pieuvre",7,"Plage",true,true],
    [183,"Acheter de l'équipement",0,"Commerce",true,true],
    [184,"Acheter des gadgets",0,"Commerce",true,true],
    [185,"Acheter des pièces de robot top secret","Commerce",@eventFait[124],true],
    [184,"Se reposer",0,true,true]    

 ]
    
    menu = []
    
    for i in 0..missions.length-1                             # Pour toutes les missions disponibles
      if (lieu == missions[i][3] && missions[i][4])           # Sélectionne celles qui sont dans le bon lieu et qui rencontrent les conditions
        unless (missions[i][5] && @eventFait[missions[i][0]])  # Sauf les événements uniques déjà vus.
          menu.push(missions[i])
        end
      end
    end
    

    
    return menu
    
  end
  
    
  def cliqueVille(lieu)
    
    # Cette méthode est lancée lorsque le joueur clique sur un endroit de la carte
    # de la ville et précise quoi faire.
    
    menu = creerMenu(lieu)
    msgbox_p(menu)
  end      
    


end


a = CarteVille.new()
a.cliqueVille("Parc")

vincent26
vincent26
Membre

Nombre de messages : 766
Age : 24
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010

Mon premier script Empty Re: Mon premier script

le Ven 6 Mar 2015 - 16:40
Pas mal vraiment Smile tu devrais juste mettre ta liste de quête dans une constante en début de script (ou dans un module) plutôt que dans la def (car elle est réassigner a chaque fois que tu l'appel sinon)
reveurduciel
reveurduciel
Membre

Nombre de messages : 197
Date d'inscription : 18/12/2014

Mon premier script Empty Re: Mon premier script

le Ven 6 Mar 2015 - 17:21
Bonjour Vincent, j'ai essayé au début de créer le tableau comme une constante en initialisation, mais le problème, c'est que lorsque je l'initialise en début de scrip, toute les conditions sont vérifiées et remplacé par des true ou false. Ensuite, même si une variable change, ça n'a plus aucun effet, puisque la condition n'est plus "Amitié <=10" mais un bolléen.
En réécrivant le tableau à chaque fois, à chaque fois que je fais un click, je revérifie les conditions.
Un juste milieu serait de garder le tableau Mission comme une variable d'instance, de ne pas le mettre à jour à chaque clic (inutile), mais plutôt à chaque fois qu'une variable globale change. En effet, toutes les conditions sont liées au variable globale.
Aussi, je me demandais, est ce qu'il y aurait un raccourci pour écrire

$domine_forêt == false
peut-être !domine_forêt ?
vincent26
vincent26
Membre

Nombre de messages : 766
Age : 24
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010

Mon premier script Empty Re: Mon premier script

le Ven 6 Mar 2015 - 20:23
oui !$domine_forêt marche

C'est vraie je n'y avait pas penser pour la constante ^^
si ça ne rame pas laisse comme ça ce n'est pas grave Wink
reveurduciel
reveurduciel
Membre

Nombre de messages : 197
Date d'inscription : 18/12/2014

Mon premier script Empty Re: Mon premier script

le Ven 6 Mar 2015 - 20:50
Hum... ça rame pas, mais je n'ai qu'une fraction des événements possibles.
Je vais me faire une fonction UPDATE Smile
Contenu sponsorisé

Mon premier script Empty Re: Mon premier script

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum