If Not KeyDown(rauf) And Not KeyDown(runter) Then

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

DebbieDanger

Betreff: If Not KeyDown(rauf) And Not KeyDown(runter) Then

BeitragSo, Apr 17, 2005 16:47
Antworten mit Zitat
Benutzer-Profile anzeigen
mein code

BlitzBasic: [AUSKLAPPEN]
If Not KeyDown(rauf) And Not KeyDown(runter) Then 
plstance=True

EndIf

sagt mir "expecting expression"
wie verwende ich "and"s und "not"s in einer if abfrage? Die Commendhelp der deutschen oh hilft mir net sorecht .

simi

BeitragSo, Apr 17, 2005 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
hi,

du musst noch klammern setzen, denn BB weiss nicht ob du es
BlitzBasic: [AUSKLAPPEN]
If Not(KeyDown(rauf) And Not KeyDown(runter)) Then

oder so
BlitzBasic: [AUSKLAPPEN]
If Not(KeyDown(rauf)) And Not(KeyDown(runter)) Then

meinst....
 

DebbieDanger

BeitragSo, Apr 17, 2005 16:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Das kam mir auch schon in den sinn, aber es ging nicht .
Ich habe jetzt deine version angewendet und er sagt immernoch expecting expression.

Komisch Question

simi

BeitragSo, Apr 17, 2005 17:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
ist mir auch erst gerade aufgefallen, habe gemeint das BB mit den Klammern bei And nicht so strikt ist.....

Code: [AUSKLAPPEN]

If (Not(KeyDown(rauf))) And (Not(KeyDown(runter))) Then


So sollte es gehen...

Chester

BeitragSo, Apr 17, 2005 17:07
Antworten mit Zitat
Benutzer-Profile anzeigen
mach doch einfach :

BlitzBasic: [AUSKLAPPEN]

If KeyDown(rauf) = 0 And KeyDown(runter) = 0 Then
 

DebbieDanger

BeitragSo, Apr 17, 2005 17:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok ich habe das problem mit
BlitzBasic: [AUSKLAPPEN]

If KeyDown(rauf) <> 1 And KeyDown(runter)<>1 And KeyDown(links)<>1 And KeyDown(rechts)<>1 Then

plstance=True;;die befehle wenn die tasten nicht gedrückt sind

EndIf


gelöst, trotzdem danke für deine rasche antwort.
Dann habe ich noch etwas was mir kopfzerbrechen macht.
Ich habe ein bild das in viele frames aufgeteilt ist. Also 20framesx30 pixel breit und 40 pixel hoch

BlitzBasic: [AUSKLAPPEN]
If plstance=True Then 
player=LoadAnimImage(\"playerstance.jpg\", 30, 40, 0, 20)
;;;;;;;;;;;;;;;;;;

;other code
;;;;;;;;;;;;;;;;;;
For a = 0 To 19
DrawImage player,plx,ply,a
Next

EndIf

Ich dachte dann müsste er die animation abspielen (das ganze hat auch ne hauptschleife doublebuffering mit cls am anfang der schleife und am ende nen flip und sowas.)
Andere animationen spielt er ab die sind aber auch anders benutzt.

simi

BeitragSo, Apr 17, 2005 17:40
Antworten mit Zitat
Benutzer-Profile anzeigen
hi,

also lade nie ein Bild in der Hauptschleife!! (oder ist es hier nicht in der Hauptschleife??

Dann zu der Animation:
Am Besten schaltest du alle z.B. 200 Millisekunden die Animationsstufe um eins höher....:
Code: [AUSKLAPPEN]

if Millisecs()-time>200 then
  a = (a+1) mod 20
  time = Millisescs()
end if
DrawImage player,plx,ply,a
 

DarkMike

BeitragSo, Apr 17, 2005 17:41
Antworten mit Zitat
Benutzer-Profile anzeigen
ja und was ist jetzt deine frage?
2 dinge sind unendlich die menschliche Dummheit und das Universum obwohl beim Universum bin ich mir nicht ganz sicher. (Albert Einstein)
 

DebbieDanger

BeitragSo, Apr 17, 2005 17:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich habe in dem thread "Bilder und bewegung " nachgeschaut un ein stück nützlichen code gefunden

BlitzBasic: [AUSKLAPPEN]
If plstance=True Then 


DrawImage player,plx,ply,animindex
animindex=(animindex+1) Mod 9

EndIf

damit spielt er sie erstmal ab aber sehr sehr schnell , wie kann ich das ändern?


So , nein die grafik wird ausserhalb der schleife geladen.
Ich verstehe nicht ganz was das bewirkt die animationsstufen höherzustellen?

simi

BeitragSo, Apr 17, 2005 17:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Siehe meinen letztn Post, der kleine Code, der Bewirkt, dass nur alle 200 Millisekunden der animindex erhöht wir, kannst du auch bei diesem Beispiel gebrauchen.....

Jolinah

BeitragSo, Apr 17, 2005 17:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Edit: Zu spät ^^

Er meinte wahrscheinlich du sollst das Bildframe nur alle 200ms um eins erhöhen. Wenn du ne for-Schleife machst und danach erst zeichnest ist das Frame immer auf das letzte eingestellt (keine Animation sichtbar). Und wenn du in jedem Schleifendurchgang das Bild zeichnest werden einfach alle Frames übereinander gemalt (auch keine Animation sichtbar).

Du speicherst also das aktuelle Frame in einer variable und erhöhst es alle 200ms um 1. Wenn das Maximum (19) erreicht wurde stellst du es wieder auf 0.
 

DebbieDanger

BeitragSo, Apr 17, 2005 17:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Yay es funktioniert, du warst mir eine große hilfe.
Nun bin ich erstmal zufrieden, da ist zwar noch eine kollision die nicht funktioniert aber naja.

@simi bist du aus der schweiz(auf avatar guck) ich kenne viele hilfreiche schweizer

@Jolinah danke nochmal für die erklärung.

bloß das mit dem MOD 9 verstehe ich nicht mod gibt doch einen restwert an oder nicht?

simi

BeitragSo, Apr 17, 2005 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
jo,

der PC teilt durch neun und gibt dann den Rest zurück (kennst du sicher früher von der Schule, als man noch nicht Komma rechnen konnte....)

Das bewirkt das die Variable nie grösser als neun wird...

(denn wenn die Variable neun ist, dann ist der Rest 0....)

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group