Forum moved to if-forum.org
Autor Nachricht
<  Ein Objekt per Zufall verstecken
RobinOsaka
BeitragVerfasst am: Mi, 19 Jul 2006 - 3:53  Antworten mit Zitat
Wasserträger
Wasserträger


Anmeldungsdatum: 16.07.2006
Beiträge: 28
Wohnort: Japan

Folgende Idee:

In einem Zimmer sind viele Moebelstuecke, die man untersuchen kann. Es gilt einen Gegenstand zu finden, der aber per Zufall einem der Moebelstuecke zugewiesen wird. Bei jedem Spiel liegt er also woanders.

Ich habe jetzt eine umstaendliche Loesung, indem es bei jedem Moebelstueck eine Prozentchance gibt, dass dort der Gegenstand gefunden wird. Man kann dann aber auch ein Moebelstueck x-mal untersuchen, bis der Gegenstand erscheint.

Das geht bestimmt auch eleganter...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Martin
BeitragVerfasst am: Mi, 19 Jul 2006 - 7:06  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 25.08.2002
Beiträge: 677
Wohnort: München

RobinOsaka hat folgendes geschrieben:
Ich habe jetzt eine umstaendliche Loesung, indem es bei jedem Moebelstueck eine Prozentchance gibt, dass dort der Gegenstand gefunden wird. Man kann dann aber auch ein Moebelstueck x-mal untersuchen, bis der Gegenstand erscheint.

Ja, diese Lösung ist nicht ideal. Denn man kann nicht nur dasselbe Möbelstück so lange untersuchen, bis man den Gegenstand findet, sondern man kann auch alle vier Möbelstücke untersuchen, ohne dass man überhaupt etwas findet. (Das passiert in mehr als 30% aller Fälle, wenn man jedes der vier Verstecke einmal untersucht und die Chance etwas zu finden pro Möbel 25% ist!)

Du solltest am Anfang einmal festlegen, wo dein Objekt versteckt ist, und die in einer Objektvariable festhalten:
Code:

ObjVar Versteck

Aktion Anfang
Ausf
    Zufall Versteck (Stuhl Tisch Schrank Bett)
    ...
EndeAusf

Dann prüfst du bei jedem Objekt, ob es das Versteck ist:
Code:

Deko Stuhl
Name 'Stuhl' m
Subst 'stuhl' m
Ort Billardsalon
NachAusf
    (untersuchen)
    wenn (Versteck = selbst) dann
        sei Versteck 0
        ObjNach Schlüssel1 beimir
        Text 'Du findest einen Schlüssel!'
    Ende
EndeAusf
Attr Sitz Ablage

Wenn ja, verschiebe das Objekt zum Spieler und lösche die Referenz auf das Versteck.

Dummerweise hast du jetzt denselben Code viermal, bei jedem Möbelstück. Du könntest den Code in eine Aktion auslagern:
Code:

Aktion Möbel_untersuchen
Ausf
    wenn (Versteck = aObj) dann
        sei Versteck 0
        ObjNach Schlüssel1 beimir
        Text 'Du findest einen Schlüssel!'
    Ende
EndeAusf

Deko Stuhl
Name 'Stuhl' m
Subst 'stuhl' m
Ort Billardsalon
NachAusf
    (untersuchen)
    Ausf Möbel_untersuchen
EndeAusf
Attr Sitz Ablage

(Achtung, hier musst du aObj prüfen!)

Oder du könntest eine Objektklasse definieren:
Code:

ObjKlasse Möbel
NachAusf
    (untersuchen)
    wenn (Versteck = selbst) dann
        sei Versteck 0
        ObjNach Schlüssel1 beimir
        Text 'Du findest einen Schlüssel!'
    Ende
EndeAusf
Attr fest

Obj Stuhl (Möbel)
Name 'Stuhl' m
Subst 'stuhl' m
Ort Billardsalon
Attr Sitz Ablage

Und noch eine Variante, bei der man immer alle vier Möbel untersuchen muss. (Diese Methode wird sehr oft, wahrscheinlich zu oft verwendet.)


Code:


Flagge abgesuchte_Möbel
ObjAttr abgesucht

ObjKlasse Möbel
NachAusf
    (untersuchen)
    wenn /(selbst abgesucht) dann
        AttrHin selbst abgesucht
        inkr abgesuchte_Möbel
            wenn (abgesuchte_Möbel = 4) dann
            ObjNach Schlüssel1 beimir
            Text 'Du findest einen Schlüssel!'
        Ende
    Ende
EndeAusf
Attr fest

_________________
Every silver lining has a cloud.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
RobinOsaka
BeitragVerfasst am: Mi, 19 Jul 2006 - 14:43  Antworten mit Zitat
Wasserträger
Wasserträger


Anmeldungsdatum: 16.07.2006
Beiträge: 28
Wohnort: Japan

Puh, das muss ich erstmal verdauen. Jedenfalls wieder sehr lehrreich, danke!

Vielen Dank fuer die ausfuehrlichen Antworten. Ich bin begeistert, dass dieses Forum lebendig ist und ich diese Hilfsbereitschaft erfahre. Ich werde versuchen mich zu zuegeln, um nicht bei jedem Problem gleich nachzufragen. ;-)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
RobinOsaka
BeitragVerfasst am: Mi, 19 Jul 2006 - 15:43  Antworten mit Zitat
Wasserträger
Wasserträger


Anmeldungsdatum: 16.07.2006
Beiträge: 28
Wohnort: Japan

Ok, gerafft. Das Meiste zumindest.

Nicht klar ist mir der Unterschied zwischen 'selbst' und 'aObj', warum ist das nicht gleich.

Und 'Aktion' werde ich mir im Handbuch nochmal durchlesen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Alle Zeiten sind GMT + 1 Stunde (MEZ)

Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Seite 1 von 1
if-de :: Forum Foren-Übersicht  >  T.A.G.

Neues Thema eröffnen   Neue Antwort erstellen


 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.



Kontakt: Administrator

Powered by phpBB and NoseBleed v1.05