Menü geht nicht

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

noobyblaster

Betreff: Menü geht nicht

BeitragDi, Nov 24, 2009 13:54
Antworten mit Zitat
Benutzer-Profile anzeigen
moin moin
ich hab mir gedacht ich versuch mich mal an einem 3d menü...
meiner Meinung nach müsste es gehen aber es geht (wer hätte das gedacht) nicht...
es sollte so sein das wenn menue = 1 dann soll setup.exe ausgeführt werden, aber statdessen passiert nix.
das gleiche beim 2. , nur das beenden geht.

Code: [AUSKLAPPEN]
Graphics3D 800,600,16,1

SetBuffer BackBuffer()

kamera=CreateCamera()
PositionEntity kamera,15,1,10


welt=CreateTerrain(128)
EntityFX welt,1


skybox=CreateCube()
ScaleEntity skybox,300,300,300
PositionEntity skybox,50,-50,50
FlipMesh skybox
EntityColor skybox,0,100,200
EntityFX skybox,1

a_cube=CreateCube()
ScaleEntity a_cube,0.5,0.5,0.5
PositionEntity a_cube,10,6,20


c1=CreateCube()
ScaleEntity c1,1,1,1
PositionEntity c1,10,1,20


c2=CreateCube()
ScaleEntity c2,1,1,1
PositionEntity c2,15,1,20


c3=CreateCube()
ScaleEntity c3,1,1,1
PositionEntity c3,20,1,20

setup$ = "setup.exe"
about$ = "about.exe"

w_tex=LoadTexture("Asphalt2.png")
ScaleTexture w_tex,3,3
EntityTexture welt,w_tex


menue = 1

While Not KeyHit(28) And menue = 3

If menue = 1 Then PositionEntity a_cube,10,6,20
If menue = 2 Then PositionEntity a_cube,15,6,20
If menue = 3 Then PositionEntity a_cube,20,6,20


If KeyHit(2) Then menue = 1
If KeyHit(3) Then menue = 2
If KeyHit(4) Then menue = 3

If KeyHit(28) And menue = 1 Then ExecFile setup$ And End
If KeyHit(28) And menue = 2 Then ExecFile about$ And End


RotateMesh a_cube,0,1,0

RenderWorld()
Flip
Wend
End


wo is hier der fehler?
Projekt: Crazy Racedriver [vorübergehend eingestellt]
Genre: Rennspiel
Fortschritt: ca. 60%

Xeres

Moderator

BeitragDi, Nov 24, 2009 14:03
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
[...] Then ExecFile setup$ And End 

AND ist ein logischer operator! Den kann man nicht wie ein Sprachliches "und" überall da einsetzen, wo man mehrere Dinge machen möchte. Einzelne Anweisungen in einer Zeile trennt man mit einem Doppelpunkt ":" ab.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

noobyblaster

BeitragDi, Nov 24, 2009 14:06
Antworten mit Zitat
Benutzer-Profile anzeigen
ok , wieder was gelernt , aber die .exe dateien werden immer noch nicht ausgeführt
Projekt: Crazy Racedriver [vorübergehend eingestellt]
Genre: Rennspiel
Fortschritt: ca. 60%
 

Kruemelator

BeitragDi, Nov 24, 2009 14:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Es muss der komplette Pfad angegeben sein. Außerdem muss es vor End, sonst wird es nicht ausgeführt.
Wenn man die Befehle in eine Zeile schreibt brauch man noch nicht mal mit ":" trennen geht auch nur mit Leerzeichen. Würde aber empfehlen übermehrere Zeilen zu schreiben, und dann einfach einrücken.
Code: [AUSKLAPPEN]
If [...] Then
   ExecFile setup$
   End
EndIf

Macht es zwar länger, aber um einiges übersichtlicher.
Hast du den Vollbild? Glaube da hat execfile mal Probleme gemacht.

noobyblaster

BeitragDi, Nov 24, 2009 14:55
Antworten mit Zitat
Benutzer-Profile anzeigen
ok hab ich alles gemacht aber geht nicht.
Vollbild geht genauso wenig wie fenstermodus.
Projekt: Crazy Racedriver [vorübergehend eingestellt]
Genre: Rennspiel
Fortschritt: ca. 60%
 

Kruemelator

BeitragDi, Nov 24, 2009 15:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Wird den überhaupt das ausgeführt was angegeben ist? Also tritt die Bedingung bei If ein? Du hast nämlich nix von einer Fehlermeldung von Execfile geschrieben, weils die Datei nicht gibt oder so in der Art, vielleicht wird Execfile ja gar nicht ausgeführt.

noobyblaster

BeitragDi, Nov 24, 2009 15:25
Antworten mit Zitat
Benutzer-Profile anzeigen
überzeug dich selbst
https://www.blitzforum.de/upload/file.php?id=7503
es kommt keine fehlermeldung
Projekt: Crazy Racedriver [vorübergehend eingestellt]
Genre: Rennspiel
Fortschritt: ca. 60%
 

Kruemelator

BeitragDi, Nov 24, 2009 15:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Habs! Smile
Wenn du eine Taste drückst dann wird das gespeichert. Mit Keyhit() kannst du das auslesen. Aber nachdem du das mit Keyhit() ausgelesen hast, dann wird es wieder auf null gestellt. Das heisst: du kannst nur einmal mit Keyhit() prüfen, jedes weiteremal gibt 0 zurück. Bei Keydown bleibt bei 1 egal wie oft du abfragst.
Das Problem gibts auch bei Mousehit()
Lösung:
Code: [AUSKLAPPEN]
tastenhit_28 = KeyHit(28)

If tastenhit_28 Then
   ;blablabla
EndIf


Das hier muss in der Schleife nur irgendwo an den Anfang.
Code: [AUSKLAPPEN]
tastenhit_28 = KeyHit(28)


Edit:
Da du while benutzt gibts da ein weiteres Problem:
Code: [AUSKLAPPEN]
tastenhit_28 = KeyHit(28)

Das müsste vor der While-Schleife sein, aber es würde dann nicht mehr ausgeführt werden, weil ja nur das in der While-Schleife wiederholt wird.
Ersetzt die While-Schleife durch eine Repeat-Schleife, da wird ja am Ende geprüft.

noobyblaster

BeitragDi, Nov 24, 2009 15:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Dankefein =)
Projekt: Crazy Racedriver [vorübergehend eingestellt]
Genre: Rennspiel
Fortschritt: ca. 60%
 

Kruemelator

BeitragDi, Nov 24, 2009 15:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Such hier mal im Forum nach "Flip 0" und "Timer", weil dein jetztiges Programm läuft auf unterschiedlichen Rechnern unterschiedlich schnell.

noobyblaster

BeitragMi, Nov 25, 2009 18:07
Antworten mit Zitat
Benutzer-Profile anzeigen
ja stimmt das hab ich noch nicht eingebaut , es war ja nur eine idee die schnell mal ausprobiert werden wollte Wink
Projekt: Crazy Racedriver [vorübergehend eingestellt]
Genre: Rennspiel
Fortschritt: ca. 60%

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group