[BB2D]Einfache "Schalterengine"

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Firstdeathmaker

Betreff: [BB2D]Einfache "Schalterengine"

BeitragMo, Apr 04, 2005 16:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier einen kleinen Code um einfach Schalter in sein Programm einzubauen. Es ist recht flexibel, man kann Schalter zu Gruppen zusammenfassen, was einem die Möglichkeit gibt ganze Gruppen zu löschen oder nur einzelne Gruppen anzeigen zu lassen.

Features:

- 2 Images für Schalter (Nicht berührt und berührt)
- 2 Sounds (Berühren, Schalter angeklickt)
- Schaltergruppen

Beispiel und danach die SCHalter.bb zu einbinden:

BlitzBasic: [AUSKLAPPEN]
Graphics 800,600,32,2

Include "SCHalter.bb"

image1=CreateImage(100,50)
SetBuffer ImageBuffer(image1)
Cls
Color 255,255,255
Rect 0,0,100,50
Color 0,0,100
Rect 1,1,98,48
SaveImage image1,"image1.bmp"
image2=CreateImage(100,50)
SetBuffer ImageBuffer(image2)
Cls
Color 255,255,255
Rect 0,0,100,50
Color 0,0,255
Rect 1,1,98,48
SaveImage image2,"image2.bmp"
SetBuffer BackBuffer()
Color 255,255,255


For i=0 To 5
SCH_create("Test"+i,"Test"+i,100,100+i*52,"image1.bmp","image2.bmp","","",1,1)
Next


Repeat
Cls
auswahl$=SCH_LOOP(MouseX(),MouseY(),MouseHit(1),"","")
If Instr(auswahl$,"Test")
Last_schalter$=auswahl
EndIf

Text 10,10,"Zuletzt gedrückter Schalter: "+Last_schalter

Flip
Until KeyHit(1)
End


BlitzBasic: [AUSKLAPPEN]
; SCHalter.bb by Christian Geißler
;Version 1.0


Type SCH_schalter
Field bezeichnung$
Field Schrift$
Field x
Field y
Field smx
Field smy
Field image1
Field image2
Field sound1
Field sound2
Field art$
Field overlapped; Ob der Schalter die letzte Runde auch schon berührt wurde.
End Type

Global SCH_Soundchannel
Global SCH_beruehrt$


;Erstellt einen Schalter. Die Bezeichnung wird nachher aus der SCH_LOOP zurückgegeben wenn der Schalter gedrückt wird.
;Die Schrift ist der Text, der auf dem Schalter angegeben wird. Wird nur für Testzwecke bebraucht. Ansonsten "" angeben.
;x,y, ist die Position des Schalters auf dem Bildschirm.
;Image 1 ist das normal angezeigte Bild, Image 2 wird angezeigt wenn der Schalter berührt wird.
;Sound 1 wird beim Schalterberühren abgespielt, Sound 2 wenn der Schalter gedrückt wurde.
;Die Art ist wichtig, wenn man nur bestimmte Gruppen löschen oder anzeigen möchte, ansonsten einfach 0 eintragen.


Function SCH_CREATE(Bezeichnung$,Schrift$,x,y,image1$,image2$,sound1$,sound2$,art$,middle=0)
SCH_schalter.SCH_schalter=New Sch_schalter
SCH_schalter\bezeichnung=bezeichnung
SCH_schalter\schrift=schrift
SCH_schalter\x=x
SCH_schalter\y=y
SCH_schalter\image1=LoadImage(image1)
SCH_schalter\image2=LoadImage(image2)
MaskImage SCH_schalter\image1,255,0,255
MaskImage SCH_schalter\image2,255,0,255

SCH_schalter\smx=ImageWidth(SCH_schalter\image1)/2
SCH_schalter\smy=ImageHeight(SCH_schalter\image1)/2
If middle
MidHandle SCH_schalter\image1
MidHandle SCH_schalter\image2
SCH_schalter\smx=0
SCH_schalter\smy=0
EndIf
SCH_schalter\smx=SCH_schalter\x+SCH_schalter\smx
SCH_schalter\smy=SCH_schalter\y+SCH_schalter\smy
SCH_schalter\sound1=LoadSound(sound1)
SCH_schalter\sound2=LoadSound(sound2)
SCH_schalter\art=art
Return Handle(SCH_schalter.SCH_schalter)
End Function




Function SCH_DELETE(bezeichnung$="",art$="")
Local SCH_c=0
For SCH_schalter.SCH_schalter=Each SCH_schalter
If Instr(SCH_schalter\bezeichnung,bezeichnung) And SCH_schalter\art=art
SCH_c=SCH_c+1
FreeImage SCH_schalter\image1
FreeImage SCH_schalter\image2
FreeSound SCH_schalter\sound1
FreeSound SCH_schalter\sound2
Delete SCH_schalter.SCH_schalter
EndIf
Next
Return SCH_c
End Function






Function SCH_LOOP$(Mx,My,Mhit,bezeichnung$="",art$="");Zum einzeichnen
;der ganzen Schalter und zur Rückgabe wenn ein Schalter gedrückt wurde
SCH_beruehrt=""
Local SCH_rueckgabe$=""
For SCH_schalter.SCH_schalter=Each SCH_schalter
If Instr(SCH_schalter\bezeichnung,bezeichnung) And Instr(SCH_schalter\art,art)
If ImageRectCollide (SCH_schalter\image2,SCH_schalter\x,SCH_schalter\y,0,Mx,My,1,1)
SCH_beruehrt=SCH_schalter\bezeichnung
If SCH_schalter\overlapped=0
SCH_schalter\overlapped=1
If SCH_schalter\sound1<>0 SCH_Soundchannel=PlaySound(SCH_schalter\sound1)
EndIf
DrawImage SCH_schalter\image2,SCH_schalter\x,SCH_schalter\y
Text SCH_schalter\smx,SCH_schalter\smy,SCH_schalter\Schrift,1,1
If Mhit
SCH_rueckgabe=SCH_schalter\bezeichnung
If SCH_schalter\sound2<>0 SCH_Soundchannel=PlaySound(SCH_schalter\sound2)
EndIf
Else
DrawImage SCH_schalter\image1,SCH_schalter\x,SCH_schalter\y
Text SCH_schalter\smx,SCH_schalter\smy,SCH_schalter\Schrift,1,1
SCH_schalter\overlapped=0
EndIf
EndIf
Next
Return SCH_rueckgabe
End Function
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
  • Zuletzt bearbeitet von Firstdeathmaker am Sa, Apr 22, 2006 11:13, insgesamt einmal bearbeitet
 

feider

ehemals "Decelion"

BeitragMi, Apr 06, 2005 20:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Süüüß - Ein MiniGUIchen!

Smile

Nee, gut gemacht.
Das ist zwar nicht vom Hocker reissend, aber dennoch nützlich!

Schööön!
Smile


cu
wammerl

Firstdeathmaker

BeitragMi, Apr 06, 2005 21:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab leider kein Blitz+, deshalb brauche ich so etwas eben. Hat sich bisher schon vielfach bewährt... Wink
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Blitzcoder

Newsposter

BeitragSa, Apr 09, 2005 14:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Geil! Very Happy

Daraus leasst sich sicher Leicht ein Hauptmenue baun(Wenn man zu faul ist, alles selber zu machen Wink )

Artemis

BeitragSa, Apr 09, 2005 20:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Jupp Nice!
Das kannste auch als Button Benutzen!
 

Apocalyptic

BeitragSa, Apr 09, 2005 21:35
Antworten mit Zitat
Benutzer-Profile anzeigen
JonasCleve hat Folgendes geschrieben:
Das kannste auch als Button Benutzen!


Und was meinst du, was mit "Schalter" gemeint ist? Rolling Eyes
Suum cuique

[ www.ffs-net.de.vu ] [ Raycaster ]

Firstdeathmaker

BeitragMo, Apr 11, 2005 15:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Wink

ratet mal wofür ich das benutze...
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

feider

ehemals "Decelion"

BeitragMo, Apr 11, 2005 17:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Als Plasma-Neutronenkanone?

Firstdeathmaker

BeitragDi, Apr 12, 2005 17:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie hast du das erraten? Laughing
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Artemis

BeitragDi, Apr 12, 2005 19:57
Antworten mit Zitat
Benutzer-Profile anzeigen
*hääähh heul wein*
alle so gemein zu mir
Laughing

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group