Hi Leute,
ich veröffentliche hier mein erstes Control, was einfaches, nämlich das Spiel TicTacToe.
Seid bitte nicht zu streng, jeder fängt mal klein an!
Member
Wenn Flash = True ist (standart), dann blinken die drei GewinnerBausteine auf
Es ist komplett mit GDI gezeichnet, Man kann während des Spiels alle Propertys verändern, es wird sofort übernommen.
Auch die Größe kann man problemlos verändern und es wird weitergespielt
Download:
nibel.bplaced.net/codes/TicTacToe.dll
Größe ca. 27 KB
Update: StopGame() und ReturnGame() wurden durch Property erestzt und entsprechendes Event erstellt
Bitte um Feedback und möglich Bugs, Probleme
Update:
So nächstes Update... Ihr habt jetzt die Funktion AddObject(ObjectID As Integer, FieldNumber As Integer) Object ist entweder TicTacToe1.Cross oder TicTacToe1.Circle oder halt TicTacToe1.ActivePlayer... FieldNumber ist die FeldNummer, 1 ist links oben, oben mitte 2 , oben rechts 3 und so weiter. Der User muss aktiv sein, schummeln nicht möglich! Bei Erfolg ist es true, sonst false
Update:
So nach längerer Zeit hab ich mich mal drangesetzt und eine KI geschrieben. Sie geht von Easy bis Unbeatable. Dafür gibt es 2 neue Property, Against_KI ob man gegen den Computer spielt und KI_Difficulty, der Schwierigkeitgrad von 1-4. Außerdem hab ich diese KI in der Klasse TTTKI öffentlich gemacht, damit sie auch so benutzt werden kann. Die Funktion erwartet das Array iField() As Integer. Es muss so implementiert sein, sonst gibt es Fehler:
Dim iField(10) As Integer
iField(1) = 1 ' Feld Nr.1, (links oben) ist vom Spieler 1 belegt
iField(9) = 2 ' Feld Nr.9, (rechts unten) ist vom Spieler 2 bzw. Computer belegt
iField(5) = 0 ' Feld Nr.5, (mitte) ist leer
Das mit den verschiedenen Styles hab ich verworfen, das wär zu aufwendig geworden und zuviel Mühe für nix
mfG Nibel
ich veröffentliche hier mein erstes Control, was einfaches, nämlich das Spiel TicTacToe.
Seid bitte nicht zu streng, jeder fängt mal klein an!
Diese Events, Propertys und Funktionen gibt es
VB.NET-Quellcode
- Public Const Cross As Integer ' Braucht man für AddObject
- Public Const Circle As Integer ' Braucht man für AddObject
- Public ReadOnly Property ActivePlayer() As Integer ' Der momentane Spieler
- Public Property LineColor() As Color ' Die Farbe der Trennlinien
- Public Property CrossColor() As Color ' Die Farbe der Kreuze
- Public Property CircleColor() As Color ' Die Farbe der Kreise
- Public Property BgColor() As Brush ' Hintergrundfarbe
- Public Property Flash() As Boolean ' Ob er die Gewinnerobjekte aufblinken lassen soll
- Public Property FlashColor() As Color ' und in welcher Farbe
- Public Property StopGame() As Boolean ' Ob das Spiel gestoppt sein soll ( für Benutzereingaben )
- Public Property Against_KI() As Boolean ' Ob gegen eine KI gespielt wird
- Public Property KI_Difficilty() As Integer ' Welcher Schwierigkeitsgrad von 1-4
- Public Function NewGame() As Boolean ' Startet ein neues Spiel
- Public Function AddObject(ByVal ObjectID As Integer, ByVal FieldNumber As Integer) As Boolean ' Added ein Objekt unten erklärt
- Public Event GotWinner(ByVal player As Integer) ' Gewinner
- Public Event FieldFull() ' Unentschieden, das Feld ist voll
- Public Event CrossAdded(ByVal Field As Integer) 'Kreuz hinzugefügt Field = Welches Feld
- Public Event CircleAdded(ByVal Field As Integer) ' Kreis hinzugefügt Field = Welches Feld
- Public Event NextPlayer(ByVal player As Integer) ' Spielerwechsel (player = Der der neu dran ist)
- Public Event GameplayChanged(ByVal Stopped As Boolean) ' Das Spiel wurde entweder gestoppt oder wieder aufgenommen ( Stopped = neuer Wert)
- 'Außerdem gibt es die Klasse TTTKI, ich habe das mal alles als Shared gemacht, damit ihr es verwenden könnt wenn ihr wollt
- ' iField ist ein Array mit 10 Membern. - Diese Member sind entweder 0, 1 oder 2. - 0 heißt Feld unbesetzt, 1 heißt vom Spieler belegt - und 2 heißt vom Computer belegt
- ' Das muss eingehalten werden sonst klappt es nicht !
- Public Function Easy(ByVal iField() As Integer) As Integer ' Schwierigkeit einfach
- Public Function Normal(ByVal iField() As Integer) As Integer 'mittel
- Public Function Hard(ByVal iField() As Integer) As Integer 'usw
- Public Function Unbeatable(ByVal iField() As Integer) As Integer
- Public Function Random_KI_Set(ByVal iField() As Integer) As Integer ' Setzt auf ein zufällig freies Feld
- Public Function Someone_d_win(ByVal iField() As Integer, ByVal Player As Integer) As Integer ' Testet ob ein Spieler im nächsten Zug gewinnen könnte und gibt das benötigte Feld zurück
Wenn Flash = True ist (standart), dann blinken die drei GewinnerBausteine auf
Es ist komplett mit GDI gezeichnet, Man kann während des Spiels alle Propertys verändern, es wird sofort übernommen.
Auch die Größe kann man problemlos verändern und es wird weitergespielt
Download:
nibel.bplaced.net/codes/TicTacToe.dll
Größe ca. 27 KB
Update: StopGame() und ReturnGame() wurden durch Property erestzt und entsprechendes Event erstellt
Bitte um Feedback und möglich Bugs, Probleme
Update:
So nächstes Update... Ihr habt jetzt die Funktion AddObject(ObjectID As Integer, FieldNumber As Integer) Object ist entweder TicTacToe1.Cross oder TicTacToe1.Circle oder halt TicTacToe1.ActivePlayer... FieldNumber ist die FeldNummer, 1 ist links oben, oben mitte 2 , oben rechts 3 und so weiter. Der User muss aktiv sein, schummeln nicht möglich! Bei Erfolg ist es true, sonst false
Update:
So nach längerer Zeit hab ich mich mal drangesetzt und eine KI geschrieben. Sie geht von Easy bis Unbeatable. Dafür gibt es 2 neue Property, Against_KI ob man gegen den Computer spielt und KI_Difficulty, der Schwierigkeitgrad von 1-4. Außerdem hab ich diese KI in der Klasse TTTKI öffentlich gemacht, damit sie auch so benutzt werden kann. Die Funktion erwartet das Array iField() As Integer. Es muss so implementiert sein, sonst gibt es Fehler:
Dim iField(10) As Integer
iField(1) = 1 ' Feld Nr.1, (links oben) ist vom Spieler 1 belegt
iField(9) = 2 ' Feld Nr.9, (rechts unten) ist vom Spieler 2 bzw. Computer belegt
iField(5) = 0 ' Feld Nr.5, (mitte) ist leer
Das mit den verschiedenen Styles hab ich verworfen, das wär zu aufwendig geworden und zuviel Mühe für nix
mfG Nibel
Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „Nibel“ ()