よろしくお願いします。
RPGのキャラ登録やSLGのユニット登録など、IDの登録状況を判断して
登録なら空きIDのみを選択させる、削除なら登録IDのみを選択させる
という処理をやりたいのですが、方法が考えつきません。
長くなりますがサンプル貼らせていただきます。
何卒ご教授願います。
また、そもそも配列でステータス管理なんかしない、など根本的な事柄も
ご指摘いただけるとありがたいです。
******************************************************************
******************************************************************
;変数・配列のリストと初期化 key=0 select=0 X=0 Y=0 step=0 ;0=メニュー選択 1=ID選択 2=登録・削除実行 select_menu =0 ;0=登録 1=削除 select_id =0 entry_NAME ="" dim ID,5 ;キャラクターID sdim NAME,5,5 ;キャラクター名 dim flg,5 ;キャラクターの登録状況フラグ ID(0)=0,1,2,3,4 ;ID登録 NAME(0)="aaaaa","","ccccc","ddddd","" ;名前の初期登録 repeat 5 ;登録状況フラグ設定 if NAME(cnt)!"" :flg(cnt)=1 loop ;1回呼び出せばよい命令 screen 0 input entry_NAME buffer 1 onkey*key_check ;カーソルキーの判定 *key_check key=wparam if key=38 :select-- ;カーソルキー↑ if key=40 :select++ ;カーソルキー↓ getkey enter,13 ;エンターキーの入力回数でstepフラグを更新 if enter=1 :step++ if step>2 :step=2 ;メイン *main gsel 1 color 255,255,255 :boxf color 0,0,0 gosub*menu gosub*judge gosub*list gsel 0 gcopy 1,0,0,640,480 stop ;メニューの表示 *menu X=40 :Y=0 pos X,Y :mes "登録" pos X,Y+20 :mes "削除" pos X,Y+60 :mes "ID:" return ;メニュー・IDの選択と登録・削除の実行 *judge switch step case 0 ;メニュー選択 if select<0 :select=1 if select>1 :select=0 X=0 :Y=0 if select=0 :pos X,Y :mes "◆" if select=1 :pos X,Y+20 :mes "◆" select_menu = select swbreak //*********************************************** case 1 ;ID選択 if select<0 :select=4 if select>4 :select=0 X=80 :Y=60 pos X,Y :mes select select_id = select swbreak // IDを選択するときに「登録」なら空きIDのみを // 「削除」なら登録済みIDのみを表示させたい //*********************************************** case 2 ;IDの登録・削除の実行 if select_menu =0 :NAME(select_id)=entry_NAME if select_menu =1 :NAME(select_id)="" step=0 swbreak swend return ;キャラクターリスト *list X=0 :Y=100 pos X ,Y : mes "ID" pos X+30,Y :mes "NAME" pos X+90,Y :mes "flg" X=0 :Y=120 repeat 5 pos X ,Y :mes ID(cnt) pos X+30,Y :mes NAME(cnt) pos X+90,Y :mes flg(cnt) Y+=20 loop return