Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

19.10.2006, 11:00

Menübutton

hi,

ich melde mich mal wieder zu wort :)

ich hab vor mir ein hauptmenü zu basteln aus dem später vielleicht mal Quake 5 oder so werden soll. nix schweres nur ein menü mit hintergrund und 2 buttons die man mit der maus klicken kann.
reicht es jetzt wenn ich einfach mit photoshop 2 buttons erstelle und die auf den hintergrund draufklatsche oder muss ich das so wie david in galactica mit GUI und allem drum und dran machen?
oder vielleicht gibts auch ne ganz andere lösung, ihr seid gefragt :o)

big_muff

Alter Hase

Beiträge: 460

Wohnort: Schweiz

Beruf: Informatikstudent (4. Semester)

  • Private Nachricht senden

2

19.10.2006, 11:36

Wenn du nur ein Hintergrund und zwei Buttons darstellen willst, brauchst du sicher keine GUI-Klasse.
Mache von jedem Button einfach eine normale und eine gedrückte Version, dann die Maus verarbeiten und gut ist.
Allerdings denke ich könnte es nicht schaden eine kleine "Button"-Kalsse zu schreiben, allerdings geht das auch ohne, aber wenn daraus mal Quake 5 werden soll ;) wirst du sicher noch mehr Knöpfe brauchen und dann wird dir eine Klasse die dir das abnimmt sehr helfen, ausserdem ist es auch sicher eine gute Übung und sehr schwer ist es ja auch nicht...
Nur Idioten halten Ordnung, ein Genie beherrscht das Chaos.[size=7]

[/size]HardFate - Ein Start, Ein Ziel, Viele Wege[size=7]

[/size]Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

3

20.10.2006, 16:18

Ich habe mir den galactica Source nicht angeschaut, aber scheinbar ist momentan tatsächlich die Standardmetjode GUIs zu erstellen in der Spieleindustrie, etwas selbst zu schreiben, was die 3D Grafikbibliothek (also DirectX, OpenGL etc) zum Rendern nimmt sodass es leicht portabel ist auf alles, was diese unterstützt (oder der Teil wird sogar per Callbacks gemacht), wie Du sagst wird das Aussehen per Bitmaps geregelt sodass Artists möglichst viel ohne Programmiererhilfe machen können und es wird ein kleines Eventhandling Modul geschrieben. Der Effekt ist das mal wieder alle das Rad neu erfinden :? aber es ist recht einfach (der das für uns machen wird schätzt <= 2 Monate für ein professionelles System) und hat wie gesagt etliche Vorteile. Wenn Du im wesentlichen nur einen "Widget Type" hast ist es noch einfacher. Ich sehe keinerlei Grund, es nicht OO zu machen. Ich denke es ist nicht viel Arbeit, es erweiterbar auf weitere Typen (static, listbox, combobox, checkmark, radiobuttons etc) zu machen, insofern würde ich mir da auch Gedanken drüber machen.

Ich sehe es also sehr ähnluch wie big_muff.
"Games are algorithmic entertainment."

4

13.11.2006, 16:55

so, meine buttons sind fertig :)

nur leider weiß ich nicht so recht wie man jetzt die maus abfragt. muss man da wirklich per bildschirmkoordinaten ausrechnen ob die maus auf einer textu r ist oder kann man einfach testen ob sich der cursor auf einem GL_QUAD befindet?

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

5

13.11.2006, 17:19

Mauskoords sebst berechnen... Wenn du willst, kann ich dir meine GUI-Mouse Klasse schicken...

Edit:
Wenn du willst, schick ich dir die ganze GUI Klasse ;)
Ist immerhin ein Haufen Arbeit...
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

6

13.11.2006, 18:31

hm...auch auf die gefahr dass mir mein kopf dabei platzen wird, ich schick dir meine e-mail per PM

zum angucken kanns ja nicht schaden

herzlichen dank schonmal :)

7

28.11.2006, 22:46

praktisch dass es den thread noch gibt :o)

das mit der GUI klasse da war mir etwas zu kompliziert, da bin ich noch net so ganz durchgestiegen. ich habs jetzt so gemacht:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void Mouse()
{
    glLoadIdentity();

    GetCursorPos(&cursor);
    GetWindowRect(hWnd, &WindowRect);

    percent_x = ((100.0f / (WindowRect.right - 3.0f)) * (cursor.x - WindowRect.left - 3.0f));
    percent_y = ((100.0f / (WindowRect.bottom - 23.0f)) * (cursor.y - WindowRect.top - 23.0f));
}

void CheckHotspot()
{
    if((percent_x > -64.0f) && (percent_x < 64.0f) &&
       (percent_y < 64.0f) && (percent_y > -64.0f) && keys[VK_LBUTTON])
        PostQuitMessage(0);
}


problem ist nur, dass mein button rund ist und ich damit ja nur rechteckig abfragen kann. wie kann ich denn sowas lösen?

big_muff

Alter Hase

Beiträge: 460

Wohnort: Schweiz

Beruf: Informatikstudent (4. Semester)

  • Private Nachricht senden

8

29.11.2006, 00:26

Das ist ganz einfach:
Der Klick erfolgte genau dann innerhalb des runden Buttons, wenn der Abstand des Klicks zum Knopfmittelpunkt kleiner oder gleich dem Radius des runden Buttons ist.
In deinem Fall also:

C-/C++-Quelltext

1
2
3
4
5
void CheckHotspot() 
{ 
    if((percent_x*percent_x+percent_y*percent_y <= 64.0f*64.0f)  && keys[VK_LBUTTON]) 
        PostQuitMessage(0); 
}
Nur Idioten halten Ordnung, ein Genie beherrscht das Chaos.[size=7]

[/size]HardFate - Ein Start, Ein Ziel, Viele Wege[size=7]

[/size]Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.

9

29.11.2006, 11:01

und das als mathe LKler :/

ja sorry aber es gibt tage da fallen mir die einfachsten sachen net kein, keine ahnung woran das liegt ^^

10

02.12.2006, 18:35

also irgendwie funktioniert das nicht so wie ich mir das vorstelle. mit der methode erstellt er mir einen kreis (bzw. einen viertelkreis) in der linken oberen bildschirmecke. mein button is aber genau in der mitte.

ich hab mir dazu aber nochmal gedanken gemacht: wenn mein button jetzt folgende grenzen hat (in % der entfernung vom linken zum rechten bildrand)
x: 40, 60
y: 40, 60

kann ich dann nicht einfach sagen:

C-/C++-Quelltext

1
if((percent_x + percent_y >= 90.0f) && (percent_x + percent_y <= 110.0f) && (percent_x >= 40.0f) && (percent_x <= 60.0f) && (percent_y > 40.0f) && (percent_y < 60.0f) && keys[VK_LBUTTON])


nicht gerade elegant aber es sollte funktionieren :)

Werbeanzeige