[DB - AL] Système de missions
Publié : 11 Mars 2020 13:50
Bonjour à tous,
J'ai fais un script pour gérer les missions que l'on reçoit aléatoirement dans mon jeu de gestion, mais je pense qu'il est infâmement peu pratique et optimisé, et j'aurais besoin de votre avis et votre aide pour améliorer tout ça, mes connaissances étant très basique.
J'avais tout d'abord fais un système utilisant une liste, comme ceci :
Je pense que c'était pas trop mal comme fonctionnement, assez pratique, suffisait de rajouter des missions dans la liste et basta. MAIS ! Je manquais de contrôle sur le tout, je voulais pouvoir faire des exception, dire que si c'est tel mission il se passe si, si c'est tel mission ça te propose ça en plus etc. Donc j'ai réfléchi à un autre fonctionnement, qui lui est cool au niveau du contrôle que j'ai sur chaque mission, par contre je pense que c'est une calamité sur tout les autres points.
Voici l'idée:
Donc bon.. comme vous pouvez l'apercevoir dans le void tirageMission, j'ai plusieurs styles de missions, plusieurs paliers, plusieurs difficultés et de l'aléatoire partout dans tout ce bazar. Donc vous pouvez imaginer la gueule du script une fois entier.
Ma demande est donc tout simplement : avez vous déjà un avis à donner sur ces scripts, et surtout, si vous deviez créer un système de ce style pour gérer des missions données aléatoirement mais tout en gardant un contrôle dessus, qu'est ce que vous feriez et comment ? Je sais utilisé les bases du C# mais je ne connais pas encore les fonctions et méthodes avancées.
Merci d'avance pour votre aide !
Bonne journée
J'ai fais un script pour gérer les missions que l'on reçoit aléatoirement dans mon jeu de gestion, mais je pense qu'il est infâmement peu pratique et optimisé, et j'aurais besoin de votre avis et votre aide pour améliorer tout ça, mes connaissances étant très basique.
J'avais tout d'abord fais un système utilisant une liste, comme ceci :
Code : Tout sélectionner
public List<string> missionsEnqueteMagie1 = new List<string>();
void Start()
{
//missions Enquete Magie 1
missionsEnqueteMagie1.Add("Blablabla");
missionsEnqueteMagie1.Add("Blablabla");
missionsEnqueteMagie1.Add("Blablabla");
missionsEnqueteMagie1.Add("Blablabla");
missionsEnqueteMagie1.Add("Blablabla");
missionsEnqueteMagie1.Add("Blablabla");
missionsEnqueteMagie1.Add("Blablabla");
missionsEnqueteMagie1.Add("Blablabla");
}
public string missionEnqueteMagique1Aleatoire()
{
int nr = Random.Range(0, missionsEnqueteMagie1.Count);
string missionEnqueteMag1 = missionsEnqueteMagie1[nr];
missionsEnqueteMagie1.RemoveAt(nr);
return missionEnqueteMag1;
}
Voici l'idée:
Code : Tout sélectionner
//MAGIC //MAGIC //MAGIC //MAGIC
//ENQUETE //ENQUETE
//PALIER 0 //DIFFICULTE 1
bool magicEnquetePalier0Diff1_1;
string magicEnquetePalier0Diff1_Txt1;
bool magicEnquetePalier0Diff1_2;
string magicEnquetePalier0Diff1_Txt2;
bool magicEnquetePalier0Diff1_3;
string magicEnquetePalier0Diff1_Txt3;
public void Start()
{
//MAGIC //MAGIC //MAGIC //MAGIC
//ENQUETE //ENQUETE
//PALIER 0 //DIFFICULTE 1
magicEnquetePalier0Diff1_Txt1 ="Bonjour." + "\r\n" + "Je viens vous voir car j'ai un petit problème...Enquete ";
magicEnquetePalier0Diff1_Txt2 ="Bonjour." + "\r\n" + "Je viens vous voir car j'ai un petit problème...Enquete ";
magicEnquetePalier0Diff1_Txt3 ="Bonjour." + "\r\n" + "Je viens vous voir car j'ai un petit problème...Enquete ";
}
public void tirageMission()
{
if(mainGameControl.vagueMagique)
{
if (mainGameControl.palier0)
{
missionControl.difficulte = UnityEngine.Random.Range(1, 10);
if (missionControl.difficulte >= 1 && missionControl.difficulte <= 7)
{
missionControl.difficulte1 = true;
missionControl.difficulte2 = false;
missionControl.difficulte3 = false;
}
if (missionControl.difficulte >= 8 && missionControl.difficulte <= 9)
{
missionControl.difficulte1 = false;
missionControl.difficulte2 = true;
missionControl.difficulte3 = false;
}
if (missionControl.difficulte == 10)
{
missionControl.difficulte1 = false;
missionControl.difficulte2 = false;
missionControl.difficulte3 = true;
}
if (missionControl.difficulte1)
{
missionHasard = UnityEngine.Random.Range(1, 20);
if (missionHasard == 1)
{
if (magicEnquetePalier0Diff1_1 == false)
{
magicEnquetePalier0Diff1_1 = true;
txtMission.text = magicEnquetePalier0Diff1_Txt1;
missionControl.enquete = true;
}
else
{
tirageMission();
}
}
if (missionHasard == 2)
{
if (magicEnquetePalier0Diff1_2 == false)
{
magicEnquetePalier0Diff1_2 = true;
txtMission.text = magicEnquetePalier0Diff1_Txt2;
missionControl.enquete = true;
}
else
{
tirageMission();
}
}
if (missionHasard == 3)
{
if (magicEnquetePalier0Diff1_3 == false)
{
magicEnquetePalier0Diff1_3 = true;
txtMission.text = magicEnquetePalier0Diff1_Txt3;
missionControl.enquete = true;
}
else
{
tirageMission();
}
}
}
}
}
}
Ma demande est donc tout simplement : avez vous déjà un avis à donner sur ces scripts, et surtout, si vous deviez créer un système de ce style pour gérer des missions données aléatoirement mais tout en gardant un contrôle dessus, qu'est ce que vous feriez et comment ? Je sais utilisé les bases du C# mais je ne connais pas encore les fonctions et méthodes avancées.
Merci d'avance pour votre aide !
Bonne journée