Accueil > Forum > > > > morpion verification ligne + colonne
morpion verification ligne + colonne
lundi 28 décembre 2009 à 17:23:57 |
morpion verification ligne + colonne

Pills87
|
Bonsoir,
Débutant en javascript, je suis en train de réaliser un jeu de morpion humain vs humain.
Pour l'instant j'ai réussi à faire en sorte que à chaque clic apparaisse un coup une croix, un coup un rond.
Mon problème est que je n'arrive pas à vérifier mes lignes et colonnes pour détecter une éventuelle victoire.
Voici les fonctions (pour la première ligne seulement):
function f_L1C1(){
if(a_qui_le_tour==false){
document.getElementById("L1C1").src = "croix.jpg";
a_qui_le_tour = true;
}else if(a_qui_le_tour==true){
document.getElementById("L1C1").src = "rond.jpg";
a_qui_le_tour = false;
}
}
function f_L1C2(){
if(a_qui_le_tour==false){
document.getElementById("L1C2").src = "croix.jpg";
a_qui_le_tour = true;
}else if(a_qui_le_tour==true){
document.getElementById("L1C2").src = "rond.jpg";
a_qui_le_tour = false;
}
}
function f_L1C3(){
if(a_qui_le_tour==false){
document.getElementById("L1C3").src = "croix.jpg";
a_qui_le_tour = true;
}else if(a_qui_le_tour==true){
document.getElementById("L1C3").src = "rond.jpg";
a_qui_le_tour = false;
}
}
La fonction de vérification pour la première ligne (seulement pour 3 croix) :
function f_verif(){
if((document.getElementById("L1C1").src = "croix.jpg") && (document.getElementById("L1C2").src = "croix.jpg") && (document.getElementById("L1C3").src = "croix.jpg")){
alert("gagne");
}
Et enfin mon html (toujours pour la première ligne):
<tr>
<td width="100" height="100"><img id="L1C1" src="vide.jpg" onclick="f_L1C1(); f_verif();" /></td>
<td width="100" height="100"><img id="L1C2" src="vide.jpg" onclick="f_L1C2(); f_verif();" /></td>
<td width="100" height="100"><img id="L1C3" src="vide.jpg" onclick="f_L1C3(); f_verif();" /></td>
</tr>
Mon problème se situe au niveau de la fonction f_verif().
Je ne sais pas comment détecter l'utilisation soit de croix.jpg soit de rond.jpg.
Je sais pas si je suis très clair ...
Si quelqu'un à 5min à m'accorder afin de m'éclairer je lui en serais très reconnaissant.
Merci d'avance
|
|
lundi 28 décembre 2009 à 22:23:24 |
Re : morpion verification ligne + colonne

NutMotion
|
Quote: Mon problème se situe au niveau de la fonction f_verif().
Je ne sais pas comment détecter l'utilisation soit de croix.jpg soit de rond.jpg.
(...)
function f_verif(){
if((document.getElementById("L1C1").src = "croix.jpg") && (document.getElementById("L1C2").src = "croix.jpg") && (document.getElementById("L1C3").src = "croix.jpg")){
alert("gagne");
}
Bonjour,
La logique du code ci dessus me semble cohérente. Peut être est ce juste une erreur de syntaxe ? tu n'as mis qu'un signe égal pour tes tests :
(document.getElementById("L1C1").src = "croix.jpg")
au lieu de
(document.getElementById("L1C1").src == "croix.jpg")
?
Il nous faut faire un long voyage pour revenir à nous-mêmes.
|
|
lundi 28 décembre 2009 à 23:58:25 |
Re : morpion verification ligne + colonne

Pills87
|
Bonsoir NutMotion,
Merci pour ton aide mais malheureusement cela ne semble pas résoudre mon problème
Enfaite avec le signe == rien ne se passe. A l'inverse, lorsque je mets juste un = il suffit que je clique sur une des 3 cases de la première ligne pour que toute la ligne soit compté comme étant valide. Et en plus les deux autres croix que je n'est pas ajouté le sont qd mm, automatiquement...
|
|
mardi 29 décembre 2009 à 01:17:52 |
Re : morpion verification ligne + colonne

NutMotion
|
re.
Je t'avoue que je ne comprends pas le fonctionnement des 3 premières fonctions que tu as présentées.
Cependant, pour en revenir à ta fonction de test "f_verif", es-tu sûr d'avoir bien corrigé les 3 tests? Ce qui doit te donner le code suivant :
Code Javascript : function f_verif(){
if((document.getElementById("L1C1").src == "croix.jpg") && (document.getElementById("L1C2").src == "croix.jpg") && (document.getElementById("L1C3").src == "croix.jpg")){
alert("gagne");
}
|
|
mardi 29 décembre 2009 à 12:04:02 |
Re : morpion verification ligne + colonne

Pills87
|
re,
Oui j'ai bien corrigé les trois tests avec ta solution.
Enfaite les trois première fonctions servent à ce que lorsqu'un joueur clique dans une case un symbole apparaisse. Un coup une croix, l'autre coup un rond.
Tiens, je te met le code en entier avec des commentaires pour que tu puisses mieux comprendre.
<script type="text/javascript" language="javascript">
//on declare les variables dont on va avoir besoin
var joueur1 = 0;
var joueur2 = 0;
var a_qui_le_tour = new Boolean(false);
var hasard = Math.random(); // variable aleatoire, valeur comprise entre 0 et 1
//test pour savoir qui commence, en fonction du resultat de "hasard"
if(hasard>0.5){
a_qui_le_tour = false;
alert("joueur1 commence");
} else {
a_qui_le_tour = true;
alert("joueur2 commence");
}
//fonctions ligne par ligne, colonne par colonne
//si a_qui_le_tour retourne la valeur false alors croix.jpg est utilisé et a_qui_le_tour prend la valeur true pour le prochain tour
//si a_qui_le_tour retourne la valeur true alors rond.jpg est utilisé et a_qui_le_tour prend la valeur false pour le prochain tour
//le but d'attribuer de nouvelles valeurs a a_qui_le_tour en fin de boucle est de pouvoir changer de symbole (croix ou rond) au prochain tour
function f_L1C1(){
if(a_qui_le_tour==false){
document.getElementById("L1C1").src = "croix.jpg";
a_qui_le_tour = true;
}else if(a_qui_le_tour==true){
document.getElementById("L1C1").src = "rond.jpg";
a_qui_le_tour = false;
}
}
function f_L1C2(){
if(a_qui_le_tour==false){
document.getElementById("L1C2").src = "croix.jpg";
a_qui_le_tour = true;
}else if(a_qui_le_tour==true){
document.getElementById("L1C2").src = "rond.jpg";
a_qui_le_tour = false;
}
}
function f_L1C3(){
if(a_qui_le_tour==false){
document.getElementById("L1C3").src = "croix.jpg";
a_qui_le_tour = true;
}else if(a_qui_le_tour==true){
document.getElementById("L1C3").src = "rond.jpg";
a_qui_le_tour = false;
}
}
function f_L2C1(){
if(a_qui_le_tour==false){
document.getElementById("L2C1").src = "croix.jpg";
a_qui_le_tour = true;
}else if(a_qui_le_tour==true){
document.getElementById("L2C1").src = "rond.jpg";
a_qui_le_tour = false;
}
}
function f_L2C2(){
if(a_qui_le_tour==false){
document.getElementById("L2C2").src = "croix.jpg";
a_qui_le_tour = true;
}else if(a_qui_le_tour==true){
document.getElementById("L2C2").src = "rond.jpg";
a_qui_le_tour = false;
}
}
function f_L2C3(){
if(a_qui_le_tour==false){
document.getElementById("L2C3").src = "croix.jpg";
a_qui_le_tour = true;
}else if(a_qui_le_tour==true){
document.getElementById("L2C3").src = "rond.jpg";
a_qui_le_tour = false;
}
}
function f_L3C1(){
if(a_qui_le_tour==false){
document.getElementById("L3C1").src = "croix.jpg";
a_qui_le_tour = true;
}else if(a_qui_le_tour==true){
document.getElementById("L3C1").src = "rond.jpg";
a_qui_le_tour = false;
}
}
function f_L3C2(){
if(a_qui_le_tour==false){
document.getElementById("L3C2").src = "croix.jpg";
a_qui_le_tour = true;
}else if(a_qui_le_tour==true){
document.getElementById("L3C2").src = "rond.jpg";
a_qui_le_tour = false;
}
}
function f_L3C3(){
if(a_qui_le_tour==false){
document.getElementById("L3C3").src = "croix.jpg";
a_qui_le_tour = true;
}else if(a_qui_le_tour==true){
document.getElementById("L3C3").src = "rond.jpg";
a_qui_le_tour = false;
}
}
//fonctions pour verifier si la partie est gagnee ou non
function f_verif(){
//pour les croix
if((document.getElementById("L1C1").src == "croix.jpg") && (document.getElementById("L1C2").src == "croix.jpg") && (document.getElementById("L1C3").src == "croix.jpg")){
alert("gagne");
}
if((document.getElementById("L2C1").src == "croix.jpg") && (document.getElementById("L2C2").src == "croix.jpg") && (document.getElementById("L2C3").src == "croix.jpg")){
alert("gagne");
}
if((document.getElementById("L3C1").src == "croix.jpg") && (document.getElementById("L3C2").src == "croix.jpg") && (document.getElementById("L3C3").src == "croix.jpg")){
alert("gagne");
}
if((document.getElementById("L1C1").src == "croix.jpg") && (document.getElementById("L2C1").src == "croix.jpg") && (document.getElementById("L3C1").src == "croix.jpg")){
alert("gagne");
}
if((document.getElementById("L1C2").src == "croix.jpg") && (document.getElementById("L2C2").src == "croix.jpg") && (document.getElementById("L3C2").src == "croix.jpg")){
alert("gagne");
}
if((document.getElementById("L1C3").src = "croix.jpg") && (document.getElementById("L2C3").src == "croix.jpg") && (document.getElementById("L3C3").src == "croix.jpg")){
alert("gagne");
}
if((document.getElementById("L1C1").src = "croix.jpg") && (document.getElementById("L2C2").src == "croix.jpg") && (document.getElementById("L3C3").src == "croix.jpg")){
alert("gagne");
}
if((document.getElementById("L1C3").src = "croix.jpg") && (document.getElementById("L2C2").src == "croix.jpg") && (document.getElementById("L3C1").src == "croix.jpg")){
alert("gagne");
}
//pour les ronds
if((document.getElementById("L1C1").src == "rond.jpg") && (document.getElementById("L1C2").src == "rond.jpg") && (document.getElementById("L1C3").src == "rond.jpg")){
alert("gagne");
}
if((document.getElementById("L2C1").src == "rond.jpg") && (document.getElementById("L2C2").src == "rond.jpg") && (document.getElementById("L2C3").src == "rond.jpg")){
alert("gagne");
}
if((document.getElementById("L3C1").src == "rond.jpg") && (document.getElementById("L3C2").src == "rond.jpg") && (document.getElementById("L3C3").src == "rond.jpg")){
alert("gagne");
}
if((document.getElementById("L1C1").src == "rond.jpg") && (document.getElementById("L2C1").src == "rond.jpg") && (document.getElementById("L3C1").src == "rond.jpg")){
alert("gagne");
}
if((document.getElementById("L1C2").src == "rond.jpg") && (document.getElementById("L2C2").src == "rond.jpg") && (document.getElementById("L3C2").src == "rond.jpg")){
alert("gagne");
}
if((document.getElementById("L1C3").src == "rond.jpg") && (document.getElementById("L2C3").src == "rond.jpg") && (document.getElementById("L3C3").src == "rond.jpg")){
alert("gagne");
}
if((document.getElementById("L1C1").src == "rond.jpg") && (document.getElementById("L2C2").src == "rond.jpg") && (document.getElementById("L3C3").src == "rond.jpg")){
alert("gagne");
}
if((document.getElementById("L1C3").src == "rond.jpg") && (document.getElementById("L2C2").src == "rond.jpg") && (document.getElementById("L3C1").src == "rond.jpg")){
alert("gagne");
}
*/
}
</script>
</head>
<body>
<table border="1" width="300" height="300">
<tr>
<td width="100" height="100"><img id="L1C1" src="vide.jpg" onclick="f_L1C1(); f_verif();" /></td>
<td width="100" height="100"><img id="L1C2" src="vide.jpg" onclick="f_L1C2(); f_verif();" /></td>
<td width="100" height="100"><img id="L1C3" src="vide.jpg" onclick="f_L1C3(); f_verif();" /></td>
</tr>
<tr>
<td width="100" height="100"><img id="L2C1" src="vide.jpg" onclick="f_L2C1(); f_verif();" /></td>
<td width="100" height="100"><img id="L2C2" src="vide.jpg" onclick="f_L2C2(); f_verif();" /></td>
<td width="100" height="100"><img id="L2C3" src="vide.jpg" onclick="f_L2C3(); f_verif();" /></td>
</tr>
<tr>
<td width="100" height="100"><img id="L3C1" src="vide.jpg" onclick="f_L3C1(); f_verif();" /></td>
<td width="100" height="100"><img id="L3C2" src="vide.jpg" onclick="f_L3C2(); f_verif();" /></td>
<td width="100" height="100"><img id="L3C3" src="vide.jpg" onclick="f_L3C3(); f_verif();" /></td>
</tr>
</table>
En espérant que cela t'aide à mieux comprendre mon code :)
|
|
mardi 29 décembre 2009 à 12:38:48 |
Re : morpion verification ligne + colonne

taillecrayon
|
Salut, je ne pense pas que tu doives mettre: if(a_qui_le_tour==true) après tes "else " qui disent la même chose.Et le test pour savoir qui commence ça fonctionne? car c'est pas dans une fonction.
taillecrayon
|
|
mardi 29 décembre 2009 à 12:53:48 |
Re : morpion verification ligne + colonne

Pills87
|
Salut taillecrayon ,
Alors effectivement, mes else if(a_qui_le_tour==true) étaient de trop et ne servaient à rien. Merci, ca allège mon code
En ce qui concerne le test pour savoir qui doit jouer ...
Code ActionScript :
var hasard = Math.random();
if(hasard>0.5){
a_qui_le_tour = false;
alert("joueur1 commence");
} else {
a_qui_le_tour = true;
alert("joueur2 commence");
}
... Oui il fonctionne très bien (apparemment). Enfaite, vu qu'il n'est pas dans une fonction il est lancé dans lors que l'on ouvre la page html. Enfin je ne m'y connais pas assez en JS pour affirmer quoi que ce soit, s'il existe une autre technique je suis preneur 
|
|
mardi 29 décembre 2009 à 13:46:48 |
Re : morpion verification ligne + colonne

taillecrayon
|
Et ça marche toujours pas? car ces else if... me semblaient incorrects, je ne vois rien d'autre sauf quelques == qui manquent encore mais que tu as peut-être déjà modifié.
Pour le test tu peux le mettre dans unefonction()
et <body onload="unefonction()"> mais je ne sais pas si c'est plus correct.
taillecrayon
|
|
mardi 29 décembre 2009 à 14:39:30 |
Re : morpion verification ligne + colonne

Pills87
|
Non, ca ne marche toujours pas...Par contre je n'ai pas modifié de = encore.
Je ne vois pas trop ou je pourrait remplacer = par == ?
J'ai également ajouté une fonction f_aleatoire() pour mon test que j'ai appelé par un onload ds mon body comme conseillé.
|
|
mardi 29 décembre 2009 à 15:46:44 |
Re : morpion verification ligne + colonne

Pills87
|
Réponse acceptée !
Bon j'ai enfin réussi !
Donc c'était bien la syntaxe de la fonction f_verif()
Il fallait avoir
Code ActionScript : if(document.getElementById("L1C1").src=="croix.jpg" && document.getElementById("L1C2").src=="croix.jpg" && document.getElementById("L1C3").src=="croix.jpg"){
alert("gagne");
}
A la place de
Code ActionScript : if((document.getElementById("L1C1").src == "croix.jpg") && (document.getElementById("L1C2").src == "croix.jpg") && (document.getElementById("L1C3").src == "croix.jpg")){
alert("gagne");
}
Très subtile le coup des parenthèses...
En tout cas, merci à vous pour votre aide. Elle m'a permis de rechercher là ou il faut !
A bientôt
|
|
Cette discussion est classée dans : document, tour, jpg, croix, getelementbyid
Répondre à ce message
Sujets en rapport avec ce message
Problème programmation menu déroulant [ par schietnet ]
Bonjour à tous. Voila, j'ai un petit problème dans la programmation d'un menu. J'aimerais avoir un menu dynamique, qui en cliquant dessus déroule les
Créer un objet sur chaque objet besoins de POO [ par mickaelpfr ]
Salut a tous, bon hé bien j'aurais besoins d'un coup de main pour un "menu" je m'explique : j'ai un élément div sur lequel j'ai un menu a créer ( qui
probleme sur appel de radio dans une function [ par destiny ]
Lo all,Mon code:echo " ".$danscamp." ";echo "<input type='radio' name='opt".$result_carac['IdPi
Ma fonction marche pas sous IE? [ par Monico9385 ]
Bonjour tout le monde, je viens vous voir car j'ai une fonction, mais celle-ci marche sous FF mais pas sous IE, ce qui est un peu embettant, et je vo
Bouton radio et bloquer la saisie [ par stamdan ]
Bonjour à tous et à toutes,voilà je dois développer une page html pour mon taf. Cette page est découpée en trois partie,ces trois parties déterminent
block/none de div [ par kishkaya ]
voila j'ai des contenu et j'essaye de creer une fonction pour cacher ou afficher ces div en m'inspirant d'une fonction trouver sur ce site . Moi j'ai
Accés a une fonction de popup !!!!!!!!!!!!!!!! [ par barraq ]
Bonjour, voila j'ai un problem !! j'ais un fichier html popup : http://www.w3.org/TR/html4/loose.dtd"><html&
Empecher le focus sauf sur un dblclick [ par pymm ]
bonjour à tous, J'ai une page sur laquelle la valeur d'un input text est affectée automatiquement. Je voudrais que les utilisateurs ne puissent la mod
getElementById qui ne marche pas [ par chour03 ]
Bonjour !pour faire simple, j'ai une page qui ressembleà ca :......alert(document.i
objet qui suit le souris [ par CCJ ]
bonjour g trouver ce code ici : var x = 0; var y = 0; posX = 0; posY = 0; if (document.getElementById) { if(navigator.appName.substring(0,3).
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|