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