Zurück   Flashforum > Flash > ActionScript > Spielkonzepte und Spieleprogrammierung

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 30-01-2009, 10:12   #1 (permalink)
Neuer User
 
Registriert seit: May 2004
Ort: Berlin
Beiträge: 43
Schiebe Puzzel

Moin Moin,

Wollte mal fragen ob jemand einen Tip hat.
Bin am Anfang der Programmierung eines Schiebe Puzzels.
Beispiel:
http://www.ugoplayer.com/games/foxyf...eenpuzzle.html

Ich kann mir jetzt nicht so gut vorstellen, ob man beim zufälligem neu Mischen
vor dem Spiel dies komplett zufällig macht. Oder müsste man da einem
Muster beim Mischen nachgehen. Z.B. zufällig von dem richtigem Puzzel
ein Stein nach dem nächsten verschieben.

Vielen Dank für nen Tip,
Lucien
Luccien ist offline   Mit Zitat antworten
Alt 30-01-2009, 10:17   #2 (permalink)
industry painter
 
Benutzerbild von edding950
 
Registriert seit: Aug 2006
Ort: auf'm Pott
Beiträge: 760
Lies Dir das mal an.

http://www.mathematische-basteleien.de/15erspiel.htm
__________________
mfg.
edding950 ist offline   Mit Zitat antworten
Alt 30-01-2009, 11:38   #3 (permalink)
Neuer User
 
Registriert seit: May 2004
Ort: Berlin
Beiträge: 43
Ja Danke edding950 . Sehr hilfreich und kompliziert. Ich werds dann wohl doch rückwärts mischen müssen.

Viele Grüße,
Lucien
Luccien ist offline   Mit Zitat antworten
Alt 31-01-2009, 19:16   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.326
[edit] SORRY, musste erst einen käfer entfernen und noch ein bisschen optimieren

da es 50% gerade permutationen gibt kann man auch danach suchen. die trefferhäufigkeit lässt keine all zu lange suchzeit vermuten ;-)
Code:
function fStrPermutationSignum(str) {
  return fAryPermutationSignum(str.split(''));
}
function fAryPermutationSignum(_ary) {
  var anz = _ary.length;
  var inversionen = 0;
  for (var i = 0; i<anz-1; i++) {
    var ai=_ary[i]
    for (var j = i+1; j<anz; j++) {
      if (ai>_ary[j]) inversionen++;
  } }
  return inversionen%2 ? -1 : 1;
}
//
function fPermutationRandom(n) {
  var _ary = [];
  while (n--) _ary.push(n);
  _ary.sort(function () {return random(3)-1;});
  return _ary;
}
function fPermutationRandomSignum(anzahl, signum) {
  do {
    var permutation = fPermutationRandom(anzahl);
  } while (!(fAryPermutationSignum(permutation) == signum));
  return permutation;
}
//
// anwendungsbeispiele:
trace(fStrPermutationSignum("123"));
trace('gerade permutation: '+fPermutationRandomSignum(16, 1));
trace('ungerade permutation: '+fPermutationRandomSignum(200, -1));
und habe auch gleich mein schiebe-puzzle auf vorderman gebracht ;-)
http://www.seibsprogrammladen.de/fra...piel/Kleinkram
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (01-02-2009 um 02:18 Uhr)
hgseib ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 18:25 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele