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 y 0 : cld(74)- if cccy(3)<=y and y 0 : cld(75)- } if cctx2<=x and x 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 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月までを予定してます。
今回は以上です。