bin zu dumm für ne if abfrage
Übersicht

![]() |
DottakopfBetreff: bin zu dumm für ne if abfrage |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi blitzer !
bitte nicht lachen, aber ich bekomm folgende abfrage nicht gebacken. Also ich bin wieder bei meinen "npc s" und wollte die gerade in mein rpg integrieren, als mir noch n kleiner bug aufgefallen ist. Ich überprüfe nur immer die x bzw. y koords der npcs auf der map und somit kanns natürlich mal passieren, dass ein npc stehen bleibt, obwohl da kein hinderniss(der spieler) im weg ist. Hmm schwer zu erklären ... Code: [AUSKLAPPEN] [ N ] <--- das ist mein npc x = 2 y = 2 [ H ] <---- das ist mein hero x = 3 y = 5 Der npc bewegt sich nach rechts. So jetzt bleibt der npc stehen, da er nur immer die x werte überprüft ( if npc_x + 1 = hero_x usw.). So nungut dann wollt ich halt die y abfrage noch mit reinhauen, aber genau da ist das problem... ich bin zu dumm dafür ^^ - Wenn npc_x <> hero_x und npc_y <> hero_y then move else stop - Code: [AUSKLAPPEN] ... And (info3\bot_x +1) <> hx And (info3\bot_y) <> hy Then info3\bot_x = info3\bot_x + 1 Warum geht das nicht ?? mfg Dottakopf |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hatten wir gestern schon. Weil ql:AND auf binärer Ebene untersucht.
Code: [AUSKLAPPEN] a=1
b=1 For q=1 To 20 Print a+" And "+b+" = "+(a And b) a=a+1 Next WaitKey End |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
danke !
ich hab schon erkannt woran es demnach liegt ... (bot_x +1) <> hx ist dieser einmal 0 funtzt der "and" befehl nimma und daher kommt dann auch keine bewegung mehr zustande und die y überprüfung wird dan ausgellassen (oder?) Aber wie bekomme ich jetzt die x überprüfung ( bot_x +1) und die y überprüfung gleichzeitig rein ? Weil der npc soll ja nur dann stehen bleiben, wenn er bei rechtsbewegung links neben meinem hero steht ^^ Ich bräuchte sowas wie: Wenn bot_x +1 = hero_x and bot_y <> hero_y then move aber das sind dann nochmal n paar zeilen mehr... und solche überprüfungen find ich unübersichtlich mfg Dottakopf |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vergiss mein ersten Beitrag, da er in deiner Konstelation nicht zutrifft. Du hast ja schliesslich auf beiden Seiten jeweils deine Bedingung schon geschrieben. ![]() Ansonsten komme ich mit deinen Variablennamen nicht ganz klar. Mal schauen... Zitat: Weil der npc soll ja nur dann stehen bleiben, wenn er bei rechtsbewegung links neben meinem hero steht ^^
Und wie sieht's aus, wenn er eine linksbewegung macht? Also soll dein Bot ja dein Hero verfolgen? Wie wär's wenn du eine Abstandsmessung machen würdest? Wenn der Abstand größer als n ist, wird bewegt. Wie bewegen sich deine Figuren, Pixelweise oder Tileweise? Bei tileweiser Bewegung kannst du auch als Zileposition des Bots jeweils die letzte Position vom Hero nehmen. Im übrigen würde ich auf sowas hier verzichten: Zitat: Code: [AUSKLAPPEN]
... And (info3\bot_x +1) <> hx And (info3\bot_y) <> hy Then
info3\bot_x = info3\bot_x + 1 Also auf Bewegung die auf Hardcoding beruht. Berechne die Laufrichtung lieber direkt und spar die jede einzelne Richtung abzufragen. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
stimmt ^^ geniale erklärung.
Ne diese bot funktion ist eigentlich total simpel. Es gibt vier richtungen welche sich immer wieder mal ändern. So und für jede richtung mach ich halt dann n paar colisions checks. npc zu map, npc zu spieler, npc zu npc. Die bewegungen sind tile zu tile. ich überprüf halt immer nur die umliegenden tiles des bots. Ich hab au grad ne notlösung gefunden, welche des zum laufen bringt. Aber zeigen tu ich die lieber keinem ^^ (ich sag nur 4 richrungen 12 abfragen^^) mfg Dottakopf |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielleicht ist es das hier, was du suchst. Hab mal schnell was gemacht.
Code: [AUSKLAPPEN] Graphics 512,512,0,2
SetBuffer BackBuffer() xp=16 yp=16 xb=32 yb=32 While Not KeyHit(1) If MilliSecs()>ms+500 ms=MilliSecs() If Abs(xp-xb)>1 Or Abs(yp-yb)>1 xb=xb+Sgn(xp-xb) yb=yb+Sgn(yp-yb) End If End If If KeyHit(203) Then xp=xp-1 If KeyHit(205) Then xp=xp+1 If KeyHit(200) Then yp=yp-1 If KeyHit(208) Then yp=yp+1 Rect xb*8,yb*8,8,8,0 Rect xp*8,yp*8,8,8,1 Flip Cls Wend End Siehe dazu: ql:Abs ql:Sgn edit1: Oder wenn du nicht willst, dass dein Bot diagonal laufen soll: Code: [AUSKLAPPEN] Graphics 512,512,0,2
SetBuffer BackBuffer() xp=16 yp=16 xb=32 yb=32 While Not KeyHit(1) If MilliSecs()>ms+500 ms=MilliSecs() If Abs(xp-xb)>Abs(yp-yb) If Abs(xp-xb)>1 Then xb=xb+Sgn(xp-xb) Else If Abs(yp-yb)>1 Then yb=yb+Sgn(yp-yb) End If End If If KeyHit(203) Then xp=xp-1 If KeyHit(205) Then xp=xp+1 If KeyHit(200) Then yp=yp-1 If KeyHit(208) Then yp=yp+1 Rect xb*8,yb*8,8,8,0 Rect xp*8,yp*8,8,8,1 Flip Cls Wend End |
||
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
cool danke ! weis ich zu schätzen.
Ich möchte zwar nicht, dass mich der bot verfolgt aber das ist ja hier bei dem beispiel egal. Mit den befehlen hab ich noch nicht gearbeitet. Werd mich da mal reinarbeiten ! danke mfg Dottakopf |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group