sample\d3module\xsample_amano.hsp » Plain Format
;============================================================
; 2006/--/--
title "S.Programs Cosmic Flower"
; version 1.0/sample_ver
; http://sprocket.babyblue.jp/
;============================================================
/*
・天ノ花
色とりどりの星々で構成された「天ノ花 (あまのはな)」を描くスクリプトです。
宇宙空間に宝石をまいたようなイメージで書いてみました。
[Enter] : フルスクリーン切り替え
[Esc] : 終了
*/
#include "d3m.hsp"
;============================================================
; main
;============================================================
; config
#const PTC_N 10
;------------------------------------------------------------
; init
; パーティクル作成
; ランダム放射形
repeat 100
arr(cnt) = rnd(50) + 50
loop
arr = 1, 47
d3mkparticle , 300, 300, 600, arr
; ×型
arr = 4, 4, 30, 30, 140, 30
d3mkparticle 1, 200, 200, 400, arr
; 星
arr = 5, 2, 100, 45
d3mkparticle 2, 500, 500, 100, arr
; サクラ
arr = 5, 6, 80, 100, 75, 40, 75, 100
d3mkparticle 3, 400, 200, 200, arr
; プロペラ
arr = 7, 6, 100, 90, 80, 70, 60, 50
d3mkparticle 4, 300, 300, 300, arr
; 結晶
arr = 6, 10, 100, 90, 70, 50, 50, 50, 50, 50, 70, 90
d3mkparticle 5, 200, 400, 400, arr
; よつば
arr = 4, 10, 100, 97, 90, 80, 65, 40, 65, 80, 90, 97
d3mkparticle 6, 100, 400, 100, arr
; hexa
arr = 6, 2, 40, 110
d3mkparticle 7, 200, 300, 400, arr
; sun
arr = 10, 2, 100, 66
d3mkparticle 8, 400, 200, 100, arr
; †
arr = 4, 8, 100, 100, 52, 36, 28, 36, 52, 100
d3mkparticle 9, 100, 300, 500, arr
t_start = d3timer()
;------------------------------------------------------------
*mainloop
;------------------------------------------------------------
; full-screen ctrlr (toggle : Enter)
stick ky_inp
if ky_inp & 128 : end
if ky_inp & 32 {
mode_fsc ^= 1
chgdisp mode_fsc ; (default : 640, 480)
if mode_fsc {
bgscr 2
gsel 2, 2
mouse -1
} else {
gsel 2, -1
gsel
mouse
}
}
;------------------------------------------------------------
; setup
randomize 0
redraw 0
sec = 0.001 * d3timer()
div = (d3timer() - t_start + 1000) // start-efct divisor
cz = sin(sec/13)*500 + 8000000.0/div
hsvcolor 112, 128 - 128000/div, limit(limit(80 - cz*cz/1000, 0, 255) + 300000/div, 0, 255)
boxf
;------------------------------------------------------------
; カメラ座標
#define f0 sec / 7
#define r0 600
#define f1 sec / 11
#define r1 500
d3setcam cos(f0)*r0, sin(f0)*r0, cz, cos(f1)*r1, sin(f1)*r1, 0
;------------------------------------------------------------
; stars
#define GX_STARS 300
repeat GX_STARS
; --- galaxy
r = (5.0 + cnt) / GX_STARS
j = 1.0 - r
r *= 900
f = 1.264 * cnt - j * rnd(60) / 100
d3vpos cos(f) * r, sin(f) * r, ((10000 / (r + 100)) * (cnt\3-1))
gosub *draw_ptc
if cnt\17=0 : d3particlem 1, 70
; --- bg
j = 2
d3vpos rnd(32768)-16384, rnd(32768)-16384, rnd(32768)-16384
gosub *draw_ptc
loop
;------------------------------------------------------------
; center x
; gmode 5, , , 80
d3particle 2, 0, 0, 0, 200
d3particlem , 150
d3particlem , 300
redraw
await ;10
goto *mainloop
;------------------------------------------------------------
*draw_ptc
gmode 5, , , 224
d3particlem rnd(PTC_N), j * 25 + 5
gmode 5, , , 76
d3particlem rnd(PTC_N), j * 60 + 10
return