=== hanabi_1.def v0.1 === 25-08-30 #if 0 hitoさんの paint.def と JUNさんの 花火.def と 和生さんの BRIGHT.DEF を合体して でっちあげた花火マクロです。PC98 または DOSV で動きます。 起動すると一時ファイルを開いてその中で打ち上げ花火が上がります。 [ESC] 又は 'Q' で終了します。 konno 2025-08-30 #endif *M 70 ^\ "hanabi_1" ?. &71 ;=============================================================================== 71 "hanabi" ?. ax=$2C00, &i($21) rn=cx+dx, ; 日付・時間でrandomize (wt)? { #Y >^ } (mb)? #b ps[,du[-,ds[+,aa[,bb[,cc[,dd[, ;bright ky[,mx[+,mi[=2,en[-,ep[+,eu[+,mp[=0, fa[,k[,x[,y[,w[,jj[,xx[,yy[,ww[, #] aa"|!;<>=+*", ;半角指定文字 限定 6 u"*☆●■◆★◎・〇●", ;全角指定文字 限定 6 #if 98 cc"$(21,41,61,81,a1,c1,25,45,65,85,a5,c5)",;青,赤,紫,緑,空,黄,・・反転 ; _1 normal _5 reverse ;12 の指定文字に対応 dd"$(1f,1d)", ;[EOL][EOF] ; ↓ ← ;vz.def *Else 10 #elseif DOSV ; cc"$(19,1a,1b,1c,1d,1e,91,a1,b1,c1,d1,e1)",;青,緑,空,赤,紫,黄,・・反転 cc"$(10,1a,1b,1c,1d,1e,91,a0,b1,c1,d1,e1)",;青,緑,空,赤,紫,黄,・・反転 ;背景 bit7 輝度 6-4 色, 文字 bit3 輝度, ;12 の指定文字に対応 dd"$(1b,1f)", ;[EOL][EOF] ; ↓ ← ;vz.def *Else 10 ; d"$(07,1f)",;my_cust #endif &61 r..0=(vp..13 * wa.54 + wa.53) * 2, ;win top VRAM ptr r..1=vp..1, ;VRAM segment r..2=vp..14, ;doswd2 r.6=wa.55, ;tw_sx r[, &Sc(r+8,aa) r], ;brt_chr_a~f &Sc(r+38,dd) ;[EOL][EOF] &s #R &?("%shanabi.tmp",pi) #m ; テンポラリファイルオープン #39 #n #18 (78){' '} #m &d #e #k (wy-1){ #p } #i jj=mg.-9,&j(0) o-, ; LOOP t5, ; size :Z ;===== 繰り返し loop ===== y=10, ; y 縦位置 &r ; ランダム x=(r%(40)+20), bb=(r%(6)+3), ; x 花火の横位置 (x<20)?{x=20,} ; x pos? 花火の位置 (x>60)?{x=60,} ; x pos? (bb<3)?{bb=3,} ; bb 花火の大きさ (bb>9)?{bb=9,} ; o=wy-2, &d :a ; ==== LOOP 打ち上げ ==== (o>=8)?{ &x(x) &y(o) &?("|") &62 (o<11)?&w(3) (o<13)?&w(3) o--, &x(x) &y(o) &?("!") &62 (o<16)?&w(3) &x(x) &y(o+2) &?(" ") o--, &x(x) &y(o+2) &?(" ") >a } &x(x) &y(o+1) &?(" ") o-, t-, ; size :L ; ==== LOOP 花火 ==== &s #^ #< &x(x) &y(y) o++, #b mb4, xb=lx, &51 ;51: w"%.O1" ;@COLOR (w.3-'0')?w.3='1', :A (w.3-'0')?fa+,?fa-, :B xx=x-(t+1)*4, yy=y-(t+1)*2, ; mb0, :C k=0, w.3=fa+'0', ; &m("描画中 %d",o) &s (k==0)?{ww=u..t,WW!!, &01 } ;1: ;楕円描画 ; &m("w%d ww%d",w,ww) mb0, #^ t=t+1, x=x+2,y++, &62 ;bright &w(1) (oL ps=pw, ;キャラ消し ew[-, mx[-, v-, (bb) { (bb<4)?&w(3) (bb<5)?&w(3) ww=u..v, ww!!, #56 &?("%c",ww) #m " " #m "ay" v++, &62 (vQ ; ESC (r=='Q'||r=='q')?>Q ; Q >Z :Q &w(20) #C ; &#J(yy) &x(xx)&j(jj) ww],yy],xx],jj],w],y],x],k],fa], mp],eu],ep],en],mi],mx],ky], mb0, dd],cc],bb],aa],ds],du],ps], ;bright #] &m("") &d #? . ;=============================================================================== 01: ;楕円描画 a[,b[,c[,d[,e[,f[,g[,m[,n[,x[,y[,xx[,yy[, f=(x-xx)%2, g=(y-yy)%2, a=(x-xx)/2, b=(y-yy)/2, x=(x+xx)/2, y=(y+yy)/2, (a>b)?{&12 (0)}?&13 yy],xx],y],x],n],m],g],f],e],d],c],b],a], 12: xx=a, c=a, yy=0, ; &m("12:楕円描画中 %d %d", xx-yy,o) ; v-, :A (xx>=yy)? { ; v++, ; (v>1&&o==1)?>B ; &m("12: 楕円描画中 %d %d v%d xx%d yy%d", xx-yy,o,v,xx,yy) d=xx*b/a, e=yy*b/a, m=x+xx+f, n=y+e+g, &50 m=x-xx, n=y+e+g, &50 m=x+yy+f, n=y+d+g, &50 m=x-yy, n=y+d+g, &50 m=x+yy+f, n=y-d, &50 m=x-yy, n=y-d, &50 m=x+xx+f, n=y-e, &50 m=x-xx, n=y-e, &50 ((c-=(yy++<<1)-1)<0)?c+=(xx-- -1)<<1, >A } :B 13: xx=b,c=b,yy=0, ; &m("13:楕円描画中 %d %d", xx-yy,o) :A (xx>=yy)? { ; &m("13: 楕円描画中 %d %d %d", xx-yy,o,t) d=xx*a/b, e=yy*a/b, m=x+d+f, n=y+yy+g, &50 m=x-d, n=y+yy+g, &50 m=x+e+f, n=y+xx+g, &50 m=x-e, n=y+xx+g, &50 m=x+d+f, n=y-yy, &50 m=x-d, n=y-yy, &50 m=x+e+f, n=y-xx, &50 m=x-e, n=y-xx, &50 ((c-=(yy++<<1)-1)<0)?c+=(xx-- -1)<<1, } 25: m=x*2+f-q.p, &50 ((q.p-x)*2-f==-1)?. ; ((q.p-x)*2-f){(cd==w.2&&w.3-'0')?#d?&o(ww)} ; ((q.p-x)*2-f){(cd==w.2&&w.3-'0')?#d?&?("%c",ww)} ; ((q.p-x)*2-f){(cd==w.2&&w.3-'0')?#d? &?("%c",ww) 50: (n<0||m<0)?. ; (kx==40&&v>1)?>a &#J(n) #> D(m) &x(m) ; (cd==w.2&&w.3-'0')?#d?&o(ww) ; (cd==w.2&&w.3-'0')?#d?&?("%c",ww) ; (cd==w.2&&w.3-'0')?#d? &?("%c",ww) :a 51: w"%.O1" ;@COLOR 60: q 3+$,."$[130]" 61: (3+$)."$[44]" 62: ; 色付け &d :a (s)?>l ;loop ((pn.-15&=3)&&wt!=2)?j+,?j-, ;msg_line ; kx[, &d &x(r]) kx[, #] &x(r]) ;##k01 &61 r.7=wa.56-j, ;tw_sy - msg r[, &Sc(r+14,u) r], ;brt_chr_g~l r[, &Sc(r+26,cc) r], ;attr 12 #if 98 r.40=ks&2, ;ks=capslock #elseif DOSV r.40=ks&64, ;ks=capslock #endif r.41-, ax=r, &> :l 70: #if 98 &i(3+$)."$ $(8b,e8,e8,29,01,c5,76,00,8a,4e,07,32,ed,51,56,e8)$ $(0a,00,5e,59,72,05,03,76,04,e2,f2,c3,32,c9,3a,4e)$ $(06,73,19,ad,80,fc,00,74,03,e9,87,00,3a,46,27,74)$ $(0d,3a,46,26,74,06,eb,08,fe,c1,eb,e2,f8,c3,f9,c3)$ $(3a,46,08,75,05,8a,56,1a,eb,30,3a,46,09,75,05,8a)$ $(56,1b,eb,26,3a,46,0a,75,05,8a,56,1c,eb,1c,3a,46)$ $(0b,75,05,8a,56,1d,eb,12,3a,46,0c,75,05,8a,56,1e)$ $(eb,08,3a,46,0d,75,15,8a,56,1f,80,7e,29,01,75,06)$ $(c6,46,29,00,eb,22,c6,46,29,01,eb,1c,8a,56,28,80)$ $(fa,00,74,a4,8a,56,29,80,fa,00,74,9c,56,81,c6,00)$ $(20,8a,54,fc,80,e2,f7,5e,56,81,c6,00,20,88,54,fe)$ $(5e,eb,85,86,e0,3b,46,0e,75,05,8a,56,20,eb,30,3b)$ $(46,10,75,05,8a,56,21,eb,26,3b,46,12,75,05,8a,56)$ $(22,eb,1c,3b,46,14,75,05,8a,56,23,eb,12,3b,46,16)$ $(75,05,8a,56,24,eb,08,3b,46,18,75,15,8a,56,25,80)$ $(7e,29,01,75,06,c6,46,29,00,eb,04,c6,46,29,01,eb)$ $(1c,8a,56,28,80,fa,00,74,1f,8a,56,29,80,fa,00,74)$ $(17,56,81,c6,00,20,8a,54,fc,80,e2,f7,5e,56,81,c6)$ $(00,20,88,54,fe,88,14,5e,ad,fe,c1,e9,0a,ff,8b,46)$ $(0e,e8,31,00,89,46,0e,8b,46,10,e8,28,00,89,46,10)$ $(8b,46,12,e8,1f,00,89,46,12,8b,46,14,e8,16,00,89)$ $(46,14,8b,46,16,e8,0d,00,89,46,16,8b,46,18,e8,04)$ $(00,89,46,18,c3,86,e0,3c,80,14,61,72,02,2c,a2,d0)$ $(d4,05,21,1f,80,e4,7f,80,ec,20,c3)" #elseif DOSV &i(3+$)."$ $(8b,e8,c5,76,00,8a,4e,07,32,ed,51,56,e8,23,00,5e)$ $(59,72,05,03,76,04,e2,f2,e8,01,00,c3,c4,7e,00,8b)$ $(46,04,d1,e8,8a,56,07,32,f6,f7,e2,8b,c8,b4,ff,cd)$ $(10,c3,32,c9,3a,4e,06,73,23,ad,3c,80,72,0c,3c,ef)$ $(77,08,3c,9f,76,7e,3c,e0,73,7a,3c,20,77,12,3a,46)$ $(27,74,0b,3a,46,26,74,04,fe,c1,eb,d8,f8,c3,f9,c3)$ $(3a,46,08,75,05,8a,56,1a,eb,30,3a,46,09,75,05,8a)$ $(56,1b,eb,26,3a,46,0a,75,05,8a,56,1c,eb,1c,3a,46)$ $(0b,75,05,8a,56,1d,eb,12,3a,46,0c,75,05,8a,56,1e)$ $(eb,08,3a,46,0d,75,15,8a,56,1f,80,7e,29,01,75,06)$ $(c6,46,29,00,eb,19,c6,46,29,01,eb,13,8a,56,28,80)$ $(fa,00,74,a4,8a,56,29,80,fa,00,74,9c,8a,54,fd,88)$ $(54,ff,eb,94,8a,d8,ad,8a,f8,3b,5e,0e,75,05,8a,56)$ $(20,eb,30,3b,5e,10,75,05,8a,56,21,eb,26,3b,5e,12)$ $(75,05,8a,56,22,eb,1c,3b,5e,14,75,05,8a,56,23,eb)$ $(12,3b,5e,16,75,05,8a,56,24,eb,08,3b,5e,18,75,15)$ $(8a,56,25,80,7e,29,01,75,06,c6,46,29,00,eb,04,c6)$ $(46,29,01,eb,13,8a,56,28,80,fa,00,74,11,8a,56,29)$ $(80,fa,00,74,09,8a,54,fb,88,54,fd,88,54,ff,fe,c1)$ $(e9,25,ff)" #ifend * ===== End of Paint.def =====