Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/01/2012, 18h16   #1
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 49
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 49
Points : 19
Points : 19
Par défaut Puissance 4 code ne fonctionnant plus

bonjour,

J'ai un énorme problème urgent, je ne sais pas du tout mais mon jeux ne marche plus pourtant j'ai bien fait des retour en arriére dans le code mais je ne vois pas la modif qui a pu faire ça.

Sa m'ennui en plus je ne sais pas ou se trouve l'erreur dans le html la partie js mais je vois pas, je pense.

Voici ou vous pouvez trouver le code, aucune idée du pourquoi du comment.

http://mmnns.free.fr/puissance4.html

Normalement je clic que nouvelle partie sa m'ouvre une popup on met ok après le noms des joueur et qui veux commencer. Mais la les autres s'ouvre pas.(celle du nom du joueur)

Cordialement
zyhou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 18h37   #2
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 872
Points : 1 381
Points : 1 381
Code :
<section id="jeux" text="black" link="blue" vlink="purple" alink="red" onload="rePlay();">
rePlay() ->

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
function rePlay() 
{
	if (gameActive == 1) 
	{
		document.formo.redScoreBoard.value = redScore + "";
		document.formo.blackScoreBoard.value = blackScore + "";
		clearBoard();
	}
	for (var c1 = 0; c1 <= 6; c1++) 
	{
		vals[c1] = 0;
	}
}
Code :
document.formo.redScoreBoard.value = redScore + "";
redScoreBoard n'est pas encore défini à ce moment là (onload de '#jeux') donc tu essayes d'accèder à la "value" d'un élément inexistant et ton code javascript plante.

c'est en tout cas l'erreur affichée, mais c'est érange puisque ton input "redScoreBoard" se trouve bien dans ta section "jeux". sans doute un problème d'incompatibilité avec la balise "section" ?


sinon, autre chose :

Code :
<a href="javascript:|code|" >text</a>
c'est HORRIBLE !!
au lieu de passer par une injection d'url, utilise l'attribut "onclick" prévu à cet effet :

Code :
<a href="#" onclick="|code|" >text</a>
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 18h55   #3
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 49
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 49
Points : 19
Points : 19
Merci d'avoir répondu.

D'abord, en effet le rePay() ne sert a rien ici. Mais si je clock sur le bouton Nouvelle partie il devrait faire la fonction newMatchUp() et continuer le jeux mais la il affiche même pas les popu si mais que une.

Ensuite pour le onclik:
Code :
<a href="#" onclick=\"dropIt("+j+")\"....
mais maintenant il affiche plus le plateaux de jeux.

Pour la balise section je ne sais pas du tout :/ oui elle est bien dans section pourtant.
C'est celui la qui plante:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(function () {
								var i, j, content = '<table>';
								content += '<tr>';
								for (j = 0; j < 7; j++) 
								{
									content += "<td><a href=\"javascript:void dropIt("+j+")\" onmouseover=\"placeTop("+j+"); setMsg(''); return true\" onmouseout=\"unPlaceTop("+j+")\"><img src=\"./clearness.gif\" width=\"50\" height=\"50\" border=\"0\"></a></td>";
								}
								content += '</tr>';
								for (i = 0; i < 6; i++) 
								{
									content += '<tr>';
									for(j = 0; j < 7; j++) 
									{
										content += "<td><a href=\"javascript:void dropIt("+j+")\" onmouseover=\"placeTop("+j+"); setMsg(''); return true\" onmouseout=\"unPlaceTop("+j+")\"><img src=\"./image/pasdepion.gif\" width=\"50\" height=\"50\" border=\"0\"></a></td>";
									}
									content += '</tr>';
								}
								content += '</table>';
								document.getElementById("formo").innerHTML = content;
							}());
le code la marche pourtant je vois pas l'erreur :
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
<form name="formo" method="get">
					<table border="0" cellpadding="0" cellspacing="0">
 
						<script type="text/javascript">
 
							//ecriture du plateau de jeux sous forme de tableau HTML
							document.write('<table>');
								document.write('<tr>');
									for(j = 0; j < 7; j++)
									{
										document.write("<td><a href=\"javascript:void dropIt("+j+")\" onmouseover=\"placeTop("+j+"); setMsg(''); return true\" onmouseout=\"unPlaceTop("+j+")\"><img src=\"./clearness.gif\" width=\"50\" height=\"50\" border=\"0\"></a></td>");
									}
 
 
								for(i = 0; i < 6; i++)
								{
									document.write('<tr>');
										for(j = 0; j < 7; j++)
										{
											document.write("<td><a href=\"javascript:void dropIt("+j+")\" onmouseover=\"placeTop("+j+"); setMsg(''); return true\" onmouseout=\"unPlaceTop("+j+")\"><img src=\"./image/pasdepion.gif\" width=\"50\" height=\"50\" border=\"0\"></a></td>");
										}
									document.write('</tr>');
								}			document.write('</table>');
								</script>
zyhou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 19h14   #4
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 872
Points : 1 381
Points : 1 381
Citation:
Envoyé par zyhou Voir le message
Merci d'avoir répondu.

D'abord, en effet le rePay() ne sert a rien ici. Mais si je clock sur le bouton Nouvelle partie il devrait faire la fonction newMatchUp() et continuer le jeux mais la il affiche même pas les popu si mais que une.
ce que je voulais dire, c'est lors du chargement de ta page, l'objet "<section id=jeux ....>" est créé, il déclenche l'appel à "rePlay()" grâce à son attribut "onload" dans replay, tu tentes d'accèder à "document.formo.redScoreBoard" qui n'est défini que plus tard dans la page et qui n'existe donc pas encore et qui plante le code (donc plus rien après ne s'exécute).
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/01/2012, 19h21   #5
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 49
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 49
Points : 19
Points : 19
Ah ok j'avais pas compris cela comme ça. Je suis désolé.
Merci a toi

Sinon autre petit truc qui me dérange c'est :
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
if (document.images[counter].src == lookForSrc) 
			{
 
				if ((counter + 3 <= 48 
				&& counter != 11 && counter != 12 && counter != 13 
				&& counter != 18 && counter != 19 && counter != 20 
				&& counter != 25 && counter != 26 && counter != 27 
				&& counter != 32 && counter != 33 && counter != 34 
				&& counter != 39 && counter != 40 && counter != 41
				&& document.images[counter + 1].src == lookForSrc
				&& document.images[counter + 2].src == lookForSrc
				&& document.images[counter + 3].src == lookForSrc) 
 
				|| (counter + 3 * 7 <= 48
				&& document.images[counter + 7].src == lookForSrc
				&& document.images[counter + 7*2].src == lookForSrc
				&& document.images[counter + 7*3].src == lookForSrc)
 
				|| (counter + 3 * 7 <= 48
				&& counter != 11 && counter != 12 && counter != 13 
				&& counter != 18 && counter != 19 && counter != 20 
				&& counter != 25 && counter != 26 && counter != 27 
				&& document.images[counter + 7 + 1].src == lookForSrc
				&& document.images[counter + 7*2 + 2].src == lookForSrc
				&& document.images[counter + 7*3 + 3].src == lookForSrc)
 
				|| (counter - 3 * 7 >= 7
				&& counter != 32 && counter != 33 && counter != 34 
				&& counter != 39 && counter != 40 && counter != 41
				&& counter != 46 && counter != 47 && counter != 48
				&& document.images[counter - 7 + 1].src == lookForSrc
				&& document.images[counter - 7*2 + 2].src == lookForSrc
				&& document.images[counter - 7*3 + 3].src == lookForSrc)) 
				{
c'est juste moche ^^ mais ca marche. Comment je pourrais le rendre mieux en tout cas plus simple. Même la a expliquer pas sur d'arriver a le faire :/
zyhou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 19h33   #6
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 872
Points : 1 381
Points : 1 381
Code :
1
2
3
4
5
6
7
8
9
counter + 3 <= 48 && counter != 11 && counter != 12 && counter != 13 
&& counter != 18 && counter != 19 && counter != 20 
&& counter != 25 && counter != 26 && counter != 27 
&& counter != 32 && counter != 33 && counter != 34 
&& counter != 39 && counter != 40 && counter != 41
 
//===>
 
( (counter-4)%7 >= 3 || counter<11 ) && counter <= 45
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 19h39   #7
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 49
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 49
Points : 19
Points : 19
Mdr, j'avoue que j'ai pas fait les calcules. Merci à toi.

En plus c'est juste des addiction

Comment tu l'expliquerais clairement se code?
zyhou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 19h58   #8
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 872
Points : 1 381
Points : 1 381
Citation:
Envoyé par zyhou Voir le message
Mdr, j'avoue que j'ai pas fait les calcules. Merci à toi.

En plus c'est juste des addiction

Comment tu l'expliquerais clairement se code?
si tu regardes, toutes tes valeurs sont égales à 4,5 et 6 modulo 7.

donc tes valeurs - 4 modulo 7 valent toutes 0,1,2 ...

comme tu ne les veux pas (!=) il suffit de garder les valeurs plus grandes ou égales à 3 :

après il faut que cette condition ne soit valable uniquement pour les valeurs > 11 ou < 41.

il suffit donc de rajouter "ou plus petit que 11 ou plus grand que 41"

|| counter < 11 || counter > 41

hors la première condition nous dit que counter DOIT être plus petit que 45.

mais on voit que les valeurs > 41 et < 45 (42,43,44,45) valent (modulo 7 après soustraction de 4) 3,4,5 & 6 la condition "ou plus grand que 41" devient donc obsoléte puisque les 4 seules valeurs possibles n'entreront jamais dans la première condition "(counter-4)%7" on peut donc supprimer la condition counter > 41

nous avons donc :

Code :
1
2
counter <= 45 
&& (counter < 11 || (counter-4)%7 >= 3)
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 20h17   #9
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 872
Points : 1 381
Points : 1 381
Citation:
Envoyé par zyhou Voir le message
Ah ok j'avais pas compris cela comme ça. Je suis désolé.
Merci a toi

Sinon autre petit truc qui me dérange c'est :
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
if (document.images[counter].src == lookForSrc) 
			{
 
				if ((counter + 3 <= 48 
				&& counter != 11 && counter != 12 && counter != 13 
				&& counter != 18 && counter != 19 && counter != 20 
				&& counter != 25 && counter != 26 && counter != 27 
				&& counter != 32 && counter != 33 && counter != 34 
				&& counter != 39 && counter != 40 && counter != 41
				&& document.images[counter + 1].src == lookForSrc
				&& document.images[counter + 2].src == lookForSrc
				&& document.images[counter + 3].src == lookForSrc) 
 
				|| (counter + 3 * 7 <= 48
				&& document.images[counter + 7].src == lookForSrc
				&& document.images[counter + 7*2].src == lookForSrc
				&& document.images[counter + 7*3].src == lookForSrc)
 
				|| (counter + 3 * 7 <= 48
				&& counter != 11 && counter != 12 && counter != 13 
				&& counter != 18 && counter != 19 && counter != 20 
				&& counter != 25 && counter != 26 && counter != 27 
				&& document.images[counter + 7 + 1].src == lookForSrc
				&& document.images[counter + 7*2 + 2].src == lookForSrc
				&& document.images[counter + 7*3 + 3].src == lookForSrc)
 
				|| (counter - 3 * 7 >= 7
				&& counter != 32 && counter != 33 && counter != 34 
				&& counter != 39 && counter != 40 && counter != 41
				&& counter != 46 && counter != 47 && counter != 48
				&& document.images[counter - 7 + 1].src == lookForSrc
				&& document.images[counter - 7*2 + 2].src == lookForSrc
				&& document.images[counter - 7*3 + 3].src == lookForSrc)) 
				{
c'est juste moche ^^ mais ca marche. Comment je pourrais le rendre mieux en tout cas plus simple. Même la a expliquer pas sur d'arriver a le faire :/
après avoir recollé toutes mes réponses (j'ai supprimé mes multi-messages), ton code devient :

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
function checkSrc(a) {
	for (var i = 0, b = 1, a = a.split(,); i < a.length && b; i++)
		b = (document.images[counter+parseInt(a[i],10)].src == lookForSrc);
	return b;
}
if(checkSrc([0]){
	if((
			(counter < 11 || (counter - 4) % 7 >= 3)
			&& counter <= 45 
			&& checkSrc("1,2,3")
		)
		|| 
		(	counter <= 27
			&& checkSrc("7,14,21")
		)
		||
		(
			(counter < 11 || (counter-4)%7 >= 3 )
			&& counter  <= 27
			&& checkSrc("8,16,24")
		)
		||
		(
			( counter>48 || (counter-4)%7 >= 3)
			&& counter >= 28
			&& checkSrc("-6,-12,-18")
		)
	){
401 caractères au lieu de 1102.
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 20h39   #10
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 49
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 49
Points : 19
Points : 19
OUAHAHAHAH c'est noel avant l'heure juste énorme ton code. En plus avec tes explications je pense comprendre je m'y mets tout de suite.

Si j'ai des questions je te demande mais je pense pas
en tout cas un grand merci à toi
zyhou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 20h40   #11
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 872
Points : 1 381
Points : 1 381
Citation:
Envoyé par zyhou Voir le message
OUAHAHAHAH c'est noel avant l'heure juste énorme ton code. En plus avec tes explications je pense comprendre je m'y mets tout de suite.

Si j'ai des questions je te demande mais je pense pas
en tout cas un grand merci à toi
de rien.

ps: il se peut qu'il y ait des bugs/erreurs dans ma réduction de code, je l'ai écris vite fait à la volée sans tester. tiens-moi au courant.
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 20h45   #12
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 49
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 49
Points : 19
Points : 19
Oui tkt je te dis sa

tu pourrais m'expliquer le
Code :
1
2
3
4
5
6
				function checkSrc(a)
				{
					for (var i = 0, b = 1, a = a.split(,); i < a.length && b; i++)
						b = (document.images[counter+parseInt(a[i],10)].src == lookForSrc);
					return b;
				}
la suite sa va
zyhou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 20h57   #13
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 872
Points : 1 381
Points : 1 381
Citation:
Envoyé par zyhou Voir le message
Oui tkt je te dis sa

tu pourrais m'expliquer le
Code :
1
2
3
4
5
6
				function checkSrc(a)
				{
					for (var i = 0, b = 1, a = a.split(,); i < a.length && b; i++)
						b = (document.images[counter+parseInt(a[i],10)].src == lookForSrc);
					return b;
				}
la suite sa va
une fonction qui renvoie un booleen (enfin 1 ou 0) pour dire si toutes les src sont égales à "lookForSrc" (1 = toutes égales et 0 = au moins une n'est pas égale)

on passe les valeurs à ajouter à counter sous forme de string :

exemple "12,-15"

testera les valeurs de

document.images[counter+12].src == lookForSrc
et
document.images[counter-15].src == lookForSrc

si les deux conditions sont vraies, alors ça retournera "vrai"(1) sinon(au moins une de fausse) "faux"(0) !


-----------

a=a.split(',')

transformera simplement la chaine de texte (c'est inutile, j'aurai du travailler avec des tableaux directement au lieu de chaine de texte, c'est par habitude que je l'ai fait)

"12,-15"
en tableau
["12","-15"]

-----

ensuite la boucle :
for (var i = 0, b = 1, a = a.split(,); i < a.length && b; i++)

initialisera un indice "i" pour parcourir notre tableau a
et un booleen "b" qui sera a vrai tant qu'on ne trouvera pas de cas "faux"

la boucle s'arrete une fois tous les éléments parcourus (i == a.length) ou bien si on trouve un élément "faux" (&& b) (si b vaut "faux", la condition arretera la boucle)

-----

b = (document.images[counter+parseInt(a[i],10)].src == lookForSrc);
return b;

teste chaque élément, si c'est vrai b prend(garde) la valeur "vrai", sinon b prend la valeur "faux" et la boucle est interrompue)

parseInt convertit la chaine de caractère( "12" par exemple) en valeur entière en base 10.

----

finalement une fois la boucle finie, on renvoit la valeur de b, qui soit vaut 0 (faux) si la boucle à été interrompue ou bien 1 (vrai) si on est arrivé au bout (et que la dernière valeur vallait aussi vrai).
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/01/2012, 21h16   #14
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 49
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 49
Points : 19
Points : 19
merci a toi )))))
j’étudie sa parce que sinon je vais pas réussir a refaire.

malheureusement ta fonction ne marche pas :/
zyhou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h13.


 
 
 
 
Partenaires

Hébergement Web