Gambas: Spiele: TicTacToe2 Form1.class
Erscheinungsbild
tb[9] AS TextBox PUBLIC iAnz AS Integer 'Zahl der Züge PUBLIC sSpieler AS String 'Wer ist am Zug O oder X PUBLIC SUB Form_Open() DIM n AS Integer 'Die neun TextBoxen erzeugen FOR n = 0 TO 8 tb[n] = NEW TextBox(ME) AS "tb" tb[n].Tag = n tb[n].Alignment = Align.Center tb[n].Move( 20 + 40 * (n MOD 3), 20 + 40 * ((n - n MOD 3)/3), 40, 40 ) NEXT Button1.Move( 250, 20, 200, 32 ) Button1.Text = "Neues Spiel" Button2.Move( 250, 80, 200, 32 ) Button2.Text = "Spielregeln" Button3.Move( 250, 140, 200, 32 ) Button3.Text = "Fragen zum Spiel" Button4.Move( 250, 220, 200, 32 ) Button4.Text = "Schließen" TextBox1.Move( 20, 160, 200, 32 ) TextBox2.Move( 20, 220, 200, 32 ) ME.Text = "Tic Tac Toe V 2.0" ME.Border = Window.Resizable ME.Width = 470 ME.Height = 280 ME.Border = Window.Fixed ME.Center Button1_Click END PUBLIC SUB tb_DblClick() DIM a AS Integer[] DIM n AS Integer n = LAST.Tag 'Spiel bereits gewonnen IF sSpieler = "G" THEN RETURN 'Feld schon belegt IF tb[n].Text <> "" THEN TextBox1.Text = "Schon belegt!" RETURN END IF tb[n].Text = sSpieler 'Jemand gewonnen? FOR EACH a IN [ [0,1,2], [3,4,5], [6,7,8], [0,3,6], [1,4,7], [2,5,8], [0,4,8], [2,4,6] ] IF ( tb[a[0]].Text = sSpieler AND tb[a[1]].Text = sSpieler AND tb[a[2]].Text = sSpieler ) THEN TextBox1.Text = sSpieler & " hat gewonnen" tb[a[0]].Background = &H00FF00& tb[a[1]].Background = &H00FF00& tb[a[2]].Background = &H00FF00& sSpieler = "G" END IF NEXT 'Spieler wechseln IF sSpieler = "X" THEN sSpieler = "O" TextBox1.Text = "Am Zug ist O" ELSE IF sSpieler = "O" THEN sSpieler = "X" TextBox1.Text = "Am Zug ist X" END IF INC iAnz TextBox2.Text = "Zug " & Str(iAnz) END PUBLIC SUB Button1_Click() 'neues Spiel, alle Textfelder werden gelöscht, Zahl der Spielzüge auf Null gesetzt DIM n AS Integer FOR n = 0 TO 8 tb[n].Text = "" tb[n].Background = &HFFFFFF& NEXT iAnz = 0 sSpieler = "X" TextBox1.Text = "Am Zug ist X" TextBox2.Text = "Zug 0" tb[4].SetFocus END PUBLIC SUB Button2_Click() DIM msg AS String msg = "Sprint: Spielregeln\n" msg = msg & "Mit der Maus (Doppelklick!) markiert der erste Spieler ein freies Feld.\n" msg = msg & "Das Feld wird mit X gekennzeichnet.\n" msg = msg & "Danach ist der Spielpartner dran.\n" msg = msg & "Er bekommt O zugeordnet und klickt ein freies Feld an.\n" msg = msg & "Gesetzt wird abwechselnd.\n" msg = msg & "Sieger ist, wer drei gleiche Zeichen in einer Reihe setzen kann." Message(msg) END PUBLIC SUB Button3_Click() DIM msg AS String msg = "Fragen zum Spiel\n" msg = msg & "Gibt es ein Spiel mit weniger als 5 Zügen?\n" msg = msg & "Gibt es ein Spiel mit mehr als 9 Zügen?\n" msg = msg & "Gibt es für den Spieler, der beginnen darf,\n" msg = msg & "eine optimale Gewinnstrategie?\n" msg = msg & "Wo wurde dieses Spiel das erste Mal gespielt?\n" msg = msg & "Wo wurde dieses Spiel das erste Mal beschrieben?\n" Message(msg) END PUBLIC SUB Button4_Click() ME.Close END