ki-problem

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Badudel

Betreff: ki-problem

BeitragSa, Apr 14, 2007 19:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!

Ich arbeite gerade an einem 2-D jump'n run spiel und bin jetzt bei der KI angekommen. Ich habe auch schon ein Konzept. Der Effekt: Der Computer rennt hinter einem her. Das geht natürlich gut. Nur hab ich auch Gelende, das heißt kollisionen mit nem bild und man kann springen. Jetzt ist es nur so: Angenommen der Bot ist über mir, dann bleibt er stehen und kommt nicht runter. Der PC erkennt schon perfekt, dass der Bot über mir ist und nicht weiter rechts/links von mir steht. Meine Idee:

1. kleine Wartezeit, damit der Spieler Reaktionszeit hat.

2. punkt b (x/y) bekommt die Koordinaten des bots (x/y)

3. Schleife: sie hört auf, wenn die kollision des Punktes "b" aufhört

4. (in der Schleife:) der punkt b_x wird immer weiter erhöht, während die Kollision, währe dort ein Bot gezeichnet, immer gecheckt wird. Gleichzeitig werden die benötigten Schritte gezählt. Das wird immer wieder wiederholt, bis der Punkt b (mit Bild) keine Kollision mehr hat.

5. wend

6. der echte bot wird bewegt, variable "gemacht" immer erhöht, bis die Anzahl der Schritte, die gemacht worden sind, die Anzahl von Schritten, die man machen muss, haben.

7. wenn alles ausgeführt worden ist, wird alles wieder auf 0 gesetzt.

Das ist meine Idee, es klappt aber nicht.

Hier der Code:

Code: [AUSKLAPPEN]
Gosub richtung
Gosub ebene

If mitte=1
If ueber=1
If verletzt=0
If warten<20
warten=warten+1
ElseIf warten=20
b_x=black_x
b_y=black_y
warten=21
ElseIf warten=21

While Not bkol2=0
Gosub kollision   
b_x=b_x+4
schritte=schritte+1
Wend
warten=22

ElseIf warten=22
If gemacht<schritte
laufen=1
black_x=black_x+8
blacker=blacker+8
gemacht=gemacht+1
ElseIf gemacht=schritte
warten=0
schritte=0
gemacht=0
EndIf
EndIf
EndIf
EndIf


hier noch die gosubs:
Code: [AUSKLAPPEN]
.richtung
If blacker=h_x
mitte=1
Else
mitte=0
EndIf
Return


.ebene
If black_y<265
ueber=1
gleich=0
unter=0
ElseIf black_y=265
ueber=0
gleich=1
unter=0
ElseIf black_y>265
ueber=0
gleich=0
unter=1
EndIf
Return


.kollision
If ImagesCollide (bfüsse, b_x, b_y+49, 0, level, level_x, level_y, 0)
bkol2=1
Else
bkol2=0
EndIf
Return

Was ist falsch?

PS: Falls das ins Forum "Allgemein gehört, bitte verschieben, ich war mir nicht so sicher!
Wir werden dem Schwein schon schlachten, auch wenn ihm quiekt.
Zum Teufel mit das Grammatik!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group