Befehle ändern
Übersicht

XenoxBetreff: Befehle ändern |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo zusammen
Ich hoffe mal, von euch kann mir einer helfen bei folgender Frage: Wie verpack ich Befehle in eine Variabel??? (oder so ähnlich) Ich möchte, dass ich am Anfang einen unwichtigen Befehl wie "goto start" in einer Variabel speichern kann. Sobald aber etwas bestimmtes geschieht (z.B. eine IF-THEN schleife endet an einem bestimmten Ort) möchte ich die Variabel umschreiben können, so dass bei einem erneuten durchlauf des Programmes nun ein anderer Befehl in dieser Variabeln gespeichert ist... Wie geht das? Wie sag ich ihm: "geh dorthin und schreib diesen Befehl in diesen um..."? Es muss ja nicht zwingend in einer Variablen sein (glaube auch nicht, dass das überhaupt geht), aber irgendwie muss das doch möglich sein... HHEELLFFTT MMIIRR!!! ![]() ![]() ![]() gruss, xenox |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
1 Wort: Garnicht.
Variablen sind nur Variablen und können nix ausführen. Die einzige Möglichkeit die dir bleiben würde, wäre einen String zu verwenden, welchen du über ein Select - Case Konstrukt überprüfst und entsprechend reagierst. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Xenox |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok, ich kenn mich echt noch nicht so mit programmieren aus (habt ihr ja sicher schon gemerkt)...
also könntest du mir das mit dem String ein bisschen genauer erklären? Noch ne ähnliche frage: Gibt es auch gar keine möglichkeit eine Variable in einen "Goto" oder "Gosub" zu stecken? Bsp. Goto A$, so dass je nachdem wie A$ definiert ist, das Programm an einen anderen Ort springt? (Ich weiss selber, dass das genannte beispiel nicht funktioniert! sollte nur ne Hilfe sein...) |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nein kannst du nicht weil goto ein direkter Sprungbefehl ist der beim kompilieren mit der Zieladresse in der Exe gefüllt wird.
Zu meinem Beispiel: Code: [AUSKLAPPEN] global befehl function parse_befehl () select befehl case "start" goto start case "quit" goto quit end function |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Xenox |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Genau so etwas hab ich gesucht ![]() Danke, mal sehen ob ich damit fertig werde, sonst melde ich mich wieder ![]() Gruss und nochmals danke xenox |
||
judos |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
gleich dazu noch eine frage:
kann man den Befehl, der in einem String steht irgendwie ausführen ??? z.b. Code: [AUSKLAPPEN] a$="end" mache a$ mfg judos |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nein das kann man nicht *siehe 2. Posting in diesem Thread* | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
DA |
![]() Antworten mit Zitat ![]() |
---|---|---|
Moin.
Hui. Wie geil es doch wäre wenn es so gingen würde. Man könnte sich BB in kürzester Zeit nachschreiben oder andere Dinge tun. ![]() Doch leider ist dies nicht möglich. ![]() Mfg |
||
Deutscher Blitz Basic Chat |
judos |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hehe ![]() ich fang dann gleich an mit dieser funktion zu proggen ![]() melde mich, wenn ich fertig bin... mfg judos |
||
Xenox |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dreamora hat Folgendes geschrieben: Zu meinem Beispiel:
Code: [AUSKLAPPEN] global befehl function parse_befehl () select befehl case "start" goto start case "quit" goto quit end function Geht auch nicht... "Undefined label". Und eine Gosub funktion => "may not be used inside a function"... Vielleicht gibt es ne andere lösung, ich brauch einfach folgendes: Ich möchte auf gut deutsch, dass wenn im Programm eine Frage/Aufgabe falsch beantwortet/gelöst wurde, die wahrscheinlichkeit steigt, dass diese Frage durch "Rand" erneut aufgerufen wird. Kann ich Rand irgendwie beeinflussen und die Wahrscheinlichkeiten ändern? wohl kaum, oder? |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Doch. Indem du ihren Generierungebereich erweiterst und der falschen Frage mehr als nur 1 mögliche Zahl gibst. dann wird es wahrscheinlicher dass der Zufallsgenerator bei dieser Frage landet | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Doch, klar. Du kannst die Warscheinlichkeit bestimmen mit der etwas aufgerufen wird:
BlitzBasic: [AUSKLAPPEN] frageXchance#=0.5 Edit: Zahl*100=Prozentchance. D.h. wenn du bei frageXchance "1" angibst, ist die Warscheinlichkeit 100% das sie drankommt. |
||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
Xenox |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kann ich da auch Variabeln für verwenden? | ||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Xenox |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok, aber wie genau funktioniert da`?
Ich meine, welche werte stehen für was? "frageXchance" Gibt ja wie gesagt die wahrscheinlichkeit in Prozent an. Und "(0,1)>frageXchance" heist einfach, dass die wahrscheinlichkeit in diesem Falle 50 zu 50 steht? Und wenn ich schon mal dabei bin: was ist, wenn die Prozentzahlen nicht von anfang an Hundert ergeben? Ich meine, alle Aufgaben müssen ja am Anfang die gleichen "chancen" haben. Und doch müssen sich diese später vervielfachen können... |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja und?
Alle zusammen können trotzdem nur 100 ergeben. Wenn eine wahrscheinlicher wird, müssen die anderen gleichzeitig unwahrscheinlicher werden ... Musst dir halt überlegen wie du das programmiertechnisch genau umsetzen willst und wie es am effizientisten geht. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Xenox |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Aber ich weiss immer noch nicht, was das heissen soll:
"(0,1)>frageXchance". Was ist bei mehr als zwei werten? Wie sag ich, dass dieser eine 50% wahrscheinlichkeit und nummer zwei und drei nur 25% proznte haben? |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dann machst du ein value# = rand(0,1)
Code: [AUSKLAPPEN] if value < 0.1 ; was soll hier passieren elseif value < 0.2 ; was soll hier passieren ; hier ist übrigens 0.1 - 0.2 elseif ... endif der Pseudocode sollte ausreichen um alle probleme zu lösen ... musst halt dann die 0.1 etc durch variablen ersetzen |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du könntest es theoretisch auch folgendermaßen machen:
Jede Frage ist ein Type-Feld, in das die Warscheinlichkeit einfach als int, also als Ganzzahl eingetragen wird: BlitzBasic: [AUSKLAPPEN]
Wenn du jetzt eine zufällig ermitteln möchtest, schaust du erst wieviel "Warscheinlichkeit" es insgesamt gibt: BlitzBasic: [AUSKLAPPEN] Local GesWarsch Dann wählst du einen Wert aus der Gesamten Warscheinlichkeit aus: BlitzBasic: [AUSKLAPPEN] Local Wert = Rand(GesWarsch) um jetzt die richtige Frage zu bekommen, brauchst du nur noch folgendes zu tun: BlitzBasic: [AUSKLAPPEN] GesWarsch = 0 ; Wird jetzt zum zählen mißbraucht |
||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
Xenox |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok, das funktioniert soweit, aber value# = rand(0,1) produziert ja nur zwei werte. Nämlich 1.00000 und 0.00000, es ist also irrelevant ob jetzt 0.1, 0.2, oder was... nur kleiner und grösser als 0.99999 ist wichtig... | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group