begin process at 2012 02 11 23:55:23
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > CHERCHOBJET

CHERCHOBJET


 Information sur la source

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Jeux Niveau :Expert Date de création :11/07/2005 Date de mise à jour :29/07/2005 11:52:29 Vu / téléchargé :5 538 / 247

Auteur : peter1789

Ecrire un message privé
Commentaire sur cette source (19)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
C'est un jeu dont le principe est de trouver des objets cachés dans un tableau en un temps et en un nombre d'essais limités (voir le résultat). les paramètres de jeu sont modifiables sans changer la source du code.

Source

  • <html><head>
  • <title></title>
  • <script type="text/javascript">
  • <!--
  • if (window.location.search != "") {
  • longueur = window.location.search.length - 1;
  • data = window.location.search.substr(1,longueur);
  • donnees = data.split("&");
  • urlvar = new Array();
  • urlvarnum = new Array();
  • for (var i=0; i < donnees.length; i++) {
  • position = donnees[i].indexOf("=");
  • variable = donnees[i].substr(0,position);
  • pos = position + 1;
  • valeur = decodeURI(donnees[i].substr(pos,donnees[i].length));
  • while (valeur.search(/\+/) != -1)
  • valeur = valeur.replace(/\+/," ");
  • urlvar[variable] = valeur;
  • urlvarnum[i] = valeur;
  • }
  • for (var w=0; w < urlvarnum.length; w++) {
  • if (isNaN(parseInt(urlvarnum[w]))) {
  • alert('entrez des valeurs numériques !');
  • break;
  • }
  • }
  • largeur = (isNaN(parseInt(urlvar['largeur'])))? 8 : eval(urlvar['largeur']);
  • hauteur = (isNaN(parseInt(urlvar['hauteur'])))? 8 : eval(urlvar['hauteur']);
  • cases = new Array(largeur);
  • nbre_objets = (isNaN(parseInt(urlvar['nbre_objets'])))? 10 : eval(urlvar['nbre_objets']);
  • depart = (isNaN(parseInt(urlvar['depart'])))? 20 : eval(urlvar['depart']);
  • departbis = (isNaN(parseInt(urlvar['departbis'])))? 15 : eval(urlvar['departbis']);
  • nbre = largeur*hauteur;
  • for (var i=0; i < cases.length; i++)
  • cases[i] = new Array(hauteur)
  • if (nbre_objets > nbre) nbre_objets = nbre;
  • }
  • else {
  • largeur = 8;
  • hauteur = 8;
  • cases = new Array(largeur);
  • nbre_objets = 10;
  • depart = 20;
  • departbis = 15;
  • nbre = largeur*hauteur;
  • for (var i=0; i < cases.length; i++)
  • cases[i] = new Array(hauteur);
  • }
  • function temps(t) {
  • if (t == 0) {
  • document.getElementById('timegame').innerHTML= "Fini !";
  • if (controle < nbre_objets) {
  • for (var o = 0; o < nbre; o++)
  • document.getElementsByName('ok')[o].disabled = true;
  • if (! no) {
  • no = true;
  • alert('vous avez perdu au temps !\nobjets trouvés : '+ controle +'/'+ nbre_objets);
  • }
  • }
  • }
  • else {
  • t--;
  • tbis = t;
  • document.getElementById('timegame').innerHTML= "Il vous reste : "+ tbis +" secondes !";
  • setTimeout('temps(tbis)',1000);
  • }
  • }
  • function start() {
  • document.jeu.reset();
  • for (var i=0; i < cases.length; i++) {
  • for (var j=0; j < cases[i].length; j++) {
  • cases[i][j] = false;
  • }
  • }
  • k=0;
  • while (k < nbre_objets) {
  • i = Math.ceil(Math.random()*largeur)-1;
  • j = Math.ceil(Math.random()*hauteur)-1;
  • if (! cases[i][j]) {
  • cases[i][j] = true;
  • k++;
  • }
  • }
  • document.getElementById('timegame').innerHTML= "Il vous reste : "+ depart +" secondes !";
  • setTimeout('temps(depart)',1000);
  • controle = 0;
  • x = 0;
  • no = false;
  • document.getElementById('nombre').innerHTML = controle +'/'+ nbre_objets;
  • document.getElementById('coups').innerHTML = departbis;
  • for (var o = 0; o < nbre; o++)
  • document.getElementsByName('ok')[o].disabled = false;
  • }
  • function verif(ligne,colonne,nom) {
  • document.getElementById(nom).disabled = true;
  • x++;
  • if (controle < nbre_objets) {
  • if (cases[ligne][colonne] == true) {
  • cases[ligne][colonne] ==false;
  • controle++;
  • document.getElementById('nombre').innerHTML = controle +'/'+ nbre_objets;
  • }
  • }
  • else {
  • document.getElementById('nombre').innerHTML = "Gagné !";
  • for (var o = 0; o < nbre; o++)
  • document.getElementsByName('ok')[o].disabled = true;
  • if (! no) {
  • no = true;
  • alert('Vous avez trouvé tous les objets !');
  • }
  • }
  • if (x < departbis) {
  • document.getElementById('coups').innerHTML = (departbis - x);
  • }
  • else {
  • document.getElementById('coups').innerHTML = "Aucun !";
  • if (controle < nbre_objets) {
  • for (var o = 0; o < nbre; o++)
  • document.getElementsByName('ok')[o].disabled = true;
  • if (! no) {
  • no = true;
  • alert('Vous n\'avez plus de coups restants !\nobjets trouvés : '+ controle +'/'+ nbre_objets);
  • }
  • }
  • }
  • }
  • //-->
  • </script>
  • </head><body>
  • <div id="rules"></div>
  • <br>
  • temps : <div id="timegame"></div><br>
  • nombre d'objets trouvés : <div id="nombre"></div><br>
  • coups restants : <div id="coups"></div>
  • <form name="jeu" id="jeu">
  • <table id="tableau">
  • </table>
  • </form>
  • <br><button type="button" onClick="start()">start</button><br>
  • personnalisation : <form name="formulaire" method="get">
  • largeur : <input name="largeur" type="text"><br>
  • hauteur : <input name="hauteur" type="text"><br>
  • nombre d'objets à trouver : <input name="nbre_objets" type="text"><br>
  • temps limite en secondes : <input name="depart" type="text"><br>
  • nombre de coups limités à : <input name="departbis" type="text"><br>
  • <button type="submit">changer !</button>
  • </form>
  • <script type="text/javascript">
  • <!--
  • document.formulaire.largeur.value = largeur;
  • document.formulaire.hauteur.value = hauteur;
  • document.formulaire.nbre_objets.value = nbre_objets;
  • document.formulaire.depart.value = depart;
  • document.formulaire.departbis.value = departbis;
  • numero = 0;
  • for (var m=0; m < cases.length; m++) {
  • var rangee = document.createElement("tr");
  • if (navigator.appName.substr(0,3)!="Mic") document.getElementById("tableau").appendChild(rangee);
  • else document.getElementById("tableau").firstChild.appendChild(rangee);
  • for (var n=0; n < cases[m].length; n++) {
  • var cellule = document.createElement("td");
  • rangee.appendChild(cellule);
  • cellule.innerHTML = "<input type='checkbox' disabled='true' id='n"+ numero +"' name='ok' onClick='verif("+ m +","+ n +",this.id)'></input>";
  • numero++;
  • }
  • }
  • document.getElementById('rules').innerHTML="Voici un jeu que j'ai inventé : dès que vous appuyez sur le bouton start, vous avez "+ depart +" secondes et "+ departbis +" essais pour trouver le maximum d'objets cachés dans les "+ nbre +" cases. Pour chercher dans une case, cochez-la !";
  • //-->
  • </script>
  • </body></html>
<html><head>
<title></title>
<script type="text/javascript">
<!--

	if (window.location.search != "") {
	longueur = window.location.search.length - 1;
	data = window.location.search.substr(1,longueur);
	donnees = data.split("&");
	urlvar = new Array();
	urlvarnum = new Array();
		for (var i=0; i < donnees.length; i++) {
		position = donnees[i].indexOf("=");
		variable = donnees[i].substr(0,position);
		pos = position + 1;
		valeur = decodeURI(donnees[i].substr(pos,donnees[i].length));
			while (valeur.search(/\+/) != -1)
			valeur = valeur.replace(/\+/," ");
		urlvar[variable] = valeur;
		urlvarnum[i] = valeur;
		}
		for (var w=0; w < urlvarnum.length; w++) {
			if (isNaN(parseInt(urlvarnum[w]))) {
			alert('entrez des valeurs numériques !');
			break;
			}
		}
	largeur = (isNaN(parseInt(urlvar['largeur'])))? 8 : eval(urlvar['largeur']);
	hauteur = (isNaN(parseInt(urlvar['hauteur'])))? 8 : eval(urlvar['hauteur']);
	cases = new Array(largeur);
	nbre_objets = (isNaN(parseInt(urlvar['nbre_objets'])))? 10 : eval(urlvar['nbre_objets']);
	depart = (isNaN(parseInt(urlvar['depart'])))? 20 : eval(urlvar['depart']);
	departbis = (isNaN(parseInt(urlvar['departbis'])))? 15 : eval(urlvar['departbis']);
	nbre = largeur*hauteur;
		for (var i=0; i < cases.length; i++)
		cases[i] = new Array(hauteur)
	
		if (nbre_objets > nbre) nbre_objets = nbre;
	}
	else {
	largeur = 8;
	hauteur = 8;
	cases = new Array(largeur);
	nbre_objets = 10;
	depart = 20;
	departbis = 15;
	nbre = largeur*hauteur;
		for (var i=0; i < cases.length; i++)
		cases[i] = new Array(hauteur);
	}
	
	function temps(t) {
		if (t == 0) {
		document.getElementById('timegame').innerHTML= "Fini !";
			if (controle < nbre_objets) {
for (var o = 0; o < nbre; o++)
			document.getElementsByName('ok')[o].disabled = true;
				if (! no) {
				no = true;
				alert('vous avez perdu au temps !\nobjets trouvés : '+ controle +'/'+ nbre_objets);
				}
			}
		}
		else {
		t--;
		tbis = t;
		document.getElementById('timegame').innerHTML= "Il vous reste : "+ tbis +" secondes !";
		setTimeout('temps(tbis)',1000);
		}
	}
	
	function start() {
	document.jeu.reset();
		for (var i=0; i < cases.length; i++) {
			for (var j=0; j < cases[i].length; j++) {
			cases[i][j] = false;
			}
		}
	k=0;
	    while (k < nbre_objets) {
                        i = Math.ceil(Math.random()*largeur)-1;
                        j = Math.ceil(Math.random()*hauteur)-1;
			if (! cases[i][j]) {
			cases[i][j] = true;
			k++;
			}
		}
	document.getElementById('timegame').innerHTML= "Il vous reste : "+ depart +" secondes !";
	setTimeout('temps(depart)',1000);
	controle = 0;
	x = 0;
	no = false;
	document.getElementById('nombre').innerHTML = controle +'/'+ nbre_objets;
	document.getElementById('coups').innerHTML = departbis;
		for (var o = 0; o < nbre; o++)
			document.getElementsByName('ok')[o].disabled = false;
	}

	function verif(ligne,colonne,nom) {
		document.getElementById(nom).disabled = true;
		x++;
		if (controle < nbre_objets) {
			if (cases[ligne][colonne] == true) {
			cases[ligne][colonne] ==false;
			controle++;
			document.getElementById('nombre').innerHTML = controle +'/'+ nbre_objets;
			}
		}
		else {
		document.getElementById('nombre').innerHTML = "Gagné !";
			for (var o = 0; o < nbre; o++)
				document.getElementsByName('ok')[o].disabled = true;
				
			if (! no) {
			no = true;
			alert('Vous avez trouvé tous les objets !');
			}
		}
		
		if (x < departbis) {
		document.getElementById('coups').innerHTML = (departbis - x);
		}
		else {
		document.getElementById('coups').innerHTML = "Aucun !";
			if (controle < nbre_objets) {
				for (var o = 0; o < nbre; o++)
					document.getElementsByName('ok')[o].disabled = true;
					
				if (! no) {
				no = true;
				alert('Vous n\'avez plus de coups restants !\nobjets trouvés : '+ controle +'/'+ nbre_objets);
				}
			}
		}
	}
	
//-->
</script>

</head><body>
<div id="rules"></div>
<br>
temps : <div id="timegame"></div><br>
nombre d'objets trouvés : <div id="nombre"></div><br>
coups restants : <div id="coups"></div>
<form name="jeu" id="jeu">
<table id="tableau">
</table>
</form>
<br><button type="button" onClick="start()">start</button><br>
personnalisation : <form name="formulaire" method="get">
largeur : <input name="largeur" type="text"><br>
hauteur : <input name="hauteur" type="text"><br>
nombre d'objets à trouver : <input name="nbre_objets" type="text"><br>
temps limite en secondes : <input name="depart" type="text"><br>
nombre de coups limités à : <input name="departbis" type="text"><br>
<button type="submit">changer !</button>
</form>
<script type="text/javascript">
<!--
document.formulaire.largeur.value = largeur;
document.formulaire.hauteur.value = hauteur;
document.formulaire.nbre_objets.value = nbre_objets;
document.formulaire.depart.value = depart;
document.formulaire.departbis.value = departbis;
numero = 0;
	for (var m=0; m < cases.length; m++) {
	var rangee = document.createElement("tr");
		if (navigator.appName.substr(0,3)!="Mic") document.getElementById("tableau").appendChild(rangee);
		else document.getElementById("tableau").firstChild.appendChild(rangee);
		
		for (var n=0; n < cases[m].length; n++) {
		var cellule = document.createElement("td");
		rangee.appendChild(cellule);
		cellule.innerHTML = "<input type='checkbox' disabled='true' id='n"+ numero +"' name='ok' 	onClick='verif("+ m +","+ n +",this.id)'></input>";
		numero++;
		}
	}
document.getElementById('rules').innerHTML="Voici un jeu que j'ai inventé : dès que vous appuyez sur le bouton start, vous avez "+ depart +" secondes et "+ departbis +" essais pour trouver le maximum d'objets cachés dans les "+ nbre +" cases. Pour chercher dans une case, cochez-la !";

//-->
</script>
</body></html>

 Conclusion

Ce script est compatible avec tous les navigateurs. Ce script utilise le DOM. Pas de bugs connus.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

12 juillet 2005 21:39:03 :
ajout de commentaires
13 juillet 2005 14:50:38 :
ajout d'un zip
20 juillet 2005 14:57:39 :
Ce script est maintenant compatible tout naviguateurs ! même IE :p
20 juillet 2005 15:07:02 :
relmplacement du zip
29 juillet 2005 00:41:31 :
bug de randomisation corrigé ! grâce à ... Marmotte86 :) *merci*
29 juillet 2005 11:52:29 :
mise à jour du zip :)

 Sources du même auteur

Source avec Zip LISTAGE DES OBJETS, MÉTHODES ET PROPRIÉTÉS
Source avec Zip EXTRACTION DES PARAMÈTRES D'UNE URL
Source avec Zip ANIMATION DYNAMIQUE DE BIENVENUE
Source avec Zip IMAGE MOBILE REBONDISSANTE
Source avec Zip CALCUL DU VOLUME DES SOLIDES DE PLATON

 Sources de la même categorie

Source avec Zip Source avec une capture AVVDA : A VERY VERY DARK AFFAIRES DEMO par Cyreb
Source avec Zip Source avec une capture 3D AVEC WEBGL + MESH par Hakumbaya
SUDOKU RESOLVER (BRUTEFORECE, RÉCURSION) par amezghal
Source avec Zip MACHINE À SOUS par loicseg
Source avec Zip DOODLE JUMP EN JAVASCRIPT par Toshy62

Commentaires et avis

Commentaire de Marmotte86 le 11/07/2005 20:50:08

Un petit truc : pour tes codes (que tu veux reprendre plus tard ou pas), et encore plus si tu les diffuse => COMMENTAIRES !!!
Je n'ai pas passé beaucoup de temps sur ton script à chercher pourquoi les cases ne s'affichent pas sur IE, d'une part parce que je n'ai pas beaucoup de temps, mais surtout parce que c'est quasiment impossible de trouver facilement où se fait cet affichage sans commentaires...

Je n'ai donc pas pu le tester sous IE.

Commentaire de abder005 le 12/07/2005 21:57:04

Difficile de trouver les "objets cachés" ni d'ailleurs le "tableau" puisque rien n'est affiché en dehors du chrono!!! au moins sous IE.

Commentaire de peter1789 le 13/07/2005 21:36:32

Voilà les commentaires sont là :D

Commentaire de Marmotte86 le 13/07/2005 23:10:30

Merci beaucoup, c'est beaucoup plus clair comme ca :)

Je vais essayer de trouver pourquoi le tableau ne s'affiche pas sur IE, mais c'est quand même bete d'ignorer IE, car d'apres des etudes assez récentes, il y a encore pres de 95 % d'utilisateurs qui fonctionnent avec IE... meme si les commentaires laissés en faveur des autres navigateurs laissent penser le contraire !

Commentaire de Marmotte86 le 13/07/2005 23:45:49

j'ai trouvé le problème d'affichage qui intervient dans IE : La balise Table contient un TBODY des sa création (fais un alert(document.getElementById("tableau").innerHTML) au début du script, tu verras...). Il faut donc créer le tableau DANS cette balise, et pas APRES.

Tu dois donc ecrire :
    document.getElementById("tableau").firstChild.appendChild(rangee);
pour placer les lignes et colonnes dans la balise tbody (le corps du tableau).

Je n'ai pas encore testé le fonctionnement, mais maintenant que ca s'affiche, ca devrait etre bon.

Au passage, quand on dit qu'IE ne respecte rien... sur ce coup la, il n'affiche pas ce qui ne doit pas etre affiché :)

Commentaire de Marmotte86 le 13/07/2005 23:48:08

J'ai oublié un truc... le .firstChild., faut le rajouter A CHAQUE FOIS que tu as besoin d'appeler ton tableau... pas seulement à la création.

Commentaire de Marmotte86 le 13/07/2005 23:57:47

Ca ne fonctionne toujours pas sur IE...
Il semblerait que l'appel des objets par leur nom ne fonctionne pas...
Vu que je suis un pau fatigué, je chercherai ca demain ;)

Pour le code, c'est pas mal, mais il est surement mieux de placer la partie de javascript ou tu fixe toutes les variables et les fonctions dans le <head> plutot que dans le <body>, et vu que ton tableau est affiché dans une <DIV>, ce serait peut plus simple de l'afficher par une fonction appelée par l'événement onload de la page... ca permet de grouper le plus possible de javascript hors du <body>.

PS : Si ce que je dis n'est pas utile, voir génant pour le code, il ne faut pas hésiter a me le dire, mais j'ai toujours fait comme ca.

Commentaire de coucou747 le 16/07/2005 01:34:50 administrateur CS

head contre body, ça peut faire une incompatibilitée IE... c'est ce qui me posait problème pour toutes mes sources légèrement OO...

IE à 95 % ??? c'est sèrieux ? perso, j'en étais resté à geecko 35% alors IE 95, t'as chopé ça sur un site pro microsoft... Incomatible gecko...

sinon, il y a des expregs, rien de crade, mais ça reste un petit bout de code de même pas 200 lignes et les expressions régulières ne sont pas complexes, il n'y a rien d'OO, donc niveau expert est discutable...

ça reste quand même bien mieux que la majoritée des sources exposées ici, c'est très bien codé...
je n'avais encore jamais vu de véritable gestion de formulaires en entrées et sorties en js, bien joué !

Commentaire de peter1789 le 18/07/2005 11:18:27

                Bonjour coucou747 et Marmotte86 !

Tout d'abord, merci pour votre aide précieuse : grâce à vous, mon code est PRESQUE compatible avec IE ! Cependant, il y a un problème : vu que
choix.setAttribute("onclick","verif("+ arg1 +","+ arg2 +","+ arg3 +")");
ne marche pas sous IE, j'ai essayé
choix.onclick = verif;
l'appel marche bien, mais je ne peux pas mettre d'arguments ! par exemple,
choix.onclick = "verif("+ m +","+ n +","+ num +")";
OU
choix.onclick = "verif(m,n,num)";
OU
choix.onclick = verif(m,n,num);
ne fonctionnent pas !
Avez-vous une idée...
            Merci d'avance :)

Commentaire de nezdeboeuf62 le 18/07/2005 12:11:56

essaye ça :
choix.onclick = function() {verif(m,n,num);}
(j'ai rien tester du tout...)

Commentaire de coucou747 le 18/07/2005 13:34:51 administrateur CS

tu peux mettre un onclick d'office qui renvoi vers une autre fonction, et tu fais un tableau qui lui fera appeler la bonne fonction si elle le doit (true) ou non (false)

Commentaire de peter1789 le 19/07/2005 12:56:29

              Bonjour à tous !
à coucou747 : je ne comprends pas ta solution, pourrais-tu être plus explicite ou/et l'illustrer ?
à nezdeboeuf62 : J'ai essayé ta solution mais elle ne marche pas : en effet, quelle que soit la case où on appuie, la fonction se déclenche toujours pour la même case (la dernière crée) !

Merci d'avance pour votre aide et @ bientôt !

Commentaire de coucou747 le 19/07/2005 13:02:33 administrateur CS

en fait, je pensais faire un onclick "en dur", directement dans le code html, mais vers une autree fonction que nous nomerons clicker();
tu lui mets comme paramètre les numérots de ta case, et cette fonction va lire un tableau pour savoir si elle doit appeler la bonne fonction...

comme ça, plutot que de faire un setatribute, tu fais une écriture dans le tableau...

Commentaire de peter1789 le 20/07/2005 15:00:14

Voilà j'ai corrigé mais la mise à jour du site bugue donc ce n'est pas encore visible... En tout cas merci pour votre aide et à bientôt !
         Amicalement, peter1789

Commentaire de peter1789 le 20/07/2005 15:04:03

PS : le code a été mis à jour tout de suite, ce qui veut dire que les admins ont corrigé l'erreur...
@+

Commentaire de Marmotte86 le 20/07/2005 16:11:00

Super, on peut maintenant un peu jouer sur IE :)

Encore un petit bug (mais tres vite réparé...)
aux lignes 81 et 82, on voit le choix aléatoire des cases pour objets à trouver... je ne pense pas me tromper jusque la :
        i = Math.floor(Math.random()*7.99);
        j = Math.floor(Math.random()*7.99);

Continuons... la ligne 83 permet de ne pas placer deux objets dans la meme case.
Le problème, c'est le "7.99" qui se trouve aux lignes 81 et 82 : ces valeurs sont pour la taille par défaut du tableau, mais pas si on a modifié la taille.

Je m'explique : Essaye de mettre un tableau de 5x5 cases, tu as toutes les chances pour que ton navigateur te sorte une erreur du style :
"'cases[...]' a la valeur Null ou n'est pas un objet."
C'est tout simplement parce que la case choisie pour l'objet etait dans les lignes ou colonnes 6, 7 ou 8, et que ces lignes et colonnes n'existent pas dans un tableau de 5 cases.
Il faut juste remplacer les lignes 81 et 82 par :
        i = Math.ceil(Math.random()*largeur)-1;
        j = Math.ceil(Math.random()*hauteur)-1;
et le problème est réglé ;) les cases ne vont plus aller dans des lignes ou colonnes inexistantes. Le ceil donne l'entier directement supérieur à la valeur trouvée, et le -1 permet donc d'avoir des valeurs à partir de 0... et de ne pas dépasser la taille.
PS : Ce problème surgissait aussi si on ajoutait des lignes et colonnes au tableau... dans ce cas, les objets etaient seulement dans les 8 premieres lignes ou colonnes, il etait donc inutile de chercher plus loin, et si par malheur on mettait plus de 64 objets a trouver, le code partait dans une boucle infinie !
Une fois les 64 premiers objets placés dans les 8 premieres lignes et colonnes, la limite du 7.99, toutes les cases etaient prises, et les objets suivants n'avaient plus de place (voici donc le "bug" de la ligne 83, corrigé en partie par la correction des lignes 81 et 82...)

J'espere que tout le monde me suit, ce n'est pas toujours tres clair quand je corrige en ecrivant le commentaire :(

Un dernier petit truc sur la ligne 83 : ce n'est pas un bug a proprement parler, mais ca peut durer longtemps si le navigateur a la mauvaise idée de choisir toujours les memes nombres avec sa fonction random... c'est vrai que ce ne serait pas de chance non plus. dans ce cas, le problème de la boucle infinie revient.
sans chercher beaucoup (et ce n'est certainement pas une bonne idée, mais c'est celle qui me vient a l'esprit), on pourrait faire un tableau dans lequel on classerait aléatoirement les numéros de cases du tableau de jeu. il faudrait donc un tableau contenant toutes ces coordonées : le tableau contient une liste de petits tableaux contenant chacuns 2 valeurs. on range ensuite aléatoirement ces petits tableaux de 2 valeurs  aléatoirement dans un nouveau tableau. on prend ensuite les x premieres valeurs du deuxième tableau pour placer les objets.

Pour placer aléatoirement les valeurs dans un tableau, on prend une valeur que l'on met dans la derniere case du deuxième tableau, et on la remplace dans le premier tableau par la derniere valeur de ce tableau, et on recommence en prenant les valeurs restantes (donc toutes sauf la derniere)... ca se fait facilement avec une boucle :
for(i=nbcases;i>0;i--){
     choix=math.ceil(math.random()*i);
     tableau2[i]=tableau1[choix];
     tableau1[choix]=tableau1[i];
}
on evite donc le problème de la boucle infinie, mais c'est surement inutile ici.

Commentaire de peter1789 le 29/07/2005 11:55:16

   Merci marmotte86 de m'avoir signalé cette erreur ! Je te dois la mise à jour de mon script ;)
   Bonnes vacances et à bientôt !

Commentaire de mySQL15 le 15/08/2006 15:15:29

10 sur 10 rien que pour l'idé génial !

Commentaire de astron35 le 01/03/2007 20:14:57

Super !Bravo! Génial !!!!! ;)

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,340 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales