2018年 12月21日
大分ゲーム部分が出来てきたので、この辺で一応映ればいいやという感じで仮に作っていたインフォメーション画面とユニットのセレクト画面を刷新する。
国のインフォメーション画面
整えたのはユニット表示の部分だけど、まずこの画面で REMOVEボタンを押して配備解除できるようにした。
まだ表示しか作ってないけど、部隊横の FORCEボタンを押すと攻め込む時の出撃部隊を選ぶ事ができる。
カード表示部分の上半分を押せばユニットセレクト画面になる。
画面 1ページ
今回ページは 3ページになった、下部の ← →でページを切り替えられる。
↑ ↓で出現 Lvの降順、昇順でソートできる。
HP、コスト、属性は押すたびに降順と昇順で切り替わりソート。
前から無いと不便だと思っていた配備表示は、国、配備場所、隊列の表示になってる、これでユニットを選ぶときに、どの国のどこに配備されているのか分かる。
そして新しく削除ボタンを作ってユニットを削除できるようにした。
2ページ目
筋力、魔力、知力、魅力、特殊を降順、昇順で切り替えソートできる。
3ページ目
攻撃力、防御力、魔攻力、魔防力、必要装備知性を降順、昇順で切り替えソート表示する。
作ったグラフィック
ソース
; 選択画面-------------------------------- self=0 ; モード切り替え selx1=0;7 ; 名前 selx2=180 ; 降順 selx3=245 ; 昇順 selx4=0 ; ページ左 selx5=150 ; 戻る selx6=490 ; ページ右 selxk=56 ; 間隔 selx7=310 ; 種別始め selx8=selx7+selxk selx9=selx8+selxk selx10=selx9+selxk selx11=selx10+selxk selxk=69 ; 間隔 selx12=310 ; HP selx13=selx12+selxk ; 配備 selx14=selx13+selxk ; コスト selx15=selx14+selxk ; 属性 selx16=selx15+selxk ; 削除 sely1=0;10 ; 種別始め sely2=47 ; ユニット始め selyk=38 ; 行間隔 sely3=sely2+selyk*7 ; ページ切り替え、戻る dim selkx1,40 ; タップ座標 dim selkx2,40 dim selky1,40 dim selky2,40 repeat 7,1 ; ユニットxy座標 selkx1(cnt)=0 : selkx2(cnt)=640-1 selky1(cnt)=sely2+selyk*(cnt-1) selky2(cnt)=sely2+selyk*(cnt)-1 selkx1(30+cnt)=selx16 : selkx2(30+cnt)=640-1 ; 削除 selky1(30+cnt)=sely2+selyk*(cnt-1) selky2(30+cnt)=sely2+selyk*(cnt)-1 loop selkx1(11)=0 : selkx2(11)=selx2-1 ; 名前 selkx1(12)=selx2 : selkx2(12)=selx3-1 ; 降順 selkx1(13)=selx3 : selkx2(13)=selx7-1 ; 昇順 repeat 3,11 ; 上のy座標 selky1(cnt)=0 : selky2(cnt)=sely2-1 loop selkx1(17)=selx7 : selkx2(17)=selx8-1 ; 筋力 selkx1(18)=selx8 : selkx2(18)=selx9-1 ; 魔力 selkx1(19)=selx9 : selkx2(19)=selx10-1 ; 知力 selkx1(20)=selx10 : selkx2(20)=selx11-1 ; 魅力 selkx1(21)=selx11 : selkx2(21)=wx-1 ; 特殊 repeat 10,17 ; 上のy座標 selky1(cnt)=0 : selky2(cnt)=sely2-1 loop selkx1(14)=selx4 : selkx2(14)=selx5-1 ; ← selkx1(15)=selx5 : selkx2(15)=selx6-1 ; 戻る selkx1(16)=selx6 : selkx2(16)=wx-1 ; → repeat 3,14 ; 下のy座標 selky1(cnt)=sely3 : selky2(cnt)=wy-1 loop selkx1(22)=selx12 : selkx2(22)=selx13-1 ; HP selkx1(23)=selx13 : selkx2(23)=selx14-1 ; 配備 selkx1(24)=selx14 : selkx2(24)=selx15-1 ; コスト selkx1(25)=selx15 : selkx2(25)=selx16-1 ; 属性 selkx1(26)=selx16 : selkx2(26)=wx-1 ; 消去 #defcfunc sel_key ; 選択画面入力 x=mousex : y=mousey : sel_keyn=0 if self=0 { repeat 7,31 ; 削除 if selkx1(cnt)<=x and selky1(cnt)<=y and selkx2(cnt)>=x and selky2(cnt)>=y : sel_keyn=cnt : break loop if sel_keyn=0 { repeat 16,1 if selkx1(cnt)<=x and selky1(cnt)<=y and selkx2(cnt)>=x and selky2(cnt)>=y : sel_keyn=cnt : break loop repeat 5,22 if selkx1(cnt)<=x and selky1(cnt)<=y and selkx2(cnt)>=x and selky2(cnt)>=y : sel_keyn=cnt : break loop } } if self=1 or self=2 { repeat 21,1 if selkx1(cnt)<=x and selky1(cnt)<=y and selkx2(cnt)>=x and selky2(cnt)>=y : sel_keyn=cnt : break loop } return sel_keyn /////// ユニット選択画面 ////////////////////// #deffunc sel_set ; selセット repeat pub : sel(cnt)=0 : loop ; クリア selb=0 ; 最大数 pn=mpl(m) ; プレイヤー if pn>0 { ; 英雄勢力の一覧 repeat pub,udsh(pn) ug=(cnt)*udb if ud(ug)=0 : continue sel(selb)=cnt : selb+ loop } if pn=0 { ; 中立勢力の一覧 uc=udsn(m) repeat nub ug=(uc+cnt)*udb if ud(ug)=0 : continue sel(selb)=uc+cnt : selb+ loop } return *select sel_set ; selセット seln=0 : sel_yg=0 : self2=0 bblsf=0 ; バブルソートフラグ、降順、昇順 repeat ;------- メイン ---------------- ;------- 入力 ------- ky=0 : kb=0 repeat 1 if kc>0 : kc- : break ky=sel_key() ; タップ座標 stick kb,256 ; ボタン loop if ky=14 and kb=256 : kc=3 : self- : if self<0 : self=2 ; ページ- if ky=16 and kb=256 : kc=3 : self+ : if self>2 : self=0 ; ページ+ if ky=15 and kb=256 : break ; 戻る ;------- スクロール処理 ------- repeat 1 ; スクロール if kc>0 : break if kb=256 { if sel_kn=0 : sel_kn=1 : sel_ky=mousey break } if sel_kn=0 : break : else : sel_kn=0 sel_dy=-(mousey-sel_ky)/20 ; 移動量 if sel_dy!0 : break ; スクロール中 if 1<=ky and ky<=7 { ; 選択 seln=sel(sel_yg+ky-1) if ud(seln*udb+28)=0 : self2=1 : break ; 選択 if ud(seln*udb+28)=1 : seln=0 : break ; 既に使われている break } if 31<=ky and ky<=37 { ; 削除 seln=sel(sel_yg+ky-31) un_del pn,seln ; ユニット消去 n=sel_yg+ky-31 repeat selb ; selを1つ詰める sel(n+cnt)=sel(n+1+cnt) if sel(n+cnt)=0 : break loop selb- kc=5 break } if 11<=ky and ky<=13 : sel_kf=1 : break ; ソートへ if 17<=ky and ky<=25 : sel_kf=1 : break ; ソートへ loop if self2=1 : break ; 選択して戻る if sel_yg>0 and sel_dy<0 : sel_yg- : sel_dy+ ; スクロール処理 if sel_yg+7<selb and sel_dy>0 : sel_yg+ : sel_dy- repeat 1 ; ソート if sel_kf=0 : break sel_kf=0 if selb<2 : break ; 1体のみ sel_kn=0 ; 入力をフラットに ; 照合データ if ky=11 : dn=0 : bblsf=(bblsf+1)\2 ; 名前 if ky=12 : dn=0 : bblsf=0 ; 降順 if ky=13 : dn=0 : bblsf=1 ; 昇順 switch self case 0 if ky=22 : dn=26 : bblsf=(bblsf+1)\2 ; HP if ky=23 : dn=13 : bblsf=(bblsf+1)\2 ; 配備 if ky=24 : dn=29 : bblsf=(bblsf+1)\2 ; コスト if ky=25 : dn=8 : bblsf=(bblsf+1)\2 ; 属性 swbreak case 1 if 17<=ky and ky<=20 : dn=ky+4 : bblsf=0 ; 筋力~魅力 if ky=21 : dn=8 : bblsf=(bblsf+1)\2 ; 特殊 swbreak case 2 if ky=17 : dn=11 : bblsf=0 ; 攻撃 if ky=18 : dn=12 : bblsf=0 ; 防御 if ky=19 : dn=14 : bblsf=0 ; 魔攻 if ky=20 : dn=15 : bblsf=0 ; 魔防 if ky=21 : dn=30 : bblsf=(bblsf+1)\2 ; 装備知力 swbreak swend if bblsf=0 { repeat selb-1 : cnt2=selb-cnt ; バブルソート降順 repeat cnt2 n1=sel(selb-cnt) : nd1=ud(n1*udb+dn) n2=sel(selb-cnt-1) : nd2=ud(n2*udb+dn) if nd1<=nd2 : continue sel(selb-cnt)=n2 : sel(selb-cnt-1)=n1 ; 入れ替え loop loop } if bblsf=1 { repeat selb-1 : cnt2=selb-cnt-1 ; バブルソート昇順 repeat cnt2 n1=sel(cnt) : nd1=ud(n1*udb+dn) n2=sel(cnt+1) : nd2=ud(n2*udb+dn) if nd1<=nd2 : continue sel(cnt)=n2 : sel(cnt+1)=n1 ; 入れ替え loop loop } loop ;------- 表示 ------- redraw 0 color 0,0,0 : boxf : color 255,255,255 sel_put ; 表示 dg_put redraw 1 await 1000/20 loop ;--------------------------------- kc=3 return