見出し画像

まずはゲームの仕様書を作ってみる…前に

Pi STARTER(ラズベリーパイ用BASIC言語パッケージ)版
ひとりで遊べる人狼ゲームを公開中(要ラズパイ&Pi STARTER)

http://www.ne.jp/asahi/chitose/net/download/jinrou/

何を作るときもそうだと思いますが、「どんな仕上がりにしたいか」がある程度具体的になってないと着手すらおぼつかないですよね。

これまで書いてきたように、今回作りたいのはPi STARTERのSMILE BASICで動く「人狼ゲーム」。前述したように私は未経験なので、まずはもともとのカードゲームのパッケージに入っていた6ページ相当の小さなマニュアルをベースに、これをパソコン上のプログラムで再現可能な形に置き換えていくことからスタートすることにしました。

画像1

決意するときは「こんなん楽勝~!」とか思っていましたが、実際に自分がこれをプログラミングするという観点で書き起こしていくといろんなことが見えてくるものです。

村人は(プレイヤー含めて)10人ってことにしよう。人狼2名、予言者1名、ボディーガード1名、霊媒師1名、裏切り者1名、普通の村人4名…うん、理想的な「人狼ゲーム」の在り方に近いと思う。
てことは、10個の村人に対する変数が必要だな。とりあえずA~Jにしよう。

村人のパラメーターってどのくらい必要?まず役職でしょ、生きてるか死んでるか…あ、マニュアル読むと追放されてるのと死んでるのは別なんだ…。あとは誰を指名するかとかに役立つから、信用ってパラメーターも欲しいね。あとボディーガードが誰を守るか。前日指名した奴は次の日指名できないから、それもデータとして持っておく必要あるよね。それと予言者や霊媒師が占った奴もどこかに値として持っとかないと、それからそれから…。

おい、これ必要なパラメーター数に対して変数の数足りないんだけどどうすんだよ!!
と自分で自分にツッコミを入れながら試行錯誤。

実はこのとき知らなかったのですが、SMILE BASICは昔の(少なくとも私がやっていた頃の)BASICと違い、変数に任意の単語を当てても良かったのです(例えば「JINROU=1」みたいなのが許される)。
しかし私の中には、変数はA~Zのアルファベットしか存在せず、26個使い切ったらもうそれまで、という頭がありました。さぁ早くも頓挫です。どうしましょう?

「でもそんなこと言ったらRPGなんてアホほどパラメータあるやん!いくらBASICだからって26個しか変数使たらあかんとかおかしいやろ!絶対なんか方法あるはずや…」

そんなとき、天啓のようにひらめいたのですね。
昔、ベーマガとかで入力したプログラムに、そういやあったわそんなの!

「DIM」

「ALL ABOUT Pi STARTER」に載っている命令一覧(リファレンス)見ると、確かにありました。
「配列名の配列を宣言し、使用する要素数を決めます」
なんかよう分からんけど、こういうときは仮のプログラムを作成して試してみるのが早い。

DIM A[2]
A[0]=1
A[1]=2
PRINT A[0]+A[1]

はたしてこれの実行(RUN)結果は…「3」だった(1+2だからね)。
ばんざーい!!
何でこんな命令いままで知らなかったんだろ私のバカ!
これあれば無限に変数作れるやん!(試してないけど無限はきっと無理)

これで村人の変数問題は解決しそうだ。
A[●]、B[●]…J[●]みたいにして、キャラクターごとに持っているいろんなパラメーターを管理していくことにしよう。

これでようやく、仕様書にやりたいことを落とし込める!
かくして、続きは後半にて…。

この記事が気に入ったらサポートをしてみませんか?