Ladebalken
Übersicht

noobohneplanBetreff: Ladebalken |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo, meine Frage ist, wie ich einen ladebalken bei diesem spiel hin bekomme: ![]() Code: [AUSKLAPPEN] Graphics 1280,1024
menue=LoadImage ("Hauptmenue.bmp") ScaleImage menue,1,1; MaskImage menue,255,255,255 kugelfisch5=LoadImage ("kugelfisch5.bmp") ScaleImage kugelfisch5,1,1; MaskImage kugelfisch5,255,255,255 DrawImage kugelfisch5,300,500 DrawImage menue,1,1 WaitKey() Print"Spiel Startet, Bitte Warten [!] Color 249,0,0 x=599 y=200 c=700 z=450 r=1 u=270 p=450 i=600 m=700 n=300 v=600 b=400 g=300 h=450 SetBuffer BackBuffer() kugelfisch=LoadImage ("kugelfisch.bmp") ScaleImage kugelfisch,0.5,0.5; MaskImage kugelfisch,17,92,234 kugelfisch1=LoadImage ("kugelfisch1.bmp") ScaleImage kugelfisch1,0.5,0.5; MaskImage kugelfisch1,17,92,234 kugelfisch3=LoadImage ("kugelfisch3.bmp") ScaleImage kugelfisch3,0.5,0.5; MaskImage kugelfisch3,17,92,234 kugelfisch2=LoadImage ("kugelfisch2.bmp") ScaleImage kugelfisch2,0.5,0.5; MaskImage kugelfisch2,17,92,234 schatztruhe=LoadImage ("schatztruhe.bmp") ScaleImage schatztruhe,1,1; MaskImage schatztruhe,17,92,234 schatztruhe2=LoadImage ("schatztruhe2.bmp") ScaleImage schatztruhe2,1,1; MaskImage schatztruhe2,17,92,234 schatztruhe3=LoadImage ("schatztruhe3.bmp") ScaleImage schatztruhe3,1,1; MaskImage schatztruhe3,17,92,234 map1=LoadImage ("map1.bmp") ScaleImage map1,1.7,1.7; MaskImage map1,255,255,255 map2=LoadImage ("map2.bmp") ScaleImage map2,1.7,1.7; MaskImage map2,255,255,255 map3=LoadImage ("map3.bmp") ScaleImage map3,1.7,1.7; MaskImage map3,255,255,255 map4=LoadImage ("map4.bmp") ScaleImage map4,1.7,1.7; MaskImage map4,255,255,255 ziel1=LoadImage ("ziel1.bmp") ScaleImage ziel1,0.9,0.9; MaskImage ziel1,255,255,255 ziel2=LoadImage ("ziel2.bmp") ScaleImage ziel2,1,1; MaskImage ziel2,255,255,255 ziel3=LoadImage ("ziel3.bmp") ScaleImage ziel3,1,1; MaskImage ziel3,255,255,255 hintergrund1=LoadImage ("hintergrund1.bmp") ScaleImage hintergrund1,1,1; MaskImage hintergrund1,255,255,255 hintergrund4=LoadImage ("hintergrund4.bmp") ScaleImage hintergrund4,1,1; MaskImage hintergrund4,255,255,255 hintergrund3=LoadImage ("hintergrund3.bmp") ScaleImage hintergrund3,1,1; MaskImage hintergrund3,255,255,255 hintergrund2=LoadImage ("hintergrund2.bmp") ScaleImage hintergrund2,1,1; MaskImage hintergrund2,255,255,255 blasen=LoadImage ("blasen.bmp") ScaleImage blasen,1,1; MaskImage blasen,17,92,234 menue=LoadImage ("Hauptmenue.bmp") ScaleImage menue,1,1; MaskImage menue,255,255,255 rand1=LoadImage ("rand1.bmp") ScaleImage rand1,1,1; MaskImage rand1,255,255,255 rand2=LoadImage ("rand2.bmp") ScaleImage rand2,1,1; MaskImage rand2,255,255,255 rand3=LoadImage ("rand3.bmp") ScaleImage rand3,1,1; MaskImage rand3,255,255,255 Cls blubb=PlayMusic("1.mp3") ClsColor 17,92,234 Cls While Not KeyHit(1) If KeyDown(205) ; (links) r=1 x=x+10 vonwo$ = "rechts" EndIf If KeyDown(203) ; (rechts) r=2 x=x-10 vonwo$ = "links" EndIf If KeyDown(208) ; (hoch) r=3 y=y+10 vonwo$ = "runter" EndIf If KeyDown(200) ; (runter) r=4 y=y-10 vonwo$ = "hoch" EndIf Cls If ImagesCollide (kugelfisch,x,y,0,schatztruhe,c,z,0) And vonwo$ = "runter" z=z+10 Text 0,0, "hallo" EndIf Text 0,0, vonwo$ If ImagesCollide (kugelfisch,x,y,0,schatztruhe,c,z,0) And vonwo$ = "links" c=c-10 Text 0,0, "hallo" EndIf Text 0,0, vonwo$ If ImagesCollide (kugelfisch,x,y,0,schatztruhe,c,z,0) And vonwo$ = "rechts" c=c+10 Text 0,0, "hallo" EndIf Text 0,0, vonwo$ If ImagesCollide (kugelfisch,x,y,0,schatztruhe,c,z,0) And vonwo$ = "hoch" z=z-10 Text 0,0, "hallo" EndIf Text 0,0, vonwo$ If ImagesCollide (kugelfisch,x,y,0,schatztruhe2,g,h,0) And vonwo$ = "runter" h=h+10 Text 0,0, "hallo" EndIf Text 0,0, vonwo$ If ImagesCollide (kugelfisch,x,y,0,schatztruhe2,g,h,0) And vonwo$ = "links" g=g-10 Text 0,0, "hallo" EndIf Text 0,0, vonwo$ If ImagesCollide (kugelfisch,x,y,0,schatztruhe2,g,h,0) And vonwo$ = "rechts" g=g+10 Text 0,0, "hallo" EndIf Text 0,0, vonwo$ If ImagesCollide (kugelfisch,x,y,0,schatztruhe2,g,h,0) And vonwo$ = "hoch" h=h-10 Text 0,0, "hallo" EndIf Text 0,0, vonwo$ If ImagesCollide (kugelfisch,x,y,0,schatztruhe,v,b,0) And vonwo$ = "runter" b=b+10 Text 0,0, "hallo" EndIf Text 0,0, vonwo$ If ImagesCollide (kugelfisch,x,y,0,schatztruhe3,v,b,0) And vonwo$ = "links" v=v-10 Text 0,0, "hallo" EndIf Text 0,0, vonwo$ If ImagesCollide (kugelfisch,x,y,0,schatztruhe3,v,b,0) And vonwo$ = "rechts" v=v+10 Text 0,0, "hallo" EndIf Text 0,0, vonwo$ If ImagesCollide (kugelfisch,x,y,0,schatztruhe3,v,b,0) And vonwo$ = "hoch" b=b-10 Text 0,0, "hallo" EndIf Text 0,0, vonwo$ If ImagesCollide (schatztruhe,c,z,0,ziel1,u,800,0) c=c-10 z=z-10 EndIf If ImagesCollide (schatztruhe2,g,h,0,ziel2,p,i,0) g=g-10 h=h-10 EndIf If ImagesCollide (schatztruhe3,c,z,0,ziel3,m,n,0) c=c-10 z=z-10 EndIf If ImagesCollide (kugelfisch,x,y,0,map1,200,100,0) And vonwo$ = "links" x=x+10 EndIf If ImagesCollide (kugelfisch,x,y,0,map2,216,861,0) And vonwo$ = "runter" y=y-10 EndIf If ImagesCollide (kugelfisch,x,y,0,map3,216,100,0) And vonwo$ = "hoch" y=y+10 EndIf If ImagesCollide (kugelfisch,x,y,0,map4,993,100,0) And vonwo$ = "rechts" x=x-10 EndIf If r=3 DrawImage kugelfisch2,x,y If r=4 DrawImage kugelfisch3,x,y If r=1 DrawImage kugelfisch,x,y If r=2 DrawImage kugelfisch1,x,y DrawImage schatztruhe,c,z DrawImage schatztruhe2,g,h DrawImage schatztruhe3,v,b DrawImage map1,200,100 DrawImage map2,216,861 DrawImage map3,216,100 DrawImage map4,993,100 DrawImage ziel1,u,150 DrawImage ziel2,p,i DrawImage ziel3,m,n DrawImage hintergrund1,-205,0 DrawImage hintergrund2,200,877 DrawImage hintergrund3,50,-305 DrawImage hintergrund4,1009,50 DrawImage blasen,380,200 DrawImage blasen,545,680 DrawImage rand1,760,509 DrawImage rand2,215,250 DrawImage rand3,350,743 Flip Wend undzwar möchte ich wenn das hauptmenü geladen ist, einen ladebalken haben, wo man sehen kann wann das programm fertig ist (100%hat) mit den bildern zu laden. Liebe Grüße noobohneplan |
||
![]() |
blackgecko |
![]() Antworten mit Zitat ![]() |
---|---|---|
In BlitzPlus geht das mit CreateProgBar![]() Aber ich vermute mal du nutzt irgendeine andere Version. In dem Fall musst du dir selbst einen Ladebalken zusammenbasteln. Vorschlag: Mal ein leeres Rechteck als Umrandung in dein Grafikfenster und dann ein gefülltes Rechteck je nachdem, wie viel geladen ist. Dann musst du jedes Mal nach dem Laden eines Bilds das gefüllte Rechteck ein Stück größer malen und es so hintüfteln, dass der Ladebalken voll ist, wenn alle Bilder geladen sind. Wenn das funktioniert, kann man noch die Rechtecke durch Bilder ersetzen, damit es schöner aussieht, aber erst mal muss es überhaupt funktionieren. |
||
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die. |
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey
ScaleImage ziel3,1,1; was soll das bringen? Du skalierst ein Bild auf den Wert den es schon hat? ![]() Noch ein Tipp: Benütze lieber PNG, BMP ist zu gross und hat keinen Vorteil gegenüber PNG ![]() Achja, hast du schon inner Forensuche gesucht? Hättest sicher einige Treffer gelandet! So hier mal ein Lösungsansatz.. Code: [AUSKLAPPEN] Global fortschritt
Color 100,100,100 Rect 0,0,110,10 lol=LoadImage("lol.png") updatebar() zomg=LoadImage("zomg.png") updatebar() Text 0,100,"FERTIG!" WaitKey Function updatebar() fortschritt=fortschritt+1 ; Selbstklärend For i=1 To fortschritt ; So nun zeichnen wir nen tollen Balken Color 255,255,255 Rect 1*fortschritt,y, 10,10 Next End Function Aber: So wie ich es jetzt gemacht habe, zeigt es nicht tatsächlich den Prozentsatz wie weit dein Programm ist, weil ja nicht alle Bilder gleich gross sind -> d.h laden unterschiedlich lange Du könntest aber auch die Gesamtgrösse aller Files ermitteln, dann die Grösse von den gelanden Files zusammen addieren und die Summe von der Gesamtgrösse abziehn und in Prozent "umwandeln" also zmb 3 von 20 mb geladen also 17 mb müssen geladen werden -> 100/20 = 5 -> 5*17 = 85% die noch geladen werden müssen -> 100-85 also 15% schon geladen ![]() So würds dann aussehen, hab hier etwas getrickst um zu simulieren als ob man die Bilder lädt Code: [AUSKLAPPEN] Global fortschritt
Color 100,100,100 Rect 0,0,110,10 Repeat ;Hauptschleife For foobar=1 To 100000 ;Simulieren als ob der PC was macht temp=2934^29+3030*19/1029-2+4949 Next updatebar() Until fortschritt=100 ;Hauptschleife wiederholen bis fortschritt=100 Text 0,100,"FERTIG!" WaitKey Function updatebar() fortschritt=fortschritt+1 ; Selbstklärend For i=1 To fortschritt ; So nun zeichnen wir nen tollen Balken Color 255,255,255 Rect 1*fortschritt,y, 10,10 Next End Function mfg ozzi |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
- Zuletzt bearbeitet von ozzi789 am Mo, Nov 30, 2009 18:57, insgesamt 2-mal bearbeitet
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
1. "ScaleImage![]() 2. ...Einrücken dagegen schon. 3. Da dieses Spiel ziemlich hardgecodet ist, müsstest du eine Funktion schreiben, die einen Ladebalken für xy% zeichnet, und nach jedem LoadImage ![]() ![]() Es wäre einfacher, wenn du irgendwo eine Liste an den zu ladenen/geladenen Bildern hättest, da du dann nur in der/den "Ladeschleifen" jeweils ein einziges Mal die Ladebalkenzeichenfunktion nutzen muss und jeweils nur aus dem Verhältnis zwischen der Anzahl der geladenen Bilder und der Gesamtanzahl an Bildern den Fortschritt berechnest. Du solltest dir irgendwann in der nächsten Zeit mal Arrays und Type ![]() Jeder hat einmal irgendwo angefangen, also gebe ich zum Thema Function ![]() 4. Zitat: Print"Spiel Startet, Bitte Warten [!]
Der Compiler meckert zwar - leider - nicht, aber man sollte immer auch noch schließende Anführungszeichen nutzen. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
noobohneplanBetreff: oki :) |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hey, danke erstmal mit dem scaleimage, ich hab es weggemacht und nun klappt es viel besser (schneller).
und nun zum ladebalken, ja er funktioniert soweit aber wie du schon sagtest ist das nicht der richtig balken, außerdem ist der balken bei mir schon bei knapp 1-2sek. fertig mit laden, aber mein spiel lädt ungefähr 10sek ![]() doch den zweiten teil, damit der ladebalken auch wirklich erst dann fertig ist wenn die bilder auch geladen sind, habe ich nicht ganz verstanden. also die bilder sind insgesamt: 14.8mb groß die er lädt. könntest du mir vll den code schreiben verstehe nämlich wirklich nicht wie du das meinst. liebe grüße noobohneplan |
||
noobohneplanBetreff: huhu |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
oki, aber der lädt ja die ganzen bilder erst nachdem der lade balken fertig ist,
d.h. der macht erst den ladebalken fertig, dann lädt er die bilder... ich würde aber gerne dass der die bilder während des fortschreiten des ladebalken lädt geht das? |
||
![]() |
blackgecko |
![]() Antworten mit Zitat ![]() |
---|---|---|
Doppelposts bitte vermeiden und statt dessen den 'Bearbeiten' - Button oben rechts an deinen Posts verwenden.
Du musst dir folgendes überlegen: 14,8 MB --> 100% 7,4 MB --> 50% xy MB --> 100 / (14,8 / xy) % Und den Ladebalken musst du natürlich immer nach jedem geladenen Bild aktualisieren. |
||
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die. |
noobohneplanBetreff: okok |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
okey danke, aber er macht dies trotzdem nach der reihe oder?
ich würde gerne, dass der lade balken läuft, und gleichzeitig die bilder lädt... |
||
![]() |
blackgecko |
![]() Antworten mit Zitat ![]() |
---|---|---|
Richtig, er lädt zuerst ein Bild und dann wird der Ladebalken aktualisiert. Dann wird das nächste Bild geladen und der Ladebalken wieder aktualisiert usw.
Um das "gleichzeitig" zu machen, bräuchtest du Multithreading, was Blitzbasic nicht eingebaut hat. |
||
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die. |
![]() |
Tennisball |
![]() Antworten mit Zitat ![]() |
---|---|---|
...Oder du könntest dir eine eigene Laderoutine basteln. | ||
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du es richtig machst, braucht das Zeichnen des Ladebalkens noch nicht einmal eine einzige Millisekunde Zeit.
Selbst, wenn es mal eine ganze Millisekunde brauchen würde, würde diese bei den geschätzten 500 Millisekunden pro Bild nicht weiter auffallen. Selbst wenn sich etwas Multitasking nennt, wird alles, wenn man jetzt mal von Mehrkernprozessoren oder Ähnlichem absieht, beim Computer nacheinander ausgeführt. Diese Sachen werden dann allerdings so schnell abwechselnd bearbeitet, dass es so scheint, als ob sie gleichzeitig ablaufen. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
noobohneplanBetreff: huhu |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
oki danke für eure hilfe, werde jetzt mal den balken was schöner gestalten
grüße noobohneplan ![]() |
||
Krischan |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also ich habs bei BlitzTiles so gemacht (schon wieder ein Spinoff davon):
Die Funktion UpdateBar funktioniert so: Angenommen wir haben eine Schleife von 1...1000, dann ist 1000="maximal" und "aktuell" der aktuelle Schleifenzähler von 1...1000. Zudem müssen wir noch wissen, wie weit wir insgesamt mit de Laden sind, dazu gehören zwei Prozentwerte, start und ende des jeweiligen Vorganges, also 0...10 und dann weiter mit 10...25 z.B. bis wir auf 100 sind. Die Demo zeigt wie es funktioniert. UpdateBar("Titel",aktuell,maximal,prozentstart,prozentende) Code: [AUSKLAPPEN] Graphics 800,600,32,2
SetBuffer BackBuffer() Global Screenwidth=GraphicsWidth() Global Screenheight=GraphicsHeight() Global title$="Loading Bar Demo" For i=0 To 300 UpdateBar("Vorgang 1",i,300,0,30) Next For j=0 To 1000 UpdateBar("Vorgang 2",j,1000,30,100) Next Cls Print "Fertig!" WaitKey End Function UpdateBar(info$,current#,max#,startpercent#=0.0,endpercent#=100.0,r1%=128,g1%=0,b1%=0,r2%=0,g2%=192,b2%=0,r3%=255,g3%=255,b3%=255) Local percent#,milepercent# Local width%=Screenwidth/2 Local height%=18 Local midx%=(Screenwidth/2) Local midy%=(Screenheight/2) Local sx%=midx-(width/2) Local sy%=midy-(height/2) Local factor#=width*1.0/100 ; program termination always possible If KeyHit(1) Then End ; calc percentages percent=(current*100.0)/max milepercent=((percent*(endpercent-startpercent))/100.0)+startpercent ; upper bar border, red bar background, green progress bar (total) DrawBar(sx,sy,width,height,r1,g1,b1) DrawBar(sx,sy,Int(milepercent*factor),height,r2,g2,b2) Color 0,0,0 : Rect sx,sy,width+1,height,0 ; lower bar border, red bar background, green progress bar (current task) DrawBar(sx,sy+height+3,width,height,r1,g1,b1) DrawBar(sx,sy+height+3,Int(percent*factor),height,r2,g2,b2) Color 0,0,0 : Rect sx,sy+height+3,width+1,height,0 Color r3,g3,b3 ; text infos Text midx,midy-18,title,1,1 Text midx,midy-1,Int(milepercent)+"%",1,1 Text midx,midy+height+2,info,1,1 Flip 0 End Function Function DrawBar(x%,y%,width%,height%,r%,g%,b%) Local i%,c% For i=0 To height-1 Color r,g,b Line x,y+i,x+width,y+i Next End Function |
||
noobohneplanBetreff: geil! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wow nice! ![]() |
||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vlt hilft dir das ![]() https://www.blitzforum.de/foru...p?p=351710 |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group