キャラの名前どうするよ~文字列変数について
Pi STARTER(ラズベリーパイ用BASIC言語パッケージ)版
ひとりで遊べる人狼ゲームを公開中(要ラズパイ&Pi STARTER)
http://www.ne.jp/asahi/chitose/net/download/jinrou/
今回から、具体的なプログラミング上の体験談を書いていきます。
最初のテーマは「キャラの名前どうするよ」。
登場人物ごとの個性を想定してるわけじゃないから名前なんて何でもいいのですが、会話するゲームなんだからいちおう名前があった方がそれっぽいじゃないですか。
どうすんの名前って?
名前に限らず、通常BASICでは何か文字を出したいとき、
PRINT “おれさま”
と書いて実行(RUN)すると、
おれさま
という具合に、” “ でくくったところがそのまんま表記されるのです。
分かりやすいっすね。
ただこれにはひとつ問題があって、プログラムの中で登場するキャラの名前を都度このやり方で書いちゃうと、後でその名前を変更したくなったときにそれが出てくる場所全部を書き換えなきゃならないのです。
これプログラムが長くなるとめっちゃしんどいですよ(Pi STARTERのBASICは文字列置換の機能があるとはいえ、それでもそんな理不尽なプログラミングはやめた方がいい)。
そこで、そこでですよ。
「文字列変数」
今日はこれだけ覚えて帰ってください。
ちなみに言語によって単に「文字列」と言ったり「文字変数」と言ったりするみたいです。
文字列変数っていうのは、こないだ説明した変数ってのに文字列を代入できるバージョン。
例えば、
PRINT A
だと、Aの中に入っている数字を出力するのですが、これを
PRINT A$
と、「$」を付けてあげると、A$の中に入っている文字列を出力するんです。
フログラムでは、こんな風に書きます。
A$=”おれさま”
PRINT A$
これでちゃんと変数として機能します。
文字が入っているのに「変数」とはこれいかに。
「文字列変数」・・・ってよォ~~。「変数」ってのはわかる・・・。スゲーよくわかる。だが「文字列」って部分はどういう事だああ~~っ!?文字列が数なのかっつーのよーーーーーーッ!なんで「変文字」ってタイトルじゃあねえ-んだよォオオォオオオーッそれって納得いくかァ~おい?オレはぜーんぜん納得いかねえ・・・なめてんのかァーーーッ このオレをッ!「変文字」って呼べ!「変文字」って!チクショオーーー ムカつくんだよ!コケにしやがって!ボケがッ!
はぁはぁ、話がそれました。
ともあれ、しょっちゅう出てくるキャラの名前なんかはこうしとくと後がスゴくラクなのですよ。名前を変えたければ
A$=” “
の部分を書き換えてあげれば、それ以降のプログラム全部がそれに従って変わってくれるんだから。
私の「人狼ゲーム」では、最初こそ名前はA、B、C…Jとかだったのですが、いくら何でもそれではつまんないので、あるときから名前を次のように定めました。
A$=”(プレイヤーが入力)”
B$=”Bill”
C$=”Cody”
D$=”Duke”
E$=”Eddy”
F$=”Fred”
G$=”Gray”
H$=”Hugo”
I$=”Iggy”
J$=”Jack”
頭文字はぜんぶその変数の文字にして、かつ4文字に統一したのですね。
この方がテストプレイするときラクだったというとても安易な理由です。
なおプレイヤー名だけは最初から入力させる仕様でした。一応、昔BASICやつてた知識でこれくらいは作れたのです。
最初は「うわ、いちいち文字列変数にするとかめんどくさっ」とか思っていたのですが、これがかなり後になって活きたのです。
というのも、テストプレイに参加したウチの娘が、
「これクラスメートの名前入れてプレイしたい」
とか言い出したのですよ。
なんだってー!?
んなニーズあるのかこのゲームに?
こういうことがあるから、やっぱし文字列変数にしといて正解だったと実感。
すぐにプログラムの名前のとこだけ書き換えて反映。
娘にも大満足で遊んでもらえました!
その後、変数を別のファイルに保存しといて読みだすという命令を覚えることで、プログラムはさらにバージョンアップ。完成版では登場キャラ全部の名前を書き換えて保存する機能を実装するに至ったのです。これ何気にユーザーフレンドリーな気がするんですが、そう思いません?
↑は実際の文字列変数の部分のプログラム。
キャラ名だけでなく、会話内容もぜんぶ文字列変数としています。
次回は、キャラクターの役職決定のプロセスについて書きます。
これも最初は大苦戦したんですよ…。