Problem mit hauptmenü

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

krux

Betreff: Problem mit hauptmenü

BeitragSa, Aug 27, 2005 22:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich krieg das Haupmenü für mein game einfach nicht hin. Das game ist schon zu 100% fertig und hat sogar schon nen Leveleditor. Nur krieg ich das Hauptmenü nicht hin. Zur zeit benutz ich so nen Preudo Haupmenü mit Drücken sie die 1 um ein Lvl auszuwählen oder die 2 um das spiel zu beenden. Aber wie bekomme ich ein Haupmenü hin mit knöpfen die imer aufleuchten wenn ich mit der maus drüberherfahre?

Mein größtes problem ist wie mach ich das bei einer unbestimmten anzahl an knöpfen (Lvl auswählen)

Firstdeathmaker

BeitragSa, Aug 27, 2005 22:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Kennst du dich mit Types aus?

Du kannst einen Schaltertype definieren, in diesem den Befehl den er ausführen soll als String speichern und nachher, wenn der Schalter gedrückt wird, den String parsen und umsetzen. So kannst du auch X-Schalter für Level erzeugen und diese dann nachher auch abrufen.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

Florian

BeitragSa, Aug 27, 2005 23:25
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]


Type TSchalter
Field transparent

Field X,Y
Field X2,Y2

Field Image
Field Sound

Field Status
Field Name$
Field Wert
End Type

Global Schalter.TSchalter

Global MausImage
Global AktionSchalterWert
Global AktionSchalterName$
Global ChannelID_Schalter

Image=LoadAnimImage(\"C:\Abbrechen.bmp\",160,39,0,3)
Sound=LoadSound(\"C:\Abbruch.wav\")


NewSchalter 100,100,Image,Sound,0,\"MeinSchalter\",56

MausImage=LoadImage(\"C:\pointer.bmp\")

Timer=CreateTimer(30)

HidePointer
Repeat
Cls
UpdateSchalter
WaitTimer Timer
Forever

Function UpdateSchalter()
MausUeberSchalter
DrawSchalter
DrawMaus
End Function

Function DrawMaus()
DrawImage MausImage,MouseX(),MouseY()
End Function

Function NewSchalter(X,Y,Image,Sound,transparent,Namne$,Wert)

Schalter=New TSchalter
Schalter\X=X
Schalter\Y=Y
Schalter\Image=Image
Schalter\Sound=Sound

Schalter\Name$=Name$
Schalter\Wert=Wert

Schalter\X2=ImageWidth(Image)
Schalter\y2=ImageHeight(Image)

End Function

Function DeleteSchalter2(Name$)
For Schalter=Each TSchalter
If Upper(Schalter\Name$)=Upper$(Name$) Then

If Schalter\Image<>0 Then FreeImage Schalter\Image
If Schalter\Sound<>0 Then FreeImage Schalter\Sound
Delete Schalter

End If
Next
End Function

Function DeleteSchalter(Wert)
For Schalter=Each TSchalter
If Schalter\Wert=Wert Then

If Schalter\Image<>0 Then FreeImage Schalter\Image
If Schalter\Sound<>0 Then FreeImage Schalter\Sound
Delete Schalter

End If
Next
End Function

Function DrawSchalter()
For Schalter=Each TSchalter
If Schalter\transparent=True Then
DrawImage Schalter\Image,Schalter\X,Schalter\Y,Schalter\Status
Else
DrawBlock Schalter\Image,Schalter\X,Schalter\Y,Schalter\Status
End If
Next
End Function

Function MausUeberSchalter()
MausX=MouseX()
Mausy=MouseY()

MausTaste=MouseDown(1)

For Schalter=Each TSchalter

If Schalter\transparent=True Then
If ImagesCollide(MausImage,Mausx,MausY,0,Schalter\Image,Schalter\X,Schalter\Y,0) And AktionSchalterWert=0 Then
If MausTaste=True Then
Schalter\Status=2

AktionSchalterWert=Schalter\Wert
AktionSchalterName$=Schalter\Name$

Else
Schalter\Status=1
End If
Else
If AktionSchalterWert<>Schalter\Wert Then
Schalter\Status=0
End If
End If
Else
If ImageRectCollide(MausImage,Mausx,MausY,0,Schalter\X,Schalter\Y,Schalter\X2,Schalter\Y2) And AktionSchalterWert=0 Then
If MausTaste=True Then
Schalter\Status=2

AktionSchalterWert=Schalter\Wert
AktionSchalterName$=Schalter\Name$

Else
Schalter\Status=1
End If
Else
If AktionSchalterWert<>Schalter\Wert Then
Schalter\Status=0
End If
End If
End If

If Schalter<>Null Then
If Schalter\Status=2 Then
If ChannelID_Schalter=0 Then
If Schalter\Sound<>0 Then
ChannelID_Schalter=PlaySound(Schalter\Sound)
End If
End If
End If
End If
Next
End Function


Function Reset_Schalter()
If ChannelID_Schalter<>0 Then
If ChannelPlaying(ChannelID_Schalter)=True Then
Return False
End If
End If

ChannelID_Schalter=0
AktionSchalterWert=0
AktionSchalterName$=\"\"
Return True
End Function

Function Upper$(S$)
Slen=Len(S)
If Slen>0 Then
For P=1 To Slen
ASCII=Asc(Mid$(S$,P,1))
If Ascii>96 And Ascii<123 Then
Ascii=Ascii-32
ElseIf Ascii=252 Then
Ascii=220
ElseIf Ascii=228 Then
Ascii=196
ElseIf Ascii=246 Then
Ascii=214
End If
R$=R$+Chr$(ASCII)
Next
Return R$
End If
End Function

 

krux

BeitragSa, Aug 27, 2005 23:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja mit Types kenn ich mich aus, aber wie kann ich den Schaltern eine Finktion zuweisen? Ich glaub in einer Textvariable geht das schlecht.
 

krux

BeitragSa, Aug 27, 2005 23:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Florian hat Folgendes geschrieben:
BlitzBasic: [AUSKLAPPEN]

Verdammt viel quellcode


Danke das du dir so verdammt viel mühe gegeben hast einen verdammt langen Quellcode zu schreiben, aber du hast keinerlei kommentare und überhauptnichts dazu geschrieben, könntest du das bitte nachholen?

Eigentlich wollte ich auch hinweise ham, wie ich mein quellcode selberschreiben kann, denn sonst kann ich nicht sagen dass ichs selber gemacht hab und ich ich muss mich viel zu lange in deinen code einarbeiten
 

Florian

BeitragSa, Aug 27, 2005 23:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier sind die Grafik- und Sounddateien und der Quelltext mit Update:

http://www.blitz-pasting.net/i...amp;id=245




Type TSchalter
Field transparent

Field X,Y ;Position des Schalters
Field X2,Y2

Field Image ;Animationsbild des Schalters (3 Bilder)
; Bild 1 Schalter Normal
; Bild 2 Maus über Schalter
; Bild 3 Maus hat Schalter ausgewählt

Field Sound

Field Status
;0 Status Schalter normal
;1 Status Maus über Schalter
;2 Maus hat Schalter ausgewählt

Field Name$
;Man kann den Schalter einen namen geben und mit den Namen kann
;man testen ob der Schalter ausgewählt wurde.
;Der Name$ hat keine andere Aufgabe als diese.

;If AktionSchalterName$="MeinSchalter" then
;.....
;end if

Field Wert

;wenn ein Schalter gedrückt wird dann wird der Wert
;in AktionSchalterWert gespeichert.

;Der AktionSchalterWert stellt eine Aktion da, die ausgeführt wird, wenn
;der Schalter gedrückt wird.(Mehrere Schalter können die gleiche Aktion
;ausführen



;Wert muss <>0 sein.
;wenn AktionSchalterWert=0 dann ist kein Schalter gedückt


;Ist der Wert=0 dann

End Type


Global Schalter.TSchalter

Global MausImage ;geladenes Image
;LoadAnimImage("pointer.bmp",11,19,0,2)
;Image1 Maus nicht über Schalter
;Image2 Maus über Schalter

Global MausImageNr

Global AktionSchalterWert ;AktionSchalterWert<>0 dann
;ist einen Schalter auswähl

Global AktionSchalterName$


Global ChannelID_Schalter ;wird zum abspielens des Sounds
;benutzt wenn ein Schalter gedrückt ist.




Functions:
UpdateSchalter
(MausUeberSchalter)
(DrawSchalter)
(DrawMaus)

NewSchalter(X,Y,Image,Sound,transparent,Namne$,Wert)
X und Y sind die Positionen des Schalters.

Beispiel für Image:
Image=LoadAnimImage("OK.bmp",160,39,0,3)

;Animationsbild des Schalters (3 Bilder)
; Bild 1 Schalter normal
; Bild 2 Maus über Schalter
; Bild 3 Maus hat Schalter ausgewählt

Sound ist eine geladene sound-Datei.

Beispiel:

Sound=LoadSound("Klick.wav")
  • Zuletzt bearbeitet von Florian am So, Aug 28, 2005 17:47, insgesamt 3-mal bearbeitet

Firstdeathmaker

BeitragSo, Aug 28, 2005 1:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab auch mal was dazu geschrieben:

http://www.blitz-pasting.net/i...amp;id=246
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

krux

BeitragSo, Aug 28, 2005 17:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Firstdeathmaker hat Folgendes geschrieben:
Hab auch mal was dazu geschrieben:

http://www.blitz-pasting.net/i...amp;id=246


danke für dein code aber wie benutze ich deine schalter? und wiso stellst du so ne komische bedingung Code: [AUSKLAPPEN]
If Instr(auswahl$,"Test")
(ist in der test.bb datei
 

Florian

BeitragSo, Aug 28, 2005 17:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Update:

http://www.blitz-pasting.net/i...amp;id=250

BlitzBasic: [AUSKLAPPEN]


Type TSchalter
Field Bezeichnung$
Field AlternativeBezeichnung$
Field BezeichnungFarbe

Field transparent

Field X,Y
Field XZ,YZ
Field X2,Y2

Field Image
Field Sound

Field Status
Field Name$
Field Wert
End Type

Type TButton
Field Name$
Field Image
Field transparent
Field ImageMaske
Field LadenAbBild

Field Breit,Hoch

Field DateiName$

End Type

Global Schalter.TSchalter
Global Button.TButton

Global SchalterSchrift
Global SchalterSchriftName$

Global MausImage
Global MausImageNr
Global MausDatei$
Global MausBreit
Global MausHoch

Global ChannelID_Schalter

Global AktionSchalterWert
Global AktionSchalterName$

Global MausUeberSchalterWert
Global MausUeberSchalterName$


Inst_Schalter \"Arial\",28,\"pointer.bmp\",11,19

LoadButton \"Abbrechen.bmp\",\"Abbrechen\",160,39
LoadButton \"OK.bmp\",\"OK\",160,39
LoadButton \"Loeschen.bmp\",\"Löschen\",160,39

CreateSchalter 100,200,\"Start\",\"Start\",\"loeschen.wav\",\"Start\",4,farbe(255,255,0)

Timer=CreateTimer(30)
ClsColor 0,0,255
HidePointer
Repeat
Cls
UpdateSchalter

Select AktionSchalterName$
End Select

Select MausUeberSchalterName$
End Select

Reset_Schalter
WaitTimer Timer
Forever

Function CreateSchalter(X,Y,ButtonName$,Bezeichnung$,SoundDatei$,Namne$,Wert,BezeichnungFarbe=255*255*255,AlternativeBezeichnung$=\"\")
If Len(AlternativeBezeichnung$)>0 Then
If Len(Bezeichnung$)>0 Then
AlternativeBezeichnung$=Bezeichnung$
Else
If Len(ButtonName$)>0 Then
AlternativeBezeichnung$=ButtonName$
Else
Return False
End If
End If
End If

ButtonName$=Upper$(ButtonName$)
For Button=Each TButton
If ButtonName$=Upper$(Button\Name$) Then
NewSchalter X,Y,Button\Image,Bezeichnung$,Button\transparent,LoadSound(SoundDatei$),Namne$,Wert,BezeichnungFarbe,AlternativeBezeichnung$
Return True
End If
Next

NewSchalter X,Y,0,Bezeichnung$,False,LoadSound(SoundDatei$),Namne$,Wert,BezeichnungFarbe,AlternativeBezeichnung$

End Function

Function NewSchalter(X,Y,Image,Bezeichnung$,transparent,Sound,Namne$,Wert,BezeichnungFarbe=255*255*255,AlternativeBezeichnung$=\"\")
If Image=0 And Len(Bezeichnung$)=0 And Len(AlternativeBezeichnung$)=0 Then
Return False
End If

Schalter=New TSchalter

Schalter\Image=Image
Schalter\Sound=Sound

Schalter\Name$=Name$
Schalter\Wert=Wert

Schalter\X=X
Schalter\Y=Y


Schalter\Bezeichnung$=Bezeichnung$
Schalter\BezeichnungFarbe=BezeichnungFarbe

If Len(AlternativeBezeichnung$)=0 Then
Schalter\AlternativeBezeichnung$=Schalter\Bezeichnung$
Else
Schalter\AlternativeBezeichnung$=AlternativeBezeichnung$
End If

If Image=0 Then
Schalter\X2=StringWidth(Schalter\AlternativeBezeichnung$)
Schalter\Y2=StringHeight(Schalter\AlternativeBezeichnung$)
Else
Schalter\X2=ImageWidth(Image)
Schalter\y2=ImageHeight(Image)
End If


Schalter\XZ=Schalter\X2-(Schalter\X2/2)+X
Schalter\YZ=Schalter\Y2-(Schalter\Y2/2)+Y



Return True
End Function

Function Inst_Schalter(Schrift$,SchriftHoch,MausDateiname$,Breit,Hoch)
MausImage=LoadAnimImage(MausDateiname$,Breit,Hoch,0,2)
If MausImage<>\"\" Then
MausDatei$=MausDateiname$
MausBreit =Breit
MausHoch =Hoch
End If

SchalterSchrift=LoadFont(Schrift$,SchriftHoch)
SchalterSchriftName$=Schrift$
SetFont SchalterSchrift
End Function

Function LoadButton(DateiName$,Name$,Breit,Hoch,transparent=False,ImageMaske=0,LadenAbBild=0)
Image=LoadAnimImage(DateiName$,Breit,Hoch,LadenAbBild,3)
If Image=0 Then Return False

Button=New TButton
Button\Image=Image
Button\Name$=Name$
Button\Breit=Breit
Button\Hoch=Hoch
Button\transparent=transparent
Button\LadenAbBild=LadenAbBild
Button\DateiName$=DateiName$
Button\ImageMaske=ImageMaske

MaskImage Image,GetRed(ImageMaske),GetGreen(ImageMaske),GetBlue(ImageMaske)
Return True
End Function

Function DeleteButton(ButtonName$)
For Button=Each TButton
If ButtonName$=Button\Name$ Then
For Schalter=Each TSchalter
If Button\Image=Schalter\Image Then
Delete Button
Return True
End If
Next
FreeImage Button\Image
Delete Button
Return True
End If
Next
Return False
End Function


Function UpdateSchalter()
MausUeberSchalter
DrawSchalter
DrawMaus
End Function

Function DeleteSchalter2(Name$)
For Schalter=Each TSchalter
If Upper(Schalter\Name$)=Upper$(Name$) Then

If Schalter\Image<>0 Then FreeImage Schalter\Image
If Schalter\Sound<>0 Then FreeImage Schalter\Sound
Delete Schalter

End If
Next
End Function

Function DeleteSchalter(Wert)
For Schalter=Each TSchalter
If Schalter\Wert=Wert Then

If Schalter\Image<>0 Then FreeImage Schalter\Image
If Schalter\Sound<>0 Then FreeImage Schalter\Sound
Delete Schalter

End If
Next
End Function



Function Reset_Schalter()
If ChannelID_Schalter<>0 Then
If ChannelPlaying(ChannelID_Schalter)=True Then
Return False
End If
End If

ChannelID_Schalter=0
AktionSchalterWert=0
AktionSchalterName$=\"\"
Return True
End Function

Function DrawSchalter()
For Schalter=Each TSchalter
If Schalter\Image<>0 Then
If Schalter\transparent=True Then
DrawImage Schalter\Image,Schalter\X,Schalter\Y,Schalter\Status
Else
DrawBlock Schalter\Image,Schalter\X,Schalter\Y,Schalter\Status
End If
If Len(Schalter\Bezeichnung$)>0 Then
ColorI Schalter\BezeichnungFarbe
Text Schalter\XZ,Schalter\YZ,Schalter\Bezeichnung$,True,True
End If
Else
ColorI Schalter\BezeichnungFarbe
Text Schalter\XZ,Schalter\YZ,Schalter\AlternativeBezeichnung$,True,True
End If
Next
End Function

Function MausUeberSchalter()
MausImageNr=0
MausX=MouseX()
Mausy=MouseY()

MausUeberSchalterWert=0
MausUeberSchalterName$=\"\"

MausTaste=MouseDown(1)

For Schalter=Each TSchalter
If Schalter\Image<>0 Then
If Schalter\transparent=True Then
If ImagesCollide(MausImage,Mausx,MausY,0,Schalter\Image,Schalter\X,Schalter\Y,0) And AktionSchalterWert=0 Then
MausImageNr=1
If MausTaste=True Then
Schalter\Status=2

AktionSchalterWert=Schalter\Wert
AktionSchalterName$=Schalter\Name$

Else
Schalter\Status=1

MausUeberSchalterWert=Schalter\Wert
MausUeberSchalterName$=Schalter\Name$

End If
Else
If AktionSchalterWert<>Schalter\Wert Then
Schalter\Status=0
End If
End If
Else
If ImageRectCollide(MausImage,Mausx,MausY,0,Schalter\X,Schalter\Y,Schalter\X2,Schalter\Y2) And AktionSchalterWert=0 Then
MausImageNr=1
If MausTaste=True Then
Schalter\Status=2

AktionSchalterWert=Schalter\Wert
AktionSchalterName$=Schalter\Name$

Else
Schalter\Status=1

MausUeberSchalterWert=Schalter\Wert
MausUeberSchalterName$=Schalter\Name$

End If
Else
If AktionSchalterWert<>Schalter\Wert Then
Schalter\Status=0
End If
End If
End If
Else

If ImageRectCollide(MausImage,Mausx,MausY,0,Schalter\X,Schalter\Y,Schalter\X2,Schalter\Y2) And AktionSchalterWert=0 Then
MausImageNr=1
If MausTaste=True Then
Schalter\Status=2

AktionSchalterWert=Schalter\Wert
AktionSchalterName$=Schalter\Name$

Else
Schalter\Status=1

MausUeberSchalterWert=Schalter\Wert
MausUeberSchalterName$=Schalter\Name$

End If
Else
If AktionSchalterWert<>Schalter\Wert Then
Schalter\Status=0
End If
End If

End If

If Schalter<>Null Then
If Schalter\Status=2 Then
If ChannelID_Schalter=0 Then
If Schalter\Sound<>0 Then
ChannelID_Schalter=PlaySound(Schalter\Sound)
End If
End If
End If
End If

Next
End Function


Function DrawMaus()
DrawImage MausImage,MouseX(),MouseY(),MausImageNr
End Function

Function Upper$(S$)
Slen=Len(S)
If Slen>0 Then
For P=1 To Slen
ASCII=Asc(Mid$(S$,P,1))
If Ascii>96 And Ascii<123 Then
Ascii=Ascii-32
ElseIf Ascii=252 Then
Ascii=220
ElseIf Ascii=228 Then
Ascii=196
ElseIf Ascii=246 Then
Ascii=214
End If
R$=R$+Chr$(ASCII)
Next
Return R$
End If
End Function

Function Farbe(r,g,B)
Return r*$10000 + g*$100 + b
End Function

Function ColorI(I)
Color (I And $FF0000)/$10000,(I And $FF00)/$100,I And $FF
End Function

Function GetRed(I)
Return (I And $FF0000)/$10000
End Function

Function GetGreen(I)
Return (I And $FF00)/$100
End Function

Function GetBlue(I)
Return I And $FF
End Function

Firstdeathmaker

BeitragSo, Aug 28, 2005 20:00
Antworten mit Zitat
Benutzer-Profile anzeigen
@ krux:

BlitzBasic: [AUSKLAPPEN]
auswahl$=SCH_LOOP(MouseX(),MouseY(),MouseHit(1),\"\",\"\")
If Instr(auswahl$,\"Test\")
Last_schalter$=auswahl
EndIf


Ist eigentlich recht simpel: die erste Zeile liefert den Schalternamen als String zurück und speichert ihn in der Variable "auswahl". Dann frage ich ab ob in dem String das Wort "Test" vorkommt. Das ist deshalb, weil die Funktion SCH_LOOP() wenn kein Schalter gedrückt wird, auch nichts zurück liefert, und in der Variable Last_schalter$ ja der zuletzt gedrückte Schalter abgespeichert werden soll.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group