twb: Kompatibilitätscheck

Frage an die hehre Expertenrunde: Ist jemand bereit, mein neues Webspiel Reversi in seinem Browser kurz zu testen? Ich wäre froh um Feedbacks, insbesondere von Mac-Users (Safari, Camino) und Opera-Nutzern. Mit grossem Dank, twb

  1. Hi,

    Ist jemand bereit, mein neues Webspiel Reversi in seinem Browser kurz zu testen? Ich wäre froh um Feedbacks, insbesondere von Mac-Users (Safari, Camino) und Opera-Nutzern.

    Opera 9.24/Win Vista: "Funzt", auf den ersten Blick keine Bugs gefunden.
    Aber der Sausack gewinnt immer ...

    MfG ChrisB

    1. Opera 9.24/Win Vista: "Funzt", auf den ersten Blick keine Bugs gefunden.

      Danke für den Check - genau diese Browser/OS-Kombination war mir wichtig.

      Aber der Sausack gewinnt immer ...

      :-)  <-- (Schadenfreude zählt doch immer noch zum Schönsten, das das Leben zu bieten hat.)

  2. Frage an die hehre Expertenrunde: Ist jemand bereit, mein neues Webspiel Reversi in seinem Browser kurz zu testen? Ich wäre froh um Feedbacks, insbesondere von Mac-Users (Safari, Camino) und Opera-Nutzern. Mit grossem Dank, twb

    No script active, no fun!

  3. Hallo,

    mal was älteres: Op 7.2 (w98) geht auch.

    hab mal deinen js-code angesehen. Da kommt sowas vor:

      
    <img src=\"new.gif\" onclick=\"javascript:setup()\" ....>  
    
    

    das javascript-Label ist da im Eventhandler unnötig, falsch:

      
    <img src="new.gif" onclick="setup()" ....>  
    
    

    Gruß plan_B

    --
         *®*´¯`·.¸¸.·
    1. hab mal deinen js-code angesehen. Da kommt sowas vor:

      <img src="new.gif" onclick="javascript:setup()" ....>

      
      >   
      > das javascript-Label ist da im Eventhandler unnötig, falsch:  
        
      Richtig. Und korrigiert. Danke!
      
  4. Hallo twb,

    mit dem XP-Safari 3.0.3 geht es auch.

    Gruß, Jürgen

    PS Warum bewertet man eine Frage eigentlich mit "fachlich hilfreich"?

  5. Frage an die hehre Expertenrunde: Ist jemand bereit, mein neues Webspiel Reversi in seinem Browser kurz zu testen?

    Ich hab keine derartigen Exoten, aber Glückwunsch zu dem Skript, das ist eine Leistung ein halbwegs umfangreiches JS welches nur mit globalen Variabeln arbeitet, zum laufen zu kriegen.

    Darüber hinaus scheint es teilweise extrem umständlich programmiert zu sein:

    blanks=new Array();  
    for (i=0;i<64;i++) if (pos[position[i]]!=black&&pos[position[i]]!=white) blanks.push(position[i]);  
      
    shuffle(blanks.length);  
    for (i=0;i<blanks.length;i++) shufflearray[i]=blanks[randomnum[i]];  
    for (i=0;i<blanks.length;i++) blanks[i]=shufflearray[i];
    

    In der Funktion shuffle erzeugst du zwei Arrays, wobei shufflearray leer bleibt. Wenn ich das richtig verstehe, willst du nur blanks mischen?
    Das ginge wesentlich einfacher:

    Array.prototype.shuffle = function () {  
      for(var i =0; i < this.length; i++){  
        var rand = Math.floor(Math.random() * this.length);  
        var tmp = this[i];  
        this[i] = this[rand];  
        this[rand] =tmp;  
      }  
    }  
    
    

    und aus dem obigen Code würde einfach nur: blanks.shuffle();

    Struppi.

    1. Hallo Struppi,

      Array.prototype.shuffle = function () {

      for(var i =0; i < this.length; i++){
          var rand = Math.floor(Math.random() * this.length);
          var tmp = this[i];
          this[i] = this[rand];
          this[rand] =tmp;
        }
      }

        
      liefert leider keine Gleichverteilung. Siehe z.B. <https://forum.selfhtml.org/?t=163655&m=1067524> (du warst doch auch dabei).  
        
      Gruß, Jürgen
      
      1. liefert leider keine Gleichverteilung. Siehe z.B. https://forum.selfhtml.org/?t=163655&m=1067524 (du warst doch auch dabei).

        Mal abgesehen davon, dass ich das die Diksussion eher akademisch fand, konnte ich das ganze nicht nachvollziehen.

        Schon das hier: https://forum.selfhtml.org/?t=163655&m=1067438
        ist Murks. Da der Algorithmus falsch ist.

        Bei mir liefert
        var rand = Math.floor(Math.random() * {ArrayLength});
        eine gleichverteilte Anzahl der Zufallszahlen.

        Struppi.

        1. Hallo Struppi,

          Bei mir liefert
          var rand = Math.floor(Math.random() * {ArrayLength});
          eine gleichverteilte Anzahl der Zufallszahlen.

          stimmt, aber es ging ums Mischen. Schau dir mal http://forum.de.selfhtml.org/archiv/2006/12/t142119/#m923583 ff an. Hier wurde mir gezeigt, wie man mischt und warum der von dir und auch von vielen anderen so oft vorgeschlagene Algorithmus keine Gleichverteilung erzeugt. Der Vorschlag in https://forum.selfhtml.org/?t=163655&m=1067566 war ernst gemeint.

          Gruß, Jürgen

          1. stimmt, aber es ging ums Mischen. Schau dir mal http://forum.de.selfhtml.org/archiv/2006/12/t142119/#m923583 ff an. Hier wurde mir gezeigt, wie man mischt und warum der von dir und auch von vielen anderen so oft vorgeschlagene Algorithmus keine Gleichverteilung erzeugt. Der Vorschlag in https://forum.selfhtml.org/?t=163655&m=1067566 war ernst gemeint.

            OK, ich hab's damals nicht gelesen und als Nichmathematiker kommt einem das erst mal als Korinthenkackerei vor, aber das war wohl ein Irrtum.

            Also so solte die Funktion aussehen:

            Array.prototype.shuffle = function() {  
             var i = this.length;  
             do{  
              var zi = Math.floor(Math.random() * i);  
              var t = this[zi];  
              this[zi] = this[--i];  
              this[i] = t;  
             }while(i)  
            }  
            
            

            Ich werd das dann auf meiner Seite so einbauen.

            Struppi.

            1. Also so solte die Funktion aussehen:

              Array.prototype.shuffle = function() {

              var i = this.length;
              do{
                var zi = Math.floor(Math.random() * i);
                var t = this[zi];
                this[zi] = this[--i];
                this[i] = t;
              }while(i)
              }

                
              Exakt und elegant. Damit lässt sich also ein Array allein mittels  
                
              `Array.shuffle();`{:.language-javascript}  
                
              zufällig mischen. Wieder einen Haufen gelernt. Dank! twb
              
            2. »»» Ich werd das dann auf meiner Seite so einbauen.

              Hab' ich mittlerweile erfolgreich getan. Allerdings: Der Aufruf bei Arrays von variabler Länge muss sicherheitshalber mittels

              if (Array.length>1) Array.shuffle();

              erfolgen. Erstens geht das Skript sonst in eine Endlosschleife, und zweitens macht das Mischen eines Arrays mit einem einzigen Element in der Regel nicht sonderlich viel Sinn. :-)
              Herzlich, twb

              1. Hab' ich mittlerweile erfolgreich getan. Allerdings: Der Aufruf bei Arrays von variabler Länge muss sicherheitshalber mittels

                if (Array.length>1) Array.shuffle();

                erfolgen. Erstens geht das Skript sonst in eine Endlosschleife, und zweitens macht das Mischen eines Arrays mit einem einzigen Element in der Regel nicht sonderlich viel Sinn. :-)

                Ist mir bei meinen Tests auch schon aufgefallen, ich hatte das dann aber verdrängt ;-)

                Eine einfachere und allgemeinere Lösung ist es die Funktion entsprechens anzupassen:

                Array.prototype.shuffle = function() {  
                 var i = this.length;  
                 if(i < 2) return false;  
                 do{  
                  var zi = Math.floor(Math.random() * i);  
                  var t = this[zi];  
                  this[zi] = this[--i];  
                  this[i] = t;  
                 }while(i)  
                 return true;  
                }
                

                Struppi.

                1. Eine einfachere und allgemeinere Lösung ist es die Funktion entsprechens anzupassen:

                  Array.prototype.shuffle = function() {

                  var i = this.length;
                  if(i < 2) return false;
                  do{
                    var zi = Math.floor(Math.random() * i);
                    var t = this[zi];
                    this[zi] = this[--i];
                    this[i] = t;
                  }while(i)
                  return true;
                  }

                    
                  Selbstredend eleganter. Stattgegeben. :-) twb
                  
    2. Darüber hinaus scheint es teilweise extrem umständlich programmiert zu sein:

      Da magst Du recht haben: Das ist ein typisches Autodidaktenproblem - Programmieren hab' ich allein durch trial & error und Nachschlagen in SelfHTML gelernt. Ich bin bekannt (und gefürchtet) dafür, um die Ecke zu denken. Stattgegeben.

      PS: Prototyping werd' ich selbstredend ausprobieren. Merciviumau, wie wir Berner sagen!

      1. PS: Prototyping werd' ich selbstredend ausprobieren. Merciviumau, wie wir Berner sagen!

        Ich würd mir vor allem auch um globale Variabeln Gedanken machewn sowas erschwert das entwickeln ungemein.

        Struppi.

  6. Hi,

    Frage an die hehre Expertenrunde: Ist jemand bereit, mein neues Webspiel Reversi in seinem Browser kurz zu testen? Ich wäre froh um Feedbacks,

    Funktioniert im Prinzip. Teilweise ist die Reaktion auf den eigenen Zug sehr träge (man klickt, es passiert ne Weile nichts, dann erst wird der Stein gesetzt).

    Außerdem:
    Beim Stand von 56 : 6 für mich befand das Script, daß es nicht mehr ziehen kann und nun ich an der Reihe sei.
    Aber ich konnte auch keinen gültigen Zug mehr machen:

    XXXXOXXX
    XXXXXXXO
    XXXXXXXO
    XXXXXXXO
    XXXXXXXX
    XXXXOOXX
    X XXXXXX
     XXXXXXX

    Wenn ich auf "Pass" klicke, kommt wieder "Can't make a move. Your turn." Aber ich kann ja auch nicht ...

    Es fehlt also die Erkennung der Situation, daß keiner der Spieler mehr legal ziehen kann.

    Hab ich jetzt gewonnen?

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Yerf!

      Wenn ich auf "Pass" klicke, kommt wieder "Can't make a move. Your turn." Aber ich kann ja auch nicht ...

      Gleiche Situation bei einem 62:1

      Es fehlt also die Erkennung der Situation, daß keiner der Spieler mehr legal ziehen kann.

      Jo, ganz eindeutig fehlt die...

      Hab ich jetzt gewonnen?

      Im Prinzip ja... aber das Script weigert sich das anzuerkennen ;-)

      Gruß,

      Harlequin

      --
      <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
    2. Funktioniert im Prinzip. Teilweise ist die Reaktion auf den eigenen Zug sehr träge (man klickt, es passiert ne Weile nichts, dann erst wird der Stein gesetzt).

      Hi Andreas - die träge Reaktion ist gewollt und mittels settimeout so eingestellt, damit der Spieler Zeit hat, sich auf den gegnerischen Zug einzustellen. Lässt sich ohne weiteres verkürzen, und vielleicht sind die eingestellten zwei Sekunden tatsächlich zu lang.

      Außerdem:
      Beim Stand von 56 : 6 für mich befand das Script, daß es nicht mehr ziehen kann und nun ich an der Reihe sei.
      Aber ich konnte auch keinen gültigen Zug mehr machen:

      Ebenfalls stattgegeben und richtig - den Fehler hatte ich auch erst gestern entdeckt. Wird nun abgefangen - nach dem ersten für den Computer unmöglichen Zug und keiner regulären Möglichkeit des Spielers ist ab sofort das Spiel zu Ende. Danke für Eure Rückmeldungen!
      Herzlich, twb

      PS: Ohne dieses Forum hier gäb's vermutlich nicht ein einziges meiner Spiele.

      1. Hi,

        Hi Andreas - die träge Reaktion ist gewollt und mittels settimeout so eingestellt, damit der Spieler Zeit hat, sich auf den gegnerischen Zug einzustellen. Lässt sich ohne weiteres verkürzen, und vielleicht sind die eingestellten zwei Sekunden tatsächlich zu lang.

        Dann sollte die Verzögerung aber nicht stattfinden, bevor der Stein des Spielers gesetzt wird, sondern bevor das Script anfängt zu denken.

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      2. Hi,

        Ebenfalls stattgegeben und richtig - den Fehler hatte ich auch erst gestern entdeckt. Wird nun abgefangen - nach dem ersten für den Computer unmöglichen Zug und keiner regulären Möglichkeit des Spielers ist ab sofort das Spiel zu Ende. Danke für Eure Rückmeldungen!

        Kann ich bestätigen, einmal 33:0, zweimal 47:0 und einmal 57:0 wurden als von mir gewonnene Spiele erkannt.

        Auch wenn die Spielstärke noch nicht allzu hoch ist: Anerkennung - ich hatte auch mal ein Reversi versucht (zwar nicht in Javascript, aber das ist ja für den Algorithmus egal), hab's aber nie fertiggestellt, weil ich an der Strategie des automatischen Spielers gescheitert bin).

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. Auch wenn die Spielstärke noch nicht allzu hoch ist: Anerkennung - ich hatte auch mal ein Reversi versucht (zwar nicht in Javascript, aber das ist ja für den Algorithmus egal), hab's aber nie fertiggestellt, weil ich an der Strategie des automatischen Spielers gescheitert bin).

          Hi Andreas - Danke für Deine nette Rückmeldung: Ich bin froh darüber (aus aktuellem Anlass hab' ich zur Zeit eine leichte Reversi-Überdosis...). Dein Kompliment ist allerdings stark zu relativieren (Spielstärke nicht allzu hoch - das ist noch stark übertrieben, ich weiss es wohl) - an der Taktik des Computergegners hab' ich noch einiges zu arbeiten. Aber dass ich gestern zwei gravierende Fehler losgeworden bin, ist einzig diesem Forum und Dir zu verdanken.

  7. Hi

    Funktioniert in Firefox 2.0.0.11 (Mac), Opera 9.24 (Mac), Safari 3.0.4 (Mac), iCab 3.0.3

    Camino werd lad ich im Moment runter, werde das Resultat nachliefern. Aber wenn es im Firefox läuft, wird es auch im Camino gehen.

    Gruss,
    nam

    1. Unter Camino 1.5.4 funktioniert es auch.

      PS: bin ich so gut oder das Script so schlecht? Habe bis jetzt alle Spiele gewonnen und bin sonst nicht so der Hirsch in solchen Spielen…

      Gruss,
      nam

      1. PS: bin ich so gut oder das Script so schlecht? Habe bis jetzt alle Spiele gewonnen und bin sonst nicht so der Hirsch in solchen Spielen…

        Ohne Dir zu nahe treten zu wollen: Aber das wird wohl eher dran liegen, dass das Skript so schlecht ist. Noch. Ist ja erst v1.0, und ich hab' noch einiges zu tun. :-)
        Herzlich, twb

    2. Funktioniert in Firefox 2.0.0.11 (Mac), Opera 9.24 (Mac), Safari 3.0.4 (Mac), iCab 3.0.3

      Camino werd lad ich im Moment runter, werde das Resultat nachliefern.

      Stark. Das war die Luxusversion des Mac-Kompatibilitätstests. Riesendank!