Berechnung der Frames beim Map?
Übersicht

bruce85Betreff: Berechnung der Frames beim Map? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo nochmal,
also ich hab jetzt ein grosses problem, wenn ich überprüfen möchte ob sich Doppelte Frame Nr nebeneinander befinden, dann wird es auch unten drunter gezählt, also wenn ich jetzt in der ersten Zeile ne Frame 2 setze und im nächsten Spalte wieder ne 2 dann wird die Function trotzdem verlassen. Hier mal der Code wie ich es probiert habe: Code: [AUSKLAPPEN] Function CheckNr1()
For F_y=0 To 17 For F_x =0 To 17 If Spielfeld(F_x,F_y) = 2 Then If Not Spielfeld(F_x+1,F_y) = 2 Or Spielfeld(F_x+2,F_y) = 2 Or Spielfeld(F_x+3,F_y) = 2 Or Spielfeld(F_x+4,F_y) = 2 Or Spielfeld(F_x+5,F_y) = 2 Or Spielfeld(F_x+6,F_y) = 2 Or Spielfeld(F_x+7,F_y) = 2 Or Spielfeld(F_x+8,F_y) = 2 Then Return 0 EndIf If Not Spielfeld(F_x-1,F_y) = 2 Or Spielfeld(F_x-2,F_y) = 2 Or Spielfeld(F_x-3,F_y) = 2 Or Spielfeld(F_x-4,F_y) = 2 Or Spielfeld(F_x-5,F_y) = 2 Or Spielfeld(F_x-6,F_y) = 2 Or Spielfeld(F_x-7,F_y) = 2 Or Spielfeld(F_x-8,F_y) = 2 Then Return 0 EndIf EndIf Next Next Return 1 End Function Ich weiss das man den irgendwie kleiner bekommt, wiess aber grad net wie. Ich weiss jetzt auch grad net wie ich das jetzt hinbekommen soll, könnt ihr mir vieleich da helfen? Vielen Dank. MFG Andreas |
||
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250 |
![]() |
Bob |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
so ganz werde ich aus der Frage nicht schlau. Wann willst du den die Function verlassen. Sobald ein Nachbarframe auch = 2 ist oder das nachbarframe anders ist als 2? Die Nachbarfelder kannst du so einfacher Prüfen. For Nachbar = -8 to 8 If Spielfeld(F_x+Nachbar,F_y) = 2 then ' Machwas Endif Next EDIT: Wenn du alle Nachbarn auf NOT = 2 prüfen willst musst du dies auch jedesmal angeben oder Klammern setzen. Code: [AUSKLAPPEN] Function CheckNr1() For F_y=0 To 17 For F_x =0 To 17 If Spielfeld(F_x,F_y) = 2 Then For Nachbar = -8 to 8 If Not Spielfeld(F_x+Nachbar,F_y) = 2 then Return 0 Endif Next endif Next next Return 1 End Function Du musst aber noch aufpassen das du nicht auf array Koordinaten zugreifst die nicht existieren. |
||
![]() |
DerHase |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bruce, was willst Du den erreichen? Das er vier gleiche Tiles in einer Reihe meldet oder wie? Wenn ja würde ich es so machen, Du Prüfst von links nach rechts, Zeile für Zeile. Dann gibts Du einem Feld bei dem links ein anders artiges Feld ist den Wert 1, wenn das nächste Feld gleich dem Feld davor ist, nimmst Du seinen Wert und addierst nochmal 1 dazu etc.etc. Danach prüfst Du von rechts nach links Felder die einen größeren Wert als 3 Haben, und sprengst zum Beispiel alle Felder in der Distanz dieses Wertes ![]() Wobei Deine Frage so schwammig Formuliert war, das ich vielleicht nen GR0SSEN scheiss grad zusammengeschrieben hab. |
||
Play Satyr! |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke euch für die Antwort.
Also ich arbeite ja grade an einem Sudoku Spiel, und möchte halt überprüfen ob sich Doppelte Nr in einer Reihe befinden. Wenn ich in einer reihe ne 1 habe wird es Schwarz dargestellt und wenn ich paar felder neben dran noch eine 1 hin mache, dann wird diese Rot angezeigt. Wenn ich ein Feld unten drunter eine 1 hin mache, dann wird diese auch Rot Dargestellt obwohl in dieser reihe noch kein 1 drin ist. Hier mal wie es überprüft in der Function: Code: [AUSKLAPPEN] If Check() Then
;Nr1 SCHWARZ Spielfeld(Merk_x,Merk_y) = 2 Else ;Nr1 ROT Spielfeld(Merk_x,Merk_y) = 11 EndIf Wie macht man eigentlich die genaue berechnung bei einem Sudoku Spiel? Vielen Dank schonmal. Gruss Andreas |
||
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250 |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Könnt ihr mir vieleicht ein Tip geben wie man das am einfachsten realisieren kann?
Weil irgendwie kann ich nicht jede Zeile einzelnd überprüfen, wäre sehr net wenn mir einer Helfen könnte. Edit: Hier mal der Code: Code: [AUSKLAPPEN] Function Check()
For F_x=0 To 26 For F_y=0 To 26 If Spielfeld(F_x,F_y) = 2 Then For nachbar_x = -8 To 8 If Not Spielfeld(F_x+nachbar_x,F_y) = 2 Then Return 0 EndIf Next EndIf Next Next Return 1 End Function also ich möchte das ich jede Zeile einzelnd Prüfen kann, weil wenn ich in der ersten Zeile eine Zahl stehen habe und unten drunter bissel nach rechts die gleiche zahl hin mache, dann wird angezeigt das da in der zeile der gleiche Stein ist, was nicht der fall ist. Gruss Andreas |
||
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250 |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kann mir denn keiner Helfen oder Tips geben wie ich das machen kann?
Ich kriegs echt nicht hin ohne eure Hilfe, ich möchte ja nur wissen wie ich jede Zeile einzelnd überprüfen kann mit der For Schleife. |
||
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250 |
![]() |
Rone |
![]() Antworten mit Zitat ![]() |
---|---|---|
moin,
zu prüfen ob in einer Zeile der gleiche Wert mehrmals vorkommt ist leicht... ...aber ich bezweifle, dass das das einzige Problem ist. Code: [AUSKLAPPEN] Dim Map(10,10)
mapwidth=10 mapheight=10 Function CheckZeile(zeile) For i=0 To mapwidth -1 Vergleich = Map(i,Zeile) For x=0 To mapwidth -1 If Vergleich = Map(x,Zeile) And i<>x Then bla = 1 EndIf Next Next Return bla End Function mfg |
||
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielen Dank für deine Hilfe.
Ich werde das mal so probieren. Gruss Andreas |
||
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250 |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ALso normal kann ich das ja so prüfen:
Code: [AUSKLAPPEN] If Check(zeile) Then
Spielfeld(Merk_x,Merk_y) = 2 Else Spielfeld(Merk_x,Merk_y) = 11 EndIf aber es wird immer nur Spielfeld(Merk_x,Merk_y) = 2 ausgeführt, wenn bei dieser Zeile bereits das gleiche block ist dann wird Nr 11 nicht ausgeführt, hab ich vieleicht was falsch gemacht? |
||
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250 |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ bruce85
![]() ![]() |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So, endlich habe ich es hinbekommen ![]() Ich habe das so gelöst: Code: [AUSKLAPPEN] Function CheckStein()
For nachbar_x = -8 To 8 For nachbar_y = -8 To 8 If Spielfeld(Merk_x+nachbar_x,Merk_y) = Vergleich Or Spielfeld(Merk_x,Merk_y+nachbar_y) = Vergleich Then Return 0 EndIf Next Next Return 1 End Function Das ist so, wenn ich auf ein Block klicke, dann wird ja das Feld gemerkt und dann überprüfe ich einfach ob links oder rechts kein Doppelter Stein liegt, wenn kein doppelter Stein da liegt, dann wird die Function Weiter ausgeführt. Hab aber verdammt lange gebraucht das hinzubekommen ![]() Und Vielen Dank für eure Hilfen. Gruss Andreas |
||
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group