2019年 11月 15日
そろそろ 1ヶ月になるので途中経過で更新する。
今作ってるのはタイトルとゲームスタート時のマップ選択画面だ。
まずタイトル。
タイトルのグラを付けてないので、機能とタップエリアだけ表示している。
NEWGAME でマップ作成から、CONTINUEはセーブデータ画面になる。
NEWGAME
下の NOを押すとランダムでマップを次々と作成する。
左の S、M、Lはヒーローの多さを選択、右の S、M、Lはマップの大きさを選択する。
マップ Sで作成。
マップ Lで作成。
マップ L、ヒーロー Lで作成。
YESを押すと次はプレイヤー選択画面になる。
この画面では HEXを押すたびに、ヒーロー → プレイヤー → 中立と切り替わる。
NEXTを押すと次はカラーを変更する画面になる。
ヒーローの国をタップするとカラー選択画面になる。
色を選ぶと入れ替わる。
COLOR下の HEXが紫から白になってる。
STARTを押すと始まるが、まだこの画面からゲームになるとバグで落ちる。
それではソースを置くけど、作成途中なのでグチャグチャだ。
タイトル
;---------- TITLE ---------- #deffunc credit ; クレジット creditf=0 : kc=5 repeat repeat 1 if kc>0 : kc- : break stick kb if kb=256 : kc=5 : creditf+ loop if creditf=1 : break redraw 0 color 1,1,1 : boxf : color 255,255,255 pos 100,100 : mes "hituji kougaku" pos 100,130 : mes "alte" pos 100,150 : mes "angek maker" pos 100,180 : mes "sitonohane" redraw 1 await 1000/10 loop return #deffunc option ; オプション ; mevo ; muvo ; sevo ; credit return *titl ky=0 : kb=0 : kc=5 repeat repeat 1 if kc>0 : kc- : break ky=titl_key() : stick kb loop ; NEW GAME if kb=256 and ky=1 { ;new_game ;if new_gamef=1 : hextf=0 : mainf=5 : break gsf=0 : mainf=4 : break } ; CONTINUE if kb=256 and ky=2 { save_putf=0 : gosub *load if savef=11 : mainf=5 : break ; ロードした } ; OPTION if kb=256 and ky=4 : credit : ky=0 ; CREDIT クレジット if kb=256 and ky=5 : mainf=6 : break ; EXIT redraw 0 color 1,1,1 : boxf : color 160,160,160;255,255,255 repeat 5,1 boxf tix1,tiy1(cnt),tix2,tiy2(cnt) loop color 255,255,255 pos tix1+20,tiy1(1)+10 : mes "NEW GAME" pos tix1+20,tiy1(2)+10 : mes "CONTINUE" pos tix1+20,tiy1(3)+10 : mes "OPTION" pos tix1+20,tiy1(4)+10 : mes "CREDIT" pos tix1+20,tiy1(5)+10 : mes "EXIT" dg_put redraw 1 await 1000/10 loop return
マップ作成
#deffunc map_check ; 6回同じ処理なので一つにまとめ ;if map(m)=0 : return ; 地形無し f=0 repeat 25 : cn=cnt if mf(cn)=0 : break ; 登録はもう無いよ if mf(cn)=m : f=1 : break ; 登録済み loop if f=1 : return ; 登録済み mf(cn)=m ; チェック済みに登録 return #deffunc map_build int map_buildn ; map生成(消す数) repeat ;------- マップ生成 ------- repeat 26 ; リセット map(cnt)=0 mf(cnt)=0 loop mapg=0 ; いくつ地形を作ったか mfn=0 ; 次に処理する MAP No. repeat 25,1 ; MAPを地形で埋める r=rnd(6)+1 : map(cnt)=r loop repeat map_buildn ; ランダムにn個地形を消す repeat r=rnd(25)+1 if map(r)=0 : continue map(r)=0 : break await 0 loop loop /* repeat map_buildn ; ランダムにn個地形を消す r=rnd(25)+1 ;if cnt=0 : r=1 ;if cnt=1 : r=4 ;if cnt=2 : r=25 map(r)=0 loop */ ;map(2)=0 repeat 25,1 if map(cnt)=0 : continue mapg+ ; 地形有りのマス数 loop /* bn=0 ; 地形無しのマス数 repeat 25,1 if map(cnt)=0 : bn+ loop mapg=25-bn ; 地形有りのマス数 */ repeat 25,1 ; 始めるマップの位置 if map(cnt)>0 : mapn=cnt : mf(mfn)=mapn : mfn+ : break loop f=0 repeat 25 ; 隣接マップ順に順次確認処理------------------------------- repeat 6,1 m=hmv(mapn,cnt) if m=0 : continue if map(m)=0 : continue map_check ; マップチェックと書き込み処理 loop /* repeat 6,1 : mapnc=cnt m=hmv(mapn,mapnc) map_check ; マップチェックと書き込み処理 loop */ mapn=mf(mfn) ; 次にチェックする地形 if mapn=0 : break ; が無いなら終わり mfn+ ; if mapg=mfn : f=2 : break ; チェック数とマス最大数が同じなら全部繋がってるとみなして完成 loop if mapg=mfn : break loop return #deffunc map_bd1 ; マップ生成 repeat 26 : mpl(cnt)=0 : loop ; 支配しているマップ map_build map_buildg /* map(1) =0,0,3,0,0,0,3,0,0,3 map(11)=0,0,3,0,0,3,0,0,3,0 map(21)=0,3,0,0,0 */ repeat 26 : mf(cnt)=0 : loop ; リセット n=0 repeat 25,1 ; 存在するHEX if map(cnt)=0 : continue mf(n)=cnt : n+ loop repeat 26 : hf(cnt)=0 : loop ; 生存フラグリセット ;plb=map_hrn ; ヒーロー数 if mapg<plb : plb=mapg ; 最大ヒーロー数 repeat plb,1 : pn=cnt ; 各勢力首都を設定 if pn=1 : hf(pn)=1 : else : hf(pn)=2 ; 生存フラグ ;if cnt=1 : m=1 : mpl(m)=pn : mpc(pn)=m ;if cnt=2 : m=25 : mpl(m)=pn : mpc(pn)=m : ;mpl(7)=pn ;if cnt=3 : m=16 : mpl(m)=pn : mpc(pn)=m : mpl(19)=pn ;if cnt=4 : m=3 : mpl(m)=pn : mpc(pn)=m ;if cnt=5 : m=22 : mpl(m)=pn : mpc(pn)=m ;continue if n=0 : r=0 : else : r=rnd(n) m=mf(r) ; マップNo. ;if pn=1 : m=1 ;if pn=2 : m=25 mpl(m)=pn : mpc(pn)=m ; 首都設定 md(m*mdb+7)=1 ; 建物を城に n- if pn=1 and map_s_setn>0 : map(m)=map_s_setn mf(r)=0 repeat 25 if r+cnt+1>=26 : break if mf(r+cnt+1)=0 : break mf(r+cnt)=mf(r+cnt+1) ; 詰める loop loop /* redraw 0 repeat 25,1 pos 300+cnt/10*20,40+cnt\10*20 : mes hf(cnt) loop redraw 1 pkey */ repeat 25,1 if map(cnt)=0 : continue ;if mpl(cnt)=1 { md(cnt*mdb+1)=5000 ; 人口 md(cnt*mdb+2)=msml ; 魔術 ;if mpl(cnt)=0 : md(cnt*mdb+2)=100 ; 魔術 md(cnt*mdb+3)=msnl ; マナ ;if mpl(cnt)=0 : md(cnt*mdb+3)=100 ; マナ md(cnt*mdb+4)=50000 ; 治安% ;} /* else { md(cnt*mdb+1)=5000*2 ; 人口 md(cnt*mdb+2)=msml*2 ; 魔術 md(cnt*mdb+3)=3000*2 ; マナ md(cnt*mdb+4)=50000+20000 ; 治安% } */ ; マップデータ(0=、1=人口、2=魔術、3=マナ、4=治安、5=攻撃、6=防御、7=建造物、8=、9=) loop ;repeat 5 : pmp(cnt+1)=100000 : loop return #deffunc map_bd2 ; マップセット repeat 25,1 pubn(cnt)=pubk+pubc ; 初期ユニット上限数 pubsn(cnt)=0 ; 初期人材府の数 pibn(cnt)=pibk+pibc ; 初期アイテム上限数 pibsn(cnt)=0 ; 初期鍛冶屋の数 loop ; UNIT 初期配置------------------------------------------- repeat plb,1 : pn=cnt ; プレイヤー m=mpc(pn) ; HEX zn=map(m);n=rnd(6)+1 ; 属性 ;if pn=1 : map(m)=1 ;n=4 ;if pn=1 : n=24 ;if pn=2 : n=12 ;if pn=3 : n=12 ;if pn=4 : n=3 ;if pn=5 : n=3 repeat msuh : cnt2=cnt ; 英雄の初期人数 ;repeat pubn(pn) : cnt2=cnt ; 英雄の初期人数 un_fd m,1 ; 人材発見 ;cn=rnd(cha_syu(zn))+cha_zoks(zn) ;unt 1,cn ; ユニット登録 /* ;if pn=1 and cnt2=1 : cn=16 ;if cnt2=1 : cn=51 repeat pub,plb*pub+1 un=cnt : ug=un*udb ; ユニットNo. if ud(ug)=0 : break loop ud(ug)=cn ; cnキャラ種類 repeat 9,1 ud(ug+cnt)=cd(cnt,cn) ; データ loop repeat 5 ud(ug+21+cnt)=ud(ug+1+cnt) ; データ loop ud(ug+8)=cd(8,cn) ; 特殊能力 ud(ug+10)=pn ; 所属 repeat 2 : ud(ug+11+cnt)=ud(ug+21) : loop ; 攻防値 repeat 3,16 ; 装備 ud(ug+cnt)=cd(cnt,cn) loop ud(ug+19)=cd(3,cn)/20-ud(ug+18)+1 ; アイテム装備数 ud(ug+26)=ud(ug+25) ; HP ;if pn=1 and cnt2=1 : ud(ug+26)=ud(ug+26)/10 */ hper_set pn,un ; ヒーローの順列セット ;gosub *jyun_put ;if cnt2>9 : continue ;mu(m*10+cnt2)=un ; 領主、部隊配置 ;if pn!1 and cnt2>1 : mu(m*10+cnt2)=0 ;ud(ug+13)=m*10+cnt2 ; 配属 loop loop ;un_data_dpt /* repeat plb : cnt2=cnt hug=cnt2*hub redraw 0 color 1,1,1 : boxf : color 255,255,255 pos 10,300 : mes cnt2 repeat 40 pos (cnt\15)*40+10,(cnt/15)*20+10 : mes hr1(hug+cnt) pos (cnt\15)*40+10,(cnt/15)*20+100 : mes hr2(hug+cnt) pos (cnt\15)*40+10,(cnt/15)*20+200 : mes hr5(hug+cnt) loop redraw 1 pkey loop */ ; 中立UNIT 初期配置------------------------------------------- pn=0 repeat 25,1 : m=cnt ; 中立国 f=0 repeat plb,1 if m=mpc(cnt) : f=1 : break ; HEX loop if f=1 or mpl(m)>0 : continue ; ヒーローの土地 if map(m)=0 : continue ; 空白地 zn=map(m) ; 属性 repeat msun : cnt2=cnt un_fd m,1 ; 人材発見 ;cn=rnd(cha_syu(zn))+cha_zoks(zn) ;unt 2,cn : if un=0 : break ; ユニット登録 /* repeat ub-1,1 un=cnt : ug=un*udb ; ユニットNo. if ud(ug)=0 : break loop ud(ug)=cn ; cnキャラ種類 repeat 9,1 ud(ug+cnt)=cd(cnt,cn) ; データ loop repeat 5 ud(ug+21+cnt)=ud(ug+1+cnt) ; データ loop ud(ug+8)=cd(8,cn) ; 特殊能力 ud(ug+10)=pn ; 所属 repeat 2 : ud(ug+11+cnt)=ud(ug+21) : loop ; 攻防値 repeat 3,16 ; 装備 ud(ug+cnt)=cd(cnt,cn) loop ud(ug+19)=cd(3,cn)/20-ud(ug+18)+1 ; アイテム装備数 ud(ug+26)=ud(ug+25) ; HP */ nper_set m,un ; 中立の順列セット ;gosub *jyun_put2 ;un_dpt 7 ;mu(m*10+cnt2)=un ; 領主、部隊配置 ;ud(ug+13)=m*10+cnt2 ; 配属 loop loop ; ITEM初期配置 ---------------------------------------- ;n=1 repeat plb,1 : pn=cnt ; プレイヤー m=mpc(pn) ; マップNo. repeat msih cnt2=cnt /* repeat 1000 r=rnd(itb) : if itd(16,r)>0 : itn=r : break ; アイテム種類 loop */ /* if pn=1 and cnt2=0 : itn=321 : itt 1,itn : hiper_set pn,in : continue if pn=1 and cnt2=1 : itn=322 : itt 1,itn : hiper_set pn,in : continue if pn=1 and cnt2=2 : itn=323 : itt 1,itn : hiper_set pn,in : continue if pn=1 and cnt2=3 : itn=324 : itt 1,itn : hiper_set pn,in : continue if pn=1 and cnt2=4 : itn=325 : itt 1,itn : hiper_set pn,in : continue if pn=1 and cnt2=5 : itn=326 : itt 1,itn : hiper_set pn,in : continue if pn=1 and cnt2=6 : itn=327 : itt 1,itn : hiper_set pn,in : continue if pn=1 and cnt2=7 : itn=328 : itt 1,itn : hiper_set pn,in : continue if pn=1 and cnt2=8 : itn=329 : itt 1,itn : hiper_set pn,in : continue /* if pn=1 and cnt2=9 : itn=310 : itt 1,itn : hiper_set pn,in : continue if pn=1 and cnt2=10 : itn=311 : itt 1,itn : hiper_set pn,in : continue if pn=1 and cnt2=11 : itn=312 : itt 1,itn : hiper_set pn,in : continue if pn=1 and cnt2=12 : itn=313 : itt 1,itn : hiper_set pn,in : continue if pn=1 and cnt2=13 : itn=314 : itt 1,itn : hiper_set pn,in : continue */ ;if pn=1 : gosub *ijyun_put1 it_fd m,1 ; アイテム発見 ;itt 1,itn : if in=0 : break hiper_set pn,in ; アイテム順列のセット ;if pn=1 : gosub *ijyun_put1 ;if /*pn=1 and*/ cnt2<9 : itn=251+cnt ;if /*pn=1 and*/ cnt2<10 : itn=261+cnt ;if /*pn=1 and*/ cnt2<9 : itn=281+cnt ;if /*pn=1 and*/ cnt2<9 : itn=291+cnt ;if /*pn=1 and*/ cnt2<14 : itn=301+cnt ;if /*pn=1 and*/ cnt2<9 : itn=321+cnt ;if cnt2<3 : itn=83 ;if pn=1 and cnt2<7 : itn=253 /* in=n : n+ ; アイテムNo. ig=in*idb ; データ位置 repeat idb id(ig+cnt)=itd(cnt,itn) ; データ loop id(ig)=itn id(ig+10)=pn ; 所属PL */ loop loop ; 中立アイテム repeat 25,1 : m=cnt ; 中立国 f=0 repeat plb if m=mpc(cnt) : f=1 : break ; HEX loop if f=1 or mpl(m)>0 : continue ; ヒーローの土地 if map(m)=0 : continue ; 空白地 repeat msin : cnt2=cnt it_fd m,1 /* repeat r=rnd(itb) : if itd(16,r)>0 : itn=r : break ; アイテム種類 loop itt 2,itn : if in=0 : break */ niper_set m,in ; アイテム順列のセット ;gosub *ijyun_put2 loop loop ;un_data_dpt ; 英雄の人材配置 ---------------------------- repeat plb,1 : pn=cnt ; プレイヤー m=mpc(pn) ; 首都 pmu_rst pn ; ユニット配置解除 ;if pn=1 : un_data_dpt peq_rst pn ; 装備解除 ;if pn=1 : un_data_dpt hrs_copy ; 英雄のユニット操作順列コピー ;if pn=1 : un_data_dpt his_copy ; 英雄のアイテム操作順列コピー ;if pn=1 : un_data_dpt un=hrs5(0) : if un>0 : mu(m*mdb)=un : ud(un*udb+13)=m*mdb : hrs_del un ; 領主配置 ;if pn=1 : un_data_dpt repeat hub ; 列の順列をリセット hrt1(cnt)=0 : hrt2(cnt)=0 : hrt3(cnt)=0 loop hrt1c=0 : hrt2c=0 : hrt3c=0 ; 現在の列の順番をリセット hrt1qc=0 : hrt2qc=0 : hrt3qc=0 ; 現在の列の順番をリセット repeat 9,1 ; 装備 if cnt\2=2 { ; 2回目 hrs_eq 2 : if un=0 : hrs_eq 1 break } hrs_eq 1 : if un=0 : hrs_eq 2 ; 1と3回目 loop hrt1c=0 : hrt2c=0 : hrt3c=0 ; 現在の列の順番をリセット hrt1qc=0 : hrt2qc=0 : hrt3qc=0 ; 現在の列の順番をリセット repeat 3 : knc=m*mdb+cnt*3 ; 配備 repeat 3,1 if cnt=1 { ; 1列目 un=hrt1(hrt1c) : if un>0 : mu(knc+1)=un : ud(un*udb+13)=knc+1 : hrt1c+ : continue un=hrt2(hrt2c) : if un>0 : mu(knc+1)=un : ud(un*udb+13)=knc+1 : hrt2c+ : continue un=hrt3(hrt3c) : if un>0 : mu(knc+1)=un : ud(un*udb+13)=knc+1 : hrt3c+ : continue } if cnt=2 { ; 3列目 un=hrt3(hrt3c) : if un>0 : mu(knc+3)=un : ud(un*udb+13)=knc+3 : hrt3c+ : continue un=hrt2(hrt2c) : if un>0 : mu(knc+3)=un : ud(un*udb+13)=knc+3 : hrt2c+ : continue un=hrt1(hrt1c) : if un>0 : mu(knc+3)=un : ud(un*udb+13)=knc+3 : hrt1c+ : continue } if cnt=3 { ; 2列目 un=hrt2(hrt2c) : if un>0 : mu(knc+2)=un : ud(un*udb+13)=knc+2 : hrt2c+ : continue un=hrt1(hrt1c) : if un>0 : mu(knc+2)=un : ud(un*udb+13)=knc+2 : hrt1c+ : continue un=hrt3(hrt3c) : if un>0 : mu(knc+2)=un : ud(un*udb+13)=knc+2 : hrt3c+ : continue } loop if hrt1(hrt1c)=0 and hrt2(hrt2c)=0 and hrt3(hrt3c)=0 : break ; 全員使った loop wpck m ; 戦力値計測 repeat 25,1 ; MAP最大脅威値 if mpl(cnt)!pn : continue wpb(cnt)=wp(m) loop loop ;if pn=1 : un_data_dpt ; 中立の人材配置 ---------------------------- pn=0 ; NPCに設定 repeat 25,1 : m=cnt ; 中立国 f=0 repeat plb,1 if m=mpc(cnt) : f=1 : break ; HEX loop if f=1 : continue ; ヒーローの土地 if map(m)=0 : continue ; 空白地 if mpl(cnt) neutral_deploy ; 中立ユニットの装備と配備 wpck m ; 戦力値計測 loop /* repeat 25,1 if mpl(cnt)=0 and map(cnt)>0 : mpl(cnt)=1 loop */ ;mpl(13)=1 return #deffunc map_set map_setf=0 : kc=5 repeat ky=0 : kb=0 : ckn=0 : kkn=0 repeat 1 ; 入力 if kc>0 : kc- : break ckey if map_setf=2 : kkey 1 : else : kkey 0 stick kb loop switch map_setf case 0 ; hero change if kb!256 : swbreak if ckn=10 : map_setf=1 : swbreak ; colorへ進む if ckn=11 : gsf=0 : break ; マップビルドへ戻る if kkn=0 : swbreak if mpl(kkn)=0 { ; 空白地 repeat 25,1 if hf(cnt)=0 : hf(cnt)=2 : pn=cnt : break loop mpl(kkn)=pn : mpc(pn)=kkn swbreak } if mpl(kkn)>0 { ; ヒーロー地 pn=mpl(kkn) if hf(pn)=2 : hf(pn)=1 : swbreak ; CPUならプレイヤーに if hf(pn)=1 { ; プレイヤーなら空白地に hf(pn)=0 : mpc(pn)=0 : mpl(kkn)=0 swbreak } } swbreak case 1 ; color change if kb!256 : swbreak kc=5 if ckn=10 : mainf=5 : break ; ゲームスタート if ckn=11 : map_setf=0 : swbreak ; 戻る if mpl(kkn)>0 : pn=mpl(kkn) : map_setf=2 : swbreak swbreak case 2 ; color select if kb!256 : swbreak kn=5 if ckn=9 { ; リセット repeat 25,1 pcln(cnt)=cnt loop map_setf=1 : swbreak } if ckn>0 : map_setf=1 : swbreak ; 戻る if kkn=0 : swbreak if kkn=25 : map_setf=3 : swbreak ; ユーザーカラー n=0 ; カラーチェンジ repeat 25,1 if kkn=pcln(cnt) : n=cnt : break loop if n=0 : pcln(pn)=kkn : map_setf=1 : swbreak pcln(n)=pcln(pn) : pcln(pn)=kkn : map_setf=1 ; 入れ替え swbreak swend ; BACK END redraw 0 color 1,1,1 : boxf : color 120,120,120 switch map_setf case 0 ; player map_put2 gmulcolor 255,255,255 s="player" : bfp s,cxyd(0,7)-4 ,cxyd(1,7)+13,5 s="change" : bfp s,cxyd(0,8)-4 ,cxyd(1,8)+13,5 s="next" : bfp s,cxyd(0,10)+7,cxyd(1,10)+1,5 s="back" : bfp s,cxyd(0,11)+7,cxyd(1,11)+1,5 swbreak case 1 ; color map_put2 gmulcolor 255,255,255 s="color" : bfp s,cxyd(0,7)+2 ,cxyd(1,7)+13,5 s="change" : bfp s,cxyd(0,8)-4 ,cxyd(1,8)+13,5 s="start" : bfp s,cxyd(0,10)+2,cxyd(1,10)+1,5 s="back" : bfp s,cxyd(0,11)+7,cxyd(1,11)+1,5 swbreak case 2 ; color change map_put3 gmulcolor 255,255,255 s="color" : bfp s,cxyd(0,7)+2 ,cxyd(1,7)+13,5 s="reset" : bfp s,cxyd(0,9)+2 ,cxyd(1,9)+1 ,5 s="select" : bfp s,cxyd(0,8)-4 ,cxyd(1,8)+13,5 s="back" : bfp s,cxyd(0,11)+7,cxyd(1,11)+1,5 swbreak swend color 255,255,255 pos 10,50 : mes "nmf "+map_setf pos 10,70 : mes "kb "+kb pos 10,90 : mes "ky "+ky pos 10,110: mes "kc "+kc pos 10,130: mes "ckn "+ckn pos 10,150: mes "kkn "+kkn pos 10,170: mes "pn "+pn /* repeat 25,1 pos 100+(cnt/10*100),10+(cnt\10*20) : mes "pcln "+cnt+" "+pcln(cnt) loop */ redraw 1 await 1000/20 loop return #deffunc new_game ngx1=150 : ngx2=490 dim ngy1,4 dim ngy2,4 ngy1(1)=70 : ngy2(1)=ngy1(1)+50 ngy1(2)=150 : ngy2(2)=ngy1(2)+50 ngy1(3)=230 : ngy2(3)=ngy1(3)+50 kc=5 repeat ky=0 : kb=0 : ckn=0 repeat 1 if kc>0 : kc- : break if new_gamef=0 : ky=ng_key() if new_gamef=1 : ckey stick kb loop switch new_gamef case 0 if kb!256 : swbreak ; RANDOM MAP if ky=1 : map_bd1 : kc=5 : new_gamef=1 ; SCENARIO MAP ; BACK if ky=3 : mainf=3 : break ; タイトルへ戻る swbreak ; このマップで良いですか? ; Is this map good? ; YES NO BACK case 1 if kb!256 : swbreak kc=5 if ckn=9 { if map_hrnf=1 : plb=2+rnd(6) if map_hrnf=2 : plb=8+rnd(8) if map_hrnf=3 : plb=16+rnd(10) if map_buildgf=1 : map_buildg=25-rnd(7)-2 if map_buildgf=2 : map_buildg=25-rnd(8)-9 if map_buildgf=3 : map_buildg=25-rnd(9)-17 ;if map_buildgf=0 : map_buildg=7 map_bd1 } if ckn=10 : gsf=1 : break;new_gamef=1 if ckn=11 : new_gamef=0 if ckn=2 : map_hrnf=1 ; 少 if ckn=3 : map_hrnf=2 ; 中 if ckn=4 : map_hrnf=3 ; 多 if ckn=13 : map_buildgf=1 ; 小 if ckn=14 : map_buildgf=2 ; 中 if ckn=15 : map_buildgf=3 ; 大 ;if ckn=16 : map_buildgf=0 ; リセット swbreak swend redraw 0 color 1,1,1 : boxf : color 120,120,120 switch new_gamef case 0 repeat 3,1 boxf ngx1,ngy1(cnt),ngx2,ngy2(cnt) loop color 255,255,255 pos ngx1+10,ngy1(1)+10 : mes "RANDOM MAP" pos ngx1+10,ngy1(2)+10 : mes "SCENARIO MAP" pos ngx1+10,ngy1(3)+10 : mes "BACK" swbreak case 1 map_put2 : gmulcolor 255,255,255 ; Is this map good? s="is" : bfp s,cxyd(0,1)+9 ,cxyd(1,1)+13,5 s="this" : bfp s,cxyd(0,6)+7 ,cxyd(1,6)+13,5 s="map" : bfp s,cxyd(0,7)+13,cxyd(1,7)+13,5 s="good?": bfp s,cxyd(0,8)+2 ,cxyd(1,8)+13,5 ; YES NO BACK s="no" : bfp s,cxyd(0,9 )+18,cxyd(1,9 )+1,5 s="yes" : bfp s,cxyd(0,10)+13,cxyd(1,10)+1,5 s="back" : bfp s,cxyd(0,11)+7 ,cxyd(1,11)+1,5 ; ヒーローの多さ repeat 3,1 if map_hrnf=cnt : n=255 : else : n=160 gmulcolor n,n,n if cnt=1 : s="s" : bfp s,cxyd(0,2)+10 ,cxyd(1,2)+20,5 if cnt=2 : s="m" : bfp s,cxyd(0,3)+10 ,cxyd(1,3)+20,5 if cnt=3 : s="l" : bfp s,cxyd(0,4)+10 ,cxyd(1,4)+20,5 loop ; マップの大きさ repeat 3,1 if map_buildgf=cnt : n=255 : else : n=160 gmulcolor n,n,n if cnt=1 : s="s" : bfp s,cxyd(0,13)+10 ,cxyd(1,13)+20,5 if cnt=2 : s="m" : bfp s,cxyd(0,14)+10 ,cxyd(1,14)+20,5 if cnt=3 : s="l" : bfp s,cxyd(0,15)+10 ,cxyd(1,15)+20,5 loop repeat 4 if map_buildgf=cnt : break loop swbreak swend /* color 255,255,255 pos 10,50 : mes "nmf "+new_gamef pos 10,70 : mes "kb "+kb pos 10,90 : mes "ky "+ky pos 10,110: mes "kc "+kc pos 10,130: mes "ckn "+ckn pos 10,150: mes "mgf "+map_buildgf pos 10,170: mes "mbgf "+map_buildg pos 10,190: mes "mhrf "+map_hrnf */ redraw 1 await 1000/20 loop return *game_start new_gamef=0 repeat switch gsf case 0 : new_game : swbreak case 1 : map_set : swbreak swend if mainf!4 : break loop ;map_bd1 ; マップ生成 ;map_bd2 ; マップセット return