Programm während der Ausführung ändern

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

JamesBrown

Betreff: Programm während der Ausführung ändern

BeitragFr, März 09, 2007 11:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
Vielleicht hat sich das schon mal jemand von euch überlegt wie das gehen soll, aber ich bin halt kein BB Profi:

Folgendes soll das Programm können: Während dem Laufenden Prozess soll das Programm angehalten werden und man soll den Code ändern können und wieder neu laden, am besten an der Stelle wo man unterbrochen hat.
Beispiel:

Man hat eine Variable gesetzt und sich dabei verschätzt oder vertippt. Um diesen Fehler zu beheben müsste man nur das Programm kurz anhalten, die Variable nach seinen Wünschen ändern und wieder dort einsetzten wo man dran war.

Ist günstig wenn man seine Spiele auf mögliche Fehler testen möchte.

Ich bitte um Ausführliche Ratschläge oder vielleicht Tipps für den zu brauchenden Code.

Vielen Dank für eure Hilfe!
 

coldie

BeitragFr, März 09, 2007 12:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Bin mir jetzt auch nicht ganz sicher, aber ich meine, dass es nicht so einfach möglich ist auf SÄMTLICHE Variablen in der Art und Weise zugreifen zu können.

Zunächst mal müsstest du halt eine Schleife einbauen, in der man die Variablen dann verändern kann (was eigentlich kein Problem sein sollte). Während des Ausführens dieser Schleife wird das Spiel sowieso automatisch unterbrochen.

Nur wie willst du gezielt auf einzelne Variablen zugreifen? Du kannst entweder nur jede einzelne Variable "hardgecodet" in eine Art Auswahlliste eintragen, oder es mit Types/Arrays versuchen (wobei Types wohl ziemlich langsam wären, und Arrays ziemlich unübersichtlich).

Mit der Auswahlliste würde ich es mir in etwa so vorstellen:


Code: [AUSKLAPPEN]


select VariableNr

  case 1

   If Keyhit(XY) then Variable1 = Variable1+1

   If Keyhit(XZ) then Variable1 = Variable1-1


  case 2

   If Keyhit(XY) then Variable2 = Variable2+1

   If Keyhit(XZ) then Variable2 = Variable2-1

[...]

  case 754

   If Keyhit(XY) then Variable754 = Variable754+1

   If Keyhit(XZ) then Variable754 = Variable754-1

end select


Wobei Variable1(/2/754) jeweils für irgendwelche Variablen stehen, die du allesamt per Hand in diese Select case "Liste" eintragen müsstest.

Naja eine Heidenarbeit, aber meistens will man ja auch nur bestimmte Variablen verändern, man müsste daher auch nicht alle eintragen.

garret

BeitragFr, März 09, 2007 17:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine Möglichkeit wäre auch eine Art eigene, interne Scriptsprache. Über eine Eingabemöglichkeit kannst du die Variablen dann unter Verwendung von eigens erschafften Schlüsselwörtern ändern.

Also nehmen wir an, du hast die Variablen A und B. Wenn du nun in deiner Eingabe den "künstlichen" Befehl Set(Variable, Wert) hast, kannst du während der Laufzeit und mittels String-Operationen die Variablen ändern. Zum Beispiel:

Eingabe: Set(A,20)

Im Quelltext suchst du dann mit Instr() nach der geöffneten Klammer "(" und liest dann bis zum Komma aus (Mid()), um die entsprechende Variable zu ermitteln. Vom Komma dann bis zur geschlossen Klammer ")" lesen, um den Wert zu erhalten.
Das Ausgelesene in den Datentyp umwandeln und fertig ist's.

Anschließend machst du eine If-Abfrage oder wohl besser Select-Case, um der Variable den Wert zuzuweisen.


If Befehl$ = "Set"
Select Variable$
Case A$ A1=A1+Wert
Case B$ B1$=Wert$
End Select
EndIf


MfG garret
>>nec aspera terrent<< (Auch Widerwärtigkeiten schrecken nicht)

JamesBrown

BeitragSa, März 10, 2007 12:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

vielen Dank schonmal für eure Antworten.
Ich hatte mir das eigentlich gesagt eher anders vorgestellt.
Also ich hatte mir vorgestellt den Quellcode vor jedem Spielbeginn in eine txt abzuspeichern und diese dann nach belieben im Programm als Programmfenster öffnen zu können. Dann sollte es Möglich sein die änderungen direkt zu übertragen.
Und mit dem "neuen" Quellcode weiterarbeiten zu können.
Ich weiß eben nicht ob eine Programmiersprache das ohne weiteres hinbekommen könnte.
Vielleicht ist es ja sogar möglich während des laufenden Prozesses BB zu öffnen und den Quellcode dann zu ändern.

Vielen Dank nochmal für eure Anregungen.
Vielleicht könnt ihr ja noch weiter Antworten.

biggicekey

BeitragSa, März 10, 2007 12:38
Antworten mit Zitat
Benutzer-Profile anzeigen
nach einer änderung im quellcode müsste dieser ja erst neu compiliert werden.
ich denke nicht das das geht.
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller
Nothing more to register - you've cleaned us out![/size]

Silver_Knee

BeitragSa, März 10, 2007 23:27
Antworten mit Zitat
Benutzer-Profile anzeigen
in vielen Programmiersprachen gibt es den Befehl ExecCommand, der Befehle ausführt BB gehört nicht dazu... aberdiese tollen GetEnv und SetEnv könnten helfen wenn du damit enscheidende variablen verknüpfst hast du ruck-zuck cheats mit denen du din Spiel manipulieren kannst sofern du eine eingabezeile mit soetwas machst:Code: [AUSKLAPPEN]
SetEnv(Mid(txt,1,InStr(txt,"=")),Mid(txt,InStr(txt,"=")+1))

wobei txt der eingegebene text ist.
sry falls ich einen fehler im code gemacht habe

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group