mehr bilder

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Hunter99

Betreff: mehr bilder

BeitragDi, Jun 28, 2005 20:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Very Happy hi all

ich hab da ein kleines problem....
bei fast jedem mini 2d spiel kommen meistens die gleichen bilder mehr mals vor (zb.: bei einem spiel wo man fallende geldsäcke einsammeln muss)
jetzt meine frage ist wie kann ich diese bilder (wenn ich so ein spiel proggen will) reinladen ohne jedes einzelne bild immer wider mit dem gleichen befehl zu laden? ich habs mal bei einem spiel von mir gemacht, dass ich jedes bild einzel einfügte.. am anfang dachte ich das würde noch einfach gehen, bis ich jedoch merkte, dass ich mehre levels gleich vergessen kann (code-chaos!)

skey-z

BeitragDi, Jun 28, 2005 20:56
Antworten mit Zitat
Benutzer-Profile anzeigen
du musst ein bild nur einmal laden, danach kannst du es so oft benutzen wie du willst, bis dein programm zu ende ist oder du es mit "freeimage bild" wieder aus dem Speicher entfernst, was sowieso sinnvoll ist.

wenn es nun weit an deiner frage vorbei bin, dann solltest du es denke ich mal noch besser formulieren.

Um das Beispiel mit den Geldsächen aufzugreifen, dafür brauchst du am besten noch Types.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

Hagbard

BeitragMi, Jun 29, 2005 8:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

reinladen musst du nur einmal, vor der Hauptschleife:

Code: [AUSKLAPPEN]

Graphics 640, 480
sack = LoadImage("sack.bmp")

Repeat
DrawImage sack, 200, 200
Until KeyHit(1)
End
  • Zuletzt bearbeitet von Hagbard am Sa, Apr 17, 2010 16:11, insgesamt einmal bearbeitet
 

BlackTermi

BeitragMi, Jun 29, 2005 8:35
Antworten mit Zitat
Benutzer-Profile anzeigen
du kannst dein geladenes Bild ja in mehreren Variablen speichern...
ein beispiel (weil ich das nicht beschreiben kann)



testbild = loadimage("vomtestbildordner/testbildfff.bmp")

Dim Bilderdim(99)

for i = 0 to 99

Bilderdim(i)=testbild

next



jetzt hast du in jeder variable des dim feldes dein bild drin....
was aber sehr unsinnig wäre, für dein spiel bräuchtest du eher types, die ich jetzt aber nicht mehr erklären will da das schon oft genug getan wurde

Artemis

BeitragMi, Jun 29, 2005 13:18
Antworten mit Zitat
Benutzer-Profile anzeigen
@BlackTermi

warum einfach die Variable 99 mal zuweisen??
Einfach immer das selbe bild malen, das reciht!
 

BlackTermi

BeitragMi, Jun 29, 2005 13:34
Antworten mit Zitat
Benutzer-Profile anzeigen
ja aber was z.b. wenn er mit dem bild noch im programm herumspielen will? dann bräuchte er verschiedene... und ansonsten hast du recht (ich sagte ja auch bereits das es so ziemlich unsinnig ist)

Klip

BeitragMi, Jun 29, 2005 17:42
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
Graphics 200,300,32,2
SetBuffer BackBuffer()

tolles_bild = LoadImage(\"bild.png\")


For i = 1 To 20
DrawImage tolles_bild,Rnd(0,200),Rnd(0,300)
Flip
Next

WaitKey:End


Geht doch ohne Probleme, die alten Bilder werden ja nicht überschrieben.

Wenn du die Koordinaten der Bilder noch verändern willst, dann brauchst du Types.
 

Hunter99

BeitragMo, Jul 04, 2005 20:11
Antworten mit Zitat
Benutzer-Profile anzeigen
jo aber dank dem cls befehl ist das bild nur einmal pro runde zu sehen (runde = schlaufe)

BlitzBasic: [AUSKLAPPEN]
Graphics 200,300,32,2
SetBuffer BackBuffer()

tolles_bild = LoadImage(\"tolles_bild.bmp\")


For i = 1 To 20

Cls ;hier der Cls befehl

DrawImage tolles_bild,Rnd(0,200),Rnd(0,300)
Flip
Next

WaitKey:End



muss ich denn das ganze anders machen?.... ohne cls?[/b]
 

konstantin

BeitragMo, Jul 04, 2005 20:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Cls macht deinen Buffer blank, das heisst, er wird wieder komplett schwarz. Somit verschwindet das alte Bild.
Wenn du Cls wegmachst, wird es funktionieren, aber du malst halt nur auf das bild der vorherigen runde drauf, was nicht besonders schlau ist.
 

Hunter99

BeitragMo, Jul 04, 2005 20:22
Antworten mit Zitat
Benutzer-Profile anzeigen
ja da kommt wieder ein problem auf wenn ich cls weg lasse... was ist wenn ich noch ein 2tes bild bewegen will.... das bild zieht streifen... hier ein beispiel:


BlitzBasic: [AUSKLAPPEN]
Graphics 800,600,32,2
SetBuffer BackBuffer()

tolles_bild = LoadImage(\"Schläger.bmp\")
MaskImage tolles_bild,255,255,255 ;muss nicht sein....


While Not KeyHit(1)
DrawImage tolles_bild,a,b
a=a+1
Flip
Wend
End



WaitKey:End


was muss ich machen damit es klappt?
 

konstantin

BeitragMo, Jul 04, 2005 20:27
Antworten mit Zitat
Benutzer-Profile anzeigen
da musst du CLS auch wieder einbauen.
ansonsten musst du dir die position der anderen bilder merken und ebenfalls jedes mal neu zeichnen
 

Hunter99

BeitragMo, Jul 04, 2005 20:36
Antworten mit Zitat
Benutzer-Profile anzeigen
ja und da kommt mein eigendliches problem dass wenn ich mehere bilder dazuladen will, die aber gleich sind... muss ich die doch net immer wieder mit loadimages laden... oder doch???? ich meine wenn man moorhuhn nachproggen will kann man da ja net jedes huhn einzeln reinladen....
 

konstantin

BeitragMo, Jul 04, 2005 20:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Musst du ja auch nicht. Du kannst ein Bild so oft malen wie du willst (in Wirklichkeit werden nur die Daten vom Bild (also das Bild) in den Backbuffer kopiert). Du musst es halt nur an verschiedenen Koordinaten zeichnen, die du irgendwo speicherst, zum beispiel in types.
 

Hunter99

BeitragMo, Jul 04, 2005 20:52
Antworten mit Zitat
Benutzer-Profile anzeigen
jo und wenn ich wieder ein bild rumfliegen lasse?... muss ich denn die bewegung anderst machen??? weil das bild wird dann sozusagen mehrmals daraufgeladen
 

Hunter99

BeitragMo, Jul 04, 2005 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
ich weiss ich weiss... jetzt verstehts keiner mehr...
Sad

also nochmal... mein problem ist es, dass wenn ich ein spiel progenn will gezwungen bin die bilder die mehrmals vorkommen immer wieder mit dem gleichen befehl "loadimage" zu laden. warum? weil ich nur die variante mit cls kenne... denn wenn ich cls net nehmen würde, dann würde es ja gehen (indem ich immer drawimage benutze)... wenn ich aber nun dazu noch ein bild bewegen will (zb eine maus) dann zieht dieses bild streifen (weil das bild auch immer wieder hingemalt wird) .... darum das cls.... nun gibt es eine andere variante ohne cls ODER ohne immer loadimage (eigentlich nur loadimag) zu benutzen... was mir keinen source-chaos erzeugen würde.

thx
 

Michi

BeitragMo, Jul 04, 2005 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]

... ;üblicher start-krams

Global bild=LoadImage(\"blubb.bmp\")
Global maus=LoadImage(\"maus.bmp\")

Repeat
Cls

DrawImage bild, x, y
DrawImage bild, x, y
DrawImage bild, x, y
DrawImage bild, x, y
DrawImage bild, x, y

DrawImage maus, MouseX(), MouseY()

Flip
Until KeyHit(1)
End


wo ist das problem?

Bilder nur einmal laden, aber beliebig oft malen. so einfach ist das.
Aber..Wozu soll er gut sein???
IBM-Ingeneur über die Idee des Mikroprozessors, 1968
Code: [AUSKLAPPEN]

   __
<_/__\_> <--- die Wayne-Zeichnung
 

Hunter99

BeitragMo, Jul 04, 2005 21:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Very Happy ah danke... Rolling Eyes ich war so stur auf loadimage ^^ thx
 

Hunter99

BeitragMo, Jul 04, 2005 21:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Sad sorry aber da gibts noch n prob...

wenn ich jetzt dem bild eine colisionsabfrage einbaue dann gild das für jedes bild... und das programm weiss nicht welches bild hauptsächlich damit gemeint ist
 

konstantin

BeitragMo, Jul 04, 2005 21:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Wert=IMAGESCOLLIDE (Bild1, X1, Y1, Frame1, Bild2, X2, Y2, Frame2)


lern programmieren !
ich hab absolut keine lust, dir jeden stopfen in die nase zu hauen. und so rennt der frosch auch im Beginners-Corner nicht.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group