Kategorien
Dialog

Ballpark – Inform Example No. 60

Das Inform-Beispiel Nr. 60, nach Dialog portiert

%% Manchmal ist es besser, eine Zahl eher vage als exakt zu
%% bezeichnen, beispielsweise dem Spieler zu erzählen, dass 
%% sich viele Menschen in dem Saal befinden, als exakt 42.

%% Die Idee ist, sich durch eine Liste zu arbeiten, die hier 
%% als globale Variable definiert wird, und den Text in der 
%% Liste auszugeben, sobald die Zahl höher ist als der 
%% Eintrag.

(current player #player)
(#player is #in #stadium)

(global variable (round_numbers [[1 keine] [2 einen] [3 ein paar] [6 einige wenige] [11 einige] [21 viele] [1000 sehr sehr viele]]))

(population of $ is $)
	(fail)

#stadium
(room *)
(name *)	Stadion
(from * go #west to #hotdogstand)
(from * go #south to #restroom)
(population of * is 500)

#hotdogstand
(room *)
(name *)	Hot Dog Stand
(population of * is )
(from * go #east to #stadium)
(population of * is 3)

#restroom
(room *)
(name *)	Stadion
(population of * is )
(from * go #north to #stadium)
(population of * is 750)

(look (room $Room))
	(population of $Room is $Number)
	Hier siehst du
	(round_numbers $List)
	(get best entry of $Number in $List)

(get best entry of $N in [$Check | $Rest])
	([$F | $Else] = $Check)
	(if) ($N < $F) (then)
		(display $Else) 
	(endif)
	(get best entry of $N in $Rest)

(display [$First | $Rest])
	$First
	(display $Rest)

(display [])
	Menschen.
	(stop)

%% Testen mit w / o / s