Wiederholung von random

Das Board für Schwierigkeiten beim Adventure-Machen und zum Melden von Bugs
Post Reply
MrFloppy101
PaC-DK Newby
Posts: 15
Joined: 08 Jan 2014, 01:44
Location: Königsbronn, Baden-Württemberg

Wiederholung von random

Post: # 81001Post MrFloppy101
09 Jan 2014, 03:58

Hallo und guten Abend zusammen,
ich habe eine Frage zu Random. Ich möchte das sich bei einer bestimmten Zahl das Random von alleine wiederholt. Beispiel:

on(click)
{
randomnum (zufallszahl; 3)
if_num(zufallszahl ; 1)
{
showinfo (Das ist die eins; true)
break()
}
if_num (zufallszahl; 2)
{
showinfo (Das ist die zwei; true)
break()
}
if_num (zufallszahl;3)

?????
Ich möchte jetzt das wenn die 3 als Zufallszahl kommt der Randomvorgang von vorne beginnt

Wäre toll wenn ihr mir helfen könntet

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: Wiederholung von random

Post: # 81002Post japanhonk
09 Jan 2014, 06:46

Hi und willkommen bei uns Mr Floppy...


Machbar ist es, allerdings erschliesst sich der Sinn für mich nicht so recht. Aber egal.
Schreibe das ganze als Funktion, die kannst Du dann beliebig oft aufrufen.

Dazu gehst Du auf "neues Skript anlegen", gibst der Funktion einen passenden Namen
, z.B. Randomfunction.

Das Skript zum Aufruf ist dann das, was Du oben fortsetzen möchtest :

if_num (randomnum;3)
{
function (randomcounter)
break()
}

und in der Funktion steht dann im Prinzip nur, welches Skript die Funktion dann wieder aufrufen soll.
Das kann z.B. das Obige sein.

Wo steht denn das Skript, das Du gepostet hast ? In einem Objekt oder einm Char ...?

Dann gäbe es sinnvollere Lösungen, das Ganze nur mit einem extra Skript zu erledigen, welches sich immer wieder selbst aufruft...

Gruss

Manni
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de

MrFloppy101
PaC-DK Newby
Posts: 15
Joined: 08 Jan 2014, 01:44
Location: Königsbronn, Baden-Württemberg

Re: Wiederholung von random

Post: # 81003Post MrFloppy101
09 Jan 2014, 13:22

Danke für die Antwort. Werde ich gleich mal testen. Dies war nur ein Beispiel von mir um es verständlich auszudrücken. So richtig beschreiben kann ich es leider nicht wirklich weil sehr viele Zahlenvergleiche drin vorkommen. Und bei bestimmten noch nicht vorhersehbaren Zahlen muss es sich wiederholen damit nicht die selbe Zahl 2 Mal vorkommt (verwirrend :omg: ) Ich habe früher viel mit Basic gearbeitet und hier fehlen mir einfach noch ein paar Begriffe :-) Bestimmt gibt es elegantere Wege :-D

MrFloppy101
PaC-DK Newby
Posts: 15
Joined: 08 Jan 2014, 01:44
Location: Königsbronn, Baden-Württemberg

Re: Wiederholung von random

Post: # 81004Post MrFloppy101
09 Jan 2014, 14:24

OK ich versuchs mal noch anders zu formulieren. Nehmen wir an ich habe eine Object "Würfel" mit 6 Zuständen. Jeder Zustand ist eine Zahl. Nun wenn ich würfel kommt eine beliebige Zahl. Das ist auch nicht das Problem, sondern keine Zahl soll sich wiederholen dürfen. Das heißt wenn ich eine zwei Würfel, darf er nie wieder eine zwei würfeln, sondern soll dann automatisch eine andere Zahl wiedergeben, sprich solange wiederholen bis keine 2 mehr kommt.

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: Wiederholung von random

Post: # 81005Post japanhonk
09 Jan 2014, 17:51

Hi,

Basic kenne ich vor allem inder Version 3.5. von gaaanz früher ( Datasetten waren echt nervig...)

Ja, da gibt es den Befehl Goto.... und Subroutine....


Das gibt es hier nicht.

Aber es gibt eben die Möglichkeit ein eigenes kleines Skript zu schreiben, dass Du eben beliebig oft
aufrufen kannst.

Du kannst aber kein Skript aufrufen, das für einen Charackter oder ein Objekt ist. Nur
Cutscenes und Funktionen ( ist im Grunde das Gleiche, nur wird bei einer Cutscene der Rest des
Programms angehalten, eine Funktion läuft durch - unterscheidet sich nur in der Art, wie man es aufruft )

Also Beispiel :

In einem Raum befindet sich dein Würfel als Objekt.

Im Objektskript steht dann z.B.:

on (mouse)
showinfo (Würfel;true)

on (click)
{
hidealltext()
randomnum (Würfelnummer;6)
function (Würfeln)
}


In der Funktion Würfeln steht dann drin :

hidealltext()
setobj (Würfel;7) --> Der Würfel wird animiert - Würfelanimation in Zustand 7 ( wie ein Daumenkino...) , die 6 ersten Zustände sind die "Ergebnisbilder
wait (2)

if_num (Würfelnummer;1)
{
setobj (Würfel;1) ---> Zustand 1 des Objektes Würfel enthält z.B. eine Animation bei der der Würfel
mit der 1 nach oben liegen bleibt
jiggle (1;1) --> lässt den Bildschirm zittern, geht auch als Befehl in einem Objektbild fürs
für ein gutes Timing, ebenso ein playsound Befehl...
textout (1;Eine Eins - bitte nochmal würfeln;80;120;1;255;255;0)
break()
}
if_num (Würfelnummer;2)
{
setobj (Würfel;2)
jiggle (1;1)
textout (1;Eine Zwei - Spiel beendet;80;120;1;255;255;0)
quit()
}
if_num (Würfelnummer;3)
{
setobj (Würfel;3)
jiggle (1;1)
textout (1;Eine Drei - bitte nochmal würfeln;80;120;1;255;255;0)
break()
}

usw



Wenn Du das Objekt "Würfel" jetzt anklickst, wird die Funktion (Würfeln) ausgeführt.
Der Würfel wird geschüttelt und bewegt, es vergehen einige Sekunden und dann
wird der Würfel mit der Randomnum (Würfelnummer) nach oben liegend dargestellt

Bei einer 2 endet das Spiel, ansonsten wird der Spieler aufgefordert, das Objekt nochmal anzuklicken
und der Spass beginnt von Vorne.

Statt das Spiel per (quit) zu beenden, kannst Du auch eine andere Aktion starten, ein weiteres Skript ausführen, eine Fanfare abspielen - was Du willst.
Das muss dann anstelle des (quit) dorthin geschrieben werden.

Ist es das, was Du suchst ?

Gruss

Manni
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de

Zimond
Der Engine Papa
Posts: 3420
Joined: 06 Apr 2003, 19:34
Location: Krefeld
Contact:

Re: Wiederholung von random

Post: # 81006Post Zimond
09 Jan 2014, 18:26

ich wollte jetzt ein schönes Beispiel mit einer rekursiven Funktion posten, die theoretisch hätte funktionieren müssen aber beim testen mit der alten Engine zu einem Absturz führt... goto Befehl wäre dann für die neue Engine eine gute Bereicherung. So weiss ich leider keinen anderen eleganten Weg außer das was Japanhonk vorgeschlagen hat.
Image

MrFloppy101
PaC-DK Newby
Posts: 15
Joined: 08 Jan 2014, 01:44
Location: Königsbronn, Baden-Württemberg

Re: Wiederholung von random

Post: # 81007Post MrFloppy101
09 Jan 2014, 22:08

Danke euch Zwei für die Antworten. So wie Japanhonk das gelöst hat, kam mir auch in den Sinn. Nur nicht so ganz das was ich wollte. Ein Goto Befehl wäre genau richtig :-)

Wäre ein anderes Beispiel vielleicht machbar oder wäre das das selbe Problem ?

Nehmen wir an in einem Raum sind 5 Objecte ( 5 Bilder ) jedes Bild hat einen anderen Namen. Beispiel "Bild 1", "Bild 2"......
Wenn ich den Raum verlasse und wieder betrete sollen sich die Namen der Bilder tauschen. Also die selben 5 Namen nur anders angeordnet. Das was vorher Bild 3 war ist jetzt Bild 1 oder so.
Wenn ich es mit Random machen würde, würden ja wenn es blöd läuft alle Bild 5 heißen. Es soll aber kein Name Doppelt vorkommen.

Ist glaub ich das selbe Problem :(

Kennt ihr die Sendung oder das Spiel Deal or no Deal. Genau das selbe. 25 Koffer. Es ist bei jedem Spiel das selbe drinnen aber die Koffer wechseln durch, damit man nicht weiß wo was drin ist

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: Wiederholung von random

Post: # 81008Post japanhonk
09 Jan 2014, 22:31

Nee, kenne ich nicht, aber technisch gesehen kein Problem.


Du hast mehrere Möglichkeiten. Du kannst den Text jedes Bildes als Grafik erstellen.

Dann hast Du die 5 Bildergrafiken und die 5 Textgrafiken ( also 10 Objekte )
Objekte kannst Du per moveobj Befehl bewegen.

Also wäre es denkbar, den Raum zu betreten, die Bildgrafiken stehen zu lassen, die Textgrafiken
aber neu zu positionieren.

In etwa so :

on (enter)
{
randomnum (Bildtext;5)
if_num (Bildtext;1)
{
moveobj (Textgrafik_1;20;80;0)
moveobj (Textgrafik_2;40;80;0)
moveobj (Textgrafik_3;60;80;0)
moveobj (Textgrafik_4;80;80;0)
moveobj (Textgrafik_5;100;80;0)
break()
}
if_num (Bildtext;2)
{
moveobj (Textgrafik_1;20;80;0)
moveobj (Textgrafik_3;40;80;0)
moveobj (Textgrafik_4;60;80;0)
moveobj (Textgrafik_5;80;80;0)
moveobj (Textgrafik_2;100;80;0)
break()
}
if_num (Bildtext;3)
{
moveobj (Textgrafik_3;20;80;0)
moveobj (Textgrafik_4;40;80;0)
moveobj (Textgrafik_5;60;80;0)
moveobj (Textgrafik_2;80;80;0)
moveobj (Textgrafik_1;100;80;0)
break()
}
usw
}

Oder ( eleganter ) per Textout Befehl.
Die Grafiken bleiben, wo sie sind. Du gibst bei jedem Betreten des Raumes die Texte für ein Objekt
an einer anderen Stelle aus :

on (enter)
{
hidealltext()
randomnum (Textposition;5)
if_num (textposition;1)
{
textout (1;Objekt_1;1;20;80;255;255;255)
textout (2;Objekt_2;1;40;80;255;255;255)
textout (3;Objekt_3;1;60;80;255;255;255)
textout (4;Objekt_4;1;80;80;255;255;255)
textout (5;Objekt_5;1;100;80;255;255;255)
break()
}

if_num (textposition;2)
{
textout (1;Objekt_2;1;20;80;255;255;255)
textout (2;Objekt_3;1;40;80;255;255;255)
textout (3;Objekt_4;1;60;80;255;255;255)
textout (4;Objekt_5;1;80;80;255;255;255)
textout (5;Objekt_1;1;100;80;255;255;255)
break()
}
if_num (textposition;3)
{
textout (1;Objekt_3;1;20;80;255;255;255)
textout (2;Objekt_4;1;40;80;255;255;255)
textout (3;Objekt_5;1;60;80;255;255;255)
textout (4;Objekt_1;1;80;80;255;255;255)
textout (5;Objekt_2;1;100;80;255;255;255)
break()
}
usw
}

Ehrlich gesagt, habe ich einen Goto Befehl am Anfang auch etwas vermisst, mittlerweile aber
sehe ich darin keine Notwendigkeit mehr. Wahrscheinlich würden manche Skripte dadurch noch unübersichtlicher...

Gruss

Manni

Tipp :

Schau doch mal im Thread "Vorstellungen" vorbei, damit wir etwas mehr von Dir erfahren.
Dan weisst Du auch, mit wem Du es hier zu tun bekommen kannst :wink:
http://board.adventure-creator.com/view ... 48&t=11132
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de

MrFloppy101
PaC-DK Newby
Posts: 15
Joined: 08 Jan 2014, 01:44
Location: Königsbronn, Baden-Württemberg

Re: Wiederholung von random

Post: # 81009Post MrFloppy101
09 Jan 2014, 23:04

moveobj ist super !!!! Ich denke so kann ich das verwirklichen was ich vor habe :thumbup: :thumbup:
Danke, die Idee ist Klasse

Gruß Robby

Post Reply