HSP | 弾幕っぽいもの?
HSP | 弾幕っぽいもの?
rand_=10
randomize rand_
dim my_pos,2
my_pos(0)=320,450
my_speed=0.0,0.0
my_speed2=0.0
spell_card=0
count=0
gosub *mapini
*main
redraw 0
gosub *keychk
gosub *spell
gosub *block
gosub *me
gosub *draw
count+ : title "ポイント:"+count
redraw
await 33
goto *main*mapini
dim block_flag,300
ddim block_pos,300,2
ddim block_move,300,2
return*keychk
stick key,5
Z_key2=Z_key
getkey Z_key,'Z'
getkey Shift_key,16
return*spell
switch spell_card
case 0
if (count\3)=0 {
id=count/3\50
block_flag(id)=1
block_pos(id,0)=0.0+rnd(640)
block_pos(id,1)=40.0+rnd(10)
block_move(id,0)=5.0
block_move(id,1)=M_PI/2+M_PI*(rnd(5)+1)/5/4-M_PI/8
id=count/3\50+50
block_flag(id)=2
block_pos(id,0)=40.0+rnd(10)
block_pos(id,1)=40.0+rnd(10)
block_move(id,0)=5.0
block_move(id,1)=M_PI*(count/3\50)/20
id=count/3\50+100
block_flag(id)=2
block_pos(id,0)=590.0+rnd(10)
block_pos(id,1)=40.0+rnd(10)
block_move(id,0)=5.0
block_move(id,1)=M_PI-M_PI*(count/3\50)/20
if (count\12)=0 {
repeat 3
id=count/3\50+150+50*cnt
block_flag(id)=3
block_pos(id,0)=320.0+rnd(10)
block_pos(id,1)=40.0+rnd(10)
block_move(id,0)=5.0
block_move(id,1)=atan(my_pos(1)-40,my_pos(0)-320)+M_PI*(cnt-1)/4
loop
}
}
swbreak
swend
return*block
repeat 300
if block_flag(cnt)!0 {
block_pos(cnt,0)=block_pos(cnt,0)+block_move(cnt,0)*cos(block_move(cnt,1))
block_pos(cnt,1)=block_pos(cnt,1)+block_move(cnt,0)*sin(block_move(cnt,1))
}
if block_pos(cnt,0)<0 | block_pos(cnt,0)>640 | block_pos(cnt,1)<0 | block_pos(cnt,1)>480 : block_flag(cnt)=0
loop
return*me
// 移動処理
if Shift_key=1 : my_speed(0)=2.0 : else : my_speed(0)=5.0
if key&1 : my_pos(0)-my_speed(0) : if my_pos(0)<30 : my_pos(0)=30
if key&4 : my_pos(0)+my_speed(0) : if my_pos(0)>610 : my_pos(0)=610
if Z_key=1 & Z_key2!1 & my_pos(1)=450 {
my_speed(1)=-15.0
my_speed2=1.8
}
my_speed(1)+my_speed2
my_pos(1)=my_pos(1)+my_speed(1)
if my_pos(1)>450 : my_pos(1)=450 : my_speed(1)=0.0 : my_speed2=0.0
return*draw
// 背景
color 255,255,255 : boxf
// ブロック
repeat 300
if block_flag(cnt)!0 {
switch block_flag(cnt)
case 1
color 255,128,128
swbreak
case 2
color 128,128,255
swbreak
case 3
color 255,255,128
swbreak
swend
boxf block_pos(cnt,0)-15,block_pos(cnt,1)-15,block_pos(cnt,0)+15,block_pos(cnt,1)+15
}
loop
// 被弾処理
pget my_pos(0),my_pos(1)
if ginfo_r!255 | ginfo_g!255 | ginfo_b!255 : dialog "被弾" : end
// 自機
color
circle my_pos(0)-5,my_pos(1)-5,my_pos(0)+5,my_pos(1)+5
// 周り
color 128,128,128
boxf 0,0,640,25
boxf 0,455,640,480
boxf 0,25,25,455
boxf 615,25,640,455return
俺の頭が数式弾幕でぴちゅーんだZE☆
wwwwwwwwww
わああ@@これは難しいです。
でもきれいに散らばって楽しいですね^^
どうもありがとうございますww
短時間で作ったのでいろいろと手抜きなんですが、これでコツはつかめたような感じがするので、もっとちゃんとしたのを作ります!これからもよろしくお願いしますね