Hauptmenü in PB3D

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Hauptmenü in PB3D

Beitrag 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:
-.-"
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Beitrag 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
-.-"
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

Niemand hier kann hellsehen (zumindest befürchte ich das), du solltest also zumindest etwas Code zeigen :allright:
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Beitrag 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:
-.-"
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag 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:
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Beitrag 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:
Zuletzt geändert von Green Snake am 20.06.2005 17:37, insgesamt 1-mal geändert.
-.-"
Benutzeravatar
AndyX
Beiträge: 1272
Registriert: 17.12.2004 20:10
Wohnort: Niederösterreich
Kontaktdaten:

Beitrag 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.
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Beitrag 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:
-.-"
Benutzeravatar
AndyX
Beiträge: 1272
Registriert: 17.12.2004 20:10
Wohnort: Niederösterreich
Kontaktdaten:

Beitrag von AndyX »

JA gut aber sei doch bitte so nett und zeig mal den ganzen Code. Bitte? :roll:
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Beitrag 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: )
-.-"
Antworten