Bonjour à tous!
Je suis actuellement en développement d'un parc safari pour PSP 0.7.
Il est fonctionnel à 99% et utilisable avec une seul variable et trois attaques à créer dans la BDD.
Mon souci est au niveau du calcul général, mon but est de faire le parc en génération 1,
J'ai trouvé un site ou le calcul est écrit en "texte", j'ai donc tenté de le transcrire en script.
Voici le texte provenant de du site (anglais):
At the start of an encounter, two counters - an "angry counter" and an "eating counter" - are set to 0. Whenever Bait is thrown, the angry counter is reset while the eating counter increases by a random value between 1 and 5 (but to no more than 255). The opposite occurs if a Rock is thrown: the eating counter is reset and the angry counter increases on the same basis. The catch rate is doubled (to no more than 255) whenever a Rock is thrown, but halved (rounded down) whenever Bait is thrown.
At the end of each turn, if either the angry or eating counter is nonzero, it is decreased by 1; if the angry counter is decreased to 0, the modified catch rate resets to the Pokémon's initial catch rate. A random value between 0 and 255 inclusive is generated, and if this is less than half of the Pokémon's Speed rounded down (if the Pokémon is eating), double the Speed (if the Pokémon is in a neutral state), or four times the Speed (if the Pokémon is angry), the Pokémon escapes. A Pokémon will also always escape if its Speed is 128 or more, even if it is eating.
Et voici la formule que j'ai déduit de cela:
Code: |
#J'initialise mes compteurs au début @angry = 0 #Compteur de colère @eating = 0 #Compteur de faim @chance_safari = 0 # la multiplication par multiple de 2 de la chance de capture
#Quand on lance l'APPAT @angry = 0 @eating += 1 + rand(5) @chance_safari / 2 if@chance_safari == 0 @chance_safari + 1 end
#Quand on lance le CAILLOU @angry += 1 + rand(5) @eating = 0 @chance_safari * 2 if@chance_safari == 0 @chance_safari + 1 end
#Vous l'aurez compris, jusque ici mon #-compteur de colère(angry) et augmenté d'une valeur aléatoire allant de 1 à 5 si un caillou est lancé. #-compteur de faim(eating) et augmenté d'une valeur aléatoire allant de 1 à 5 si un appat est lancé. #-@chance_safari me permet de multiplier le catch_rate par 2 à chaque caillou lancé (ball_rate *= chance_safari) dans le battle_wild. #-le compteur @chance_safari est divisé par 2 si un appat est lancé, si ce compteur est à zero, on ajoute 1 (pour revenir au taux initial de la ball et éviter une division par zero).
#Ici on voit si c'est l'appat le caillou ou la ball lancé
# Le skill manger if @eating != 0 @eating -= 1 @enemy_skill = Skill.new(564) end
# Le skill furieux if @angry != 0 @angry -=1 @enemy_skill = Skill.new(566) end
# Pour le skill paisible (ball) la méthode est un peut différente car j'utilise une autre variable (@ball) qui est augmenté de 1 si le joueur lance la ball et rate la capture) if @ball == 1 #Ici une action permettant d'aller à la réponse plus bas dans le script. end end
#Ensuite! Après la "réponse" de l’adversaire par rapport à l'action utilisé par le joueur (ball, caillou ou appat), #on va déterminé si l'adversaire fuit ou non:
# On crée un nombre aléatoire entre 1 et 255. @decision_safari = 0 @decision_safari += 1 + rand(255)
# Ensuite, on détermine l'action en fonction de: # (Ne cherchez pas de correspondance entre les skill précédent, ces actions sont initialisée autrement et mettre tout le code serait inutile et nuirait à la compréhension du post, # sachez juste que ces fonctions s’exécutent après le skill)
# Si l'adversaire mange (appat) if @decision_safari <= (@enemy.spd / 2) # scene = end_battle_flee_enemy end
# Si l'adversaire ne fait rien (comme après avoir raté la capture par exemple) if @decision_safari <= (@enemy.spd * 2) scene = end_battle_flee_enemy end
# Si l'adversaire est furieux (caillou) if @decision_safari <= (@enemy.spd * 4) scene = end_battle_flee_enemy end
|
Voila, merci de me dire se que vous pensez de ma déduction par rapport au texte, je ne suis pas bilingue, j'ai donc surement fait une erreur...
Pourquoi, par exemple, me faire faire une variable aléatoire quand on lance l'appat alors que simplement l'augmenter de un ou le mettre à zero aurait suffit..?
Merci et bonne journée à tous