2020年 4月 9日
最後の製作物としてオープニングとエンディングが完成した。
プログラム的には前作のカルギナカーディアのを参照して流用したのでサクッとできた。
オープニング
カードは三角関数(sin、cos)を使って楕円軌道を移動する。
くるりんくるりん
ちょっと難しい事として、手前のカードを前に表示するという事をやっている。
基準はこの場合 y座標で、手前のものほど y座標が下になるので 1フレーム毎にカードの表示順列を比較計算している。
ここではカードは下から上へ移動する
カード表示は横の大きさを sin値を使って変化させる事によって回転してるように見せてる。
zf=sin(double(opcdz(n))*0.01)
celput cw,cn-1,zf
文字は全部下から上へスクロールするだけ。
タイトル画面ではカードの下から上への表示がそのまま継続される。
エンディング
カードは右から左へ流れる
エンディングでは難しい事は何もしてない。
スタッフロールが続く
そんな感じだ。
BGMは DOVA-SYNDROMEさんより。
オープニングは春秋冬さんの狩り
エンディングは清水裕介さんの濡れたヴィオラ
どちらも素晴らしい楽曲でオープニングとエンディングを引き立ててくれる。
ちなみに濡れたヴィオラはテイペンで使ってました(笑)
それではオープニングとエンディングのソースを公開する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 |
; オープニング、エンディング *opening ; オープニング repeat oemjb : oemjf(cnt)=0 : loop ; リセット repeat cdswb : cdswf(cnt)=0 : loop repeat opcdb : opcdf(cnt)=0 : loop mmplays 7 edc=0 : csfn=0 repeat stick ky : if ky!0 : break if edc\57=0 and edc<610 : opcd_set if edc>1000 and edc\100=0 : cdsw_set 2 if edc=0 : oemj_set 1,1,48,2 if edc=65 : oemj_set 1,2,48,2 if edc=130 : oemj_set 1,3,48,2 if edc=195 : oemj_set 1,4,48,2 if edc=285 : oemj_set 1,5,48,2 if edc=350 : oemj_set 1,6,48,2 if edc=440 : oemj_set 1,7,48,2 if edc=505 : oemj_set 1,8,48,2 if edc=570 : oemj_set 1,9,48,2 if edc=635 : oemj_set 1,10,48,2 if edc=725 : oemj_set 1,11,48,2 if edc=790 : oemj_set 1,12,48,2 if edc=855 : oemj_set 1,13,48,2 if edc=920 : oemj_set 1,14,48,2 if edc=975 : oemj_set 1,15,48,2 if edc=1040 : oemj_set 1,16,48,2 if edc=1150 : oemj_set 1,17,48,2 if edc=1215 : oemj_set 1,18,48,2 if edc=1280 : oemj_set 1,19,48,2 if edc=1370 : oemj_set 1,20,48,2 if edc=1435 : oemj_set 1,21,48,2 if edc=1500 : oemj_set 1,22,48,2 if edc=1565 : oemj_set 1,23,48,2 if edc=1655 : oemj_set 1,24,48,2 if edc=1720 : oemj_set 1,25,48,2 if edc=1930 : break redraw 0 color 1,1,1 : boxf : color 255,255,255 pos 0,0 : celput groundw opcd_put cdsw_put oemj_put dg_put redraw 1 await 1000/20 edc+ loop mmstop : mmplays 8 return *ending ; エンディング repeat oemjb : oemjf(cnt)=0 : loop ; リセット repeat cdswb : cdswf(cnt)=0 : loop repeat opcdb : opcdf(cnt)=0 : loop mmplays 9 edc=0 : edcy=1800 : crc=0 repeat stick ky : if ky!0 : break if edc\150=0 and edc<3100 : cdsw_set 3 if edc=0 : oemj_set 2,1,48,1 if edc=100 : oemj_set 2,2,48,1 if edc=200 : oemj_set 2,3,48,1 if edc=300 : oemj_set 2,4,48,1 if edc=400 : oemj_set 2,5,48,1 if edc=550 : oemj_set 2,6,48,1 if edc=650 : oemj_set 2,7,48,1 if edc=800 : oemj_set 2,8,48,1 if edc=900 : oemj_set 2,9,48,1 if edc=1000 : oemj_set 2,10,48,1 if edc=1100 : oemj_set 2,11,48,1 if edc=1200 : oemj_set 2,12,48,1 if edc=1350 : oemj_set 2,13,48,1 if edc=1450 : oemj_set 2,14,48,1 ; クレジット x1=120 : x2=160 : x3=200 : x4=80 k1=35 : k2=50 : k3=70 repeat 1 if crc=0 : if edc=edcy : oemj_set 3,1 ,x1,2,1 : edcy+=k1 : crc+ : break if crc=1 : if edc=edcy : oemj_set 3,2 ,x2,2,0 : edcy+=k2 : crc+ : break if crc=2 : if edc=edcy : oemj_set 3,3 ,x1,2,1 : edcy+=k1 : crc+ : break if crc=3 : if edc=edcy : oemj_set 3,4 ,x2,2,0 : edcy+=k2 : crc+ : break if crc=4 : if edc=edcy : oemj_set 3,5 ,x1,2,1 : edcy+=k1 : crc+ : break if crc=5 : if edc=edcy : oemj_set 3,6 ,x2,2,0 : edcy+=k2 : crc+ : break if crc=6 : if edc=edcy : oemj_set 3,7 ,x1,2,1 : edcy+=k1 : crc+ : break if crc=7 : if edc=edcy : oemj_set 3,8 ,x2,2,0 : edcy+=k3 : crc+ : break if crc=8 : if edc=edcy : oemj_set 3,9 ,x1,2,2 : edcy+=k1 : crc+ : break if crc=9 : if edc=edcy : oemj_set 3,10,x2,2,0 : edcy+=k2 : crc+ : break if crc=10 : if edc=edcy : oemj_set 3,11,x1,2,2 : edcy+=k1 : crc+ : break if crc=11 : if edc=edcy : oemj_set 3,12,x2,2,0 : edcy+=k2 : crc+ : break if crc=12 : if edc=edcy : oemj_set 3,13,x1,2,2 : edcy+=k1 : crc+ : break if crc=13 : if edc=edcy : oemj_set 3,14,x2,2,0 : edcy+=k1 : crc+ : break if crc=14 : if edc=edcy : oemj_set 3,15,x2,2,0 : edcy+=k1 : crc+ : break if crc=15 : if edc=edcy : oemj_set 3,16,x2,2,0 : edcy+=k3 : crc+ : break if crc=16 : if edc=edcy : oemj_set 3,18,x1,2,2 : edcy+=k1 : crc+ : break if crc=17 : if edc=edcy : oemj_set 3,19,x2,2,0 : edcy+=k1 : crc+ : break if crc=18 : if edc=edcy : oemj_set 3,20,x2,2,0 : edcy+=k1 : crc+ : break if crc=19 : if edc=edcy : oemj_set 3,21,x2,2,0 : edcy+=k1 : crc+ : break if crc=20 : if edc=edcy : oemj_set 3,22,x2,2,0 : edcy+=k1 : crc+ : break if crc=21 : if edc=edcy : oemj_set 3,23,x2,2,0 : edcy+=k1 : crc+ : break if crc=22 : if edc=edcy : oemj_set 3,24,x2,2,0 : edcy+=k3 : crc+ : break if crc=23 : if edc=edcy { oemj_set 3,26,x4 ,2,3 oemj_set 3,27,x4+77 ,2,3 oemj_set 3,28,x4+111,2,3 edcy+=k1 : crc+ : break } if crc=24 : if edc=edcy : oemj_set 3,33,x1,2,1 : edcy+=k1 : crc+ : break if crc=25 : if edc=edcy : oemj_set 3,35,x2,2,0 : edcy+=k2 : crc+ : break if crc=26 : if edc=edcy : oemj_set 3,29,x1,2,1 : edcy+=k1 : crc+ : break if crc=27 : if edc=edcy : oemj_set 3,34,x2,2,0 : edcy+=k2 : crc+ : break if crc=28 : if edc=edcy : oemj_set 3,30,x1,2,1 : edcy+=k1 : crc+ : break if crc=29 : if edc=edcy : oemj_set 3,36,x2,2,0 : edcy+=k2 : crc+ : break if crc=30 : if edc=edcy : oemj_set 3,31,x1,2,1 : edcy+=k1 : crc+ : break if crc=31 : if edc=edcy : oemj_set 3,37,x2,2,0 : edcy+=k1 : crc+ : break if crc=32 : if edc=edcy : oemj_set 3,40,x2,2,0 : edcy+=k1 : crc+ : break if crc=33 : if edc=edcy : oemj_set 3,41,x2,2,0 : edcy+=k1 : crc+ : break if crc=34 : if edc=edcy : oemj_set 3,38,x2,2,0 : edcy+=30 : crc+ : break if crc=35 : if edc=edcy : oemj_set 3,39,x2+200,2,0 : edcy+=k3 : crc+ : break if crc=36 : if edc=edcy : oemj_set 3,32,x1,2,1 : edcy+=k1 : crc+ : break if crc=37 : if edc=edcy { oemj_set 4,1 ,x2,2,4 oemj_set 3,43,x2+50,2,0 edcy+=k1 : crc+ : break } if crc=38 : if edc=edcy { oemj_set 4,2 ,x2,2,5 oemj_set 3,44,x2+50,2,0 edcy+=k1 : crc+ : break } if crc=39 : if edc=edcy { oemj_set 4,3 ,x2,2,6 oemj_set 3,45,x2+50,2,0 edcy+=k1 : crc+ : break } if crc=40 : if edc=edcy { oemj_set 4,4 ,x2,2,7 oemj_set 3,46,x2+50,2,0 edcy+=k1 : crc+ : break } if crc=41 : if edc=edcy { oemj_set 4,5 ,x2,2,8 oemj_set 3,47,x2+50,2,0 edcy+=k1 : crc+ : break } if crc=42 : if edc=edcy { oemj_set 4,6 ,x2,2,9 oemj_set 3,48,x2+50,2,0 edcy+=k1 : crc+ : break } loop if edc=3720 : cdsw_set 0 if edc=3715 : oemj_set 2,15,48,1 ;if edc=3820 : oemj_set 2,16,48,1 if edc=3940 : oemj_set 2,17,48,1 if edc=4000 : oemj_set 2,18,48,1 if edc=4050 { ; ストップ repeat oemjb oemjd(cnt)=0 loop } ;dg edc,2 redraw 0 pos 0,0 : celput thronew cdsw_put oemj_put dg_put redraw 1 await 1000/20 edc+ loop mmstop syoki2 return ; op、ed表示 ------------------------------------------------------ #deffunc oemj_set int oemj_setn1,int oemj_setn2,int oemj_setn3,int oemj_setn4,int oemj_setn5 ; ed文字セット f=0 repeat oemjb : n=cnt if oemjf(n)=0 : f=1 : break loop if f=0 : return oemjf(n)=oemj_setn1 ; グラNo. oemjn(n)=oemj_setn2 ; 文字No. oemjx(n)=oemj_setn3 ; x座標 oemjy(n)=wy ; y座標 oemjd(n)=oemj_setn4 ; スピード oemjc(n)=oemj_setn5 ; カラー return #deffunc oemj_put ; ed文字表示 gmode 2 repeat oemjb : n=cnt if oemjf(n)=0 : continue if oemjc(n)=0 : gmulcolor 255,255,255 ; 白 if oemjc(n)=1 : gmulcolor 160,160,255 ; 青 if oemjc(n)=2 : gmulcolor 128,255,128 ; 緑 if oemjc(n)=3 : gmulcolor 228+27,85+27,139+27 ; ピンク if oemjc(n)=4 : gmulcolor 255,96,96 ; 火 if oemjc(n)=5 : gmulcolor 96,96,255 ; 水 if oemjc(n)=6 : gmulcolor 96,255,96 ; 風 if oemjc(n)=7 : gmulcolor 255,255,96 ; 地 if oemjc(n)=8 : gmulcolor 255,255,255 ; 光 if oemjc(n)=9 : gmulcolor 160,160,160 ; 闇 oemjy(n)-=oemjd(n) if oemjy(n)<-35 : oemjf(n)=0 : continue pos oemjx(n),oemjy(n) if oemjf(n)=1 : celput mj32_opw,oemjn(n)-1 ; op if oemjf(n)=2 : celput mj32_edw,oemjn(n)-1 ; ed if oemjf(n)=3 : celput cre_ftw ,oemjn(n)-1 ; クレ1 if oemjf(n)=4 : celput cre_ft2w,oemjn(n)-1 ; クレ2 loop gmulcolor 255,255,255 return #deffunc cdsw_set int cdsw_setf ; カードショーセット f=0 repeat cdswb : n=cnt if cdswf(n)=0 : f=1 : break loop if f=0 : return zk=rnd(6)+1 ; 属性種類 r=rnd(cha_syu(zk)) cn=cha_zoks(zk)+r ; キャラNo. cdswf(n)=cn ; フラグ if cdsw_setf=0 { ; 真ん中 cdswx(n)=wx/2 cdswy(n)=77 cdswz(n)=0 } if cdsw_setf=2 { ; 下から上へ if csfn\2=0 : cdswx(n)=rnd(wx/2-cox)+cox/2 if csfn\2=1 : cdswx(n)=rnd(wx/2-cox)+wx/2+cox/2 csfn+ cdswy(n)=wy cdswz(n)=rnd(157) if cdswz(n)\2=1 : cdswz(n)+=1 } if cdsw_setf=3 { ; 右から左へ cdswx(n)=wx+10 cdswy(n)=rnd(wy-coy) cdswz(n)=rnd(157) if cdswz(n)\2=1 : cdswz(n)+=1 } cdswd(n)=cdsw_setf ; 移動方向 return #deffunc cdsw_put ; カードショー表示 gmode 2 repeat cdswb : n=cnt if cdswf(n)=0 : continue cn=cdswf(n) if cdswd(n)=2 : cdswy(n)-=1 : if cdswy(n)<(0-coy) : cdswf(n)=0 : continue ; 左へ if cdswd(n)=3 : cdswx(n)-=1 : if cdswx(n)<(0-cox) : cdswf(n)=0 : continue ; 左へ cdswz(n)+=2 if cdswz(n)\314=0 { zk=rnd(6)+1 ; 属性種類 r=rnd(cha_syu(zk)) cdswf(n)=cha_zoks(zk)+r ; キャラNo. } zf=sin(double(cdswz(n))*0.01) pos cdswx(n),cdswy(n) : celput cw,cn-1,zf loop return #deffunc opcd_set ; カード楕円ショーセット f=0 repeat opcdb : n=cnt+1 if opcdf(n)=0 : f=1 : break loop if f=0 : return zk=rnd(6)+1 ; 属性種類 r=rnd(cha_syu(zk)) cn=cha_zoks(zk)+r ; キャラNo. opcdf(n)=cn ; フラグ opcdp(n)=-rag90 ; pai opcdz(n)=rnd(157) ; 回転 if opcdz(n)\2=1 : opcdz(n)+=1 return #deffunc opcd_put ; カード楕円ショー表示 repeat opcdb : opcdn(cnt)=0 : loop repeat opcdb : n=cnt+1 if opcdf(n)=0 : continue opcdy(n)=sin(opcdp(n))*opcdyln ; 先にy座標を計算する repeat opcdb if opcdn(cnt)=0 : opcdn(cnt)=n : break if opcdy(opcdn(cnt))<opcdy(n) : continue n2=opcdn(cnt) : opcdn(cnt)=n : n=n2 ; 入れ替え loop loop repeat opcdb : n=opcdn(cnt);cnt if opcdf(n)=0 : continue cn=opcdf(n) xf=cos(opcdp(n))*opcdxln yf=opcdy(n);sin(opcdp(n))*opcdyln zf=sin(double(opcdz(n))*0.01) opcdc=255 if opcdp(n)<0.0 { ; 透明度 opcdc=(157+int(opcdp(n)*100))*10 if opcdc>255 : opcdc=255 } if opcdp(n)>3.14 { opcdc=(471-int(opcdp(n)*100))*10 if opcdc<0 : opcdc=0 if opcdc>255 : opcdc=255 } gmode 3,,,opcdc pos double(wx/2)+xf,100.0+yf : celput cw,cn-1,zf opcdp(n)+=0.01 : if opcdp(n)>pai2-rag90 : opcdf(n)=0 : continue ; opcdp(n)=opcdp(n)-6.28 opcdz(n)+=2 if opcdz(n)\314=0 { zk=rnd(6)+1 ; 属性種類 r=rnd(cha_syu(zk)) opcdf(n)=cha_zoks(zk)+r ; キャラNo. } loop return |
これにて、後は ANGEL MAKERさんがタイトルの島の絵を完成させてくれればほぼ完成となる(本稿でも表示されているが、まだ途中だとさ)
公開の準備にも入ってるので、まもなく公開できると思う。
しかし公開手続きは引き篭もりにはストレスで胃が痛い。