Problem mit flip

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

BlackError

Betreff: Problem mit flip

BeitragSa, März 18, 2006 22:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi erstmal. Ich bin neu hier und relativ unerfahren in sachen BlitzBasic
Also. Mein Problem ist wie folgt: ich habe eine Animation erstellt. Allerdings kann ich nun kein print bzw. text benützen. Irgendwie bekomme ich es nicht hin, das flip an die Richtige Stelle zu setzten, sodass es mir die Animation darstellt, alsauch Text ausgeben kann.
Ich Danke im voraus.

Code: [AUSKLAPPEN]

Graphics 640,480,32,2
SetBuffer BackBuffer()


Atom = LoadAnimImage ("Atom.bmp", 80,80,0,16)


;Annimation Atom
For I = 0 To 16
 Cls
 If I = 16 Then I = 0
 DrawImage Atom, 550,10,I
 Delay 100
 Flip
Next



Ps. Ich benützte B3D

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, März 18, 2006 22:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, erstmal hast du 16 Animationsbilder. Somit sollte die Schleife von 0 bis 15 gehen... Desweiteren würde die Animation nur einmal durchlaufen, und das Programm sich beenden! Soll das so sein? Wenn es so sein soll, dann setze -Text- direkt nach -DrawImage- und vor dem -Flip-. Das sollte es gewesen sein...
 

ke^kx

BeitragSa, März 18, 2006 23:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du wirklich ein Spiel Programmieren willst, solltest du dir a) Robs Tutorial von www.robsite.de angucken und dein Spiel in etwa so aufbauen:

Code: [AUSKLAPPEN]

Graphics X,Y, 32, 2

;Bilder laden
;Sounds laden

;Globale Variablen deklarieren
;Types deklarieren

Repeat

;Hauptschleife

Until Keydown (1)

;------------------------------------------------------------------------------------
;Funktionen


Vorallem die Hauptschleife und das unterteilen in ql:Function s ist wichtig.

Jiriki
http://i3u8.blogspot.com
Asus Striker II
Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-)
Geforce 9800 GTX
2GB RAM
 

BlackError

BeitragSo, März 19, 2006 13:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal danke für eure Antworten.

Meine Animation besteht aus 17 sprites (Ich hoffe, das heißt so). Daher muss ich doch von 0 bis 16 machen oder? somit ist das erste bild 0 und das letzte 16. oder? Müsste so doch dann stimmen?

zu Jiriki: Ich lese zur Zeit das Buch: Spiele Programmieren mit Blitz Basic von Rene Meyer. Allerdings ist mein Vorhaben kein Spiel, sondern nur ein prog mit ner animation zur verschönerung. Braucht man bei Programmen auch Types? In dem Buch wird jedenfalls nicht viel damit gearbeitet.

Jetzt gehts, wenn ichs direkt nach drawimage schreibe. Allerdings Muss da noch viel Text hin. Muss ich jetzt den ganzen text und casesachen in die for schleife schreiben, dass es geht?
 

ke^kx

BeitragSo, März 19, 2006 16:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei jedem Programm, dass nicht nur irgendeinen Wert einmal ausgiebt, brauchst du eine Hauptschleife (jedenfalls bei prozeduraler Programmierung). Das mit dem Text ist halt so, dass du gucken musst, dass du ihn nicht mit dem Bild übermalst. Dann geht es sicher.

Jiriki
http://i3u8.blogspot.com
Asus Striker II
Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-)
Geforce 9800 GTX
2GB RAM
 

gutters

BeitragFr, März 24, 2006 16:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine bemerkung: Delay stopt dem spiel für einige secunden.
ich würde so machen:
Code: [AUSKLAPPEN]
Graphics 640,480,32,2
SetBuffer BackBuffer()
Atom = LoadAnimImage ("Atom.bmp", 80,80,0,16)
;Annimation Atom
For I = 0 To 16
 Cls
 If I = 16 Then I = 0
 DrawImage Atom, 550,10,I
next
while not keyhit(1)
 Flip
wend

vielleicht funzt es nicht.. hab nicht probiert. wenn es nicht funzt dann probiere mal so:
Code: [AUSKLAPPEN]
Graphics 640,480,32,2
SetBuffer BackBuffer()
Atom = LoadAnimImage ("Atom.bmp", 80,80,0,16)
;Annimation Atom

while not keyhit(1)
For I = 0 To 16
 Cls
 If I = 16 Then I = 0
 DrawImage Atom, 550,10,I
next
 Flip
wend
 

ke^kx

BeitragFr, März 24, 2006 22:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Deine beiden Codes können garnicht gehen, weil das Flip außerhalb der "Hauptschleife" ist, die mit dem "if bla = 16 then bla = 0" ja immer wieder wiederholt wird...

@BlackError:
So sollte es gehen:

Code: [AUSKLAPPEN]


Graphics 640,480,32,2
SetBuffer BackBuffer()

Global Atom = LoadAnimImage ("Atom.bmp", 80,80,0,16)
Global Timer = Millisecs ()
Global animation

; Hauptschleife
Repeat

 Cls
 
 If Millisecs () - timer > 200 then ;alle 200 Millisekunden soll die animation gewechselt werden
 
  If animation = 16 Then animation = 0
  animation =animation + 1

 End If

 DrawImage Atom, 550,10,I
 Text 100, 100, "Animation!"
 
 Flip

Until


Ansonsten müsstest du villeicht nochmal genauer dein Problem schildern...

Jiriki
http://i3u8.blogspot.com
Asus Striker II
Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-)
Geforce 9800 GTX
2GB RAM
 

Castrapolis

BeitragFr, März 24, 2006 23:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
@ Jiriki
Du hast hier:
Zitat:
If Millisecs () - timer > 200 then ;alle 200 Millisekunden soll die animation gewechselt werden

aber vergessen timer wieder zu aktualisieren!
So passt es: Wink
Code: [AUSKLAPPEN]
Graphics 640,480,32,2
SetBuffer BackBuffer()

Global Atom = LoadAnimImage ("Atom.bmp", 80,80,0,16)
Global Timer = Millisecs ()
Global animation

; Hauptschleife
Repeat

 Cls
 
 If Millisecs () - timer > 200 then ;alle 200 Millisekunden soll die animation gewechselt werden
 
   Timer = Millisecs ()
   
  If animation = 16 Then animation = 0
  animation =animation + 1

 End If

 ;DrawImage Atom, 550,10,I
 Text 100, 100, animation
 
 Flip

Until KeyHit(1)

Gruß Castrapolis
 

ke^kx

BeitragFr, März 24, 2006 23:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, danke... Mir sind auch noch ein paar andere Fehler aufgefallen:

Code: [AUSKLAPPEN]

Graphics 640,480,32,2
SetBuffer BackBuffer()

Global Atom = LoadAnimImage ("Atom.bmp", 80,80,0,16)
Global Timer = Millisecs ()
Global animation

; Hauptschleife
Repeat

 Cls
 
 If Millisecs () - timer > 200 then ;alle 200 Millisekunden soll die animation gewechselt werden
 
   Timer = Millisecs ()
   
  If animation = 16 Then animation = 0
  animation =animation + 1

 End If

 DrawImage Atom, 550,10,animation
 Text 100, 100, animation
 
 Flip

Until KeyHit(1)


Jiriki Wink
http://i3u8.blogspot.com
Asus Striker II
Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-)
Geforce 9800 GTX
2GB RAM

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group