HSP | シューティングが作れなかった (東方地霊殿風?)
HSP | シューティングが作れなかった (東方地霊殿風?)
title "操作方法 カーソルキ-:自機移動 Zキー:ショット Shiftキー:低速移動"
// 初期設定
a_pos=225,400
a_angle=0.0
a_mode=4
a_slow=0
a_speed=3
point_distance=50
gosub *mode_shift
dim a_shot,108,3
dim a_shot2,24,3
;dim b_info,50,4
// メインループ
*main
redraw 0
color 255,255,255 : boxf
// 低速移動チェック
getkey g_key,16
if g_key=1 {
a_speed=1
if point_distance>25 : point_distance-5
a_slow=1
} else {
a_speed=3
if point_distance<50 : point_distance+5
a_slow=0
}
// キーをチェックして自機移動
stick key,1+2+4+8
if key&1 : a_pos(0)-a_speed : if a_pos(0)<50 : a_pos(0)=50
if key&2 : a_pos(1)-a_speed : if a_pos(1)<35 : a_pos(1)=35
if key&4 : a_pos(0)+a_speed : if a_pos(0)>400 : a_pos(0)=400
if key&8 : a_pos(1)+a_speed : if a_pos(1)>445 : a_pos(1)=445
// 周りの点を回転させる
color ,,255
repeat a_mode
a_angle(cnt)+0.09
circle (a_pos(0)-30+sin(a_angle(cnt))*point_distance+385)\385+30-5,a_pos(1)+cos(a_angle(cnt))*point_distance-5,(a_pos(0)-30+sin(a_angle(cnt))*point_distance+385)\385+30+5,a_pos(1)+cos(a_angle(cnt))*point_distance+5
loop
// 自機の弾
getkey g_key,'Z'
if a_mode>0 {
repeat 108/a_mode
gosub *shot
loop
}
repeat 12
gosub *shot2
loop
// 自機
color 255 : circle a_pos(0)-15,a_pos(1)-15,a_pos(0)+15,a_pos(1)+15
if a_slow=1 & point_distance=25 : color 255,255,255 : circle a_pos(0)-4,a_pos(1)-4,a_pos(0)+4,a_pos(1)+4
// 周りの点を増やす
; a_mode+ : gosub *mode_shift
// 周り
color 50,50,50
boxf 0,0,30,480
boxf 30,0,640,15
boxf 30,465,640,480
boxf 420,15,640,465
redraw
await 15
goto *main
// 個数変更時に点の配置変更
*mode_shift
repeat a_mode
a_angle(cnt)=M_PI*2*cnt/a_mode
loop
return
// 自機の弾
*shot
if g_key=1 & a_shot(cnt*a_mode,2)=0 & count=0 {
cnt2=cnt
repeat a_mode
a_shot(cnt2*a_mode+cnt,2)=1
a_shot(cnt2*a_mode+cnt,0)=(a_pos(0)-30+sin(a_angle(cnt))*point_distance+385)\385+30
a_shot(cnt2*a_mode+cnt,1)=a_pos(1)+cos(a_angle(cnt))*point_distance
loop
count=30*a_mode
}
if a_shot(cnt*a_mode,2)=1 {
cnt2=cnt
repeat a_mode
a_shot(cnt2*a_mode+cnt,1)-15
color 127,127,255 : circle a_shot(cnt2*a_mode+cnt,0)-5,a_shot(cnt2*a_mode+cnt,1)-5,a_shot(cnt2*a_mode+cnt,0)+5,a_shot(cnt2*a_mode+cnt,1)+5
if a_shot(cnt2*a_mode+cnt,1)<15 : a_shot(cnt2*a_mode+cnt,2)=0
loop
}
if count>0 : count-
return
// 自機の弾2
*shot2
if g_key=1 & a_shot2(cnt*2,2)=0 & count2=0 {
cnt2=cnt
repeat 2
a_shot2(cnt2*2+cnt,2)=1
a_shot2(cnt2*2+cnt,0)=a_pos(0)-5+10*cnt
a_shot2(cnt2*2+cnt,1)=a_pos(1)
loop
count2=100
}
if a_shot2(cnt*2,2)=1 {
cnt2=cnt
repeat 2
a_shot2(cnt2*2+cnt,1)-10
color 255,127,127 : circle a_shot2(cnt2*2+cnt,0)-5,a_shot2(cnt2*2+cnt,1)-5,a_shot2(cnt2*2+cnt,0)+5,a_shot2(cnt2*2+cnt,1)+5
if a_shot2(cnt2*2+cnt,1)<15 : a_shot2(cnt2*2+cnt,2)=0
loop
}
if count2>0 : count2-
return