2018年 4月10日
最近疲れが出て製作がほとんど進んでない。
こういう時ってあっという間に時間が飛んでしまう、もう 10日も経ってる。
一つには運動を怠けて筋肉が衰えるとそうなるんだけど、毎日の事で作業で疲れてると運動もできない事もあって、この毎日のバランスはずっと取って行かないと連続して作業なんてできない。
それでは、あんまり変わってないけど経過報告。
まずメインルーチンが変わってる。
/////// hextrategy ゲームルーチン //////////////////////////////////////////////// *hextrategy hextf=0 while ;------------ ゲームルーチン --------------------------- switch hextf case 0 : gosub *disaster : hextf=1 : swbreak ; 災害 case 1 : gosub *country : hextf=2 : swbreak ; 国力の増減 case 2 : gosub *neutral ;中立の人材と人材配置、戦略 case 3 : ;gosub *strategy ;ヒーローの人材、アイテム、戦略 case 4 : gosub *battle : swbreak ; 攻め込む ;case 0 : gosub *map_main : swbreak ; 基本MAP画面 ;case 1 : gosub *info : swbreak ; 国インフォ、情報画面 ;case 2 : gosub *organization : swbreak ; 自国インフォと編成 ;case 3 : gosub *battle : swbreak ; 攻め込む ;case 4 : gosub *battle : swbreak ; 戦闘 ;case 5 : gosub *kuni : swbreak ; 国の処理 swend if mainf!5 : _break wend ;------------------------------------------------------- return
下の緑になってる部分は前のソース。
災害と国力の増減は前と変わって無い。
人材とアイテムの登録はそれぞれ専用のルーチンを作った。
ユニット
#defcfunc unt int untn ; ユニット登録 cn=untn ; キャラNp. un=0 repeat ub-1,1 ug=cnt*udb ; 空きユニットNo.検出 if ud(ug)=0 : un=cnt : break loop if un=0 : return 0 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 return un #deffunc un_fd int un_fdn ;------- 人材発見 ---------------------------- m=un_fdn ; mapNo. pn=mpl(m) ; プレイヤーNo. repeat 1 if pn=0 : n2=0 : break ; NPC kn=mpc(pn) ; 首都 un2=mu(kn*10) ; 首領 n2=ud(un2*udb+4)*100/2 ; 魅力補整 loop mdg=m*mdb n0=md(mdg+1) ; 人口 un1=mu(m*10) ; 領主 n1=ud(un1*udb+4)*100 ; 魅力補整 ; 建物補整 ; 城+50、役所+100 r1=n0+n1+n2 ; 確率 r2=rnd(100000+(n0*20)) ; 乱数 if r1<r2 : return ; 出現しなかった n0=md(mdg+2) ; 魔術 ; 建物補整 ; 城+50、役所+100 r=rnd(n0+n1+n2)/100 ; 出現乱数 s=map(m) ; 地形 cs=cha_syu(ms) ; その地形のキャラ種類総数 cz=cha_zoks(ms) ; その地形のキャラスタートNo. n=cz+cs-1 ; 大きい順 repeat cs cn=n-cnt : if r>=cd(15,cn) : break loop f=unc(cn) ; キャラ登録 return
アイテム
#deffunc itt int ittn ; アイテム登録 in=0 repeat ib-1,1 ; 空きアイテムNo.検出 ig=cnt*idb if id(ig)=0 : in=cnt : break loop if in=0 : return ; アイテム欄がいっぱい itn=ittn ; アイテムNo. ig=in*idb ; データ位置 repeat idb id(ig+cnt)=itd(cnt,itn) ; データ loop id(ig)=itn ; アイテム種類 id(ig+10)=pn ; 所属PL return #deffunc it_fd int it_fdn ;------- アイテム発見 ---------------------------- m=it_fdn ; mapNo. pn=mpl(m) ; プレイヤーNo. repeat 1 if pn=0 : n2=0 : break ; NPC kn=mpc(pn) ; 首都 un2=mu(kn*10) ; 首領 n2=ud(un2*udb+2)*100/2 ; 魔力補整 loop mdg=m*mdb n0=md(mdg+3) ; マナ un1=mu(m*10) ; 領主 n1=ud(un1*udb+2)*100 ; 魔力補整 ; 建物補整 ; 城+50、役所+100 r1=n0+n1+n2 ; 確率 r2=rnd(100000+(n0*20)) ; 乱数 if r1<r2 : return ; 出現しなかった n0=md(mdg+2) ; 魔術 ; 建物補整 ; 城+50、鍛冶+100 r=rnd(n0+n1+n2)/100 ; 出現乱数 dim ird,100 ; 出現アイテム格納テーブル rs=rnd(3)+1 : n=0 switch rs ; 製作できるアイテムをピックアップ case 1 ; 武器 repeat 90,1 if itd(16,cnt)=0 : continue ; アイテム無い if itd(15,cnt)>r : continue ; 技術Lvに満たない ird(n)=cnt : n+ loop swbreak case 2 ; 防具 repeat 80,101 if itd(16,cnt)=0 : continue ; アイテム無い if itd(15,cnt)>r : continue ; 技術Lvに満たない ird(n)=cnt : n+ loop swbreak case 3 ; アイテム+魔法 repeat 50,181 ; アイテム if itd(16,cnt)=0 : continue ; アイテム無い if itd(15,cnt)>r : continue ; 技術Lvに満たない ird(n)=cnt : n+ loop msimn=0,251,261,281,291,301,321 ; 魔法アイテムの属性別初No. msimc=0,10,10,10,10,20,10 ; 魔法アシテムの属性別探索数 repeat msimc(ms),msimn(ms) ; 魔法 if itd(16,cnt)=0 : continue ; アイテム無い if itd(15,cnt)>r : continue ; 技術Lvに満たない ird(n)=cnt : n+ loop swbreak swend itn=ird(rnd(n)) : itt itn ; アイテム登録 return
アイテムはまず武器、防具、魔法+道具の 3つをランダムに分け、それぞれ総当りで製作Lvに満つるものを拾って、そこからランダムに一つ選ぶ感じに今の所なってる。
そのくらいしか進んでない。
後はグラの建物が少し増えてるくらい。
だめだ眠い。
しばらくはまた運動する所から調整しないと。