昼間、なんか気まぐれでAD&D風のキャラメイクプログラムをイジりはじめたら止められなくなりまして・・ラピュタはページデータを作ってただけなので次回にまとめます。
まず前回はテキトーに決めてた構造体の名前とかスロットの変更・追加をしました。一人分でも結構な要素あるなぁ・・
種族はとりあえず人間とエルフ。男女でSTRには差が出るんだけど・・めn・・男女差別にうるさい昨今の風潮に配慮しまして男女平等で行きますか。
後は大域変数で作ったキャラを入れる分と選抜メンバー用の入れ物を用意しました。ここに追加していく予定。
chara-make関数はこんな感じで。返り値のCHARACTER構造体を次のclass-check関数へと流す、と。
PoRのマニュアルにはHP,AC,MOVE,MONEYなどの算出方法が書かれて無くて、ネットでちょっと調べても出なかったのでもうテキトーに。関係ありそうな種族補正を使ってるけど、コレ本来は能力値から出すハズですよね。ま、良いやw
続いてCLASS構造体を・・うーん・・今の所イメージがまだ固まってないので文字列とシンボルしか入れてないっす。最終的には文字列をCHARACTER構造体のCLASSに入れるだけだからなぁ・・。AD&Dのキャラメイクシステムが見つからなかったのでWIZのイメージで、Classに就くには能力値の最低値があると考えての要素。FigterはSTRが最低でも13はないと就けないのでは・・?と。
渡されたCHARACTER構造体の能力値から13以上のものを選んでリストにして、CLASS構造体のリストを参照して必要能力で満たしているものをリストで返す・・たったそれだけの事ですけど、どうしたらエエか・・とかなり考える。
結果、分解したSTR,INT,WIS,DEXを連想リストに組み直して、それをFilterで13以上のものだけを抜き出し、CLASS-REQUIREのシンボルとすり合わせてCLASSのリストから抜き出す・・・という形をひねり出す。StrとかIntでFilterすると数値のリストが返ってきて参照元に出来ないんすよねぇ
で、テスト。オオオ、オッケイ!
で、出力の整形。あと、いつもIfを多用してしまうので今回は練習としてCaseを使いました。
テストではこう。MAGIC-USERのCが抜けてる、また直しておこう。
これでいつものREADで数値を入力してCHARACTERに反映させて大域変数に格納って流れかな。
しかし亜人のマルチクラスは条件とかどうなってんだ?PoRのメイキングだと能力値の制限なかった感じだったけどなぁ・・。ま、勉強になったからエエか。
旧メインPCがお亡くなりになった流れでPCの再編成をした結果、非常に使い勝手が良くなって、ついつい長時間楽しんでしまった(^o^)