【プチコン4】乱数で文字色を変えるプログラム
自作ゲームでお笑いの頂点を取った野田クリスタルさんのネタを真似たツイートをしていたら本人の発売したゲームがすごいことになっていました。
自分が作ろうとしたのは、#000000~#FFFFFFの色コードでロールプレイングゲームのキャラクター番号を振り分けるというプログラムでした。より分かりやすく言えばポケモンのトレーナーIDに近いアイデアです。
プログラムを作った日からこの報告書を書くまでの二週間のブランクで作業の記憶がほとんど抜け落ちてしまいました(20代と思えない記憶力)が、最初はとりあえず乱数で決めた10進数の数値を16進数の文字列変数に変えてみたのがダメで(文字列変数→変数に戻せない)昔作った文字を光らせるプログラムを参考にHSVで0~360の色相をランダムに変更するプログラムを作ったり、迷走していました。
そこでTwitterで二名の方にご助言をいただきました。ryumagoさん、みなつさん、ありがとうございました。
「RGB 色コード OUT R,G,B」という変数から色コードを取得する命令が解決策となり(ツイートの〇_VALは変数名にあたる)、RGBの色コードをランダムに決定するプログラムを組むことができました。
後は以前巷のプチコン4講座をちょっとかじった知識でメインループを作ったり、ユーザー関数を定義したり、上限いっぱいで効果音と共に画面にカントの言葉「Es ist gut(これでよし)」と表示する終了処理を作ったり(昔別冊コロコロコミックで「カンニンGOOD」って漫画があって、主人公満天完人が最終回でこの言葉を言うんです)と余裕しゃくしゃくでした。
ですがこれで完成とはならず、次の壁が立ちはだかりました。
このプログラムにはchitoseArkさんの『「涼宮ハルヒの憂鬱キャラセリフかるた集」読み上げソフト』における「1度再生した読み札ファイルは除外するプログラム」を見様見真似で組み込んでいるのですが、そもそも#000000~#FFFFFFにあたる16,777,216枚数分ある札を配り切るための配列変数は作れません。
実行してもエラーにならない配列変数の値は9,999,999(7桁)まででした。
して、9,999,999番目の色っていうのはプチコン4上ではR(152),G(150),B(127)で、全体を通して青色と緑色までは出せるのに、赤色が綺麗に出ないということがわかりました。
というか、そもそも約一千万人弱もキャラメイクしないと思いますが、仮にこのままRPGを作ったとしてそのような大量の数(山札の中からランダムにカードが配られたような状態)から特定のキャラクター情報を呼び出そうというのも、想像すると砂場から砂粒をひとつ拾うような大・数当てゲームの様相を呈しているのがわかります。
とはいえ16,777,216個分の配列変数は作れなくても1個の変数に0~16,777,216の数値を代入することはできたので、乱数で色を変えるプログラムは一応完成しました。以下がそのソースコードとなります。
引き写ししたら1~255までランダムに色を決めるようになっているはずです。
一応綺麗な色が出るようにはなりましたが、これだと乱数がダブってしまうのを止められず、キャラクターの各パラメータをまとめるID番号にするにはちょっとバグが出やすそうでリスキーかな? と思いました。まあ、RGBの値が1つや2つ違うくらいの色の違いを見分けるのはそれはそれで大変なんですが……。
考えれば考えるほど底なし沼に嵌っていって、とりあえず先に仮のパラメータを表示するステータス画面を作ってしまおうかと、なおキーヌさんの講座用プログラムから該当する部分を抜き書きしようとしたら今度はエラーの火消しに手が回らなくなりました。目コピではプログラミングの知識が深まらないことを痛感しました。
今回は自分の考える「敵や味方キャラクターのパラメータを入れ替えたり書き換えたりして楽しめるRPG」における「キャラクター固有の色情報」を決めるためのプログラムでした。
この通称(自分しか呼んでないけど)「因果の塔」企画、まったく絵に描いた餅どころかほとんど白紙のようなものなので着地点がどこにもないのですが、今後も研究課題として取り組んでいきたいと思います。
とはいえ、今は自分の「こういうプログラムが作れないか?」というニーズでモチベーションを作ってプチコン4を触っているような感じで、以前考えていたようなネットのプチコン4講座を片っ端から当たってみる予定が後回しになっているのが現状です。
いきなりツイッター上でゲームセンターあらしの話を始めて大風呂敷を広げた熱血プチコン4学習漫画「プチコンアニキ」も未着手ですし。
…………R-TYPE FINAL2やったりFit Boxing 2やったりウマ娘やったりと1日が24時間あっても足りないです。最初は夕方~夜の空き時間でプチコンできるかなと思ってたけど、Switchの前で考え込むと3~4時間くらい吹き飛んで眠るどころじゃなくなってしまう……。
報告は以上です。
(終)
この記事が気に入ったらサポートをしてみませんか?