Mini-Player

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Tidus

Betreff: Mini-Player

BeitragMo, Dez 25, 2006 18:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab zu Weihnachten mit BB(3D) angefangen, jetzt hab ich aber schon gleich am anfang ein prob bei folgendem prog

Code: [AUSKLAPPEN]

Graphics 640, 480, 16, 3
SetBuffer BackBuffer()

M     = 1   ;Für das Abspielen des sounds unten sonst spielt ich ihn in der Schleife ja hundertmal ab
Pause = 1   ;Für die Pause; 1 = Pause; 0 = keine Pause
   
   Color 0, 255, 0
   Text 10, 10, "LOADING..."
   
   Maus = LoadImage("mauszeiger.bmp")
   Schiffe = LoadAnimImage("enemy1-ship.bmp", 16, 16, 0, 71)
   Steuerung = LoadAnimImage("VCRControls_24a.bmp", 24, 24, 0, 23)
   hintergrund = LoadImage("simplestars.bmp")
   schwarz = LoadImage("Schwarz.bmp")
   Bild2 = LoadAnimImage("player-ship.bmp", 80, 80, 0, 71)

   Musik1 = LoadSound("Milla Jovovich - Going Down.mp3")
   Musik2 = LoadSound("Sacrifice 1.mp3")
   
   ScaleImage Bild2,      1.35, 1.35
   ScaleImage Schiffe,     3, 3
   ScaleImage hintergrund, 7, 5
   
   Bildchen = Schiffe ;Für 1 Bilderreihe und 2te
   Musi     = Musik1  ;Für die 2 Musiken

      Repeat
      
         x = MouseX()
         y = MouseY()
         Cls
         
         DrawImage Maus, x, y
         DrawImage hintergrund, 0, 0

         DrawImage Steuerung, 150, 270, 6
         DrawImage Steuerung, 175, 270, 8
         DrawImage Steuerung, 202, 270, 0
         DrawImage Steuerung, 229, 270, 14
         Flip
         
         .Programm
         
         If GetMouse() = 1 And ((x > 150 And x < 174) And (y > 270 And y < 294)) Or (KeyHit(57) And Pause = 1) Then ;Play
    
            Pause = 0
                  
            For bild = 0 To 67 ;Es sind 70 Frames aber das Random (-3) hab ich ja auch noch
         
               x = MouseX()
               y = MouseY()
               Cls
               DrawImage Maus, x, y
               DrawImage hintergrund, 0, 0
               
               ;Pause
               If GetMouse() = 1 And ((x > 150 And x < 174) And (y > 270 And y < 294)) And Pause = 0 Or KeyHit(57) And Pause = 0 Then
                  M         = 1
                  Pause      = 1
                  Pausen_Bild = bild
                  PauseChannel(Kanal)
               EndIf
               
               ;Pause Ende
            ;   If GetMouse() = 1 And ((x > 150 And x < 174) And (y > 270 And y < 294)) And Pause = 1 Or KeyHit(57) And Pause = 1 Then
            ;      M         = 0
            ;      Pause      = 0
            ;      ResumeChannel(Kanal)
            ;   EndIf
                              
               ;Stop
               If GetMouse() = 1 And ((x > 175 And x < 199) And (y > 270 And y < 294)) Or KeyHit(28) Then
                  Pause = 1                                                 ;
                  bild  = 0                                                 ;
                  StopChannel(Kanal)                                           ;
                  M     = 1                                                 ;
                  Gosub Programm                                              ;M1 = 1 damit ich ihn
               EndIf                                                       ;nachher wieder abspielen kann
               
               ;1 Kapitel
               If GetMouse() = 1 And ((x > 202 And x < 226) And (y > 270 And y < 294)) Or KeyHit(203) Then
                  StopChannel(Kanal)
                  M        = 1
                  Musi     = Musik1
                  bild    = 0
                  Bildchen = Schiffe
               EndIf
               
               ;2 Kapitel
               If GetMouse() = 1 And ((x > 229 And x < 253) And (y > 270 And y < 294)) Or KeyHit(205) Then ;
                  StopChannel(Kanal)
                  M        = 1
                  Musi     = Musik2
                  bild    = 0
                  Bildchen = Bild2
               EndIf
               
               If M = 1 And Pause = 0 Then            ;Damit die Musi nicht jedes
                  
                  Kanal = PlaySound(Musi)            ;Mal neu in der Schleife
                  M = 0                        ;abgespielt wird...
               EndIf
               
               If M = 1 And Pause = 1 And GetMouse() = 1 And ((x > 150 And x < 174) And (y > 270 And y < 294)) Or (KeyHit(57) And Pause = 1)
                  ResumeChannel(Kanal)   ;Wenn die Play taste gedrückt wird und es pause is dann...
               EndIf
               
               DrawImage Steuerung, 150, 270, 6   ;Das ControlPad...
               DrawImage Steuerung, 175, 270, 8   ;(während dem ablauf solls ja auch sichtbar sein)
               DrawImage Steuerung, 202, 270, 0   ;
               DrawImage Steuerung, 229, 270, 14   ;

               If Pause = 0 Then
                  
                  DrawImage Bildchen, 150, 150, bild+Rnd(0,3)               ;ein paar schiffe schwirren
                  If Bildchen = Schiffe Then ;weil das andere schiff zu groß is
                     DrawImage Bildchen, 214, 150, bild+Rnd(0,3)            ;sinnlos herum das random
                     DrawImage Bildchen, 150, 214, bild+Rnd(0,3)            ;is damit das ganze
                     DrawImage Bildchen, 214, 214, bild+Rnd(0,3)            ;verwackelt aussieht
                  EndIf
                  
                     Else ;Wenn Pause...
                        DrawImage Bildchen, 150, 150, Pausen_bild
                        If Bildchen = Schiffe Then
                           DrawImage Bildchen, 214, 150, Pausen_bild
                           DrawImage Bildchen, 150, 214, Pausen_bild
                           DrawImage Bildchen, 214, 214, Pausen_bild
                        EndIf
                        If KeyHit(57) Then Pause = 0
               EndIf
               Flip
               
               If bild = 67 Then bild = 0               ;Damit die Bilder endlos schwirren

            Next
         EndIf
         
      Until GetMouse() = 2 Or KeyHit(1)



Ich hoff das ist jetzt schön formatiert hier,
So nun prob nummer 1: (Schiffe sind Bilder von Schiffen die immer leicht gedreht sind, bild2 is das selbe nur größer, schwarz, damit wollt ich eig. während dem abspielen einen hintergrund abdecken, und die Steuerung da hab ich ne Stop, Play, nächstes Kap... Taste)
bis auf die playtaste funzt gar nix (abgesehen von der Keyboard steuerung) vorher hat mal die Stop taste funktioniert aber das geht jetzt auch nimmer... und unter dem Pause_Bild funzt Keyhit(200) ganz doll, aber Keyhit(57) ned und Getmouse sowieso ned....

2. Prob ich komm in die Pause rein aber ich hab noch keine Algo fürs rauskommen...also eig. schon aber die haben nicht funktioniert...

3. Prob das mit dem Flip is n bisschen kompliziert wo muss ich denn das schwarz überall hinmalen damit hinter denn Schiffen alles Schwarz ist? ich hab so gut wie ALLES ausprobiert aber irgendwie hatte ich nie schwarz... hat das was mit der Transparent - farbe zu tun? die hab ich bei Robs Kurs nicht ganz abgepeilt glaub ich... ne kleine erklärung dazu wär ganz nett Smile


Na ja wie gesagt hab gestern mit BB angefangen und heute mit dem prog, und EIGENTLICH hätte ja einer meiner tausenden Varianten funzen müssen... tuts nur halt ned... man hat leider keinen dollen Debuggen servic sonst hätt ichs vielleicht ehh alleine geschafft, aber so Hoff ich stark auf euch Wink

Achja und wegen Tips wegen Programmierstil bin ich ganz offen, und alles was Speicher spart find ich super also immer her mit den Tips Smile...


DANKE schonmal fürs checken Wink


mfg Tidus

Ralff

BeitragMo, Dez 25, 2006 19:48
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich hab mir hetzt nciht den ganzeb code durchgelesen...
aber ich hab gesehen dass du gosub und goto(ich weiß gar nicht richtig wie das heißt...) benutzt, das würde ich nicht machen... führt nur zu "spaghetticode". das wird dann sehr unübersichtlich und später blickst du selbst nicht mehr durch...
Zieht euch das rein...:
http://myspace.com/ndyderchef
Hammertracks, kostenlos...

N-Dy rulez
 

Tidus

BeitragDi, Dez 26, 2006 1:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Du meinst Gosub? ne Goto is verdammt als schlecht zu gelten (trotzdem gibts den Befehl in fast jeder Programmiersprache). Gosub dagegen nicht, obwohls ein und das selbe ist, abgesehen davon das man mit Return noch n bisschen mehr Macht besitzt... aber auch egal ich benutz des ja nur um mit Play wieder rein zu kommen...

mfg
 

Dreamora

BeitragDi, Dez 26, 2006 1:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Hauptunterschied von Goto <-> Gosub ist das Goto nach dem block ÜBERALL hin springen kann, Gosub aber genau dahin zurück muss wo es hergekommen ist (also zum Gosub das es aufgerufen hat).

Insofern ist Gosub nicht böse, es sorgt nur dafür das Code der an 50 verschiedenen Orten gebraucht wird nur 1x geschrieben wird (der Compiler kopierts dann rum).
Daneben ist natürlich der Vorteil das der Variablenraum von Gosub der gleiche ist wie vom normalen Code wo er ausgeführt wird, wohingegen eine Funktion nur die globalen Variablen kennt sowie die die man rein gibt, was auch nicht immer erwünscht ist (weil man zuviel übergeben müsste zb womit die funktion nicht umbedingt schneller wird)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Tidus

BeitragDi, Dez 26, 2006 12:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, ich weiß schon damit meinte ich ja Return... aber ich will mich da jetzt nicht groß mit Goto und Gosub herumschlagen ich hab Gosub einmal in meinem Programm verwendet und in diesem Miniprogramm kann mir keiner sagen das ein Gosub zu nem Spagetthicode wird...

hat scho einer einen Lösungsansatz zu meinem Prob?


mfg

BladeRunner

Moderator

BeitragDi, Dez 26, 2006 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein Schwarzes Bild für den Hintergrund sollte nicht nötig sein. Wenn Du nix einzeichnest und deine ql:clscolor nicht veränderst wird eh alles schwarz eingezeichnet.
ql:maskimage sollte selbsterklärend sein (ich kann dir die Onlinehilfe nur ans Herz legen) - die Farbe die Du als Transparenzfarbe festlegst wird nicht eingezeichnet.
Wenn Du also deinen Raumschiffbildchen einen pinkfarbenen (255,0,255) Hintergrund verpasst sollten sie nach einem enstprechenden Maskimage ohne das Pink gezeichnet werden.

Was deine Bedingungen für die einzelnen Tasten angeht, ohne sie genau auseinander klamüsert zu haben, benutze bitte Klammern, und zwar reichlich davon. And und Or sind gleichwertige Operatoren, es kann also sein dass dinge die du gern alternativ erlegigen möchtest (per or) nicht funktionieren weil daran mehrere and-Bedingungen geknüpft werden. Mit den Klammern kannst du steuern wie die Ausdrücke ausgewertet werden:

(a and b) or c ist was anderes als
a and (b or c).
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Tidus

BeitragDi, Dez 26, 2006 23:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Blade,

Ich mein prog jetzt schon etwas verändert (habs leider am Laptop) und da hab ich wenn ich die zweite bedingung auf if mousehit(1) >= 1 gesetzt habe funktioniert... irgenwie komisch...

Mit den Klammer... omg so bannal...Thx ich glaub jetzt weiß ich wos fehlt... wobei bei dem code hier eh einiges falsch is da hab ich die maus noch hinter der steuerung...

Wegen den Schwarz, da will ich das hinter denn schiffen und alles drumherum schwarz wird ... außer das was dann noch weiter weg is soll wieder hintergrund sein, Maskimage hilft mir also hier nicht wirklich, mit den Grafikbefehlen komm ich aber trotz Onlinehilfe noch nicht so ganz klar, darum wollt ich ja so nen kleinen Player programmieren...

naja THX nochmal und ciao



Tidus

BladeRunner

Moderator

BeitragMi, Dez 27, 2006 14:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich fürchtevich versteh immer noch nicht was Du mit dem Schwarz meinst. Kannst du ein bild malen wie du es Dir vorstellst ? dann kann man vielleicht helfen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Tidus

BeitragFr, Dez 29, 2006 17:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, sry das ich so lang nicht geantwortet hab.
Und zwar mein ich das so

_________
| |
| --- --- |
| |+| . |*| |
| --- --- |
| |
--------------|

so und zwar is das was außerhalb von dem großen eingekastelten ding is alles andere, also hintergrund und die steurung etc... in dem ding sind die Bilder das sollen diese zwei rechtecke darstellen. und der Punkt is noch was vom hintergrund und das will ich ned haben...

sry ich weiß n image wär besser, aber da ich die daten aufn Laptop hab, war das so um einiges schneller...

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group