Wörter in einem Array finden.

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Pdd

Betreff: Wörter in einem Array finden.

BeitragFr, Dez 08, 2006 15:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo.
Ich habe ein Problem dabei, ein Wort in einem Array zu finden.
Mein Array sieht so aus:
Code: [AUSKLAPPEN]

AChars$(20, 14, 5)

d.h. 19 hoch, (ich rechne die 0 nicht mit.), 13 breit.
Immer in (x, y, 1) ist ein Buchstabe gespeichert.
Das gesamte Feld wird von unten Links angewendet:
Code: [AUSKLAPPEN]

^  AChars$(20, 0, 1)
|
|   
|     ...
|           
1--------->  AChars$(1, 14, 1)


Jetzt habe ich dazu eine Liste mit Wörtern.

Code: [AUSKLAPPEN]

Dim AWords$(10)


Nun will ich herausfinden, ob in einer Reihe des AChars$ ein Wort aus AWords$ vorhanden ist. Das ganze sollte später auch RÜCKWÄRTS, DIAGONAL und SENKRECHT sein.

Um nun zu überprüfen, ob das Wort enthalten ist, folgender Code:
Code: [AUSKLAPPEN]

            For i = 1 To 20   ; Alle Zeilen durchgehen
                  For g = 1 To (14 - Len(Word$))
                     wort_neu$ = ""
                     For r = g To (g + Len(Word$))
                        wort_neu$ = wort_neu$ + AChars$(i, r, 1)
                     Next
                     DebugLog(wort_neu$)
                  Next
            Next


Somit sollte das Game sich beenden, wenn er das Wort in einer Zeile findet, oder nicht? Das blöde is nur, das das game jetzt noch 1FPS hat, wenn nicht sogar weniger :/ Hat jemand ne Idee, wie man das weniger Rechen-INtensiv machen kann?
Lieber Apfel als Birne.

MhhF

BeitragMo, Dez 11, 2006 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Probier mal hiermit
Code: [AUSKLAPPEN]
Dim AChars$(20, 14, 5)
Dim AWords$(10)
Awords$(1)="blitz"
Awords$(2)="super"
Awords$(3)="basic"


;Einlesen des Feldes
Restore chardata
For x=1 To 20
   Read aChars(x,1,1),aChars(x,2,1),aChars(x,3,1),aChars(x,4,1),aChars(x,5,1),aChars(x,6,1),aChars(x,7,1),aChars(x,8,1),aChars(x,9,1),aChars(x,10,1),aChars(x,11,1),aChars(x,12,1),aChars(x,13,1),aChars(x,14,1)
Next
   
;Spalten
For y=1 To 14
   s$=""
   For x=1 To 20
      s$=s+AChars(x,y,1)
   Next
   
   For i=1 To 3
      If Instr(s,AWords(i)) Then Print AWords(i)+" in Spalte: "+y+" Zeile: "+Instr(s,Awords(i))+" bis "+(Instr(s,Awords(i))+Len(AWords(i)))+" gefunden!"
   Next
Next

;Zeilen
For x=1 To 20
   s$=""
   For y=1 To 14
      s$=s+AChars(x,y,1)
   Next
   
   For i=1 To 3
      If Instr(s,AWords(i)) Then Print AWords(i)+" in Zeile: "+x+" Spalte: "+Instr(s,Awords(i))+" bis "+(Instr(s,Awords(i))+Len(AWords(i)))+" gefunden!"
   Next
Next

;Diagonal
For x=-21 To 20
   s$=""
   For y=1 To 14
      If x+y>0 And x+y<21 Then s$=s+AChars(x+y,y,1)
   Next
   
   For i=1 To 3
      If Instr(s,AWords(i)) Then Print AWords(i)+" in Z.: "+(x+(Instr(s,Awords(i))))+" S.: "+Instr(s,Awords(i))+" bis Z.: "+(x+Instr(s,Awords(i))+Len(AWords(i)))+"S.: "+(Instr(s,Awords(i))+Len(AWords(i)))+" gefunden!"
   Next
Next






.chardata
Data "g","e","g","j","a","r","h","d","a","g","h","a","z","z"
Data "g","e","g","j","a","r","h","d","a","g","h","a","z","z"
Data "g","e","g","j","a","r","h","d","a","g","h","a","z","z"
Data "g","e","g","j","a","r","h","d","a","g","h","a","z","z"
Data "g","e","g","j","a","r","h","d","a","g","h","a","z","z"
Data "g","e","g","j","a","r","h","d","a","g","h","a","z","z"
Data "g","e","g","j","a","r","h","d","a","g","h","a","z","z"
Data "g","e","g","j","a","r","h","d","a","g","h","a","z","z"
Data "g","e","g","b","l","i","t","z","a","g","h","a","z","z"
Data "g","e","g","j","a","r","h","d","a","g","h","a","z","z"
Data "g","e","g","j","a","s","h","d","a","s","h","a","z","z"
Data "g","e","g","j","a","r","i","d","a","u","h","a","z","z"
Data "g","e","g","j","a","r","h","c","a","p","h","a","z","z"
Data "g","e","g","j","a","r","h","d","a","e","h","a","z","z"
Data "g","e","g","j","a","r","h","d","a","r","h","a","z","z"
Data "g","e","g","j","a","r","h","d","a","g","h","a","z","z"
Data "g","e","g","j","a","r","h","d","a","g","h","a","z","z"
Data "g","e","g","j","a","r","h","d","a","g","h","a","z","z"
Data "g","e","g","j","a","r","h","d","a","g","h","a","z","z"
Data "g","e","g","j","a","r","h","d","a","g","h","a","z","z"

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Dez 11, 2006 17:09
Antworten mit Zitat
Benutzer-Profile anzeigen
zB: Suchwort hat eine bestimmte ql:len. Wurde ein Buchstabe anhand ql:Mid (Suchwort,Position,1) des Suchwortes im Feld gefunden, so wird diese Position=Position+1 gerechnet. Ist Position= ql:len (Suchwort) so wurde das Wort gefunden. Das geht in alle Richtungen. Wird eine neue Zeile/Spalte/Diagonale eingelesen, sollte die Position wieder auf 1 gesetzt werden.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group