Bienvenue visiteur !
|
Désactiver la neige
Statistiques
Liste des membres
Contact
Mentions légales
487 connectés actuellement
30912676 visiteurs depuis l'ouverture
2312 visiteurs aujourd'hui
Partenaires
Tous nos partenaires
Devenir partenaire
|
kabu -
posté le 29/01/2018 à 17:44:58 (57 messages postés)
| | Domaine concerné: script
Logiciel utilisé: ruby
Bonjour, je suis en train de coder un jeu, et dans une étape de mon jeu, je voudrais supprimer une valeur d'un tableau uniquement si celle-ci est unique, je veut utiliser un rand() pour que la suppression soit aléatoire, mais je ne sait pas comment faire. J'utilise la version 2.3.3 de ruby.
J'ai tenter ceci mais rien n'y fait:
1
2
3
4
5
6
7
8
|
@rd = rand(@main_des_joueurs[@joueur].size)
while(@main_des_joueurs[@joueur].count(@rd) > 1)
@rd = rand(@main_des_joueurs[@joueur].size)
end
@defause[@joueur] << @main_des_joueurs[@joueur].at(@rd)
@main_des_joueurs[@joueur].delete_at(@rd)
|
@main_des_joueurs[] est un tableau comme ceci dans initialize : @main_des_joueurs = [[],[],[],[]] , plus tard chaque tableaux internes seront remplie de 13 valeurs
Merci de votre aide
|
François Berhn -
posté le 29/01/2018 à 19:21:01 (5402 messages postés)
| Tonton Hellper | Tu peux utiliser delete_at(i) pour supprimer une valeur d'un array à un index i.
|
La liste des raisons pour lesquelles le making se meurt, la cinquième va vous étoner | Des projets abandonnés, source d'inspiration :D | Mes jeux |
kabu -
posté le 29/01/2018 à 19:27:16 (57 messages postés)
| | Merci, mais je connais déjà cette méthode ^^', regarde bien je l’utilise dans ma dernière ligne
|
Tassle -
posté le 30/01/2018 à 19:29:22 (5274 messages postés)
| Disciple de Pythagolf | Bah faut que tu expliques où ça bloque, parce que "rien n'y fait" c'est pas très précis ^^
Quelle est la différence entre l'effet du code que tu nous montres et l'effet que tu voudrais obtenir ?
|
~~ |
kabu -
posté le 31/01/2018 à 17:49:33 (57 messages postés)
| | Salut, je vais mieux m'expliquer, j'ai un tableau @main_des_joueurs, plus tard ce tableau est remplie de valeurs aléatoires, admettons que j'obtient ceci:
1
| @main_des_joueurs[0][14, 14, 5, 6, 3, 7, 8] |
Ensuite j'ai coder une fonction defausse, la voici:
1
2
3
4
5
6
7
8
9
10
11
12
| #pour la defausse de pions
def defausse
if @joueur == 0
@defause[0] << @main_des_joueurs[0].at(@sel)
@main_des_joueurs[0].delete_at(@sel)
else
@defause[@joueur] << @main_des_joueurs[@joueur].at(rand(@main_des_joueurs[@joueur].size))
@main_des_joueurs[@joueur].delete_at(rand(@main_des_joueurs[@joueur].size))
end
@turn += 1
combine
end |
Concrètement je voudrait empêcher la defause si mon tableau contient plusieurs fois la même valeur
(par exemple dans mon tableau je possède 2 fois la valeur 14) et relancer le random pour defauser un pion aléatoirement tant que cette valeur aléatoire est présente 2 fois, en gros si j'ai 2 fois 14, sa boucle tant que cette valeur est présente plus d'une fois.
Je ne sais pas comment faire ceci, merci de votre aide
|
fleurman -
posté le 31/01/2018 à 19:44:01 (50 messages postés)
| | Ciao,
Au lieu de faire:
1
2
3
|
rand(@main_des_joueurs[@joueur].size)
|
Il faut que tu séléctionne l'une des entrées de ton array:
1
2
3
4
|
val = @main_des_joueurs[@joueur].sample
#sample choisi une valeur aléatoire
|
Ensuite tu peux vérifier si cette valeur est présente plus d'une fois et refaire .sample sinon, comme dans ton premier post.
Finalement, utilise
1
2
3
4
|
@main_des_joueurs[@joueur].delete(val)
#val étant la valeur obtenue plus tôt
|
Source: http://ruby-doc.org/core-2.3.3/Array.html
|
kabu -
posté le 31/01/2018 à 20:00:08 (57 messages postés)
| | Merci beaucoup ^^, dernière petite chose(je crois), quand une valeur d'un tableau est supprimer, cette valeur va dans un tableau du nom de defause, comment je pourrais faire pour détecter si cette valeur(imaginons 4) ce trouve proche d'une valeur que j'ai dans un tableau(donc si j'ai 2 et 3 ou 5 et 6 ou 3 et 5) et que si oui bah... happy^^'
Merci beaucoup pour votre aide, je suis en train de faire un jeu mah-jong pour info^^
|
fleurman -
posté le 31/01/2018 à 21:03:26 (50 messages postés)
| | Voila ce que je te propose:
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
|
def addToDefausse(index,val)
# ajoute la nouvelle valeur
@defausse[index].push(val)
# retourne false si la table a moins de 3 valeurs
return false unless @defausse[index].size > 2
# fait une copie dans une variable temporaire
tmp = @defausse[index]
# arrange les éléments de la table par ordre croissant
tmp.sort!
# élimine les doublons
tmp.uniq!
# trouve l'index de val
id = tmp.index(val)
# test pour id-1,id,id+1
if id > 0 && id < tmp.size-1
return true if (tmp[id-1]+tmp[id]+tmp[id+1])-(tmp[id-1]*3) == 3
end
# test pour id,id+1,id+2
if id < tmp.size-3
return true if (tmp[id]+tmp[id+1]+tmp[id+2])-(tmp[id]*3) == 3
end
# test pour id-2,id-1,id
if id > 1
return true if (tmp[id-2]+tmp[id-1]+tmp[id])-(tmp[id-2]*3) == 3
end
return false
end
|
Cette fonction ajoute une valeur à @defausse et renvoie true/false si cette valeur est au centre d'une suite consécutive parmi les valeurs de @defausse.
1
2
3
4
5
6
7
8
9
|
@defausse = [0,2,3,5,6,7]
print addToDefausse(6) # true
print addToDefausse(1) # true
print addToDefausse(4) # true
print addToDefausse(8) # true
print addToDefausse(15) # false
|
Le Mah-Jong c'est sympa.
|
kabu -
posté le 31/01/2018 à 21:27:55 (57 messages postés)
| | Merci beaucoup, mais j'avoue que je ne sais pas utiliser ta fonction, et je comprend pas trop le return (parce que je sais pas m'en servir^^')
Je vais te montrer le code complet(si y a moyen de l’améliorer je suis preneur)
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
| require 'gosu'
class Mahjong < Gosu::Window
def initialize
@widht = 640
@weight = 480
super @widht, @weight
self.caption = 'Mahjong'
@back = Gosu::Image.new("Pictures/back.png", :tileable => true)
@capital_tuile = [*1..8] + [*9..42] * 4
@main_des_joueurs = [[],[],[],[]]
@sel = 0
@curseur = Gosu::Image.new("Pictures/curseur.png", :tileable => true)
@curseurx = 190 + 20 * @sel
@curseury = 410
@action = 0
@defause = [[],[],[],[]]
@com = [[],[],[],[]]
@turn = 0
@joueur = 0
start
end
#mise a jour du jeu
def update
@sel = 0 if @sel >= @main_des_joueurs[0].size
@sel = @main_des_joueurs[0].size - 1 if @sel < 0
@sel -= 1 if Gosu.button_down? Gosu::KB_LEFT
@sel += 1 if Gosu.button_down? Gosu::KB_RIGHT
@curseurx = 190 + 20 * @sel
if Gosu.button_down? Gosu::KB_UP
@action += 1
@action = 0 if @action>4
end
if Gosu.button_down? Gosu::KB_DOWN
@action -= 1
@action = 4 if @action<0
end
core if Gosu.button_down? Gosu::KB_C
end
#dessin du jeu
def draw
@back.draw(0,0,0)
@curseur.draw(@curseurx, @curseury, 0)
@actionne = Gosu::Image.new("Pictures/action/#{@action}.png", :tileable => true)
@actionne.draw(0,0,0)
affichage(@main_des_joueurs[0], 211.5, 15.5, 0, 0)
affichage(@defause[0], 211.5, 13, 0, 0)
affichage(@com[0], 211.5, 11.5, 0, 0)
affichage(@main_des_joueurs[1], 31.25, 90, -90, 1)
affichage(@defause[1], 29.75, 90, -90, 1)
affichage(@com[1], 28.25, 90, -90, 1)
affichage(@main_des_joueurs[2], 211.5, 0.5, 180, 0)
affichage(@defause[2], 211.5, 1.5, 180, 0)
affichage(@com[2], 211.5, 2.5, 180, 0)
affichage(@main_des_joueurs[3], 1, 90, 90, 1)
affichage(@defause[3], 2.5, 90, 90, 1)
affichage(@com[3], 4, 90, 90, 1)
end
def affichage(tableau, x, y, angle, mode)
if tableau != nil
@tuiles = Array.new(tableau.size) do |index|
sprite = Gosu::Image.new("Pictures/#{tableau[index]}.png", :tileable => true)
sprite.draw_rot(x + 20 * index, 30 * y, 0, angle) if mode == 0
sprite.draw_rot(x * 20, y + 23.5 * index, 0, angle) if mode != 0
end
end
end
#depard du jeu
def start
4.times do |i|
pioche(13, i)
fleur(i)
end
end
#Donne les pions à chaques joueurs
def pioche(nb, joueur)
nb.times do
index = rand(@capital_tuile.size)
@main_des_joueurs[joueur].push(@capital_tuile[index])
@capital_tuile.delete_at(index)
end
end
#Vérifie la présence de pions particuliers, enlève les pions et compense en piochant
def fleur(joueur)
9.times do |i|
if @main_des_joueurs[joueur].member?(i)
@defause[joueur] << i
@main_des_joueurs[joueur].delete(i)
while @main_des_joueurs[joueur].length < 13
pioche(1, joueur)
end
end
end
end
#pour la defausse de pions
def defausse
if @joueur == 0
@defause[0] << @main_des_joueurs[0].at(@sel)
@main_des_joueurs[0].delete_at(@sel)
else
@a = 5
while(@main_des_joueurs[@joueur].count(@a) > 1)
@a = rand(@main_des_joueurs[@joueur].size)
end
@defause[@joueur] << @main_des_joueurs[@joueur].at(@a)
@main_des_joueurs[@joueur].delete_at(@a)
end
@turn += 1
combine
end
#coeur du jeu
def core
@j0 = [0 , 4 , 8 , 12 , 16 , 20 , 24 , 28 , 32 , 36 , 40, 44, 48]
@j1 = [1 , 5 , 9 , 13 , 17 , 21 , 25 , 29 , 33 , 37 , 41, 45, 49]
@j2 = [2 , 6 , 10 , 14 , 18 , 22 , 26 , 30 , 34 , 38 , 42, 46, 50]
@j3 = [3 , 7 , 11 , 15 , 19 , 23 , 27 , 31 , 35 , 39 , 43, 47, 51]
@j0.size.times do |i|
if @j0[i] == @turn #J0
@joueur = 0
elsif @j1[i] == @turn#J1
@joueur = 1
elsif @j2[i] == @turn#J2
@joueur = 2
elsif @j3[i] == @turn#J3
@joueur = 3
end
@joueur = 3 if @joueur < 0
@joueur = 0 if @joueur > 3
end
case @action
when 0 #defause
defausse
when 1 #selectionner
@tmp = @main_des_joueurs[0][@sel]
@main_des_joueurs[0].delete_at(@sel)
@action = 3
when 2 #quitter le jeu
exit
when 3 #poser le pion
@main_des_joueurs[0].insert(@sel, @tmp)
@action = 1
when 4 #reset
window = Mahjong.new.show
end
end
#gere les combinaisons du jeu
def combine
4.times do |i|
#gere la paire
if @main_des_joueurs[i].count(@defause[@joueur].last) == 1 && @main_des_joueurs[0].count(@defause[0].last) == 0
@com[i] << @defause[@joueur].last
@com[i] << @defause[@joueur].last
while(@main_des_joueurs[i].member?(@defause[@joueur].last))
@main_des_joueurs[i].delete(@defause[@joueur].last)
end
@defause[@joueur].pop
#gere le pung
elsif @main_des_joueurs[i].count(@defause[@joueur].last) == 2 && @main_des_joueurs[0].count(@defause[0].last) == 0
@com[i] << @defause[@joueur].last
@com[i] << @defause[@joueur].last
@com[i] << @defause[@joueur].last
while(@main_des_joueurs[i].member?(@defause[@joueur].last))
@main_des_joueurs[i].delete(@defause[@joueur].last)
end
@defause[@joueur].pop
#gere le kong
elsif @main_des_joueurs[i].count(@defause[@joueur].last) == 3 && @main_des_joueurs[0].count(@defause[0].last) == 0
@com[i] << @defause[@joueur].last
@com[i] << @defause[@joueur].last
@com[i] << @defause[@joueur].last
@com[i] << @defause[@joueur].last
while(@main_des_joueurs[i].member?(@defause[@joueur].last))
@main_des_joueurs[i].delete(@defause[@joueur].last)
end
@defause[@joueur].pop
pioche(1, i)
#gere le show (en cour)
end
end
end
end
window = Mahjong.new.show |
Je code en ruby 2.3.3 et je me sert de la lib 'gosu'.
Merci du gros coup de pouce, je créditerais
|
fleurman -
posté le 31/01/2018 à 21:48:45 (50 messages postés)
| | J'ai mis à jour ma proposition pour prendre en charge les trois suites possibles.
Pour l'utiliser, au lieu d'ajouter la nouvelle valeur à @defausse comme ça:
1
2
3
|
@defausse[0] << val
|
tu fais:
1
2
3
|
suite = addToDefausse(0,val)
|
'suite' sera true si la nouvelle valeur est dans une suite, sinon false.
le mot-clé return permet de mettre fin à un bloc (comme une fonction) en renvoiant optionellement une valeur.
Selon moi, tant que ça fonctionne comme on veut, il n'y a pas besoin d'amélioration.
Tient nous au courant de ton projet.
Au plaisir !
|
kabu -
posté le 31/01/2018 à 22:54:16 (57 messages postés)
| | Merci, mais j'ai un petit souci, j'ai adopter ta fonction comme ceci:
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
| require 'gosu'
class Mahjong < Gosu::Window
def initialize
@widht = 640
@weight = 480
super @widht, @weight
self.caption = 'Mahjong'
@back = Gosu::Image.new("Pictures/back.png", :tileable => true)
@capital_tuile = [*1..8] + [*9..42] * 4
@main_des_joueurs = [[],[],[],[]]
@sel = 0
@curseur = Gosu::Image.new("Pictures/curseur.png", :tileable => true)
@curseurx = 190 + 20 * @sel
@curseury = 410
@action = 0
@defause = [[],[],[],[]]
@com = [[],[],[],[]]
@turn = 0
@joueur = 0
start
end
#mise a jour du jeu
def update
@sel = 0 if @sel >= @main_des_joueurs[0].size
@sel = @main_des_joueurs[0].size - 1 if @sel < 0
@sel -= 1 if Gosu.button_down? Gosu::KB_LEFT
@sel += 1 if Gosu.button_down? Gosu::KB_RIGHT
@curseurx = 190 + 20 * @sel
if Gosu.button_down? Gosu::KB_UP
@action += 1
@action = 0 if @action>4
end
if Gosu.button_down? Gosu::KB_DOWN
@action -= 1
@action = 4 if @action<0
end
core if Gosu.button_down? Gosu::KB_C
end
#dessin du jeu
def draw
@back.draw(0,0,0)
@curseur.draw(@curseurx, @curseury, 0)
@actionne = Gosu::Image.new("Pictures/action/#{@action}.png", :tileable => true)
@actionne.draw(0,0,0)
affichage(@main_des_joueurs[0], 211.5, 15.5, 0, 0)
affichage(@defause[0], 211.5, 13, 0, 0)
affichage(@com[0], 211.5, 11.5, 0, 0)
affichage(@main_des_joueurs[1], 31.25, 90, -90, 1)
affichage(@defause[1], 29.75, 90, -90, 1)
affichage(@com[1], 28.25, 90, -90, 1)
affichage(@main_des_joueurs[2], 211.5, 0.5, 180, 0)
affichage(@defause[2], 211.5, 1.5, 180, 0)
affichage(@com[2], 211.5, 2.5, 180, 0)
affichage(@main_des_joueurs[3], 1, 90, 90, 1)
affichage(@defause[3], 2.5, 90, 90, 1)
affichage(@com[3], 4, 90, 90, 1)
end
def affichage(tableau, x, y, angle, mode)
if tableau != nil
@tuiles = Array.new(tableau.size) do |index|
sprite = Gosu::Image.new("Pictures/#{tableau[index]}.png", :tileable => true)
sprite.draw_rot(x + 20 * index, 30 * y, 0, angle) if mode == 0
sprite.draw_rot(x * 20, y + 23.5 * index, 0, angle) if mode != 0
end
end
end
#depard du jeu
def start
4.times do |i|
pioche(13, i)
fleur(i)
end
end
#Donne les pions à chaques joueurs
def pioche(nb, joueur)
nb.times do
index = rand(@capital_tuile.size)
@main_des_joueurs[joueur].push(@capital_tuile[index])
@capital_tuile.delete_at(index)
end
end
#Vérifie la présence de pions particuliers, enlève les pions et compense en piochant
def fleur(joueur)
9.times do |i|
if @main_des_joueurs[joueur].member?(i)
@defause[joueur] << i
@main_des_joueurs[joueur].delete(i)
while @main_des_joueurs[joueur].length < 13
pioche(1, joueur)
end
end
end
end
#pour la defausse de pions
def defausse
if @joueur == 0
suite = addToDefausse(0,@sel)
@main_des_joueurs[0].delete_at(@sel)
else
@a = 5
while(@main_des_joueurs[@joueur].count(@a) > 1)
@a = rand(@main_des_joueurs[@joueur].size)
end
suite = addToDefausse(@joueur, @a)
@main_des_joueurs[@joueur].delete_at(@a)
end
@turn += 1
combine
end
#coeur du jeu
def core
@j0 = [0 , 4 , 8 , 12 , 16 , 20 , 24 , 28 , 32 , 36 , 40, 44, 48]
@j1 = [1 , 5 , 9 , 13 , 17 , 21 , 25 , 29 , 33 , 37 , 41, 45, 49]
@j2 = [2 , 6 , 10 , 14 , 18 , 22 , 26 , 30 , 34 , 38 , 42, 46, 50]
@j3 = [3 , 7 , 11 , 15 , 19 , 23 , 27 , 31 , 35 , 39 , 43, 47, 51]
@j0.size.times do |i|
if @j0[i] == @turn #J0
@joueur = 0
elsif @j1[i] == @turn#J1
@joueur = 1
elsif @j2[i] == @turn#J2
@joueur = 2
elsif @j3[i] == @turn#J3
@joueur = 3
end
@joueur = 3 if @joueur < 0
@joueur = 0 if @joueur > 3
end
case @action
when 0 #defause
defausse
when 1 #selectionner
@tmp = @main_des_joueurs[0][@sel]
@main_des_joueurs[0].delete_at(@sel)
@action = 3
when 2 #quitter le jeu
exit
when 3 #poser le pion
@main_des_joueurs[0].insert(@sel, @tmp)
@action = 1
when 4 #reset
window = Mahjong.new.show
end
end
#gere les show (by Fleurman)
def addToDefausse(index,val)
# ajoute la nouvelle valeur
@defausse[index].push(val)
# retourne false si la table a moins de 3 valeurs
return false unless @defausse[index].size > 2
# fait une copie dans une variable temporaire
tmp = @defausse[index]
# arrange les éléments de la table par ordre croissant
tmp.sort!
# élimine les doublons
tmp.uniq!
# trouve l'index de val
id = tmp.index(val)
# test pour id-1,id,id+1
if id > 0 && id < tmp.size-1
return true if (tmp[id-1]+tmp[id]+tmp[id+1])-(tmp[id-1]*3) == 3
end
# test pour id,id+1,id+2
if id < tmp.size-3
return true if (tmp[id]+tmp[id+1]+tmp[id+2])-(tmp[id]*3) == 3
end
# test pour id-2,id-1,id
if id > 1
return true if (tmp[id-2]+tmp[id-1]+tmp[id])-(tmp[id-2]*3) == 3
end
return false
end
#gere les combinaisons du jeu
def combine
4.times do |i|
#gere la paire
if @main_des_joueurs[i].count(@defause[@joueur].last) == 1 && @main_des_joueurs[0].count(@defause[0].last) == 0
@com[i] << @defause[@joueur].last
@com[i] << @defause[@joueur].last
while(@main_des_joueurs[i].member?(@defause[@joueur].last))
@main_des_joueurs[i].delete(@defause[@joueur].last)
end
@defause[@joueur].pop
#gere le pung
elsif @main_des_joueurs[i].count(@defause[@joueur].last) == 2 && @main_des_joueurs[0].count(@defause[0].last) == 0
@com[i] << @defause[@joueur].last
@com[i] << @defause[@joueur].last
@com[i] << @defause[@joueur].last
while(@main_des_joueurs[i].member?(@defause[@joueur].last))
@main_des_joueurs[i].delete(@defause[@joueur].last)
end
@defause[@joueur].pop
#gere le kong
elsif @main_des_joueurs[i].count(@defause[@joueur].last) == 3 && @main_des_joueurs[0].count(@defause[0].last) == 0
@com[i] << @defause[@joueur].last
@com[i] << @defause[@joueur].last
@com[i] << @defause[@joueur].last
@com[i] << @defause[@joueur].last
while(@main_des_joueurs[i].member?(@defause[@joueur].last))
@main_des_joueurs[i].delete(@defause[@joueur].last)
end
@defause[@joueur].pop
pioche(1, i)
#gere le show (en cour)
end
end
end
end
window = Mahjong.new.show |
mais j'ai un code erreur:
1
2
3
4
5
6
7
| C:/Users/Magic/Desktop/mah-jong/game.rb:160:in `addToDefausse': undefined method `[]' for nil:NilClass (NoMethodError)
from C:/Users/Magic/Desktop/mah-jong/game.rb:105:in `defausse'
from C:/Users/Magic/Desktop/mah-jong/game.rb:141:in `core'
from C:/Users/Magic/Desktop/mah-jong/game.rb:39:in `update'
from C:/Ruby23/lib/ruby/gems/2.3.0/gems/gosu-0.13.2-x86-mingw32/lib/gosu/patches.rb:56:in `tick'
from C:/Ruby23/lib/ruby/gems/2.3.0/gems/gosu-0.13.2-x86-mingw32/lib/gosu/patches.rb:56:in `tick'
from C:/Users/Magic/Desktop/mah-jong/game.rb:225:in `<main>' |
Je sais pas comment resoudre ce souci, et une fois que cette fonction sera correct, comment ajouter la valeur rejeter (par exmple 4 si jai 2 et 3 etc...) dans un tableau ?
1000 merci du coup de main
|
fleurman -
posté le 01/02/2018 à 09:06:27 (50 messages postés)
| | C'est parce que ta variable est '@defause' mais j'ai écris '@defausse'
Il faut uniformiser le tout...
Je ne comprends pas bien ta dernière question.
Aucune valeur n'est rejetée.
Quand tu appelle la fonction addToDefausse(id,val), la valeur val est premièrement ajoutée à
@défausse[id], puis une valeur est retournée. Cette valeur sera true si la nouvelle valeur est membre d'une suite de trois chiffres consécutifs, sinon false.
Ainsi tu peux faire:
1
2
3
4
5
6
7
8
|
suite = addToDefausse(@joueur, @a)
if suite
#faire quelque chose quand la nouvelle valeur est membre d'une suite
else
#faire quelque chose quand la nouvelle valeur n'est pas membre d'une suite
end
|
|
kabu -
posté le 01/02/2018 à 23:15:26 (57 messages postés)
| | Merci de ton aide, j'ai corriger le petit souci, mais maintenant pour terminer a 100% cette fonction, il faudrait trouver un moyen de faire en sorte que l'IA qui ce trouve à gauche(et uniquement elle) est la possibilité de prendre le pion defauser(par le joueur à sa droite), sa s’appelle un show, l'IA prend le pion en vérifiant qu'il appartiens bien à une suite de valeur qu'elle possède dans son tableau(sa main en gros) et met les 3 valeurs qui ce suivent dans un tableau @com[@joueur] et supprime les 2 valeurs qu'elle avait en main, donc en gros si je defause le 2 et que l'IA possède le 1 et 3 etc.. alors elle prend mon 2, l'injecte dans son tableau @com[@joueur], injecte dans ce même tableau son 1 et 3 puis les supprime de sa main)
https://zupimages.net/up/18/05/1vbv.png
|
Index du forum > Entraide > [RESOLU] [ruby] Suppresion aléatoire Ruby 2.3.3
|
|
|