Menu - Surfaces

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
Benutzeravatar
Don Polettone
User
Beiträge: 115
Registriert: Dienstag 23. November 2010, 20:26
Wohnort: Schweiz

Hi nochmals,

muss das mal loswerden, das Problem hab ich schon lange.

Es geht um Menus in Spielen. Dies sind ja Surfaces, die sich in deren Updatemethode selbst beblitten mit den aktuellen Werten (HP, MP, Punkte, was auch immer halt). Diese Werte generiere ich natürlich mit Fonts, und via Pygame. Nun habe ich aber immer wieder dasselbe Problem: Fonts sind Surfaces mit Transparenz. Das Menü müsste also jeweils "geleert" werden, ehe die neuen Werte geblittet werden, sonst gibt's Font-Ghetto :mrgreen:

Wenn ich nun ein schönes Menü will mit Transparenz und selbstgezeichnetem fancy Rahmen und so und also wirklich so richtig sexy und alles - wie mache ich das..? Ich meine, den screen male ich einfach jedes Frame schwarz aus und basta, dann kann ich wieder blitten was ich will, aber beim Menü geht das natürlich dann nicht. Ich weiss, für Euch total Banane, aber jetzt echt: ich habe bis anhin keine Lösung, die mir gefällt und von der ich mir vorstellen könnte, dass Ihr diese gutheissen würdet...

Erleuchtung?

Für jeden Tipp dankbar,


Henry
Ich code, also bin ich.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ich kapiere irgend wie Deine Problematik nicht wirklich, aber ich hatte vor einiger Zeit mal als Demo für einen User ein Menü für Pygame geschrieben. Vielleicht bringt Dir das ja irgend wie Erleuchtung oder Nutzen.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
Don Polettone
User
Beiträge: 115
Registriert: Dienstag 23. November 2010, 20:26
Wohnort: Schweiz

danke Hyperion,

von der Logik her kann ich da einiges abkupfern :D

Ich glaube, mein Hauptproblem ist, wie ich ein dirty Surface wieder clean kriege, ohne sie neu laden zu müssen. Mit convert() scheint es nicht zu klappen..?
Ich code, also bin ich.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Einfach die gesamte Anzeige zu beginn des Frames mit Schwarz überzeichnen und anschließend das komplette Menü neu zeichnen. Ich frage mich allerdings, was du genau laden möchtest.
Das Leben ist wie ein Tennisball.
Benutzeravatar
Don Polettone
User
Beiträge: 115
Registriert: Dienstag 23. November 2010, 20:26
Wohnort: Schweiz

Jetzt ist alles klar, danke! Ich hatte die Fonts jeweils direkt auf die Surface des Menus selbst geblittet statt erst das Menü und dann die Werte darin auf den screen... Jetzt passt's.

und die Hitabfrage mit den transparenten Pixeln und dem schnellen Projektil auch. Langsam wird's interessant!

Dann kann's ja weitergehen - oh yeah :mrgreen:
Ich code, also bin ich.
Antworten