Okay je m'y remet.
Merci encore une fois de ta patience
Version imprimable
Okay je m'y remet.
Merci encore une fois de ta patience
Re bonjour,
Suite à vos remarques et à une suite de réflexion, j'ai décide de tout recommencer, puisque je n'arrivais pas à obtenir ce que je voulais.
Je vous joint donc mon nouvel essai :
Il y a encore des fautes bien évidemment, mais est-il plus logique dans sa construction ??Code:
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
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416 package com.aviy.memory; import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.Timer; import java.util.TimerTask; import com.aviy.memory.Manager.UpdateCardsHandler; import android.app.Activity; import android.graphics.drawable.Drawable; import android.util.Log; import android.view.View; import android.widget.Button; public class Jeu extends Activity{ public int largeur; public int longueur; private Card firstCard; private Card seconedCard; private Card carte1; private Card carte2; private Card carte3; private Card carte4; private Card carte5; private Card carte6; private Card carte7; private Card carte8; private Card carte9; private Card carte10; private Card carte11; private Card carte12; private Card carte13; private Card carte14; private Card carte15; private Card carte16; private int backImage; private List<Card> tableaudepart; private List<Card> tableaufinal; private List<Button> boutton; Button button1; Button button2; Button button3; Button button4; Button button5; Button button6; Button button7; Button button8; Button button9; Button button10; Button button11; Button button12; Button button13; Button button14; Button button15; Button button16; private static Object lock = new Object(); private UpdateCardsHandler handler; public void creationcarte(Button button,int IDpaire, int y, int x, int image){ //on crée les instances carte1=new Card(button,x,y,IDpaire=1 ,image = R.drawable.card1); carte2=new Card(button,x,y,IDpaire=1 ,image = R.drawable.card2); carte3=new Card(button,x,y,IDpaire=2 ,image = R.drawable.card3); carte4=new Card(button,x,y,IDpaire=2 ,image = R.drawable.card4); carte5=new Card(button,x,y,IDpaire=3 ,image = R.drawable.card5); carte6=new Card(button,x,y,IDpaire=3 ,image = R.drawable.card6); carte7=new Card(button,x,y,IDpaire=4 ,image = R.drawable.card7); carte8=new Card(button,x,y,IDpaire=4 ,image = R.drawable.card8); carte9=new Card(button,x,y,IDpaire=5 ,image = R.drawable.card9); carte10=new Card(button,x,y,IDpaire=5 ,image = R.drawable.card10); carte11=new Card(button,x,y,IDpaire=6 ,image = R.drawable.card11); carte12=new Card(button,x,y,IDpaire=6 ,image = R.drawable.card12); carte13=new Card(button,x,y,IDpaire=7 ,image = R.drawable.card13); carte14=new Card(button,x,y,IDpaire=7 ,image = R.drawable.card14); carte15=new Card(button,x,y,IDpaire=8 ,image = R.drawable.card15); carte16=new Card(button,x,y,IDpaire=8 ,image = R.drawable.card16); tableaudepart = new ArrayList<Card>(); tableaudepart.add(carte1); tableaudepart.add(carte2); tableaudepart.add(carte3); tableaudepart.add(carte4); tableaudepart.add(carte5); tableaudepart.add(carte6); tableaudepart.add(carte7); tableaudepart.add(carte8); tableaudepart.add(carte9); tableaudepart.add(carte10); tableaudepart.add(carte11); tableaudepart.add(carte12); tableaudepart.add(carte13); tableaudepart.add(carte14); tableaudepart.add(carte15); tableaudepart.add(carte16); } public void placement(){ //on choisis une place dans le tableau pour chaque carte setContentView(R.layout.jeux1); for (int i=16; i>0; i--){ int a =1; int b=i; int random = (int)(Math.random() * (b-a)); tableaufinal.add(tableaudepart.get(random)); tableaudepart.remove(random); } } public void booton(){ boutton = new ArrayList<Button>(); boutton.add(button1); boutton.add(button2); boutton.add(button3); boutton.add(button4); boutton.add(button5); boutton.add(button6); boutton.add(button7); boutton.add(button8); boutton.add(button9); boutton.add(button10); boutton.add(button11); boutton.add(button12); boutton.add(button13); boutton.add(button14); boutton.add(button15); boutton.add(button16); } public void turn(){ View.OnClickListener first ; first = new View.OnClickListener() { @Override public void onClick(View v) { if (button1.getId()==((Button)v).getId()) { Card t = tableaufinal.get(1); int u = t.IDpaire; backImage = t.image; button1.setBackgroundColor(backImage); } else if (button2.getId()==((Button)v).getId()) { Card t = tableaufinal.get(2); int u = t.IDpaire; backImage = t.image; button2.setBackgroundColor(backImage); } else if (button3.getId()==((Button)v).getId()) { Card t = tableaufinal.get(3); int u = t.IDpaire; backImage = t.image; button3.setBackgroundColor(backImage); } else if (button4.getId()==((Button)v).getId()) { Card t = tableaufinal.get(4); int u = t.IDpaire; backImage = t.image; button4.setBackgroundColor(backImage); } else if (button5.getId()==((Button)v).getId()) { Card t = tableaufinal.get(5); int u = t.IDpaire; backImage = t.image; button5.setBackgroundColor(backImage); } else if (button6.getId()==((Button)v).getId()) { Card t = tableaufinal.get(6); int u = t.IDpaire; backImage = t.image; button6.setBackgroundColor(backImage); } else if (button7.getId()==((Button)v).getId()) { Card t = tableaufinal.get(7); int u = t.IDpaire; backImage = t.image; button7.setBackgroundColor(backImage); } else if (button8.getId()==((Button)v).getId()) { Card t = tableaufinal.get(8); int u = t.IDpaire; backImage = t.image; button8.setBackgroundColor(backImage); } else if (button9.getId()==((Button)v).getId()) { Card t = tableaufinal.get(9); int u = t.IDpaire; backImage = t.image; button9.setBackgroundColor(backImage); } else if (button10.getId()==((Button)v).getId()) { Card t = tableaufinal.get(10); int u = t.IDpaire; backImage = t.image; button10.setBackgroundColor(backImage); } else if (button11.getId()==((Button)v).getId()) { Card t = tableaufinal.get(11); int u = t.IDpaire; backImage = t.image; button11.setBackgroundColor(backImage); } else if (button12.getId()==((Button)v).getId()) { Card t = tableaufinal.get(12); int u = t.IDpaire; backImage = t.image; button12.setBackgroundColor(backImage); } else if (button13.getId()==((Button)v).getId()) { Card t = tableaufinal.get(13); int u = t.IDpaire; backImage = t.image; button13.setBackgroundColor(backImage); } else if (button14.getId()==((Button)v).getId()) { Card t = tableaufinal.get(14); int u = t.IDpaire; backImage = t.image; button14.setBackgroundColor(backImage); } else if (button15.getId()==((Button)v).getId()) { Card t = tableaufinal.get(15); int u = t.IDpaire; backImage = t.image; button15.setBackgroundColor(backImage); } else if (button16.getId()==((Button)v).getId()) { Card t = tableaufinal.get(16); int u = t.IDpaire; backImage = t.image; button16.setBackgroundColor(backImage); } View.OnClickListener second ; second = new View.OnClickListener() { @Override public void onClick(View v) { if (button1.getId()==((Button)v).getId()) { Card t = tableaufinal.get(1); int p = t.IDpaire; backImage = t.image; button1.setBackgroundColor(backImage); } else if (button2.getId()==((Button)v).getId()) { Card t = tableaufinal.get(2); int p = t.IDpaire; backImage = t.image; button2.setBackgroundColor(backImage); } else if (button3.getId()==((Button)v).getId()) { Card t = tableaufinal.get(3); int p = t.IDpaire; backImage = t.image; button3.setBackgroundColor(backImage); } else if (button4.getId()==((Button)v).getId()) { Card t = tableaufinal.get(4); int p = t.IDpaire; backImage = t.image; button4.setBackgroundColor(backImage); } else if (button5.getId()==((Button)v).getId()) { Card t = tableaufinal.get(5); int p = t.IDpaire; backImage = t.image; button5.setBackgroundColor(backImage); } else if (button6.getId()==((Button)v).getId()) { Card t = tableaufinal.get(6); int p = t.IDpaire; backImage = t.image; button6.setBackgroundColor(backImage); } else if (button7.getId()==((Button)v).getId()) { Card t = tableaufinal.get(7); int p = t.IDpaire; backImage = t.image; button7.setBackgroundColor(backImage); } else if (button8.getId()==((Button)v).getId()) { Card t = tableaufinal.get(8); int p = t.IDpaire; backImage = t.image; button8.setBackgroundColor(backImage); } else if (button9.getId()==((Button)v).getId()) { Card t = tableaufinal.get(9); int p = t.IDpaire; backImage = t.image; button9.setBackgroundColor(backImage); } else if (button10.getId()==((Button)v).getId()) { Card t = tableaufinal.get(10); int p = t.IDpaire; backImage = t.image; button10.setBackgroundColor(backImage); } else if (button11.getId()==((Button)v).getId()) { Card t = tableaufinal.get(11); int p = t.IDpaire; backImage = t.image; button11.setBackgroundColor(backImage); } else if (button12.getId()==((Button)v).getId()) { Card t = tableaufinal.get(12); int p = t.IDpaire; backImage = t.image; button12.setBackgroundColor(backImage); } else if (button13.getId()==((Button)v).getId()) { Card t = tableaufinal.get(13); int p = t.IDpaire; backImage = t.image; button13.setBackgroundColor(backImage); } else if (button14.getId()==((Button)v).getId()) { Card t = tableaufinal.get(14); int p = t.IDpaire; backImage = t.image; button14.setBackgroundColor(backImage); } else if (button15.getId()==((Button)v).getId()) { Card t = tableaufinal.get(15); int p = t.IDpaire; backImage = t.image; button15.setBackgroundColor(backImage); } else if (button16.getId()==((Button)v).getId()) { Card t = tableaufinal.get(16); int p = t.IDpaire; backImage = t.image; button16.setBackgroundColor(backImage); } }; }; } }; }; public void chek(){ TimerTask tt = new TimerTask() { @Override public void run() { try{ synchronized (lock) { handler.sendEmptyMessage(0); } } catch (Exception e) { Log.e("E1", e.getMessage()); } } }; Timer t = new Timer(false); t.schedule(tt, 1300); if(p == u){ first.button.setVisibility(View.INVISIBLE); second.button.setVisibility(View.INVISIBLE); } else { //sinon on remet l'image de fond second.button.setBackgroundDrawable(backImage); first.button.setBackgroundDrawable(backImage); } } }
J'ai en plus de cela un affichage avec 16 boutons et deux autres classes (une pour le menu principal, l'autre correspondant à ma class Card)
Card :
Voila, merci d'avance aux bonnes âmes que je n'ai pas encore complètement découragés.Code:
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 package com.aviy.memory; import android.graphics.drawable.Drawable; import android.widget.Button; public class Card{ public int x; public int y; public int IDpaire; public int image; public Button button; public Card(Button button, int x,int y, int iDpaire, int image) { this.x = x; this.y=y; this.button=button; this.IDpaire=iDpaire; this.image=image; } }
Salut,
Ca parait un peu plus logique, mais il y a toujours des soucis.
Pour la fonction
En faite, dedans tu fais la création de toute tes cartes, alors pourquoi demandé en paramètre un bouton, un id, x, y et une image?Code:public void creationcarte(Button button,int IDpaire, int y, int x, int image)
Après à première vue, le reste semble bon, juste il pourrai y avoir quelques remarques au niveau de l'optimisation ou de l'allégement du code.
T'as déjà essayé de faire quelques test?
Oui et non, j'ai encore des erreurs à réparer et lorsque je les "coupe" pour avoir quand même un aperçu l'application plante dés le début.
pour la "creationcarte", je demande tout ces paramètres car ce sont ceux nécessaires pour faire une carte.
Après mon principal problème est que les données u et p (mes IDpaires) ne sont pas reconnues quand je les appelle pour les comparer ... je cherche à résoudre ce problème actuellement.
Mais dans ta fonction tu crées toutes tes cartes, la ça pose souci, tu devrais dans ce cas là les utiliser comme paramètre de base pour la création de ta première carte, et après au fur et à mesure que tu crée, tu modifier chacun des paramètres.Code:pour la "creationcarte", je demande tout ces paramètres car ce sont ceux nécessaires pour faire une carte.
T'as regardé si après chaque clic les variables u et p ont bien été affecté par des valeurs?
Nn, comment je pourrais faire cela ?
De plus si j’enlève les paramètres pour le coup j'ai des erreurs qui se manifestent lorsque je crée les cartes.
Je pense voir ce que tu veux dire, je vais essayer de changer cela.
Pour vérifier tes paramètres, soit tu le fais en console
Ou sinon tu utilise le débuggueur, tu met des point d'arrêt quand tu compte affecter les variablesCode:System.out.println("u = "+u+" p = "+p);
Alors non effectivement ils ne prennent pas de valeurs, car une fois sorti de ma boucle avec le "if, else if" les p et u ne sont plus reconnus ...
Donc même ton " System.out.println("u = "+u+" p = "+p);" ne marche pas car il ne retrouve pas les variables u et p.
Je ne comprend pas pourquoi à vrai dire ...
Elles ne sont pas reconnus car tu les déclares pas en tant que variables de classe mais en tant que variable "discrete", tu les déclare dans une fonction, du coup elles sont accessible seulement dans la fonction. Faut que tu les déclares en début de classe.
ok tu as raison, maintenant je les vois.
Mais mon application plante toujours dés le début. Je ne peux donc pas voir si les variables u et p sont reconnus.
(pour le lancer j'ai mis en commentaire toutes la partie "chek")
Je vais regarder pourquoi ça ne marche pas :
J'ai une erreur comme cela dans ma console :
Code:
1
2
3
4
5 ActivityManager: Can't dispatch DDM chunk 46454154: no handler defined [2011-05-16 15:09:39 - MemoryGameDuo] ActivityManager: Can't dispatch DDM chunk 4d505251: no handler defined [2011-05-16 15:09:39 - MemoryGameDuo] ActivityManager: Starting: Intent { action=android.intent.action.MAIN categories={android.intent.category.LAUNCHER} comp={com.aviy.memory/com.aviy.memory.Jeu} } [2011-05-16 15:09:39 - MemoryGameDuo] ActivityManager: Error type 3 [2011-05-16 15:09:39 - MemoryGameDuo] ActivityManager: Error: Activity class {com.aviy.memory/com.aviy.memory.Jeu} does not exist.
Je pense que c'est la que ca bug, il dit que ta class activity existe pas...Code:Error: Activity class {com.aviy.memory/com.aviy.memory.Jeu} does not exist.
bah si elle existe pourtant ... je l'ai mise en extend partout sinon Eclipse ne voit pas tout donc bon ...
Bizarre bizarre, je me penche donc dessus.
Merci à toi en tout cas
Je suis pas sur, mais ca vient peut être du fait que t'ai pas de fonction onCreate...
Pas idiot, j'en ai une dans une autre classe mais je l'avais enlevé car toute les erreurs n'étaient pas corrigé.
Effectivement mon application se lance une fois la classe remise, mais bugg toujours à son lancement ...
Toujours la même erreur dans la console?
Essaie de mettre des point d'arret pour essayé de savoir à quel moment ton appli bug
Non plus d'erreur en console cette fois ...
Je vais essayer de mettre des points d’arrêts comme tu le suggère. (des log.e c'est bien cela ?)
Non non, en faite, dans la zone ou y'a ton code, sur la gauche t'as les numero de ligne, et t'as une petit zone encore à gauche, quand tu clique dessus t'as des points bleu qui apparaissent (des breakpoint) et après au lieu de cliquer sur run tu clique sur debug
ah okay, effectivement il me remet : activiy class does not exist ... pourtant je l'ai ici :
Code:
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 package com.aviy.memory; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class Manager extends Activity { //variable necessaire Button Facile = null; Button Difficile=null; Button Moyen=null; @Override //affichage du menu public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.monmenu, menu); return true; } public boolean onMenuItemSelected(int featureId,MenuItem item){ switch (item.getItemId()){ case R.id.Regles: Toast.makeText(this,"pour jouer cliquez sur new game et selectionner une taille de grille, puis trouvez les paires !",Toast.LENGTH_SHORT).show(); return true; case R.id.Quitter: finish(); return true; case R.id.Auteur: Toast.makeText(this,"ECOCO2",Toast.LENGTH_SHORT).show(); } return super.onMenuItemSelected(featureId, item); } //fin pour le menu @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.typejeu); Facile=(Button)findViewById(R.id.button1); Facile.setOnClickListener((OnClickListener) this); Difficile=(Button)findViewById(R.id.button2); Difficile.setOnClickListener((OnClickListener) this); Moyen=(Button)findViewById(R.id.button3); Moyen.setOnClickListener((OnClickListener) this); } public void onClick(View v){ if(v==Facile){ Intent monIntent=new Intent(this,Jeu.class); startActivity(monIntent); } if(v==Difficile){ Intent monIntent2=new Intent(this,Jeu.class); startActivity(monIntent2); } if(v==Moyen){ Intent monIntent3=new Intent(this,Jeu.class); startActivity(monIntent3); } } }
Ben à mon avis c'est parce que tu fais un extends Activity de ta class jeu, du coup si tu fais cet extends, il te fais un onCreate dans cette classe...
okay okay, je vais essayer d'en mettre un dans ce cas.
Merci.
Okay, j'ai donc mis l'option souhaité.
Cependant l'application bugg toujours dès le départ ... j'arrive sur mon menu mais lorsque je souhaite accéder au .Jeu, l'application plante ...
Bonjour,
Juste pour rajouter une petite précision . As tu bien déclarer ta nouvelle classe "Jeu" dans ton manifest ?
Comme te l'as souligné malgache quand tu as une erreur n'hésite pas à utiliser le débugger et autre log pour mieux comprendre ton code , ainsi que quand tu poste une nouvelle réponse sur le forum met également l'erreur que tu trouveras dans le logcat. (si erreur il y a ;)).
Merci tu avais raison pour le manifest :)
Pour le coup j'ai un écran noir, du au fait qu'il ne doit pas voir que j'appelle un écran en particulier.
Je vais tacher d'y remédier.
Par ailleurs je suivrais tes conseils sur les logcat lors de mes prochains posts.
Merci
Bonjour,
Je n'ai plus aucune erreur en console :), cependant j'ai un écran noir qui s'affiche :( alors que j'ai un layout non vide qui devrait apparaître ...
Y a t il une erreur courante qui explique cela ?
Merci
Bonjour,
Est ce que tu as un SetContentView(tonlayout) dans le onCreate de ta nouvelle Activity ?
Sinon montre nous ce que tu as comme code dans ce OnCreate .
Exact, je n'avais pas de OnCreate, juste un pour le menu ... Merci pour ton aide :)
J'ai une autre question concernant toujours mon jeu, donc je le poste à l’intérieur.
Comment puis demander : si tous les boutons sont invisibles alors ... ?
Je n'arrive pas à trouver la commande avec les "if".
(histoire de faire un layout, bravo vous avez gagné)
Merci
Bonjour,
Pourquoi ne pas utiliser une variable (byte(8) ) sur lequel tu l'initialiserais à 0.Citation:
Comment puis demander : si tous les boutons sont invisibles alors ... ?
Je n'arrive pas à trouver la commande avec les "if".
Puis à chaque fois qu'un bouton devient visible +1 et chaque fois qu'un bouton devient invisible -1 .
Si ta variable ==0 alors tous les boutons sont invisibles .
Sinon tu peux toujours modifier un bit par bouton (1-> visible , 0 -> invisible )
Pareil pour le test si ta variable est égal à 0 tes boutons sont invisibles , tu pourras savoir également quel bouton est actif avec cette méthode.
Sinon le test pour savoir si un bouton est visible
Code:if (button.getVisibility() != View.VISIBLE)
Tout dépend e comment tu as gérer le jeu.
Quand l'utilisateur trouve une paire, t'en fait quoi de cette paire? Tu agis sur des éléments? Sur une liste?
Je vais essayer la méthode de la variable c'est plutôt malin :)
Code:public int t;
puis je met dans le OnCreate : (le 2 n'est là que pour tester)Code:
1
2
3
4
5 if(cards[seconedCard.x][seconedCard.y] == cards[firstCard.x][firstCard.y]){ firstCard.button.setVisibility(View.INVISIBLE); seconedCard.button.setVisibility(View.INVISIBLE); t = t++; }
Mais le problème que j'ai pour le coup, c'est que cette variable t n'est pas reconnueCode:
1
2
3
4
5 if (t == 2) { setContentView(R.layout.score); }
Malgache : la paire je la retourne avec la méthode ci dessus.
Tu définis t en variable de classe?
Et la tu fais un +1 quand ca devient invisible si je me trompe pas, faurai plutot faire un -1 sinon ta vérification sera pas lorsque ta variable est égale à 0 mais à ton nombre x/2 de bouton (vu que tu rend invisible deux boutons en même temps)
Et d'ailleurs, vu que tu rend invisible deux boutons en même tend, il faudrait soit te baser sur ton nombre de bouton /2 soit tu fais des +2 et -2...Si je me trompe pas ^^
Oui ton raisonnement est juste, mais je fais cela autrement. La je lui dis t=t+1 seulement quand il retourne les cartes et les met invisibles.
Donc ayant 6 paires par exemple, une fois t=6 alors les 6 paires sont retournés. donc le jeu est fini.
Je l'ai codé comme cela.
Et pourquoi le définir en variable de classe pose problème ?
Justement si tu veux qu'elle soit reconnus dans plusieurs méthode il faut que ta variable soit définie en tant que variable de classe ^^
aAors je crois que oui je l'ai mis en variable de classe.
Avec tous mes : public ou private au début :)
Mais il ne le reconnait pas lorsque j'essaye de lui signifier : "C'est bon tu as fini !! si si je t'assure y a plus aucune carte ..."
tu peux montrer le code de ta classe?
ouaip :) :
si je reprend que les passages qui sont interessants :Code:
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
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327 package com.aviy.memory; import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.Gravity; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.Spinner; import android.widget.TableLayout; import android.widget.TableRow; import android.widget.TextView; import android.widget.Toast; import android.widget.AdapterView.OnItemSelectedListener; public class Jeu1 extends Activity implements OnClickListener{ //variable necessaire private static int ROW_COUNT = -1; private static int COL_COUNT = -1; private Context context; private Drawable backImage; private int [] [] cards; private List<Drawable> images; private Card firstCard; private Card seconedCard; private ButtonListener buttonListener; public int t=0; private static Object lock = new Object(); int turns; private TableLayout mainTable; private UpdateCardsHandler handler; Button Facile = null; @Override //affichage du menu public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.monmenu, menu); return true; } public boolean onMenuItemSelected(int featureId,MenuItem item){ switch (item.getItemId()){ case R.id.Regles: Toast.makeText(this,"pour jouer cliquez sur new game et selectionner une taille de grille, puis trouvez les paires !",Toast.LENGTH_SHORT).show(); return true; case R.id.Quitter: finish(); return true; case R.id.Auteur: Toast.makeText(this,"ECOCO2",Toast.LENGTH_SHORT).show(); } return super.onMenuItemSelected(featureId, item); } //fin pour le menu //ON CREATE public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); handler = new UpdateCardsHandler(); loadImages(); setContentView(R.layout.main); backImage = getResources().getDrawable(R.drawable.solosfond); buttonListener = new ButtonListener(); mainTable = (TableLayout)findViewById(R.id.TableLayout03); context = mainTable.getContext(); Facile=(Button)findViewById(R.id.button1); Facile.setOnClickListener(this);} public void onClick(View v){ if(v==Facile){ newGame(3,4); //Facile.setBackgroundColor(R.drawable.boutonrejouez); } if (t == 2) { Intent monIntent=new Intent(this,Score.class); startActivity(monIntent); } } //genere la nouvelle partie private void newGame(int c, int r) { ROW_COUNT = 4; COL_COUNT = 3; cards = new int [COL_COUNT] [ROW_COUNT]; //enleve le menu principal mainTable.removeView(findViewById(R.id.TableRow02)); TableRow tr = ((TableRow)findViewById(R.id.TableRow03)); tr.removeAllViews(); //cré un nouvel affichage mainTable = new TableLayout(context); tr.addView(mainTable); /*context.setBackgroundDrawable(R.drawable.fond);*/ for (int y = 0; y < ROW_COUNT; y++) { mainTable.addView(createRow(y)); } firstCard=null; loadCards(); //affiche le score turns=0; ((TextView)findViewById(R.id.tv1)).setText("Score: "+turns); } //charge les images private void loadImages() { images = new ArrayList<Drawable>(); images.add(getResources().getDrawable(R.drawable.card1)); images.add(getResources().getDrawable(R.drawable.card2)); images.add(getResources().getDrawable(R.drawable.card3)); images.add(getResources().getDrawable(R.drawable.card4)); images.add(getResources().getDrawable(R.drawable.card5)); images.add(getResources().getDrawable(R.drawable.card6)); images.add(getResources().getDrawable(R.drawable.card7)); images.add(getResources().getDrawable(R.drawable.card8)); images.add(getResources().getDrawable(R.drawable.card9)); images.add(getResources().getDrawable(R.drawable.card10)); images.add(getResources().getDrawable(R.drawable.card11)); images.add(getResources().getDrawable(R.drawable.card12)); images.add(getResources().getDrawable(R.drawable.card13)); images.add(getResources().getDrawable(R.drawable.card14)); images.add(getResources().getDrawable(R.drawable.card15)); images.add(getResources().getDrawable(R.drawable.card16)); images.add(getResources().getDrawable(R.drawable.card17)); images.add(getResources().getDrawable(R.drawable.card18)); images.add(getResources().getDrawable(R.drawable.card19)); images.add(getResources().getDrawable(R.drawable.card20)); images.add(getResources().getDrawable(R.drawable.card21)); } //genre les cates dans les cases private void loadCards(){ try{ int size = ROW_COUNT*COL_COUNT; Log.i("loadCards()","size=" + size); ArrayList<Integer> list = new ArrayList<Integer>(); for(int i=0;i<size;i++){ list.add(new Integer(i)); } Random r = new Random(); for(int i=size-1;i>=0;i--){ int t=0; if(i>0){ t = r.nextInt(i); } t=list.remove(t).intValue(); // la division par 2 (sur le dernier size) met les cartes en doubles !! car deux cartes ont le mm nombre dans la matrice cards[i%COL_COUNT][i/COL_COUNT]=t%(size/2); Log.i("loadCards()", "card["+(i%COL_COUNT)+ "]["+(i/COL_COUNT)+"]=" + cards[i%COL_COUNT][i/COL_COUNT]); } } catch (Exception e) { Log.e("loadCards()", e+""); } } //cré les boutons sur chaque case du tableau private TableRow createRow(int y){ TableRow row = new TableRow(context); row.setHorizontalGravity(Gravity.CENTER); for (int x = 0; x < COL_COUNT; x++) { row.addView(createImageButton(x,y)); } return row; } //met un ecran par defaut sur chaque case du tableau (arriere de la carte) private View createImageButton(int x, int y){ Button button = new Button(context); button.setBackgroundDrawable(backImage); button.setId(100*x+y); button.setOnClickListener(buttonListener); return button; } //classe qui regarde ou l'utilisateur clique class ButtonListener implements OnClickListener { @Override public void onClick(View v) { synchronized (lock) { if(firstCard!=null && seconedCard != null){ return; } int id = v.getId(); int x = id/100; int y = id%100; turnCard((Button)v,x,y); } } //Création des cartes en doublon (mm coordonné proposé entre first et seconed) private void turnCard(Button button,int x, int y) { button.setBackgroundDrawable(images.get(cards[x][y])); if(firstCard==null){ firstCard = new Card(button,x,y, y, y); } else{ if(firstCard.x == x && firstCard.y == y){ return; //the user pressed the same card } seconedCard = new Card(button,x,y, y, y); //Faire une fonction pour tourner les cartes de facon jolie //public void addJavascriptInterface() //carte.rotate3Di('flip', 750, {sideChange: turnCard}); turns++; ((TextView)findViewById(R.id.tv1)).setText("Score: "+turns); TimerTask tt = new TimerTask() { @Override public void run() { try{ synchronized (lock) { handler.sendEmptyMessage(0); } } catch (Exception e) { Log.e("E1", e.getMessage()); } } }; Timer t = new Timer(false); t.schedule(tt, 1300); } } } class UpdateCardsHandler extends Handler{ @Override public void handleMessage(Message msg) { synchronized (lock) { checkCards(); } } //regarde les cartes public void checkCards(){ //si deux cartes identiques alors les deux deviennent invisible if(cards[seconedCard.x][seconedCard.y] == cards[firstCard.x][firstCard.y]){ firstCard.button.setVisibility(View.INVISIBLE); seconedCard.button.setVisibility(View.INVISIBLE); t = t++; } else { //sinon on remet l'image de fond seconedCard.button.setBackgroundDrawable(backImage); firstCard.button.setBackgroundDrawable(backImage); } //on remet à zéro les images firstCard=null; seconedCard=null; } } }
Code:
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 package com.aviy.memory; import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.Gravity; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.Spinner; import android.widget.TableLayout; import android.widget.TableRow; import android.widget.TextView; import android.widget.Toast; import android.widget.AdapterView.OnItemSelectedListener; public class Jeu1 extends Activity implements OnClickListener{ //variable necessaire private static int ROW_COUNT = -1; private static int COL_COUNT = -1; private Context context; private Drawable backImage; private int [] [] cards; private List<Drawable> images; private Card firstCard; private Card seconedCard; private ButtonListener buttonListener; public int t=0; private static Object lock = new Object(); int turns; private TableLayout mainTable; private UpdateCardsHandler handler; Button Facile = null; //ON CREATE public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); handler = new UpdateCardsHandler(); loadImages(); setContentView(R.layout.main); backImage = getResources().getDrawable(R.drawable.solosfond); buttonListener = new ButtonListener(); mainTable = (TableLayout)findViewById(R.id.TableLayout03); context = mainTable.getContext(); Facile=(Button)findViewById(R.id.button1); Facile.setOnClickListener(this);} public void onClick(View v){ if(v==Facile){ newGame(3,4); //Facile.setBackgroundColor(R.drawable.boutonrejouez); } if (t == 2) { Intent monIntent=new Intent(this,Score.class); startActivity(monIntent); } } class UpdateCardsHandler extends Handler{ @Override public void handleMessage(Message msg) { synchronized (lock) { checkCards(); } } //regarde les cartes public void checkCards(){ //si deux cartes identiques alors les deux deviennent invisible if(cards[seconedCard.x][seconedCard.y] == cards[firstCard.x][firstCard.y]){ firstCard.button.setVisibility(View.INVISIBLE); seconedCard.button.setVisibility(View.INVISIBLE); t = t++; } else { //sinon on remet l'image de fond seconedCard.button.setBackgroundDrawable(backImage); firstCard.button.setBackgroundDrawable(backImage); } //on remet à zéro les images firstCard=null; seconedCard=null; } } }
Une variable t utilisé dans deux classes... =)
Cela pose problème donc ... Mais étant déclaré dans la première en tant que public, pourquoi la seconde ne la verrais pas et ne pourrais pas "jouer" avec ?
C'est dansque tu as une erreur avec t?Code:class UpdateCardsHandler
C'est quoi l'erreur dans ton LogCat??
j'ai pas d'erreur :)
Juste il ne fait rien ... je ne bascule pas sur mon autre menu. Donc je pense qu'il ne voit pas le "t".