Animationen

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2, 3  Weiter

Neue Antwort erstellen

 

BlackCat

BeitragDo, Okt 23, 2008 19:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Johann der 2. hat Folgendes geschrieben:
Ja das ist mir klar nur wie mach ich das das wenn diwe animation eine bewegung des strichmanns war wie stell ich ein das er jetzt woanders steht?
Also wie schaff ich es das ein bild durch eine animation auf knopfdruck nach rechts geht? also wie kann ich mir eine steuerung machen das der strichmann von links nach rechts geht undso?


Du pruefst, ob der User, die Rechts-Taste gedrueckt halt (KeyDown()).
Wenn dies zutrifft, erhoehst du die X-Koordinate bei jedem Hauptschleifendurchgang um eine bestimmte Zahl.
Bei dem Sprite selbst brauchst du nur eine "Standbewegung", also praktisch dass das Strichmaennchen immer nur im Stand laufen wuerde, wuerde man die Animation ohne x und y-Veraenderung laufen lassen...
 

Johann der 2.

BeitragDo, Okt 23, 2008 19:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke du bist nett und einen Grundkurs nicht so wirklich nur Robs BB-Kurs 2.
 

Johann der 2.

BeitragDo, Okt 23, 2008 19:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Was heißt es wenn er mir dann die fehlermeldung bringt: " Image frame out of range" ?

ozzi789

BeitragDo, Okt 23, 2008 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Das heist das du bei drawimage einen zu hohen frame zeichners, also drawimage name,x,y,frame
Der Frame ist das Xte stückchen bild das du zeichnest.
Und wen der zu gross ist also zmb 4 und das bild jedoch nur 3 hat, kommt dieser fehler drum hab ich ja den begrenzer eingebaut

Code: [AUSKLAPPEN]
If frame>5 Then frame=0 ;damits ned grösser wird als 5

setz anstant 5 mal 4 ein und gug was passiert Smile



ja mit grundkurs meinte ich den kurs von robsite Embarassed Very Happy
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

Johann der 2.

BeitragDo, Okt 23, 2008 20:29
Antworten mit Zitat
Benutzer-Profile anzeigen
achso ich probiers mal aus
 

Johann der 2.

BeitragDo, Okt 23, 2008 20:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber jetzt schlägt er wieder die ganze Zeit ich wollte eigentlich das er nur einamal schlägt aber ich mus mich echt bei dir bedanken du hast mich ziemlich weiter gebracht. DANKE Exclamation

ozzi789

BeitragDo, Okt 23, 2008 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Vermeide doppelposts, benutz die editier funktion Wink

Freut mich das ich helfen konnte, doch der Lerneffekt ist grösser wen du selber dran rumrästelst, aber ich helf dir ein wenig auf die sprünge ^^


Code: [AUSKLAPPEN]
Graphics 640, 480 ;Grafik Modus einstellen
SetBuffer BackBuffer ()
bild = LoadImage("strichmanns.bmp") ; Bild laden
ja =LoadAnimImage ("bild.bmp",100, 136, 0, 5) ; Billd2 laden


WaitKey

DrawImage bild,0,0


While Not KeyHit(1) ;Anfang der schleife

Cls ; den bildschrim frei machen/ löschen

If KeyHit(28) ; wenn enter
startdraw=1
EndIf

If KeyHit(205) Then x=x+5 ;wen du pfeiltaste rechts drückst soll x grösser werden


If startdraw=1 and gemacht=0 ;wenn enter gedrückt wurde (siehe oben) und die animation noch nicht gemacht wurde
If MilliSecs()> time + 100 ;wenn die akktuelle zeit grösser ist als time + 100 ms
time=MilliSecs() ;time soll die akktuelle zeit annehmen
frame=frame+1 ;der frame wird um 1 erhöht
If frame>4 
frame=0 ;damits ned grösser wird als 5
gemacht=1 ; hier wird gemacht auf eins gesetzt, also wenn die ganze animation einmal durchgelofen is
EndIf
DrawImage ja,x,0,frame ; du malst den typ auf pixel x und is wird ja bekantlich grösser also geht der nach rechts
EndIf



Flip
Wend
End



So wird die animation einmal auf enter ausgeführt und dann nicht mehr, aussert du setzt die variable "gemacht" wieder auf 0



Versuch jetzt selbst ein wenig darum zu basteln, zmb das man auch rauf un runter laufen kann,und wenn du wirklich nicht weiter kommst, post dein Problem einfach Smile


mfg ozzi
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

FreetimeCoder

BeitragDo, Okt 23, 2008 21:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Du brauchst 2 verschiedene Animations-Zustände:

Pseudo Code: [AUSKLAPPEN]
wenn KnopfDruck
       dann Anim = Schlag
       Frame = 0

Zeichnen(Frame)
Frame = Frame  + 1

Wenn Frame > 4 Und Anim = Schlag
       dann Anim = SonstAnimation

Wenn Frame > 10
       dann Frame = 4


Ich gehe mal davon aus das der Strip 11 Frames hat 0-10. 0-3 fürs Schlagen und 4-10 für eine andere Animation die nur abgespielt werden soll wenn die Figur nicht schlägt.
Wenn die Schlagentaste gedrückt wird, wird "Anim" ein Wert zugewiesen damit das Programm weiß das es jetzt nur die Frames der Schlagenanimation abspielen soll. Ist diese abgespielt wird "Anim" wieder zum Standardwert der dem Programm sagt, dass es zb die Idleanimation abspielen soll.

MfG

[edit] verdammt zu langsam xD
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA
 

Johann der 2.

BeitragDo, Okt 23, 2008 21:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke ihr beiden und ozzi ich weiß das der lerneffekt dabei runter geht nur von nichts kommt nichts ich will meinen wenn ich es nichtr weiß kann ich es auch nicht errätseln da ich auch erst vor 3 wochen angefangen hab und nicht jeden tag geproggt.

Edit:
Jetzt kann ich diesen shclag aber nur einmal ausführen wollte es eigentlich so das ich die taste immer wieder drücken kann und er dann immer dann schlägt wenn ich drücke wie geht das?

Edit2: Ach ich bastel erstmal ein bisschen rum.

Edit3: `Was bedeutet die Fehlermeldung: "Expecting end-of-file"?

Edit4: so hab mal versucht es so zu machen das ich das mänchen bewegen kann nur wie mach ich das das das programm sich nicht vorher beendet? hier der code:Zitat:
Graphics 640, 480 ;Grafik Modus einstellen
SetBuffer BackBuffer ()
bild = LoadImage("strichmanns.bmp") ; Bild laden


If KeyHit (208) Then y=y+5
If KeyHit (205) Then x=x+5
If KeyHit (203) Then x=x-5
If KeyHit (200) Then y=y-5
DrawImage bild, x, y



ích mus jetzt in bett hoffe ihr läst das noch für mich und entschuldigt wenn ich ein bisschen auf die nerven gehe. gn8

Edit5: ozzi aber die animation wir bei deinem text nicht ausgeführt da zeigt er einfach nur den frame 4 an. na dann wirklich gn8
  • Zuletzt bearbeitet von Johann der 2. am Do, Okt 23, 2008 22:12, insgesamt 3-mal bearbeitet
 

BlackCat

BeitragDo, Okt 23, 2008 22:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Johann der 2. hat Folgendes geschrieben:

Edit:
Jetzt kann ich diesen shclag aber nur einmal ausführen wollte es eigentlich so das ich die taste immer wieder drücken kann und er dann immer dann schlägt wenn ich drücke wie geht das?


Wenn ich dich richtig verstanden habe, dann musst du die Funktion KeyHit() einfach nur durch KeyDown() ersetzen (Parameter bleibt der gleiche)

FreetimeCoder

BeitragFr, Okt 24, 2008 6:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Packe die ganzen Dateien doch mal in eine zip und lads im Archiv hoch, vllt sehen wir dann was dir so große Probleme macht.

MfG
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA

ozzi789

BeitragFr, Okt 24, 2008 17:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu edit 4

Das Zauberwort heist While, also ne schleife Razz

Erläuterung :
Das Programm läuft von oben nach unten ab und wenn es unten angekommen ist, ist es fertig !
Wie verhinder ich das ?
In dem ich das ganze in ne Schleife packe

Also
Code: [AUSKLAPPEN]
Graphics 640, 480 ;Grafik Modus einstellen
SetBuffer BackBuffer ()
bild = LoadImage("strichmanns.bmp") ; Bild laden

while not keyhit(1) ;während du nicht ESC drückst
cls ;löscht den Bildschrim, kannst es ja mal weglassen und du siehst was passiert
If KeyHit (208) Then y=y+5
If KeyHit (205) Then x=x+5
If KeyHit (203) Then x=x-5
If KeyHit (200) Then y=y-5
DrawImage bild, x, y
flip ; vertauscht den Buffer, kümmer dich nicht drum, wirst du dan schon verstehn ;)
wend ; soll es alles zwischen WHILE und WEND wiederholen
 





Das "allgemeine" Grundgerüst einer jeden Grafikanwendung/Games ist

Code: [AUSKLAPPEN]


Graphics länge,breite,farbtiefe,modus (1= Vollbild, 2= Fenster)
Setbuffer backbuffer()
Loadimage ; Bilder laden

While not keyhit (1) ;Schleife beginnen
cls

Eigentliches Game , If's usw


Flip
wend
end


mfg ozzi
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

Johann der 2.

BeitragFr, Okt 24, 2008 23:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke ich komm meinem kleinem Ziel immer näher nur was heißt die Fehlermeldung:'Wend'. ?

ozzi789

BeitragFr, Okt 24, 2008 23:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich kann nicht hellsehn, gib mir die zeile die der debugger markiert Razz
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

da_poller

BeitragSa, Okt 25, 2008 8:04
Antworten mit Zitat
Benutzer-Profile anzeigen
die fehlermeldung heißt warscheinlich while whitout wend..

du scheinst eine if bedingung oder eine for schleife nicht "beendet" zu haben sprich endif oder next oder etwas dergelichen vergessen(oder tippfehler)

The_Nici

BeitragSa, Okt 25, 2008 11:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Btw Ozzi dein Code ist zum kotzen, lern einrücken.

Johann der 2.:
Du könntest mal den Code zeigen, das wäre net. ^_^

MfG
 

Johann der 2.

BeitragSa, Okt 25, 2008 12:02
Antworten mit Zitat
Benutzer-Profile anzeigen
The_Nici momentan verändere ich den code weil ich an einem problem arbeite deshalb wäre es jetzt nicht so effektiv ihn etzt zu posten da er sich jetzt sehr schnell verändert.

The_Nici

BeitragSa, Okt 25, 2008 12:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann können wir dir nicht helfen.
 

Johann der 2.

BeitragSa, Okt 25, 2008 14:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Doch naja jetzt wie kann ich functionen laden also mit include bei mir funkt das net wie mus es richtig heißen wenn ich eine Function laden und ausführen will?
Hier der Functions Code:Zitat:
Function gehen ()
Graphics 640, 480
strichmann= LoadImage ("strichmanns.bmp")
If KeyHit (208) Then y=y+5
If KeyHit (205) Then x=x+5
If KeyHit (203) Then x=x-5
If KeyHit (200) Then y=y-5
DrawImage strichmann, x,y
End Function

Die Datei heißt "gehen.bb" wie kann ich diese nun laden und ausführen in einem anderen code?

The_Nici

BeitragSa, Okt 25, 2008 14:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Include
Btw Laden am Anfang, zeichnen in der Schleife.

Gehe zu Seite Zurück  1, 2, 3  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group