OpenWindow / OpenScreen
OpenWindow / OpenScreen
Hi zusammen,
die Programmierung unter PB ist echt einfach. Ich verstehe aber eine Sache nicht ganz: Ein Fenster für eine Eingabemaske erstelle ich mit OpenWindow und für das Spiel wo Grafik drauf läuft mit OpenScreen. Nur wie mische ich das???
Also wenn z.b. im Spiel ein Button liegen soll der eine Eingabemaske öffnet. Hat da einer von euch ein kleines Beispiel??
Schönen Dank für euch Hilfe
Gruss
Markus
die Programmierung unter PB ist echt einfach. Ich verstehe aber eine Sache nicht ganz: Ein Fenster für eine Eingabemaske erstelle ich mit OpenWindow und für das Spiel wo Grafik drauf läuft mit OpenScreen. Nur wie mische ich das???
Also wenn z.b. im Spiel ein Button liegen soll der eine Eingabemaske öffnet. Hat da einer von euch ein kleines Beispiel??
Schönen Dank für euch Hilfe
Gruss
Markus
Sieh mal in der Hilfe unter OpenWindowedScreen() nach. Oder probier mal die neuen Gadget3D - Befehle.
Gruß, Alex
Gruß, Alex
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster
PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Hi,
Danke für den Tip! Mit der Gadget3D komm ich aber noch nicht zurecht! Hat einer die Gadet3D.pb aus der Onlinehilfe?? Der Link ist tot!
Ist der folgende Code vom Ansatz ok???
Problem ist nur das gar nix passiert.
Bildschirm wird kurz schwarz und das wars.
Hat jemand eine Idee???
Gruss
Markus
Danke für den Tip! Mit der Gadget3D komm ich aber noch nicht zurecht! Hat einer die Gadet3D.pb aus der Onlinehilfe?? Der Link ist tot!
Ist der folgende Code vom Ansatz ok???
Problem ist nur das gar nix passiert.
Code: Alles auswählen
Enumeration
#frLogin
EndEnumeration
Enumeration
#background
EndEnumeration
;- Gadget Constants
;
Enumeration
#frLogin_btn0
#frLogin_btn1
#frLogin_btn2
#frLogin_btn3
#frLogin_btn4
#frLogin_btn5
#frLogin_btn6
#frLogin_btn7
#frLogin_btn8
#frLogin_btn9
#frLogin_btnPkt
#frLogin_btnDel
#frLogin_btnEnter
#frLogin_UserName
#frLogin_Pin
#frLogin_Frame
#frLogin_txtBenutzer
#frLogin_txtPin
EndEnumeration
If InitEngine3D()=0
MessageRequester("Fehler","Konnte 3d nicht laden",0)
EndIf
If InitSprite() = 0 Or InitKeyboard() = 0
MessageRequester("Error", "Sprite system can't be initialized", 0)
End
EndIf
If InitSprite3D() = 0
MessageRequester("Fehler","Konnte dx nicht finden",0)
EndIf
; Jetzt wollen wir den Vollbild Modus erstellen.
If OpenScreen(1024,768,32,"Vollbild") = 0
MessageRequester("Fehler","Konnte kein Vollbild erstellen ",0)
EndIf
Enumeration
#sprite1
#sprite2
EndEnumeration
LoadSprite(#sprite1,"images/back.bmp",#PB_Sprite_Memory)
Global frLoginFocus.b = 1
If OpenWindow3D(#frLogin, 343, 30, 600, 570, "LogIn")
If Start3D()
DisplaySprite3D(#sprite1,0,0)
Stop3D()
EndIf
If CreateGadgetList(WindowID(#frLogin))
SetActiveWindow3D(#frLogin)
StringGadget3D(#frLogin_UserName, 130, 60, 300, 50, "")
Frame3DGadget3D(#frLogin_Frame, 110, 20, 340, 490, "")
StringGadget3D(#frLogin_Pin, 130, 140, 300, 50, "", #PB_String_Password)
ButtonGadget3D(#frLogin_btn7, 130, 200, 60, 50, "7")
ButtonGadget3D(#frLogin_btn8, 200, 200, 60, 50, "8")
ButtonGadget3D(#frLogin_btn9, 270, 200, 60, 50, "9")
ButtonGadget3D(#frLogin_btn4, 130, 260, 60, 50, "4")
ButtonGadget3D(#frLogin_btn5, 200, 260, 60, 50, "5")
ButtonGadget3D(#frLogin_btn6, 270, 260, 60, 50, "6")
ButtonGadget3D(#frLogin_btn1, 130, 320, 60, 50, "1")
ButtonGadget3D(#frLogin_btn2, 200, 320, 60, 50, "2")
ButtonGadget3D(#frLogin_btn3, 270, 320, 60, 50, "3")
ButtonGadget3D(#frLogin_btn0, 130, 380, 60, 50, "0")
ButtonGadget3D(#frLogin_btnEnter, 340, 200, 90, 290, "Enter")
TextGadget3D(#frLogin_txtBenutzer, 130, 40, 100, 20, "Benutzer:")
TextGadget3D(#frLogin_txtPin, 130, 120, 100, 20, "Pin:")
ButtonGadget3D(#frLogin_btnDel, 130, 440, 200, 50, "Löschen")
ButtonGadget3D(#frLogin_btnPkt, 270, 380, 60, 50, ".")
SetActiveGadget3D(#frLogin_UserName)
Repeat
ActGadget.l = GetActiveGadget3D()
If ActGadget = #frLogin_UserName
frLoginFocus = #frLogin_UserName
EndIf
If ActGadget = #frLogin_Pin
frLoginFocus = #frLogin_Pin
EndIf
Event.l = WaitWindowEvent()
EventType.l = EventType3D()
xText.s = GetGadgetText3D(frLoginFocus)
Select Event
Case #PB_Event3D_Gadget
Select EventGadget3D()
Case #frLogin_btnEnter
res.s = GetGadgetText3D(#frLogin_UserName) + "/" + GetGadgetText3D(#frLogin_Pin)
MessageRequester("ERROR", res)
Quit = 1
Case #frLogin_btnDel
SetGadgetText3D(frLoginFocus, "")
Case #frLogin_btnPkt
xText = xText + "."
SetGadgetText3D(frLoginFocus, xText)
Case #frLogin_btn0 To #frLogin_btn9
xText = xText + GetGadgetText3D(EventGadget())
SetGadgetText3D(frLoginFocus, xText)
;Case #BUTTON_INTERACT
; Debug "The button was pressed."
;Case #BUTTON_CLOSE
; Quit = 1
EndSelect
Case #PB_Event3D_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
EndIf
EndIf
Hat jemand eine Idee???
Gruss
Markus
ok.... mit der Suche hab ich ein schönes Beispiel gefunden: http://forums.purebasic.com/german/view ... t=window3d !
Mal schauen wieweit ich jetzt komme.
Gruss
Markus
Mal schauen wieweit ich jetzt komme.
Gruss
Markus
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
wie ich in dem anderen thread schon angeschnitten hab...
wenn du einen Screen hast, solltest du nicht mit Gadgets rumdaddeln.
du kannst einen WindowedScreen verwenden, dann kannst du Gadgets nebendran packen.
oder du schreibst dir dein eigenes Menu- und Button-system.
hier mal ne kleine Demo, wie man mehrere anklickbare Objekte verwalten kann:
http://www.purebasic.fr/german/viewtopic.php?t=18504
die Window3D-Lib ist wesentlich schwieriger zu handhaben, außerdem ist sowas für ein kleines Gamechen absoluter Overkill.
wenn du einen Screen hast, solltest du nicht mit Gadgets rumdaddeln.
du kannst einen WindowedScreen verwenden, dann kannst du Gadgets nebendran packen.
oder du schreibst dir dein eigenes Menu- und Button-system.
hier mal ne kleine Demo, wie man mehrere anklickbare Objekte verwalten kann:
http://www.purebasic.fr/german/viewtopic.php?t=18504
die Window3D-Lib ist wesentlich schwieriger zu handhaben, außerdem ist sowas für ein kleines Gamechen absoluter Overkill.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Hi,
ja.... 3D ist echt nicht einfach. Je mehr ich an dem Beispiel ändere um so langsamer wird alles. Im Grunde möchte ich ja nur ein paar Werte als Fenster über dem Spiel eingeben lassen und der Rest wird dann auch grafisch gemacht. Wäre da auch mit 3D zufrieden.
Klappt nur bisher nicht so wie ich mir das denke.
Gruss
Markus
ja.... 3D ist echt nicht einfach. Je mehr ich an dem Beispiel ändere um so langsamer wird alles. Im Grunde möchte ich ja nur ein paar Werte als Fenster über dem Spiel eingeben lassen und der Rest wird dann auch grafisch gemacht. Wäre da auch mit 3D zufrieden.
Klappt nur bisher nicht so wie ich mir das denke.

Gruss
Markus
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
"ein paar werte eingeben" ist eventuell nichts was man eintippen sollte.
wenn du an Sachen wie Castles/Gorillas denkst, da hast du auch den Abschußwinkel und die Schußkraft einzugeben.
das wird beides mit up/down reglern gelöst, die zwar über Tasten bedient werden, aber keine literalen Werte eingegeben.
nunja, kommt halt auch drauf an, was du letztendlich machen willst.
wenn du an Sachen wie Castles/Gorillas denkst, da hast du auch den Abschußwinkel und die Schußkraft einzugeben.
das wird beides mit up/down reglern gelöst, die zwar über Tasten bedient werden, aber keine literalen Werte eingegeben.
nunja, kommt halt auch drauf an, was du letztendlich machen willst.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Hi,
ja... anfangen wollte ich mit der Umsetzung eines kleinen Pokerspiels was ich auch mal unter c# angefangen hab.
Mit Sprites hin-/herbewegen usw. komm ich mittlerweile klar... aber bevor ich die Spiellogik umsetze wollte ich erstmal alles ausprobieren um zu entscheiden ob ich eher auf 2D oder 3D setze. Und z.b. soll man sich später mal irgendwann an einem Server anmelden können oder seinen Spielernamen eingeben.
Ich dachte bisher das ich die Input Gadgets und die grafischen Sachen beliebig mischen kann. Also z.b. soll die Eingabe der Anmeldung oder das der User seinen Nick eingeben kann mitten auf dem Spielfeld als Fenster aufgehen.
Getrennt bekomm ich das schon hin... aber nicht während die Grafik auf dem Screen ist.
Gruss
Markus
ja... anfangen wollte ich mit der Umsetzung eines kleinen Pokerspiels was ich auch mal unter c# angefangen hab.
Mit Sprites hin-/herbewegen usw. komm ich mittlerweile klar... aber bevor ich die Spiellogik umsetze wollte ich erstmal alles ausprobieren um zu entscheiden ob ich eher auf 2D oder 3D setze. Und z.b. soll man sich später mal irgendwann an einem Server anmelden können oder seinen Spielernamen eingeben.
Ich dachte bisher das ich die Input Gadgets und die grafischen Sachen beliebig mischen kann. Also z.b. soll die Eingabe der Anmeldung oder das der User seinen Nick eingeben kann mitten auf dem Spielfeld als Fenster aufgehen.
Getrennt bekomm ich das schon hin... aber nicht während die Grafik auf dem Screen ist.
Gruss
Markus
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Probier mal, einen WindowedScreen zu benutzen.
(das Stichwort gebe ich dir nun zum dritten Mal)
Du kannst auch ein Fenster haben, was vom WindowedScreen komplett ausgefüllt wird,
und darüber ein zweites aufpoppen, das Eingabefelder und Buttons enthält.
ein "klassisches" Game auf Fullscreen wird meistens eine selbstgemachte GUI benutzen,
das ist auch nicht so schwierig, wie man denkt.
Es gibt auch Speziallösungen, wie zum Beispiel die gesamte Oberfläche zu skinnen
und die Spielegrafik direkt in den DC der Fenster zu rendern, dann kann man das GUI-Handling vom OS benutzen.
Du musst dir halt die Frage stellen, wie viel Aufwand du für ein Einsteigerprojekt betreiben willst.
(das Stichwort gebe ich dir nun zum dritten Mal)
Du kannst auch ein Fenster haben, was vom WindowedScreen komplett ausgefüllt wird,
und darüber ein zweites aufpoppen, das Eingabefelder und Buttons enthält.
ein "klassisches" Game auf Fullscreen wird meistens eine selbstgemachte GUI benutzen,
das ist auch nicht so schwierig, wie man denkt.
Es gibt auch Speziallösungen, wie zum Beispiel die gesamte Oberfläche zu skinnen
und die Spielegrafik direkt in den DC der Fenster zu rendern, dann kann man das GUI-Handling vom OS benutzen.
Du musst dir halt die Frage stellen, wie viel Aufwand du für ein Einsteigerprojekt betreiben willst.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.