2019年 11月 29日
途中経過報告、今回は BGMを付け始めたので動画で報告します。
ザックリソースを置きます。
;---------- 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=4 : break
redraw 0
color 1,1,1 : boxf : color 255,255,255
gmode 2
switch creditf
case 0
gmulcolor 160,160,255
pos 40,30 : celput cre_ftw,0
pos 40,110 : celput cre_ftw,2
pos 40,190 : celput cre_ftw,4
pos 40,270 : celput cre_ftw,6
gmulcolor 255,255,255
pos 70,64 : celput cre_ftw,1
pos 70,144 : celput cre_ftw,3
pos 70,224 : celput cre_ftw,5
pos 70,304 : celput cre_ftw,7
gmulcolor 128,255,128
pos 320,30 : celput cre_ftw,8
pos 320,120 : celput cre_ftw,10
pos 320,210 : celput cre_ftw,12
gmulcolor 255,255,255
pos 350,64 : celput cre_ftw,9
pos 350,154 : celput cre_ftw,11
pos 350,244 : celput cre_ftw,13
pos 350,278 : celput cre_ftw,14
pos 350,312 : celput cre_ftw,15
swbreak
case 1
gmulcolor 128,255,128
pos 42,32 : celput cre_ftw,17
gmulcolor 255,255,255
repeat 7
pos 76,83+cnt*42 : celput cre_ftw,18+cnt
loop
swbreak
case 2
gmulcolor 228+27,85+27,139+27
pos 30,20 : celput cre_ftw,25
pos 140,20 : celput cre_ftw,26
pos 175,20 : celput cre_ftw,27
gmulcolor 155,155,255
pos 50,70-1 : celput cre_ftw,32
pos 50,110-1 : celput cre_ftw,28
pos 50,150-1 : celput cre_ftw,29
pos 50,195 : celput cre_ftw,30
gmulcolor 255,255,255
pos 170,67 : celput cre_ftw,34
pos 170,107 : celput cre_ftw,33
pos 170,147 : celput cre_ftw,35
pos 170,193 : celput cre_ftw,36
pos 170,233 : celput cre_ftw,39
pos 170,273 : celput cre_ftw,40
pos 10 ,313 : celput cre_ftw,37
pos 410,313 : celput cre_ftw,38
swbreak
case 3
gmulcolor 228+27,85+27,139+27
pos 30,20 : celput cre_ftw,25
pos 140,20 : celput cre_ftw,26
pos 175,20 : celput cre_ftw,27
gmulcolor 155,155,255
pos 50,70-1 : celput cre_ftw,31
gmulcolor 255,96,96
pos 76,107 : celput cre_ft2w,0
gmulcolor 96,96,255
pos 76,147 : celput cre_ft2w,1
gmulcolor 96,255,96
pos 76,187 : celput cre_ft2w,2
gmulcolor 255,255,96
pos 76,227 : celput cre_ft2w,3
gmulcolor 255,255,255
pos 76,267 : celput cre_ft2w,4
gmulcolor 160,160,160
pos 76,307 : celput cre_ft2w,5
gmulcolor 255,255,255
pos 150,107 : celput cre_ftw,42
pos 150,147 : celput cre_ftw,43
pos 150,187 : celput cre_ftw,44
pos 150,227 : celput cre_ftw,45
pos 150,267 : celput cre_ftw,46
pos 150,307 : celput cre_ftw,47
swbreak
swend
redraw 1
await 1000/10
loop
return
#deffunc option ; オプション
dim optx1,12 ; 点座標
x=75 : xk=50
repeat 11 : optx1(cnt)=x : x+=xk : loop
dim optx2,13 ; タップ座標
x=50
repeat 12 : optx2(cnt)=x : x+=xk : loop
dim opty1,3 ; y
y=50 : yk=80
repeat 3 : opty1(cnt)=y : y+=yk : loop
optyk=50 ; 厚さ
repeat
kb=0
repeat 1
if kc>0 : kc- : break
x=mousex : y=mousey : stick kb,256
loop
repeat 11
if kb!256 : break
if optx2(cnt)<x and opty1(0)<y and optx2(cnt+1)>x and opty1(0)+optyk>y {
mvo=cnt : vo_set : break
}
if optx2(cnt)<x and opty1(1)<y and optx2(cnt+1)>x and opty1(1)+optyk>y {
muvo=cnt : vo_set : break
}
if optx2(cnt)<x and opty1(2)<y and optx2(cnt+1)>x and opty1(2)+optyk>y {
sevo=cnt : vo_set : break
}
loop
if kb=256 and exitkx1<x and exitky1<y and exitkx2>x and exitky2>y {
mainf=10 : break ; 終了
}
if kb=256 and opcrkx1<x and opcrky1<y and opcrkx2>x and opcrky2>y : credit
if kb=256 and oprekx1<x and opreky1<y and oprekx2>x and opreky2>y : kc=5 : break ; 戻る
; mevo
; muvo
; sevo
; credit
; exit
redraw 0
color 1,1,1 : boxf
switch optionf
case 0
repeat 3 : cnt2=cnt
color 255,255,255
boxf optx1(0)-2,opty1(cnt2)-2,optx1(10)+2,opty1(cnt2)+optyk+2
color 1,1,1
boxf optx1(0)-1,opty1(cnt2)-1,optx1(10)+1,opty1(cnt2)+optyk+1
loop
color 32,32,255 ; バー
boxf optx1(0),opty1(0),optx1(mvo) ,opty1(0)+optyk
boxf optx1(0),opty1(1),optx1(muvo),opty1(1)+optyk
boxf optx1(0),opty1(2),optx1(sevo),opty1(2)+optyk
gmulcolor 255,255,255
;repeat 3 : cnt2=cnt
/*
n=255
repeat 11
color n,n,n : n-=20
boxf optx2(cnt),opty1(cnt2),optx2(cnt+1),opty1(cnt2)+optyk
color 255,1,1
boxf optx1(cnt),opty1(cnt2)+25,optx1(cnt)+2,opty1(cnt2)+25+2
loop
*/
/*
repeat 3 : cnt2=cnt
repeat 11
s="+" : bfp s,optx1(cnt)-8,opty1(cnt2)+17,5
loop
loop
*/
s="option" : bfp s,286,15,5
s="volume" : bfp s,optx1(0)-27,opty1(0)-21,5
s="bgm" : bfp s,optx1(0)-27,opty1(1)-21,5
s="s.e" : bfp s,optx1(0)-27,opty1(2)-21,5
exitx=288 : exity=280
exitkx1=exitx : exitkx2=exitx+64
exitky1=exity : exitky2=exity+64
;color 160,255,160 : boxf exitkx1,exitky1,exitkx2,exitky2
pos exitx,exity : celput exitw
s="ex" : bfp s,exitx-33,exity+27,5
s="it" : bfp s,exitx+66,exity+27,5
opcrx=100 : opcry=307
opcrkx1=opcrx-10 : opcrkx2=opcrx+81
opcrky1=opcry-10 : opcrky2=opcry+28
;color 160,160,255 : boxf opcrkx1,opcrky1,opcrkx2,opcrky2
s="credit" : bfp s,opcrx,opcry,5
oprex=470 : oprey=307
oprekx1=oprex-10 : oprekx2=oprex+81
opreky1=oprey-10 : opreky2=oprey+28
;color 160,160,255 : boxf oprekx1,opreky1,oprekx2,opreky2
s="return" : bfp s,oprex,oprey,5
swbreak
case 1 ; MAPBGMの選択
; 戦闘見る見ない
; カーソル音onoff
swbreak
swend
/*
pos 10,10 : mes "mvo "+mvo
pos 10,30 : mes "muvo "+muvo
pos 10,50 : mes "sevo "+sevo
pos 10,70 : mes "f1 "+f1
pos 10,90 : mes "f2 "+f2
*/
redraw 1
await 1000/20
loop
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 ; ロードした
}
if kb=256 and ky=3 : kc=5 : option : ky=0 ; OPTION
if kb=256 and ky=4 : credit : ky=0 ; CREDIT クレジット
if kb=256 and ky=5 : mainf=10 : break ; EXIT
if mainf!3 : break
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 user_color
kc=5
repeat
ky=0 : kb=0 : ckn=0 : kkn=0
repeat 1 ; 入力
if kc>0 : kc- : break
x=mousex : y=mousey
ckey : stick kb,256
loop
if ckn=11 and kb=256 : break ; 戻る
if cccx<=x and x0 : cld(73)-
if cccy(2)<=y and y0 : cld(74)-
if cccy(3)<=y and y0 : cld(75)-
}
if cctx2<=x and x0 : 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
repeat 25,1 ; 最大プレイヤー人数設定
if hf(cnt)>0 : plb=cnt
loop
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 : gsf=2 : 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
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 ; 入れ替え
if kkn=25 : user_color : swbreak ; ユーザーカラー
swbreak
case 3 ; ユーザーカラー
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
repeat 25,1
pos 100+(cnt/10*100),10+(cnt\10*20) : mes "hf "+cnt+" "+hf(cnt)
loop
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
pos 10,190: mes "plb "+plb
*/
/*
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
plb=7
new_gamef=0
repeat
switch gsf
case 0 : new_game : swbreak
case 1 : map_set : swbreak
case 2 : map_bd2 : mainf=5 : await 0 : swbreak ; マップ初期
swend
if mainf!4 : break
loop
/*
; ユニット
ub=plb*pub+nub*25 ; ユニットの最大数
udb=50 ; 1ユニットのデータ量
dim ud,(ub+10)*udb+1 ; ユニットデータ
dim udsh,plb+1 ; ユニットデータ先頭、英雄
repeat plb,1
udsh(cnt)=pub*(cnt-1)+1
loop
dim udsn,25+1 ; ユニットデータ先頭、中立
repeat 25,1
udsn(cnt)=plb*pub+nub*(cnt-1)+1
loop
dim hr1,plb*hub+1 ; ヒーローの筋力順列
dim hr2,plb*hub+1 ; ヒーローの魔力順列
dim hr5,plb*hub+1 ; ヒーローの総力順列
; アイテム
ib=pib*plb+nib*25 ; アイテムの最大数
idb=40 ; 1アイテムのデータ量
dim id,(ib+1)*idb ; アイテムデータ
sdim is,80,ib ; 名前
dim idsh,plb+1 ; アイテムデータ先頭、英雄
repeat plb,1
idsh(cnt)=pib*(cnt-1)+1
loop
dim idsn,25+1 ; アイテムデータ先頭、中立
repeat 25,1
idsn(cnt)=plb*pib+nib*(cnt-1)+1
loop
*/
;map_bd1 ; マップ生成
;map_bd2 ; マップセット
return
残念ながら 12月の商戦には間に合いません、完成は 3月までを予定してます。
今回は以上です。