#-clisp (defun ! (n) (if (zerop n) 1 (* n (! (1- n))))) (defconstant +monsters+ #("焼きたてパン" "強いシャチホコ" "もんじゃ焼き一年生" "怪人ホタテ男" "ニセ勇者" "逃げ足の早いアレ" "睡魔" "煩悩" "愛らしい子犬の中の人" "恋するスズメバチ" "勇敢なクマンバチ" "信じられない物" "勇者の師匠" "浮遊する鎧" "怪盗ドボン" "闇の招き猫" "誘惑のカスタードクリーム" "しょっぱすぎる籠手" "カレー味の兜" "光沢だけは一流の盾" "若葉マークのモンスター" "新緑の季節" "梅雨時の車両のニオイ" "暑すぎる夏" "新宿らしき何か" "やたら発達したドーナツ" "育ちすぎたクマー" "なごやかな雰囲気" "凍り付いた気配" "忍び寄る恐怖")) (defconstant +skills+ #("お豆腐の買い方" "鉛筆の買い方" "消しゴムの使い方" "メモの取り方" "攻撃に使えないこともない呪文" "裏町の歩き方" "森林浴" "珈琲の味" "しじみのみそ汁の作り方" "回覧板の回し方" "郵便物の投函方法" "立ち話のコツ" "猫の呼び方" "犬の呼び方" "カラスの呼び方" "鳩専用豆鉄砲" "秘密の趣味" "速く走るコツ" "剣の使い方" "斧の使い方" "まきわりで、まっきわりわり" "聖なる祈り" "孤独" "涼しく過ごすコツ" "お洒落のコツ" "卵をふわっと焼く方法" "ごはんの研ぎ方" "油汚れの対応方法" "大人の振るまい" "Suicaの使い方")) (defun level-up-message (level monster skill &optional melancholy-p) (format t "~&*----- ~Aを倒した! ~D の経験値を得た。 勇者は~:[ ~D に~;、また、~]レベルが上がった! 勇者は、~:[~A~;ふと空しさ~]を覚えた。~%" monster (! level) melancholy-p level melancholy-p skill)) (defun interval-message () (format t "~3%そして、 かくかくしかじかで、山あり谷ありの冒険が続いたが割愛。~2%")) (loop for x from 1 as monster = (aref +monsters+ (random 30)) and skill = (aref +skills+ (random 30)) while (< x 30) do (level-up-message x monster skill) (interval-message) finally (level-up-message x monster nil t))