Seite 1 von 2

Hauptmenü in PB3D

Verfasst: 19.06.2005 16:17
von Green Snake
hi

mein problem hat (wiedereinmal) mit 3d zu tun.
es besteht die regel, dass initengine3d vor initsprite etc stheen muss.
das ist kein problem.
aber dadurch wird es schwieriger ein huptmenu hinein zu basteln, da das ja 2d ist.
wie würdet ihr ein hauptmenu reinbauen?
ich will nähmlich, dass wenn ich im hm auf return drücke, dass dan die 3d welt entsteht.
wenn ich in 3d dann escape drücke, dann sol das ganze wieder zum hauptmenu gehen.
mein problem, ich kann wohl von hauptmenu in die 3d welt, von der 3d welt wieder ins hauptmenü, aber dann nicht mehr in die 3d welt.
das spiel beendet sich dann.

wo lieg da der fehler?

kann mir jemand ein beispiel machen, wie das dieser jemand lösen würde?

bin um jede hilfe froh, danke euch :allright:

Verfasst: 20.06.2005 13:05
von Green Snake
hat niemand einen vorschlag?
falls es zu wenig infos sind, hier noch ein paar.

create terrain wird verwendet.
meshes sind drauf.
initengine 3d erfolgreich aufgerufen (an dem kanns nicht liegen)
terran erfolgreich erstellt. ((an dem kanns nicht liegen))

hoffe auf hilfe :allright:
danke

Gruss Snake

Verfasst: 20.06.2005 13:30
von freedimension
Niemand hier kann hellsehen (zumindest befürchte ich das), du solltest also zumindest etwas Code zeigen :allright:

Verfasst: 20.06.2005 13:32
von Green Snake
code habe ich noch keinen richtigen. da es ja eben nicht funzt.
aber ihr alle habt ja die pb beispiele.
ich werde das beispiel terrain.pb als grundstein benutzen.
bei dem möchte ich gerne ein hauptmenu erstellen, dass den oben genannten kriterien entspricht :allright:

Verfasst: 20.06.2005 13:33
von freedimension
Green Snake hat geschrieben:code habe ich noch keinen richtigen. da es ja eben nicht funzt.
Du sollst ja auch nicht funktionierenden Code zeigen, sondern den mit welchem du Probleme hast :roll:

Verfasst: 20.06.2005 13:51
von Green Snake
eben, ich sagte ja, mit dem code terrain.pb aus dem example ordner.
ich kann dort einfach kein hauptmenu machen. ich will displaysprite etc benutzen, aber immer dann beendet sich dasd programm :allright:

ich habe folgende procedure:

Code: Alles auswählen

procedure Hauptmenu()
Loadsprite(0,"AAA.bmp")

repeat
displaysprite(0,0,0)

examinekeyboard()

flipbuffers()
clearscreen(0,0,0)

until keyboardpushed(1)
goto spiel
endprocedure
der goto befehl führt zum start der 3d sachen, also vor das laden der welt etc. :allright:

ps. dieser code ist stark vereinfacht.
ich werde sicher noch mehr sachen benutzen :allright:


edit: kann mir nicht jemand den terrain code so bearbeiten, damit man mit return ins terran.pb code kommt, und wenn ich dort escape drücke dass es dan wieder ins hm wächselt?
als hauptmenu würde mir schon ene gelbe box genügen, die in ein createsprite befehl gebunden ist.
das würde mir schon sehr helfen :allright:

Verfasst: 20.06.2005 15:05
von AndyX
Mal ne Frage: Wieso nimmst du Goto? Mach doch gleich alles mit Proceduren.

Sieh mal den Wert an den OpenScreen oder InitSprite zurückgibt.

Verfasst: 20.06.2005 16:24
von Green Snake
hallo

ich sagte ja, dass das stark vereinfacht ist. goto werde ich nicht benutzen, da es unübersichtlich wird :allright:

am init openscreen kann es nicht liegen, denn es funzt ja, jedenfalls bis ich vom hauptmenü ins game wechseln kann. dazu siehe erster post :allright:

Verfasst: 20.06.2005 17:33
von AndyX
JA gut aber sei doch bitte so nett und zeig mal den ganzen Code. Bitte? :roll:

Verfasst: 20.06.2005 17:41
von Green Snake
sturkopf :lol: (nicht böse gemeint)

Code: Alles auswählen

;
; ------------------------------------------------------------
;
;   PureBasic - Terrain
;
;    (c) 2003 - Fantaisie Software
;
; ------------------------------------------------------------
;

#CameraSpeed = 5

IncludeFile "Screen3DRequester.pb"

DefType.f KeyX, KeyY, MouseX, MouseY

If InitEngine3D()
  Add3DArchive("Data\"          , #PB_3DArchive_FileSystem)
  Add3DArchive("Data\Skybox.zip", #PB_3DArchive_Zip)
  
  InitSprite()
  InitKeyboard()
  InitMouse()
  
  If Screen3DRequester()

procedure Hauptmenu() 
Loadsprite(0,"AAA.bmp") 

repeat 
displaysprite(0,0,0) 

examinekeyboard() 

flipbuffers() 
clearscreen(0,0,0) 

until keyboardpushed(#pb_key_return)
quit = 0
procedurereturn 
endprocedure 


    AmbientColor(RGB(255,255,255))
    
    CreateMaterial  (0, LoadTexture(0, "Terrain_Texture.jpg"))
    AddMaterialLayer(0, LoadTexture(1, "Terrain_Detail.jpg"), 1)
    
    CreateTerrain("Terrain.jpg", MaterialID(0), 4, 0.6, 4, 4)

    CreateCamera(0, 0, 0, 100, 100)
    CameraLocate(0, 128, 25, 128)
    
    SkyDome("Clouds.jpg",10)
    
    Repeat
      Screen3DEvents()
            
      If ExamineKeyboard()
        
        If KeyboardPushed(#PB_Key_Left)
          KeyX = -#CameraSpeed 
        ElseIf KeyboardPushed(#PB_Key_Right)
          KeyX = #CameraSpeed 
        Else
          KeyX = 0
        EndIf
                  
        If KeyboardPushed(#PB_Key_Up)
          KeyY = -#CameraSpeed 
        ElseIf KeyboardPushed(#PB_Key_Down)
          KeyY = #CameraSpeed 
        Else
          KeyY = 0
        EndIf

      EndIf
      
      If ExamineMouse()
        MouseX = -(MouseDeltaX()/10)*#CameraSpeed/2
        MouseY = -(MouseDeltaY()/10)*#CameraSpeed/2
      EndIf
      
      Height.f = TerrainHeight(CameraX(0), CameraZ(0))
      
      RotateCamera(0, MouseX, MouseY, RollZ)
      MoveCamera  (0, KeyX, -CameraY(0)+Height+8, KeyY)
            
      RenderWorld()
      Screen3DStats()
      FlipBuffers()
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
hauptmenu()
  EndIf
    
Else
  MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
  
End
naja, in etwa so...ich sagte ja, dass ich noch keinen code ahbe..alle anderen habe ic hgelöscht, das ja nicht gefunzt hat.
ps. es hat sicher noch fehler drin....habe den code nicht getestet, aber die anderen habe ich gleich geamcht, und es gung nicht.

ps. ich nutze den screen3d requester....ach ja...darf man den für programme benutzen, die man vielleciht verkauft? (naja, mann mus ja an die zukunft denken :lol: )