Seite 3 von 8

Re: Blitz Basic Funktionen in BP

Verfasst: 27.12.2009 13:39
von HeX0R
ts-soft hat geschrieben: Wird langsam Zeit, das Du die Hilfe zu verstehen lernst. Eigentlich ist das ganz einfach und logisch aufgebaut
Auch wenn ich grundsätzlich der gleichen Meinung bin, hab ich mir eben mal die entsprechenden Hilfe-Ausschnitte angesehen und versucht als PB Neuling an die Sache ranzugehen.

Weder bei OpenWindow() noch bei ButtonGadget() sind wirklich hilfreiche Codebeispiele vorhanden.
Man muss sich erst zu WaitWindowEvent() hangeln, um dahinter zu steigen, wie PB Events verarbeitet.

Vielleicht sollte man die jeweiligen Beispiele wirklich mal überarbeiten (OpenWindow sollte o.k. sein, aber bei den Gadgets, vielleicht noch zumindest den Click-Event anzeigen).

Allerdings ist auch ganz klar bei OpenWindow() vermerkt, dass die ganzen Events via (Wait)WindowEvent() abgefragt werden, wer sich also ernsthaft mit PB beschäftigen will, der hätte das auch gefunden...

Re: Blitz Basic Funktionen in PB

Verfasst: 27.12.2009 18:15
von NathanielBlack
Dank euch.

1. Pure Basic Version 4.0 müsste das sein. Wieso?

2. Hab ein neues Problem, dass auftaucht. Bzw. 2 in einem Code:
-Erst jedes zweite Mal klicken auf "Runde beenden" wird zur Variable Runde dauzu gerechnet? Wieso?

-MEin hauptsätzliches Code Problem:

Code: Alles auswählen

InitSprite()
InitMouse()
InitKeyboard()

;Globals

Global runde.f
Global RundeErledigt

runde = 0
RundeErledigt = 0

;Runden-Menü:---------------------------------------------------------------------------------------------------------------------------
Procedure RoundMenu()
        CloseWindow(2)
        OpenWindow(3,0,0,800,600,"lands to conquer(alpha)",#PB_Window_ScreenCentered | #PB_Window_SystemMenu )
  StartDrawing(WindowOutput(3))
  For x = 0 To 10
    For y = 0 To 10
        Box(x*50,Y*50,50,50,RGB(100,0,0))
      Next  
  Next  
  StopDrawing()
EndProcedure


;Freies Spiel:--------------------------------------------------------------------------------------------------------------------------
Procedure FreeGame()

            CloseWindow(0)
              OpenWindow(2,0,0,800,600,"lands to conquer(alpha)", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
              SetWindowColor(2,RGB(0,0,0))


If CreateGadgetList(WindowID(2))
  ButtonGadget(1,0,0,50,20,"Ende")
  ;If RundeErledigt = 1 
  ButtonGadget(2,50,0,100,20,"Runde beenden")
  ;EndIf
  ButtonGadget(3,0,100,100,20,"Runden Menü")
Else
  MessageRequester("Error!","ButtonGadget konnte nicht richtig geladen werden.")
EndIf

Repeat
Select WaitWindowEvent()
  Case #PB_Event_CloseWindow
    Break
  Case #PB_Event_Gadget
    Select EventGadget()
      Case 1 ; Ende Button
        End
      Case 2 ; Der Runde beenden Knopf
        runde = runde+1
        Delay(1)
        
      Case 3

        RoundMenu()
        
       
        
    EndSelect
EndSelect

 
  
  
        StartDrawing(WindowOutput(2))
        
        DrawText(0,20,"Runde: ")
        DrawText(50,20,Str(runde))


     
       StopDrawing()
  
  
  
  Delay(0)
  Until WaitWindowEvent() = #PB_Event_CloseWindow
  End
  
  
  
  
EndProcedure


;Freies Spiel Ende___________________________________________________________________________________________________________________________

;Hauptmenu-----------------------------------------------------------------------------------------------------------------


If OpenWindow(0, 0, 0, 800, 600, "lands to conquer(alpha)", #PB_Window_ScreenCentered | #PB_Window_SystemMenu ) ;And OpenWindow(1, 0, 0, 800, 600, "lands to conquer(alpha)")
  SetWindowColor(0, RGB(0, 0, 0))
  If CreateGadgetList(WindowID(0))
    ButtonGadget(0, 10, 15, 230, 30, "Starten")
  Else
    MessageRequester("Error!", "ButtonGadget konnte nicht geladen werden.")
  EndIf

  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        Break
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 0 ; Der Startbutton
            FreeGame()
        EndSelect
    EndSelect
  
  ForEver
EndIf


;HauptmenüEnde______________________________________________________________________________________________________







Wenn ich starte geht alles normal, nur wenn ich vom Runden Menü zurück will kommt der Debugger mit ner -mir nicht einleuchtenden- Meldung, dass der DrawingMode nicht stimmtO_o

mfg
NathanielBlack

Re: Blitz Basic Funktionen in PB

Verfasst: 27.12.2009 18:20
von ts-soft
Mit Copy und Paste von den Tipps kommste nicht weiter, Begreifen und Hilfe lesen ist trotzdem erforderlich.
Es gibt nur ein WaitWindowEvent() im Mainloop!

Und Bitte formatiere Deinen Code mal anständig, bekommt man ja Augenkrebs.

Re: Blitz Basic Funktionen in PB

Verfasst: 27.12.2009 19:11
von NathanielBlack
Ich komme da einfach nicht weiter. Danke dir, für deine Hilfe, aber hat mich nur bedingt weiter gebracht.

Code: Alles auswählen

InitSprite()
InitMouse()
InitKeyboard()


;Globals

Global runde.f
Global RundeErledigt

runde = 0
RundeErledigt = 1

;Runden-Menü:---------------------------------------------------------------------------------------------------------------------------
Procedure RoundMenu()
        CloseWindow(2)
        OpenWindow(3,0,0,800,600,"lands to conquer(alpha)",#PB_Window_ScreenCentered | #PB_Window_SystemMenu )
  StartDrawing(WindowOutput(3))
  For x = 0 To 10
    For y = 0 To 10
        Box(x*50,Y*50,50,50,RGB(100,0,0))
      Next  
  Next  
  StopDrawing()
EndProcedure


;Freies Spiel:--------------------------------------------------------------------------------------------------------------------------
Procedure FreeGame()

            CloseWindow(0)
              OpenWindow(2,0,0,800,600,"lands to conquer(alpha)", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
              SetWindowColor(2,RGB(0,0,0))




Repeat



 
  
  
        StartDrawing(WindowOutput(2))
        
        DrawText(0,20,"Runde: ")
        DrawText(50,20,Str(runde))


     
       StopDrawing()
  
  
  
  Delay(0)
  ForEver
  End
  
  
  
  
EndProcedure


;Freies Spiel Ende___________________________________________________________________________________________________________________________

;Hauptmenu-----------------------------------------------------------------------------------------------------------------


If OpenWindow(0, 0, 0, 800, 600, "lands to conquer(alpha)", #PB_Window_ScreenCentered | #PB_Window_SystemMenu ) ;And OpenWindow(1, 0, 0, 800, 600, "lands to conquer(alpha)")
      SetWindowColor(0, RGB(0, 0, 0))
  If CreateGadgetList(WindowID(0))
    ButtonGadget(0, 10, 15, 230, 30, "Starten")
  Else
    MessageRequester("Error!", "ButtonGadget konnte nicht geladen werden.")
  EndIf

  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        Break
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 0 ; Der Startbutton
            FreeGame()
            Case 1 ; Ende Button
              End
            Case 2 ; Der Runde beenden Knopf
              runde = runde+1
              Delay(1)
            Case 3 ; Der Runden Menü Knopf
              RoundMenu()
        
        
        EndSelect
    EndSelect
    ForEver
  
  
EndIf

;Hauptmenü-Ende______________________________________________________________________________________________________
Wo muss ich den Block den mit den WaitWindowEvent() hin packen?

Ist es eigentlich klug das so komisch it den ganzen Prozeduren zu machen? Empfehlt ihr mir andere Wege außer Prozeduren?

Entschuldigt die viele Fragerei, aber durch die Hilfe wird man nicht immer schlauer. (als anfänger). In jedem Satz stehen Fremdwörter die mich nur irritieren.

Please help me :praise:

mfg
NathanielBlack

Re: Blitz Basic Funktionen in PB

Verfasst: 27.12.2009 19:18
von Sebastian
Holla... was machst Du da eigentlich? Du initialisiert Sprites, aber zeichnest auf die Fenster? Warum denn das? Schau Dir mal das Kapitel zu WindowedScreen an!

Re: Blitz Basic Funktionen in PB

Verfasst: 27.12.2009 19:23
von Kaeru Gaman
NathanielBlack hat geschrieben:1. Pure Basic Version 4.0 müsste das sein. Wieso?
weil die 4.40 aktuell ist.
also müssen alle die dir helfen wollen wissen, dass du die 4.0 benutzt, weil sich doch einiges geändert hat seitdem.
deswegen hatte ich dir den Artikel in den FAQ über die Versionen verlinkt, zum lesen, nicht weil ich gerne Links kopiere.

du kannst allerdings bis nächste Weihnachten noch updaten, nachdem du dir dein Account hast freischalten lassen,
also kannst du auf die aktuelle Version updaten, und kommst womöglich noch in den Genuß der 4.50,
bevor du für das lebenslange Updaterecht das Upgrade kaufen musst.

------------------------------------

zum WaitWindowEvent hat sich ts bereits geäußert...
er meinte allerdings 1x in einer Eventschleife, wenn du zwei Eventschleifen einbauen wolltest, müsstest du in jeder eins haben.

es wäre allerdings besser, auch bei mehreren Fenstern nur eine einzige Eventschleife zu benutzen.
http://www.purebasic.fr/german/viewtopi ... 52&start=0

die Verwendung etlicher Procedures ist schon in Ordnung, aber du solltest dir schon gut überlegen, was du wo in Procs packst und was nicht.

... und ganz allgemein, wenn du eine TileEngine baun willst, oder überhaupt mit Spielobjekten arbeiten,
bist du mit ewigem Drawing schlecht beraten, dafür gibt es Sprites und Screens.
hier mal ein einfaches TileEngine-Beispiel:
http://www.purebasic.fr/german/viewtopi ... 34#p116634

mit reinem Drawing stößt man recht schnell an Grenzen...
http://www.purebasic.fr/german/viewtopi ... 39#p136539

Re: Blitz Basic Funktionen in PB

Verfasst: 27.12.2009 20:15
von NathanielBlack
Thx for help

Ich würde ja gerne updaten aber über diesen SmartUpdater geht es nicht, da dieser was von der Anmeldung bei www.purebasic.con faselt. Ich habe da keinen account und als ich mich anmelden wollte habe ich den link nicht gefunden.

Übrigens:
Meine Version ist nirgendwo im FAQ erwähnt. Da steht gar nichts von "Pure Basic 4-3D Game Deplover"

Ich blick da nicht mehr durch:(

Re: Blitz Basic Funktionen in PB

Verfasst: 27.12.2009 20:22
von Sebastian
Du hast doch diese DTP-Version? Nähere Infos unter:
http://www.purebasic.com/german/ordering.php

Re: Blitz Basic Funktionen in PB

Verfasst: 27.12.2009 20:38
von Kaeru Gaman
NathanielBlack hat geschrieben:Meine Version ist nirgendwo im FAQ erwähnt. Da steht gar nichts von "Pure Basic 4-3D Game Deplover"
ich hatte dir diesen thread verlinkt:
http://www.purebasic.fr/german/viewtopi ... =9&t=10604
da steht
Andre hat geschrieben:Seit 2007 gibt es auch eine "PureBasic 4 - 3D Developer" Version im Handel.
Das Paket enthält neben dem gedruckten Handbuch auf einer beiliegenden CDROM die PureBasic-Version 4.00 (Windows) und v3.94 (Linux, MacOS, OpenSource von Amiga), ein Tutorial mit Beispielcodes sowie einige Tools und eine Krakout-Demo (mit PureBasic geschriebenes Spiel von MasterCreating).
Diese Version beinhaltet einen auf 1 Jahr befristeten Download-Zugang.
um den DownLoad-Zugang freischalten zu lassen, musst du Kontakt mit dem Team aufnehmen, also z.b. eine mail an support at purebasic dot com schicken.
dann können Fred oder Freak dir deinen Zugang für purebasic.com freischalten, und du kannst für ein Jahr die Updates downloaden.

erst wenn diese Jahresfrist abgelaufen ist, müßtest du das Upgrade kaufen, um auch weiterhin updaten zu können.

Re: Blitz Basic Funktionen in PB

Verfasst: 27.12.2009 22:11
von NathanielBlack
Auf meiner Packung steht was von 10 Jahren kostenlose UpdatesO_o