Bonjour, je suis actuellement en train d'essayer de trouver une valeur en fonction de deux paramètres mais je bloque un peu..

Voici comment cela devrait fonctionner :
On a un numericupdown pour indiquer un niveau et une checkbox pour changer une valeur entre 0 (BFree) et 1 (BPremium) pour calculer un total d'item obtenus sur un jeu.
En fonction du niveau donné et de la valeur retournée on aura donc un nombre d'item différent
Exemple, au niveau 26, on en a 3 si la valeur est à 0 et 4 si la valeur est à 1.

J'ai donc un datatable avec 3 colonnes, Level, BFree et BPremium et toutes ces valeurs ajoutées au Load :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
season1.Rows.Add(2, 1, 1);
            season1.Rows.Add(12, 2, 2);
            season1.Rows.Add(25, 3, 3);
            season1.Rows.Add(26, 3, 4);
            season1.Rows.Add(34, 4, 5);
            season1.Rows.Add(43, 4, 6);
            season1.Rows.Add(46, 5, 7);
            season1.Rows.Add(53, 5, 8);
            season1.Rows.Add(73, 5, 9);
            season1.Rows.Add(83, 5, 10);
            season1.Rows.Add(86, 5, 11);
            season1.Rows.Add(93, 5, 12);
Donc dans la colonne 1 c'est bien en fonction du niveau, et, si la checkbox est non cochée c'est la première valeur sinon c'est la deuxième.

Mon problème est le suivant : Comment faire pour trouver la valeur correspondante selon si la checkbox est cochée ou non, sachant que là il y a uniquement les niveaux 2, 12, 25, 26, 32, 43, 46, 53, 73, 83, 86 et 93 mais que par exemple si le niveau donnée est 88 et la checkbox cochée la valeur sera toujours 11 juqu'au niveau 93.

J'ai fait cette fonction pour faire une seule et même fonction peu importe la saison pour utiliser donc bplevel qui correspond au niveau et bpbought en fonction du 0/1 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
private void calculbattlepass(int season, decimal bplevel, bool bpbought)
{
//en fonction de BPLevel et bpbought trouver dans la datatable la valeur correspondante, si aucune valeur correspond à bplevel alors on cherche la plus proche en dessous
}
Mon ancien code était celui ci (les valeurs sont différentes car il s'agit d'une autre saison) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
        private void numericUpDown2_ValueChanged(object sender, EventArgs e)
        {
            if (checkBox2.Checked == true)
            {
                calculbps8(numericUpDown2.Value, true);
            }
            else if (checkBox2.Checked == false)
            {
                calculbps8(numericUpDown2.Value, false);
            }
        }
 
        private void calculbps8(decimal bplevel, bool bpbought)
        {
           if(bpbought == true) //bp acheté
           {
                if (bplevel >= 2 && bplevel <= 4)
                {
                    bp8packs = 1;
                }
                else if (bplevel >= 5 && bplevel <= 12)
                {
                    bp8packs = 3;
                }
                else if (bplevel >= 13 && bplevel <= 20)
                {
                    bp8packs = 4;
                }
                else if (bplevel >= 21 && bplevel <= 28)
                {
                    bp8packs = 5;
                }
                else if (bplevel >= 29 && bplevel <= 31)
                {
                    bp8packs = 6;
                }
                else if (bplevel >= 32 && bplevel <= 36)
                {
                    bp8packs = 7;
                }
                else if (bplevel >= 37 && bplevel <= 38)
                {
                    bp8packs = 8;
                }
                else if (bplevel >= 39 && bplevel <= 44)
                {
                    bp8packs = 9;
                }
                else if (bplevel >= 45 && bplevel <= 60)
                {
                    bp8packs = 10;
                }
                else if (bplevel >= 61 && bplevel <= 68)
                {
                    bp8packs = 11;
                }
                else if (bplevel >= 69 && bplevel <= 96)
                {
                    bp8packs = 12;
                }
                else if (bplevel == 97)
                {
                    bp8packs = 13;
                }
                else if (bplevel >= 98)
                {
                    bp8packs = 14;
                }
 
            }
            else if(bpbought == false) //bp gratuit
           {
                if (bplevel >= 5 && bplevel <= 12)
                {
                    bp8packs = 1;
                }
                else if (bplevel >= 13 && bplevel <= 20)
                {
                    bp8packs = 2;
                }
                else if (bplevel >= 21 && bplevel <= 28)
                {
                    bp8packs = 3;
                }
                else if (bplevel >= 29 && bplevel <= 36)
                {
                    bp8packs = 4;
                }
                else if (bplevel >= 37 && bplevel <= 44)
                {
                    bp8packs = 5;
                }
                else if (bplevel >= 45 && bplevel <= 60)
                {
                    bp8packs = 6;
                }
                else if (bplevel >= 61)
                {
                    bp8packs = 7;
                }
            }
            label4.Text = "S8 Battle Pass [" + bp8packs + "]";
        }
Et c'est BEAUCOUP trop long, j'aimerais donc simplifier tout ça avec une table qui stocke tout et chercher dedans en fonction des valeurs données..