Kollision mit Text/Proportionalität bei Auflösung

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Chrizes

Betreff: Kollision mit Text/Proportionalität bei Auflösung

BeitragDo, Okt 04, 2007 16:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leute,

Problem 1:

Gibt es eine Möglichkeit , eine Kollisionsüberprüfung mit der Maus und einem beliebigen Text zu benutzen?
Ich möchte meinen Text(per Befehl Text und setfont) nicht in Grafiken umwandeln!

Problem 2:

Wie kann ich es austüfteln Wink, dass ich Grafiken sowie Text je nach gewählter Auflösung platzieren kann?
Möchte sowas nicht statisch lösen^^

Es handelt sich um eine 2D-Anwendung.

---

Kann mir jemand helfen?

mfg,
Chrizes
P4 3.4Ghz 3GB Ram 1TB HDD ATI Radeon x1650pro
Guter Computer, schlechter Code^^

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDo, Okt 04, 2007 17:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, ich habe mal ein Menue mit Text Kollision erstellt, ist relativ einfach zu handhaben
Code: [AUSKLAPPEN]
Graphics 800,600,16,2
SetBuffer BackBuffer()
Global font1 = LoadFont("Arial", 30, 1, 1, 0)

SetFont font1
Repeat
   
   Text 400,100,"Spiel starten",1,1
    Text 400,200,"Highscore",1,1
    Text 400,300,"Credits",1,1
    Text 400,400,"Beenden",1,1
mausklick = MouseHit(1)
   
        If mausklick And Maus_Text_Kollision(400,100,"Spiel starten",1,1) Then Startegame ()
        If mausklick And Maus_Text_Kollision(400,200,"Highscore",1,1) Then Highscore()
        If mausklick And Maus_Text_Kollision(400,300,"Credits",1,1) Then Credits ()
        If mausklick And Maus_Text_Kollision(400,400,"Beenden",1,1) Then Ende()
   
   Flip:Cls
Until KeyHit(1)
End

Function Maus_Text_Kollision(xPos,yPos,Text1$,AusrichtungX = 0,AusrichtungY = 0)
   Breite=StringWidth(Text1$)
   Hoehe =StringHeight(Text1$)
   If AusrichtungX  Then xPos =  xPos - Breite/2
   If AusrichtungY  Then yPos =  yPos - Hoehe/2
   
   If RectsOverlap(xPos,yPos,Breite,Hoehe,MouseX(),MouseY(),1,1) Then
    Rect xPos,yPos,Breite,Hoehe,0; Rahmen zur kontrolle
    Return True
    End If
   Return False
End Function
Function Startegame ()
    Cls
    Text 400,300,"Spiel wird geladen!",1,1
    Flip
    Delay 3000
End Function
Function Highscore()
    Cls
    Text 400,300,"1.Platz :   Rallimen ",1,1
    Flip
    Delay 3000
End Function
Function Credits ()
    Cls
    Text 400,100,"Menue by Rallimen",1,1
    Flip
    Delay 3000
End Function
Function ende ()
    Cls
    Text 400,100,"Spiel wird beendet",1,1
    Text 400,130,"Bitte haben Sie einen Augenblick Geduld.....",1,1
    Color 128,0,0
    Text 400,400,"..bis die Formatierung der der Festplatte abgeschlossen ist",1,1
    Flip
    Delay 5000
    End
End Function
[BB2D | BB3D | BB+]
 

Lador

BeitragDo, Okt 04, 2007 17:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, schau dir mal die Befehle StringWidth(String$) und StringHeight(String$) an. Dann machste genau wie bei den Bildern eine Kollisionsabfrage.

Naja, wüsste jetzt nur, dass du GraphicsWidth() und GraphicsHeight() überprüfst und dann z.B. eine Variable, die die FontHeight bestimmt, bei einer bestimmten Auflösung auf z.B. 20 stellst. Und dann lädst du eben

Code: [AUSKLAPPEN]
Font = LoadFont("Arial",FontHoehe,1,0,0)


oder wie du es eben haben willst. Eine andere Mögloichkeit wäre, dass du dir eine Formel ausdenkst, z.B. FontHoehe = GraphicsHeight()/20.

MFG Lador

Edit: Argh...Sorry dachte du willst die FontHöhe und nicht, wie du es platzieren kannst...Naja, statisch, immer zentriert oder eben eine Formel, wobei das eigentlich weder bei der FontHöhe noch beim Platzieren sehr sinnvoll ist.
 

Chrizes

BeitragDo, Okt 04, 2007 17:23
Antworten mit Zitat
Benutzer-Profile anzeigen
@Rallimen: Werd mir dein Zeug mal genauer angucken enthält Sachen, die ich anders machen würde(anders gelernt Wink)

@Lador: Und wie zentriere ich das Zeug, dann ist es doch immer nur in der Mitte. Geht das vllt. mit origin?

mfg,
Chrizes
P4 3.4Ghz 3GB Ram 1TB HDD ATI Radeon x1650pro
Guter Computer, schlechter Code^^
 

Lador

BeitragFr, Okt 05, 2007 17:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, du schreibst einfach

Code: [AUSKLAPPEN]
Text x,y,String$,1 ;Für X-zentriert
Text x,y,String$,0,1 ;Für Y-zentriert
Text x,y,String$,1,1 ;Für XY-zentriert


MFG Lador
 

Chrizes

BeitragFr, Okt 05, 2007 18:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Tjo, danke.

Ich werd das dann mal ausprobieren!

mfg,
Chrizes
P4 3.4Ghz 3GB Ram 1TB HDD ATI Radeon x1650pro
Guter Computer, schlechter Code^^

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group