• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Zufallsgenerator für mehrfache Bilder

CGMAX

Neues Mitglied
Wenn man einen Bildgenerator erstellen möchte, der verschiedene Bilder zufällig auswählen und anzeigen soll, ohne dass diese sich wiederholen ist dieses script ein guter Anfang.:D
<script type="text/javascript">
<!--
function rand(range)
{
return Math.ceil(Math.random() * 1000) % range ; //Zahlen von 0 bis z in ganzzahligen werten
}
startbilder = new Array("img1.png","img2.png","img3.png","img4.png","img5.png"); //Bilder müssen existieren
var z = startbilder.length; //gibt Elementenmenge an, die in Array gespeichert sind
var zz1= rand(z); //gibt zufallszahl aus der Menge der Elemente an sihe oben
gez_bild = startbilder[zz1] //deffiniert element aus Array durch zufallszahl

do
{
var zz2= rand(z); //gibt zufallszahl aus der Menge der Elemente an sihe oben
gez_bild2 = startbilder[zz2] //deffiniert element aus Array durch zufallszahl
do
{
var zz3= rand(z); //gibt zufallszahl aus der Menge der Elemente an sihe oben
gez_bild3 = startbilder[zz3] //deffiniert element aus Array durch zufallszahl
do
{
var zz4= rand(z); //gibt zufallszahl aus der Menge der Elemente an sihe oben
gez_bild4 = startbilder[zz4] //deffiniert element aus Array durch zufallszahl
do
{
var zz5= rand(z); //gibt zufallszahl aus der Menge der Elemente an sihe oben
gez_bild5 = startbilder[zz5] //deffiniert element aus Array durch zufallszahl

}
while(zz1==zz5|zz2==zz5|zz3==zz5|zz4==zz5)
}
while(zz1==zz4|zz2==zz4|zz3==zz4)
}
while(zz1==zz3|zz2==zz3)

}
while(zz1==zz2)
document.write("<img src='img/"+gez_bild+"'>"); //gibt bild aus
document.write("<img src='img/"+gez_bild2+"'>"); //gibt bild aus
document.write("<img src='img/"+gez_bild3+"'>"); //gibt bild aus
document.write("<img src='img/"+gez_bild4+"'>"); //gibt bild aus
document.write("<img src='img/"+gez_bild5+"'>"); //gibt bild aus
//-->
</script>


Leider lässt sich dieses nicht ohne extra viel Tipparbeit erweitern.Dafür müsste man ein neues Element ins Array schreiben(das war der un aufwendige Teil). Danach muss man eine neue do-schleife einfügen (in die letze Anweisung), diese muss die gleiche Anweisung wie die anderen haben. (natürlich mit anderen werten zz5 etc.). Zudem muss man in der Bedingung die Werte nach den Gleichzeichen verändern(hier zz5 in zz6). Ganz zum Schluss noch die letze Bedingung hinzufügen (hier zz5==zz6) natürlich mit einem logischen oder verknüpfen. Sollte einer von euch eine bessere und benutzerfreundliche Variante kennen schreibt es in die Kommentare. Würde mich freuen.MfG Max Dio
 
Werbung:
ich weiß jetzt nicht genau wie dein Code funktioniert, aber das kannst du auch mit Rekursiven Funktionen lösen. Oder einfach die Elemente vertauschen:


length = startbilder.length;

for(var i = 0; i < 10; i++) {
var from = rand(length),
to = rand(length),
el = startbilder[to];
startbilder[to] = startbilder[from];
startbilder[from] = el;
}

...
 
Damit kann man aber nicht sagen, dass zwei oder mehr Bilder gleichzeitig auftauchen. Oder?
 
Werbung:
Hallo,
mir erschließt sich aus deinem Code nicht ganz, was Du eigentlich vorhast. Möchtest Du einfach nur die Bilder in zufälliger Reihenfolge anzeigen? Dann wäre es ausreichend, das Array vor der Anzeige zu mischen. Funktionen, die das tun, findet Google, z. B. hier:
brain4 : JavaScript : Elemente eines Array mischen
Dann brauchst Du nur noch die Bilder aus dem gemischten Array anzuzeigen. Und wenn Du ein neues Bild hinzu fügst, brauchst Du es nur im Array anzufügen.
Viele Grüße - Ulrich
Edit: Wenn ich mir omoxens Beitrag genau durchlese, macht sein Code auch nichts anderes, als das Array zu mischen.
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben