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 !!

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
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

.
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