TUTORIAL
TicTacToe | |
bildschirmleer() | |
Die | quadrat = (größe) ->
stiftrunter()
wiederhole 4, ->
vor größe
rechts 90
stifthoch() |
Mit der | gehezu = (i,j) ->
vor -130*(j-2)
rechts 90
vor 130*(i-2)
links 90 |
Zeichne einen Kreis im Feld in Zeile | kreis = (i, j) ->
gehezu i, j
vor 45
links 90
zurück 12
stiftrunter()
wiederhole 12, ->
vor 25
links 30
stifthoch()
nachhause() |
Zeichne eine Kreuz im Feld in Zeile | kreuz = (i,j) ->
gehezu i, j
stiftrunter()
links 45
vor 50
zurück 100
vor 50
rechts 90
vor 50
zurück 100
stifthoch()
nachhause() |
Nun zeichne den Spielplan | stifthoch()
vor 195
links 90
vor 195
links 180
für i in [1..3]
für j in [1..3]
quadrat 130
vor 130
zurück 390
rechts 90
vor 130
links 90
nachhause() |
In der folgenden "Tabelle", einer Liste aus drei Listen, speichern
wir den aktuellen Zustand des Spielfelds. Dabei bedeutet | spielfeld = [['.', '.', '.'], ['.', '.', '.'], ['.','.','.']] |
Hier wird definiert, was passiert, wenn der Spieler ( | spiele = (i, j, symbol) ->
wenn spielfeld[i-1][j-1] == '.'
wenn symbol ist 'X'
kreuz i, j
sonst
kreis i, j
spielfeld[i-1][j-1] = symbol
wenn teste_gewonnen symbol
nachricht "#{symbol} hat gewonnen!"
gibzurück
wenn spielfeld_voll()
nachricht "Unentschieden!" |
Die folgende Funktion definiert, wie der Igel seinen Zug macht. In diesem Programm ist das sehr simpel: Der Igel wählt so lange zufällig eine Zeile und Spalte aus, bis er ein freies Feld gefunden hat, und macht dann dort seinen Kreis. | igelzug = ->
wenn (teste_gewonnen('X') oder spielfeld_voll()) dann gibzurück
während an
i = würfel [1..3]
j = würfel [1..3]
wenn spielfeld[i-1][j-1] == '.'
spiele i, j, 'O'
gibzurück |
Mit dieser Funktion überprüfen wir, ob der Spieler mit | teste_gewonnen = (symbol) ->
für seq in [[[0,0], [1,0], [2,0]],
[[0,1], [1,1], [2,1]],
[[0,2], [1,2], [2,2]],
[[0,0], [0,1], [0,2]],
[[1,0], [1,1], [1,2]],
[[2,0], [2,1], [2,2]],
[[0,0], [1,1], [2,2]],
[[2,0], [1,1], [0,2]]
]
wenn spielfeld[seq[0][0]][seq[0][1]] == spielfeld[seq[1][0]][seq[1][1]] == spielfeld[seq[2][0]][seq[2][1]] == symbol
gibzurück wahr
gibzurück falsch |
Nun noch eine Funktion, um zu überprüfen, ob alle Felder belegt sind (hat niemand gewonnen, dann ist das Spiel also unentschieden beendet) | spielfeld_voll = ->
für i in [0..2]
für j in [0..2]
wenn spielfeld[i][j] == '.' dann gibzurück falsch
gibzurück wahr |
Nun "binden" wir noch die Tasten 1 bis 9: Beim Drücken der
jeweiligen Taste wird die | taste '1', ->
spiele 1, 1, 'X'
igelzug()
taste '2', ->
spiele 2, 1, 'X'
igelzug()
taste '3', ->
spiele 3, 1, 'X'
igelzug()
taste '4', ->
spiele 1, 2, 'X'
igelzug()
taste '5', ->
spiele 2, 2, 'X'
igelzug()
taste '6', ->
spiele 3, 2, 'X'
igelzug()
taste '7', ->
spiele 1, 3, 'X'
igelzug()
taste '8', ->
spiele 2, 3, 'X'
igelzug()
taste '9', ->
spiele 3, 3, 'X'
igelzug()
|