lehrkraefte:blc:informatik:ffprg1-2024:raster-tictactoe

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
lehrkraefte:blc:informatik:ffprg1-2024:raster-tictactoe [2024/04/09 17:36]
Ivo Blöchliger [Gewinn überprüfen]
lehrkraefte:blc:informatik:ffprg1-2024:raster-tictactoe [2024/04/09 17:54]
Ivo Blöchliger [Gewinn überprüfen]
Line 66: Line 66:
  
 Hinweise: Hinweise:
-  * Schreiben Sie zusätzlich eine Funktion ''zaehle(x,y,vx,vy)'', die zähltwie viele gleiche Werte >=1 vom Startpunkt x,y, in Richtung des Vektors (vx,vy) anzutreffen sind. +  * Schreiben Sie zusätzlich eine Funktion ''sindsDrei(x,y,vx,vy)'', die ''true'' ergibtwenn drei gleiche Werte >=1 vom Startpunkt x,y, in Richtung des Vektors (vx,vy) anzutreffen sind. Sonst ''false''
-  * Rufen Sie die Funktion ''zaehle'' in der Funktion ''winner'' in einer for-schlaufe auf.+  * Rufen Sie die Funktion ''sindsDrei'' in der Funktion ''winner'' unter anderem in einer for-schlaufe auf. 
 + 
 +<hidden Teillösungsvorschlag> 
 +<code javascript> 
 +    function sindsDrei(x,y,vx,vy) { 
 +        let w = meinRaster.getValue(x,y); 
 +        if (w==0) return false; 
 +        for (let i=0; i<3; i++) { 
 +            if (meinRaster.getValue(x,y)!=w) return false; 
 +            x+=vx; 
 +            y+=vy; 
 +        } 
 +        return true; 
 +    } 
 + 
 +    function winner() { 
 +        for (let i=0; i<3; i++) { 
 +            if (sindsDrei(i,0,0,1)) return meinRaster.getValue(i,0);  // Vertikal 
 +            if (sindsDrei(0,i,1,0)) return meinRaster.getValue(0,i);  // Horizontal 
 +        } 
 +        if (sindsDrei(0,0,1,1)) return meinRaster.getValue(0,0);  // Diagonale in Richtung (1,1) 
 +        if (sindsDrei(2,0,-1,1)) return meinRaster.getValue(2,0);  // Diagonale in Richtung (-1,1) 
 +        return 0; 
 +    } 
 + 
 +</code> 
 +</hidden>
 </WRAP> </WRAP>
 +
 +===== Zellen markieren =====
 +<WRAP todo>
 +Ziel ist es, die gewinnende Dreierreihe zu markieren.
 +  * Fügen Sie dazu in der Datei ''raster.css'' zwei weitere Klassen ''wert3'' und ''wert4'' hinzu, um das Aussehen der gewinnenden Zellen für Spieler 1 und 2 festzulegen.
 +  * In der Funktion ''sindsDrei'', fügen Sie unmittelbar vor dem ''return true'' noch eine Schlaufe hinzu, die den Wert der gewinndenden Zellen um 2 erhöht.
 +
 +<hidden Lösungsvorschlag>
 +<code css>
 +.wert3 {
 +    background-image: url("cross.svg");
 +    background-color: lightcoral;
 +    background-size: cover;
 +}
 +.wert4 {
 +    background-image: url("dot.svg");
 +    background-color: skyblue;
 +    background-size: cover;
 +}
 +</code>
 +<code javascript>
 +        for (let i=0; i<3; i++) {
 +            x-=vx;
 +            y-=vy;
 +            meinRaster.setValue(x,y,w+2);
 +        }
 +</code>
 +</hidden>
 +</WRAP>
 +
  • lehrkraefte/blc/informatik/ffprg1-2024/raster-tictactoe.txt
  • Last modified: 2024/05/17 13:10
  • by Ivo Blöchliger