ERLEDIGT
NEIN
NEIN
ANTWORTEN
10
10
ZUGRIFFE
634
634
EMPFEHLEN
-
26.04.11 22:24 #1
- Registriert seit
- Apr 2011
- Beiträge
- 4
Hallo,
ich hoffe hier kann mir jemand helfen. Ich bin dabei ein 3-Gewinnt spiel für meine Freundin mit Visual Basic zu programmieren und bräuchste ein wenig Hilfe dabei.
Das Spielfeld wird in einem zweidimensionalen Array(y und x-Achse) gespeichert. Nun scheitere ich am folgenden Problem. Wie werte ich aus, ob mindestens 3 mal der selbe Gegenstand sich berührt.
Beispiel:
123
455
552
Hier würden sich die vier 5en berühren.
Ich bekomme einfach keine Abfrage für mein Problem hin, womit ich dies feststellen kann.
Vielen Dank euch im Voraus!
Gruß,
NichtsNutzHoch2.
-
Verschoben ins VB-Forum hat im C/C++ Forum nix zu suchen
Falls es sich hier um VB.NET handelt bitte melden!Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
26.04.11 23:00 #3
- Registriert seit
- Apr 2011
- Beiträge
- 4
Das ist das Visual Basic aus dem Visual Studio 2010, denk mal schon das das VB.Net ist.
-
27.04.11 08:32 #4
Ich hab hier ein Tic-Tac-Toe mal als VBA-Makro gemacht, vielleicht kannst du dir da was abschauen.
Der Doc!A: Hilfe, ich hab zwei Dateien hinzugefügt und nun sind die anderen weg
B: Die Scrollbar da rechts ist dir schon mal aufgefallen?
-
27.04.11 09:20 #5
- Registriert seit
- Apr 2011
- Beiträge
- 4
Ja, ansich ist das eine Einfache auswertung was du hast.
Aber mein richtiges Spielfeld ist 10x12 Einheiten groß. XD
Eine lineare Ausertung bekomme ich auch ohne probleme hin, nur die Verschachtelung über die Ebenen hinweg bereitet mir Probleme, sprich den den Pfad zu allen Objekten zu finden, wenn mehr als 3 miteinader verbunden sind.
Besseres Beispiel:
1 1 2 7 3
4 4 2 5 5
1 2 2 3 4
Hierbei müssten die vier zweien erkannt werden.
-
27.04.11 12:07 #6
OK, ist doch eine etwas andere Ausgangslage, mit größeren Feldern ist das nicht ganz so einfach. Ich werd mal in mich gehen, vielleicht fällt mir was ein.
Der Doc!A: Hilfe, ich hab zwei Dateien hinzugefügt und nun sind die anderen weg
B: Die Scrollbar da rechts ist dir schon mal aufgefallen?
-
Mir fallen nur sehr aufwendige Lösungen ein. Aber da das ja nur nach jedem setzen einmal geprüft wird, spielt Performance ja keine Rolle.
http://de.wikipedia.org/wiki/Backtracking
Neben Backtracking könntest du auch einfach über jedes Feld iterieren und alle 8 Nachbarn angucken (sofern diagonal erlaubt ist).
-
...und ins .NET -Forum verschoben. VB.NET hat nicht wirklich was mit VB6 zu tun.
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
28.04.11 10:20 #9
Ich hab auf Excel-Basis ein kleines Makro geschrieben (Excel, weil da die Eingabe der Zellendaten am einfachsten war):
Hier wird ein 5x5-Raster auf eine bestimmte Zahl geprüft und die Anzahl der gleichen Nachbarn ermittelt (nur in gerader Linie). Wenn ein Feld keinen gleichen Nachbarn hat, kriegt es den Wert 0, ansonsten die Anzahl der gleichen Nachbarn. Du müsstest nur noch auf einen Wert von 2 prüfen (= 2 benachbarte Zellen mit dem gleichen Wert und die eigentliche Zelle -> 3 verbundene Zellen).Code vb:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Sub check() Dim iField(4, 4) As Integer '5x5 Raster Dim sField(4, 4) As String Dim iSearch As Integer, iCheck As Integer iSearch = 2 'Suche nach Zahl For cnt = 0 To 4 For cns = 0 To 4 iField(cnt, cns) = ActiveSheet.Cells(cnt + 1, cns + 1).Value 'Einlesen in Array, sind nur Vorbereitungsarbeiten Next cns Next cnt For cnt = 0 To 4 For cns = 0 To 4 iCheck = 0 If iField(cnt, cns) = iSearch Then 'beinhaltet die Zelle die gesuchte Zahl If cnt > 0 Then If iField(cnt - 1, cns) = iSearch Then iCheck = iCheck + 1 'ist darüber die gleiche Zahl / überhaupt ein Feld If cnt < 4 Then If iField(cnt + 1, cns) = iSearch Then iCheck = iCheck + 1 'ist darunter die gleiche Zahl / überhaupt ein Feld If cns > 0 Then If iField(cnt, cns - 1) = iSearch Then iCheck = iCheck + 1 'ist links davon die gleiche Zahl / überhaupt ein Feld If cns < 4 Then If iField(cnt, cns + 1) = iSearch Then iCheck = iCheck + 1 'ist rechts davon die gleiche Zahl / überhaupt ein Feld End If sField(cnt, cns) = iCheck 'Array mit Anzahl der Nachbarn schreiben ActiveSheet.Cells(cnt + 1, cns + 1).Value = iCheck 'anzeigen Next cns Next cnt End Sub
Wie gesagt, ist schwerstens experimentell und nur eine kleine Spielerei, vielleicht inspiriert es dich aber.
Der Doc!A: Hilfe, ich hab zwei Dateien hinzugefügt und nun sind die anderen weg
B: Die Scrollbar da rechts ist dir schon mal aufgefallen?
-
28.04.11 20:38 #10
- Registriert seit
- Apr 2011
- Beiträge
- 4
Danke erstmal für den Vorschlag, eigentlich ganz OK, nur nicht wirklich für mein Problem zu gebrauchen.
Mittlerweile habe ich eine Logische lösung gefunden das Problem zu lösen, habe aber keine Idee wie ich das in VB umsetzen kann. In PHP oder Perl wärs kein Problem, aber mit VB...
Ich probiere es jetzt mal selbst erst einmal.
Aber eine kleine Logikfrage habe ich noch.
Mein Spielfeld ist aktuell in einem zweidimensionalen Array gespeichert( spielfeld(x,y)).
Ich möchte eine Positiv gespeicherte Adresse speicher()="x,y" in einen Array speichern und diese dann später so auslesen können, sodass ich über die gespeicherte Adresse direkt auf den Array zugreifen kann. spielfeld("x,y")
Funktioniert das?
Und wie kann ich überrpüfen, ob ein Wert bereits in einem Array existiert?
Finde dafür irgendwie keine Funktion über Google und co.Geändert von NichtsNutzHoch2 (28.04.11 um 21:30 Uhr) Grund: Noch eine Frage hinzugefügt.
-
29.04.11 08:30 #11
Beschreib es in PHP, vielleicht lässt es sich ja von uns in VB wandeln.
Betr der Frage, du kannst deine gespeicherte Adresse "x,y" ja über Stringfunktionen aufteilen und kriegst so dein x und dein y retour. Damit lässt sich das Array dann ja problemlos abfragen.
Der Doc!A: Hilfe, ich hab zwei Dateien hinzugefügt und nun sind die anderen weg
B: Die Scrollbar da rechts ist dir schon mal aufgefallen?
Ähnliche Themen
-
Visual Basic 2010 exe einbetten
Von Deanga133 im Forum .NET CaféAntworten: 1Letzter Beitrag: 16.11.10, 22:07 -
Visual Basic 2010 exe einbetten
Von Deanga133 im Forum Sonstige SprachenAntworten: 0Letzter Beitrag: 15.11.10, 20:21 -
Visual Basic 2010 Express - Rückwärtssuche
Von VB2010_ExpressUser im Forum .NET Windows FormsAntworten: 6Letzter Beitrag: 14.11.10, 13:20 -
Webservice: Visual Studio 2008 vs Visual Studio 2010 Express for Windwos Phone
Von Johannes7146 im Forum .NET Web und KommunikationAntworten: 4Letzter Beitrag: 27.09.10, 23:06





Zitieren


Login





