lehrkraefte:blc:informatik:ffprg1-2018:ffprg1-2018

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
lehrkraefte:blc:informatik:ffprg1-2018:ffprg1-2018 [2018/06/19 16:45]
Ivo Blöchliger
lehrkraefte:blc:informatik:ffprg1-2018:ffprg1-2018 [2018/06/26 17:51] (current)
Ivo Blöchliger
Line 44: Line 44:
  
 # leeres Feld # leeres Feld
-feld = [[0,0,0],[0,0,0],[0,0,0]]+dim = 10 # Anzahl Felder 
 +winlen = 5 # Anzahl fuer Gewinn 
 +feld = [[0 for y in range(dim)] for x in range(dim)] 
 + 
 +player = 1 
 +filled = 0 
 +winner = 0 
 + 
 +# Startpunkt x,
 +# Vektor vx,vy 
 +def testLine(x,y,vx,vy,feld): 
 +    global winlen,dim 
 +    what = feld[x][y] 
 +    count = 1 if what>else 0 
 +    while True: 
 +        x+=vx 
 +        y+=vy 
 +        if x<0 or y<0 or x>=dim or y>=dim: 
 +            break 
 +        if feld[x][y]==what: 
 +            count+=1 
 +        else:    
 +            what = feld[x][y] 
 +            count=1 if what>0 else 0 
 +        if feld[x][y]==0: 
 +            count = 0 
 +        if count==winlen: 
 +            return what     
 +    return 0 
 +         
 +def win(feld): 
 +    for x in range(dim): 
 +        combos = [[x,0,0,1],
 +                    [0,x,1,0],
 +                    [0,x,1,1],
 +                    [x,0,1,1],\ 
 +                    [x,dim-1,1,-1],
 +                    [0,x,1,-1]] 
 +        for combo in combos:                     
 +            winner = testLine(combo[0], combo[1],  
 +                          combo[2], combo[3],feld) 
 +            if winner>0: 
 +                return winner 
 +    return 0         
  
 def ausgabe(feld): def ausgabe(feld):
     clear()  # Fenster loeschen     clear()  # Fenster loeschen
-    pass  Hier Feld zeichnen +    dim = len(feld) 
 +    for i in range(1,dim): Raster 
 +        line(0,i,dim,i) 
 +        line(i,0,i,dim) 
 +    for x in range(dim): 
 +        for y in range(dim): 
 +            if (feld[x][y]==1): 
 +                line(x+0.1, y+0.1, x+0.9,y+0.9) 
 +                line(x+0.1, y+0.9, x+0.9,y+0.1)                 
 +            elif (feld[x][y]==2): 
 +                move(x+0.5, y+0.5) 
 +                circle(0.4) 
 +    
 def onMousePressed(x, y): def onMousePressed(x, y):
     global feld     global feld
-    print(x,y+    global player 
-    move(x, y) +    global filled 
-    fillCircle(0.3+    global winner 
- +    global dim 
- +    x = int(x) 
-makeGPanel(0,3,0,3,mousePressed onMousePressed+    y = int(y) 
 +    if winner>or filled == dim*dim: 
 +        feld = [[0 for y in range(dim)] for x in range(dim)] 
 +        player = 1 
 +        filled = 0 
 +        winner = 0 
 +    elif feld[x][y]==0
 +        filled+=1 
 +        feld[x][y] = player 
 +        player = 3-player 
 +    ausgabe(feld) 
 +    winner win(feld
 +    if (winner>0): 
 +        print("Spieler %d hat gewonnen!" % winner) 
 +    elif (filled == dim*dim): 
 +        print("Unentschieden...")
  
 +makeGPanel(0,dim-0.001, 0,dim-0.001,mousePressed = onMousePressed)
 +lineWidth(5)
 +ausgabe(feld)
  
 </code> </code>
-<code python> 
-def ausgabe(feld): 
-   pass # Hier fehlt einiges an Code 
-    
-feld = [[1,0,2],[1,2,0],[0,0,1]] 
-ausgabe(feld)   
-</code> 
-  * Gewünschte Text-Ausgabe: 
- 
-  +---+---+---+ 
-  | x |   | o | 
-  +---+---+---+ 
-  | x | o |   | 
-  +---+---+---+ 
-  |     | x | 
-  +---+---+---+ 
- 
-Hinweis: "a"*5 ergibt "aaaaa". 
- 
   * Gegeben ein 3x3-Array wie oben. Stellen Sie fest, ob schon jemand gewonnen hat.   * Gegeben ein 3x3-Array wie oben. Stellen Sie fest, ob schon jemand gewonnen hat.
   * Programmieren Sie ein Spiel für 2 menschliche Spieler, die abwechslungsweise die Koordinaten eingeben. Die Eingabe soll überprüft werden.    * Programmieren Sie ein Spiel für 2 menschliche Spieler, die abwechslungsweise die Koordinaten eingeben. Die Eingabe soll überprüft werden. 
  • lehrkraefte/blc/informatik/ffprg1-2018/ffprg1-2018.1529419543.txt.gz
  • Last modified: 2018/06/19 16:45
  • by Ivo Blöchliger