Seite 1 von 1

Screengadget

Verfasst: 19.01.2006 15:01
von Maikel
Hi Leute,

Ich bin gerade dabei ein 2D Spiel zu schreiben, und hab ein ein problem.
Ich weiß nicht wie Imagegadget´s in das Spiel bekomme.

Könnt ihr mir vielleicht helfen ?

Danke für eure Antworte im vorraus !! :wink:

Verfasst: 19.01.2006 15:04
von Konne
Also wenn das Spiel im vollbild läuft hast, also mit OpenScreen wird das IMHO nicht gehen. Wenn es aber ein WindowedScreern ist ist es kein Problem. Die Frage ist eher: Warum brauchst du ein Imagegadget?

Verfasst: 19.01.2006 15:22
von Maikel
Ich brauche die gadget´s wegen dem menü z.b. spiel starten oder highscore.

aber wenn es dafür eine andere möglichkeit gibt, dann sag mir die bitte

Verfasst: 19.01.2006 15:24
von Macros
Die Maus abfragen, und dann ein Sprite unter dem Mauszeiger auf
Collision mit ButtonSprite überprüfen, wenn der Benutzer klickt.

Verfasst: 19.01.2006 15:31
von Maikel
so mach ich das momentan auch, aber das gibt irgendwie probleme

Code: Alles auswählen

If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0 Or InitSound() = 0
  MessageRequester("Error", "Can't open DirectX 7 or later", 0)
  End
EndIf
If OpenScreen(1024,768, 32, "Gnadenlos")
  LoadSprite(0, "menü.bmp", 0)
  LoadSprite(1, "fadenkreuz(menü).bmp", 0)
  LoadSound(2,"laden.wav")
  MouseLocate(500,380)
  TransparentSpriteColor(1,255,0,255)
  spielx = 470
  spiely = 240
  highx = 470
  highy = 425
  exitx = 470
  exity = 620
  Repeat
    FlipBuffers(1)
    ExamineMouse()
    DisplaySprite(0,0,0)
    ExamineKeyboard()
    xm = MouseX()
    ym = MouseY()
    DisplayTransparentSprite(1, xm, ym)
    If MouseButton(1) And SpriteCollision(0,spielx,spiely,1,xm,ym)
      PlaySound(2,0)
      ClearScreen(0,0,0)
      DisplayTransparentSprite(1, xm, ym)
      RunProgram("spiel.exe","","")
      CloseScreen()
      EndIf
    If MouseButton(1) And SpriteCollision(0,highx,highy,1,xm,ym)
      ClearScreen(0,0,0)
      DisplayTransparentSprite(1, xm, ym)
      RunProgram("highscore.exe","","")
      CloseScreen()
    EndIf
    If MouseButton(1) And SpriteCollision(0,exitx,exity,1,xm,ym)
      ClearScreen(0,0,0)
      DisplayTransparentSprite(1, xm, ym)
      End
    EndIf 
  Until KeyboardPushed(#PB_Key_Escape)
  End 
EndIf
End  
aber der öffnet bei jede button das spiel, und nicht die highscor oder exit
deswegen dachte ich mir, das dass mit den imagegadgets besser functioniert

Verfasst: 19.01.2006 15:46
von Macros
Vertausch mal die Reihenfolge der If Mouse and Collision
und berichte, was Passiert.

Verfasst: 19.01.2006 17:16
von Maikel
hab ich versucht aber sorry es geht trozdem nicht

Verfasst: 19.01.2006 17:44
von Macros

Code: Alles auswählen

If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0 Or InitSound() = 0
  MessageRequester("Error", "Can't open DirectX 7 or later", 0)
  End
EndIf
If OpenScreen(1024,768, 32, "Gnadenlos")
  LoadSprite(0, "C:\gr.bmp", 0)
  LoadSprite(1, "C:\gr.bmp", 0)
  ;LoadSound(2,"laden.wav")
  MouseLocate(500,380)
  TransparentSpriteColor(1,255,0,255)
  spielx = 470
  spiely = 240
  highx = 470
  highy = 425
  exitx = 470
  exity = 620
  Repeat
    FlipBuffers(1)
    ExamineMouse()
    DisplaySprite(0,0,0)
    ExamineKeyboard()
    xm = MouseX()
    ym = MouseY()
    DisplayTransparentSprite(1, xm, ym)
    DisplayTransparentSprite(0, spielx, spiely)
    DisplayTransparentSprite(0, highx, highy)
    DisplayTransparentSprite(0, exitx, exity)
    If MouseButton(1) And SpriteCollision(0,spielx,spiely,1,xm,ym)
      ;PlaySound(2,0)
      ClearScreen(0,0,0)
      DisplayTransparentSprite(1, xm, ym)
      Debug "b";RunProgram("spiel.exe","","")
      CloseScreen()
      End
      EndIf
    If MouseButton(1) And SpriteCollision(0,highx,highy,1,xm,ym)
      ClearScreen(0,0,0)
      DisplayTransparentSprite(1, xm, ym)
      Debug "a";RunProgram("highscore.exe","","")
      CloseScreen()
      End
    EndIf
    If MouseButton(1) And SpriteCollision(0,exitx,exity,1,xm,ym)
      ClearScreen(0,0,0)
      DisplayTransparentSprite(1, xm, ym)
      Debug "c"
      End
    EndIf
  Until KeyboardPushed(#PB_Key_Escape)
  End
EndIf
End 
Läuft problemlos bei mir :?

Verfasst: 19.01.2006 18:32
von Maikel
wenn ich stat runprogram() z.b. den befehl disyplaytransperentsprit(255,0,0) benutze, dann wird das bild auch auf nicht transperent geändert.

also denke ich, das dass irgendwie mit runprogram() zusammen hängt

Verfasst: 19.01.2006 19:41
von PMV
Ich frag mich grade, was du vor hast :D

Ein Menü welches durch anklicken weitere Programme startet? Eher
unpraktisch für Spiele. Benutzte doch Prozeduren.

Vielleicht versteh ich aber auch überhaupt nicht was du vor hast oder du
hast was ganz anders gemacht als du wolltest :lol: .

Wie auch immer, einem Sprite wird mit dem Befehl
TransparentSpriteColor() eine transparente Farbe zugewiesen. Das
bedeutet alle Pixel des Sprites, welche die angegebene Farbe haben
werden bei dem Befehl DisplayTransparentSprite() nicht dargestellt. (gillt
natürlich auch für die Pixelcollision)

Ansonnsten ist mir schleierhaft, was du vor hast oder wo dein problem
liegt :|

MFG PMV