Datei Verteilung

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

bioso

Betreff: Datei Verteilung

BeitragMi, Jan 28, 2004 15:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leute,
wollte mal fragen wie man den Quelltext auf mehrer Dateien aufteilen kann, z.b. : wenn ich ein Hauptmenü programmiert habe und möchte das, wenn man "Spiel start" klickt das dann z.b. die Datei "Hauptspiel.bb" startet. Ich habe es schon mit "Include" versucht hat aber nicht funktioniert da kam eine Fehlermeldung mit den Funktionen und so hab dan mal probiert die Varibeln Global zu setzten hat hat aber auch nicht funktioniert. Was kann man da am besten machen?.

Von Steffen, (14)

Homepage: www.s.k.home.de.vu

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMi, Jan 28, 2004 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Geht nur noch über execfile
Aber da kannste dann nicht direckt Werte übergeben
sonder must diese zwischenspeichern in einer datei
deswegen rate ich da von ab, bei kleineren Sachen!

Code: [AUSKLAPPEN]
Datei$="C:\Programme\Hauptspiel.exe"
EXECFILE Datei$
WAITKEY()

include ist da schon die richtige Wahl,
darfs dann aber die einzelnen variablen nicht für verschiedene Sachen benutzten,
also muste dann evt. umbenennen von einem IncludeTeil damit es funzt
[BB2D | BB3D | BB+]
 

bioso

BeitragMi, Jan 28, 2004 15:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Kannst du mir das noch einmal erklären, das mit dem Include wie das funktionieren soll.

Von Steffen

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMi, Jan 28, 2004 16:02
Antworten mit Zitat
Benutzer-Profile anzeigen
mit include wird aus dem aufgeteilten Programmcode wieder 1 Ganzer gemacht bevor dieser dann compiliert wird

BeispielCode: [AUSKLAPPEN]

; Hautprg.bb

Graphics 800,600,16,2

SetBuffer BackBuffer()

Global ESC = 1

repeat
;macht irgendwas
until Keyhit(ESC)

weil mir das da schon zu gross ist teil ich das mal auf mit include
damit es übersichlicher wird
Code: [AUSKLAPPEN]
; Hautprg.bb
include ("Instalierung.bb")

repeat
;macht irgendwas
until Keyhit(ESC)

hier jetz die include dateiCode: [AUSKLAPPEN]
;Instalierung.bb
Graphics 800,600,16,2

SetBuffer BackBuffer()

Global ESC = 1

demnach wird anstelle des INclude befehls diese datei eingesetzt,
mehr ist das nicht,
wird also vom compiller wie eine große Datei behandelt
[BB2D | BB3D | BB+]
 

walski

Ehemaliger Admin

BeitragMi, Jan 28, 2004 16:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Include wird logischerweise nicht zur Laufzeit sondern beim Kompilieren eingebaut. Und das führt dazu, dass eine Datei auch genau EINMAL eingebaut wird.
Das ist anders als in PHP oder so.

Wenn dus also umbedingt so machen willst, dann mach es doch so:
Mach für jeden Teil ne Include und hau den Code davon in eine Function.
Beispiel:
GameInclude.bb
Code: [AUSKLAPPEN]

Function GameInclude()
;Dein ganzer Code
End Function


Im Hauptprogramm includest du jetzt alle Dateien am Anfang und fügst an geigneter Stelle nur die eine Funktion ein.

walski
buh!

Hubsi

BeitragMi, Jan 28, 2004 16:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube Include ist hier falsch verstanden worden. An der Stelle wo Du dein Include hinstetzt wird einfach der Code aus der anderen Datei hineingequetscht. Blödsinn wär auch 2 Exen zu machen da eine Exe min. ~700 KB oder so hat und somit bei zwei schon satte 1.4 MB nur für die Exen zusammenkäme. Mach einfach so:

Code: [AUSKLAPPEN]
.menu
Repeat ; Hauptschleife Menü
  ; lustiger Code
Until spiel_starten

Repeat ; Hauptschleife Game
  ; sehr lustiger Code
Until raus_aus_game
Goto menu


So oder so ähnlich...

Edit:
Liegt der Hubsi tot im Keller, war der walski wieder schneller Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

bioso

BeitragMi, Jan 28, 2004 18:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Und wie ist das jetzt mit den Variablen muss man die dann alle Global setzten?

z.b.

; Hauptprogramm.bb
global variable = 1
print "" variable
include ("Programm.bb")



; Programm.bb
global Variable2 = 2
print "" Variable2

oder muss man da nichts machen?

Von Steffen

Jolinah

BeitragMi, Jan 28, 2004 18:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Es ist nicht nötig für ne Include die Variablen Global zu machen.

Der Text der in der Include Datei steht wird einfach ganz genau so übernommen in dein Hauptprogramm.



Code: [AUSKLAPPEN]

;Haupt.bb
a = 1
b = 2
c = 3


ist das selbe wie

Code: [AUSKLAPPEN]

;Haupt.bb
a = 1
Include "inc.bb"
c = 3


Code: [AUSKLAPPEN]

;inc.bb
b = 2


Deshalb darf eine Variable auch nur einmal vorkommen.
Die b variable in der Include Datei wird somit auch in der Hauptdatei gesetzt.

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMi, Jan 28, 2004 19:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Alle Variablen sind automatisch Local und können ausserhab von Functionen benutzt werden, dazu gehören auch Unterprogramme Gosub ... return

Also, sollange wie keine Functionen genutzt werden, sind alle Variablen überall nutzbar

innnerhalb von functionen sind die benutzten Variablen auch local aber nur in der function,
beim erneuten aufruf der Function sind die variablen alle wieder resetet und sind wieder auf null.
Um das zu verhindern muß dann die Variable im Hauptteil auf Global gesetzt werden damit der Wert bleibt

wenn Variablen in beiden Programmteilen genutzt werden sollen,
dann sind diese auch als Global zu deklarieren!

Arrays () sind aber immer global!


wenns geht so wenig wie möglich global machen und besser die werte mit dem Functionaufruf übergeben und zurück liefern

Code: [AUSKLAPPEN]
;Global b
;Global  Zaehler
For Zaehler = 1 To  100
    X=X+1
   Werteberechnnen()  ;hier mal was rechnen
Next
Print X  ; sollte ja 100 sein
Print b ;

WaitMouse

 Function Werteberechnnen()
For Zaehler = 1 To  2
 b=b-1
 Next
 End Function

blödes Beispiel, aber wenn jetzt der Zaehler global ist dann gibt es eine Endlosschleife
kannst ja mal testen mit dem global
[BB2D | BB3D | BB+]

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group