Bonjour,
Je suis en train de coder un jeu du Snake en Flash (AS3). J'ai un problème bizarre : le script boucle sur lui-même... En gros, si je met un trace("test"); Au début du script, il va s'afficher indefiniment....

Voici tout mon code :

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
 
var i:int = 0;
var tailleCase:int = 10; // Taille en px de la case
var dir:String = new String("l");// Direction du serpent left,right,up,down
var tete:Tete = new Tete();// Position de la tete
var maxLarg:int = tailleCase*49;
var maxHaut:int = tailleCase*49;
var score:int = 0;
 
var pomme:Pomme = new Pomme();
pomme.x = Math.round(Math.random()*50)*tailleCase;
pomme.y = Math.round(Math.random()*50)*tailleCase;
addChild(pomme);
 
tete.x = tailleCase*25;
tete.y = tailleCase*25
addChild(tete);
 
var corps:Array = new Array();
while(i <= 1){
	corps[i] = new Corps();
	if(i == 0){
		corps[i].x = tete.x+10;
		corps[i].y = tete.y;
	}
	else{
		corps[i].x = corps[i-1].x+10;
		corps[i].y = corps[i-1].y;
	}
	addChild(corps[i]);
	i++;
}
 
stage.addEventListener(Event.ENTER_FRAME, bouge);
stage.addEventListener(KeyboardEvent.KEY_DOWN, changeDir);
 
function bouge(evt:Event):void {
	var i:int = 0;
	var j:int = 0;
	var continu:Boolean = true;
	while(j <= score){
		if(j == 0){
			corps[j].x = tete.x;
			corps[j].y = tete.y;
		}
		else{
			corps[j].y = corps[j-1].y;
			corps[j].x = corps[j-1].x;
		}
		j++;
	}
	switch (dir) {
		case "l" :// Gauche
			if(tete.x >= tailleCase) // On ne touche pas le bord
				tete.x -= 10;
			else
				continu = false;
			break;
		case "r" :// Droite
			if(tete.x <= maxLarg) // On ne touche pas le bord
				tete.x += 10;
			else
				continu = false;
			break;
		case "u" :// Haut
			if(tete.y <= maxHaut) // On ne touche pas le bord
				tete.y += 10;
			else
				continu = false;
			break;
		case "d" :// Bas
			if(tete.x >= tailleCase) // On ne touche pas le bord
				tete.y -= 10;
			else
				continu = false;
			break;
	}
	if(continu == false){
		trace("Game Over");
		trace("Score : "+score);
		stage.removeEventListener(Event.ENTER_FRAME,bouge);
	}
	else if(tete.hitTestObject(pomme)){
		pomme.x = Math.round(Math.random()*50)*tailleCase;
		pomme.y = Math.round(Math.random()*50)*tailleCase;
		corps[score] = new Corps();
		corps[score].x = corps[score-1].x;
		corps[score].y = corps[score-1].x;
		addChild(corps[score]);
		score++;
	}
}
 
function changeDir(evt:KeyboardEvent):void{
	if(evt.keyCode == 37 && dir != "r") // Left Arrow
		dir = "l";
	else if(evt.keyCode == 40 && dir != "d") // Up Arrow
		dir = "u";
	else if(evt.keyCode == 39 && dir != "l") // Right Arrow
		dir = "r";
	else if(evt.keyCode == 38 && dir != "u") // Down Arrow
		dir = "d";
}


Merci pour votre aide