Hextrategy BGMを付け始めてる


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月までを予定してます。

 今回は以上です。
 
 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です