Bonjour à tous,
derrière ce titre se cache un problème que j'ai en ce moment sur mon programme en as3. En fait à chaque fois que je teste mes booléens, j'ai cette erreur qui est levée. Donc en fait comment teste-t-on un booléen en AS3?
Le code suivant est un extrait d'un jeu de mémoire devant nous permettre de jouer contre l'intelligence articielle (ici représenté par un tamagochi):
memo.as:
Code AS3 : 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 protected var cardTab:Array = new Array("bomb", "box", "cloud", "flower", "leaf", "mushroom", "shell", "star", "bomb", "box", "cloud", "flower", "leaf", "mushroom", "shell", "star"); // un tableau avec les "noms" de mes images private var tabCard:Array = new Array(); // un tableau qui contiendra mes cartes (card.as) private var tour:Boolean; /* ce jeu étant deux joueurs, un booleen suffit pour connaitre "à qui le tour" 0 -> Tamagotshi ; 1 -> Nous */ /* Mon constructeur */ public function Memo() { meltCard(); // on mélange les cartes dans le tableau tour = false; // on fait jouer en premier le tamagochi displayCard(); // on affiche } /* Ma méthode d'affichage sur la scène de mon jeu */ public function displayCard() :void { var margeY:int = 5; var margeX:int = 5; var compt:int = 0; for (var i:int = 0; i < 4; i++) { tabCard[i] = new Array; for (var j:int = 0; j < 4; j++) { tabCard[i][j] = new Card("images/card_"+cardTab[compt]+".png", this); compt++; tabCard[i][j].y = (i * Card.CARD_HEIGHT) + margeY; tabCard[i][j].x = (j * Card.CARD_WIDTH) + margeX; margeX += 5; addChild(tabCard[i][j]); } margeY += 5; margeX = 5; } } /* méthode qui choisi au hasard une carte dans le paquet des cartes NON RETOURNEE */ public function chooseCard() :void { var random:Number = int(Math.random()*4); var random2:Number = int(Math.random()*4); for (var i:int = 0; i < random; i++) { tabCard[i] = new Array; for (var j:int = 0; j < random2; j++) { // c'est ici que je teste si les la carte est retournée ou non, et c'est ici que j'ai l'erreur if (!tabCard[i][j].eteTrouvee()) { tabCard[i][j].montrerFace(); } else { chooseCard(); } } } }
card.as
Code AS3 : 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 public class Card extends Sprite { public static const CARD_HEIGHT:Number = 133; public static const CARD_WIDTH:Number = 94; private var image :Loader = new Loader (); private var face :String; private var addr_img :URLRequest; private var memo:Memo; private var resterSurFace:Boolean; private var aEteTrouvee:Boolean; public function Card(url:String, _memo:Memo) { memo = _memo; this.graphics.beginFill(0x000000); this.graphics.drawRect(0, 0, CARD_WIDTH, CARD_HEIGHT); this.graphics.endFill(); face = new String(url); addr_img = new URLRequest("images/verso_playing_card.png"); image.load(addr_img); addChild(image); addEventListener(MouseEvent.CLICK, montrerFace); aEteTrouvee = false; } public function setImage(new_img:URLRequest) :void { image.load(new_img); } public function montrerFace(_e:Event) :void { //trace(image.contentLoaderInfo.url.indexOf("images/verso_playing_card.png")); addr_img = new URLRequest(face); image.load(addr_img); resterSurFace = true; } private function cacherFace() :void { addr_img = new URLRequest("images/verso_playing_card.png"); image.load(addr_img); resterSurFace = false; } public function recto() :String { return face; } public function estResteSurFace() :Boolean { return resterSurFace; } public function trouvee() :void { aEteTrouvee = true; } public function eteTrouvee() :Boolean { return aEteTrouvee; } }
Donc mon problème se situe au niveau des vérifications de la valeur des booléens (erreur suivante: Un terme n'est pas défini et n'a pas de propriété.)
J'ai cherché et trouvé que celà devait être que mon booléen n'est pas initialisé, pourtant dans le constructer card(), j'initialise bien la variable que je test (aEteTrouvee) à faux!
Merci de votre aide.
Partager