Seite 1 von 3

Grafische Oberfläche mit DatenbankSystem (SpieleKatalog)

Verfasst: 25.07.2009 16:23
von Schongewusst99
Hi Leutz,
Ich bin sehr sehr neu in Sachen PureBasic. Meine Freunde programmieren allerdigns schon fleißig PureBasic und ich hab mir sagen lassen die Sprache sei einfach zu lernen. Erste Erfolge konnte ich auch schon verbuchen und mich hats jetzt offiziell gepackt. Ich konnte mal C## muss aber sagen mittlerweile bin ich so eingerpostet das C## für mich nichts mehr taugt.

Ich hatte mal Eine Oberfläche programmiert diese ist mir abhanden gekommen. Die Funktionalität war soweit in Ordnung aber ab 15 Spielen wurde diese so elendich langsam, sodass ich sie nicht mehr benutzen konnte.
Dort hatte ich Seite für Seite bearbeitet und mit einander "verlinkt".

Das möchte ich nun anders machen. Meine vorstellung der "Datenbank"-Datei werde ich später noch erläutern.

Ich hoffe ihr könnt mir jetzt schon ein bisschen helfen.

Mein Fortschritt bis jetzt:
Gamez.pb

Code: Alles auswählen

;--Start--;
IncludeFile "database.pb"
;------------------------------
;----Aufzählungen Constants----;
;--Windows--;
Enumeration
  #Window_Startseite
EndEnumeration
;--Gadgets--;
Enumeration
  #Image_0
  #Image_1
  #Frame_0
  #Gadget_Inhalt
  #Directoryname
EndEnumeration
;--Images--;
Enumeration
  #imgCover
  #imgUSK
EndEnumeration
;------------------------------
;--Plugins--;
UseJPEGImageDecoder()
;------------------------------
;--Images Laden--;
LoadImage(#Image_0, farcry2\cover)
LoadImage(#Image_1, farcry2\usk)
;------------------------------
;------------------------------
;------------------------------
;MEIN FENSTER--;
If OpenWindow(#Window_Startseite, 0, 0, 800, 800, "Gamez", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) = 0
EndIf
ImageGadget(#Image_0, 10, 10, 520, 700, ImageID(#imgCover))
ImageGadget(#Image_1, 620, 270, 80, 80, ImageID(#imgUSK))
Frame3DGadget(#Frame_0, 535, 5, 255, 250, "Game Content")
TextGadget(#Gadget_Inhalt, 540, 20, 245, 250, farcry2\gamecontent)
Repeat
  EventID = WaitWindowEvent()
  If EventID = #PB_Event_CloseWindow
    Quit = 1
  EndIf
Until Quit = 1
;------------------------------
;------------------------------
;------------------------------
Database.pb

Code: Alles auswählen

;--Start--;
Structure game
gamecontent.s
usk.s
cover.s
EndStructure
;--Games
farcry2.game
;--Inhalt
farcry2\gamecontent = "(...)"
farcry2\usk = "..\338.jpg"
farcry2\cover = "..\farcry2.jpg"
[Update 2.]Wie könnte ich Absätze vom TextGadget ausgeben lassen?
[Update 3.]IncludeBinary ist ersetzt durch LoadImage.

Verfasst: 25.07.2009 16:37
von TomS

Code: Alles auswählen

;-Aufzählungen Constants
Enumeration ;Startet mit 0
#Image_0 ; = 0
#Gadget_inhalt
EndEnumeration
...

Code: Alles auswählen

    ImageGadget(#Image_0, 10, 10, 520, 700, Cover)   ;Image_0 =0
    Frame3DGadget(0, 540, 20, 250, 250, "Game Content") 
2 Gadgets haben die gleiche ID nämlich 0.

Verfasst: 25.07.2009 18:22
von Kaeru Gaman
Willkommen an Board!

... um dieses Problem zu vermeiden, solltest du alle Gadgets mit Konstanten benamsen
und diese in derselben Enumeration erzeugen.

Verfasst: 25.07.2009 19:15
von Schongewusst99
@Kaeru Gaman,
Wie ist das jetzt gemeint? Ich habe jetzt in der Aufzählung einfach hinter Image_0 = 1 ergänzt


Supi danke^^

Verfasst: 25.07.2009 19:39
von rolaf
Schongewusst99 hat geschrieben:@Kaeru Gaman,
Wie ist das jetzt gemeint? Ich habe jetzt in der Aufzählung einfach hinter Image_0 = 1 ergänzt


Supi danke^^
Zum Bleistift so:

Code: Alles auswählen

Enumeration    ; <- Damit Kaeru ruhig schlafen kann. ;-)
  #Window_0
EndEnumeration

Enumeration
  #Image_0
  #Image_1
  #Frame3DGadget_0
  #Gadget_inhalt
EndEnumeration
Und dann:

Code: Alles auswählen

if OpenWindow(#Window_0,0,0,800,800,"Gamez",#PB_Window_SystemMenu | #PB_Window_ScreenCentered) = 0 
und:

Code: Alles auswählen

Frame3DGadget(#Frame3DGadget_0, 540, 20, 250, 250, "Game Content") 

Verfasst: 25.07.2009 19:42
von Kaeru Gaman
argl nein!

Code: Alles auswählen

Enumeration
#Image_0
#Image_1
#Frame_0
#Gadget_inhalt
EndEnumeration 

Code: Alles auswählen

    ImageGadget(#Image_0, 10, 10, 520, 700, Cover)   
    ImageGadget(#Image_1, 620, 270, 80, 80, USK)
    Frame3DGadget(#Frame_0, 535, 5, 255, 250, "Game Content")
    TextGadget(#Gadget_inhalt, 540, 20, 245, 250, Inhalt.s) 
... und die Fenster gehören nicht mit in die selbe Enumeration!eins!elf!verdori!

PS:
ahja.. hast ja noch den Frame ergänzt. Darum gings ja, der muss mit in die Enum.
aber die Fenster sollten ihre eigene Enum bekommen.

Verfasst: 25.07.2009 19:47
von Kaeru Gaman
* aber es hat nix mit dem thema zu tun "warum geht das gadget nicht"...

* und es ist ein falscher ratschlag.

* und es war das einzige, was in deinem posting drinstand, den frame hattest du noch nicht drin als ich geantwortet hab.

* und ja sorry, ich brauch immer drei minuten um mich wieder abzuregen,
und ich hatte grad auf Heise ein paar Ignoranten als "Braunes Gesocks" bezeichnet und Max Liebermann zitiert, da ist der Puls doch etwas oben.

Verfasst: 25.07.2009 19:49
von Schongewusst99
Jetzt hab ichs begriffen!
Jede ID kann ich mit ner Constant gleich setzten wenn ich vorher eine definiere.
[Erster Post Upgedatet]

Verfasst: 25.07.2009 19:58
von ts-soft
So wird da ein Schuh draus:

Code: Alles auswählen

;--Start--;
;--Globales--;
Global Inhalt.s
;------------------------------
;--Aufzählungen Constants--;
Enumeration
  #Image_0
  #Image_1
  #Frame_0
  #Gadget_inhalt
EndEnumeration
Eine weitere Enumeration für die Bilder (nicht BilderGadget) wäre auch
sinnvoll. Einfach mal in die Hilfe gucken

Verfasst: 25.07.2009 20:02
von rolaf
Schongewusst99 hat geschrieben:Jetzt hab ichs begriffen!
Jede ID kann ich mit ner Constant gleich setzten wenn ich vorher eine definiere.
Dabei brauchst du aber nicht = 1 , = 2 , = 3, etc. dahintersetzen, die werden automatisch nummeriert, wie es ts gezeigt hat. Was für ne Nummer die bekommen kannst du glatt vergessen, du hast ja die Konstante dafür. :wink: