HSP | 弾幕っぽいもの?

HSP | 弾幕っぽいもの?

追記:exe版うpしました:ダウンロードページ 「test.exe」をクリック
自分で弾幕っぽいもの造ってみたいと思ったけどまだこれぐらいが限界…orz
カーソルキーで左右移動、Shiftで低速移動、Zキーでジャンプです。
一番最初のrand_の値を変えるとランダムが変わります。
タイトルバーにスコアが出てます。被弾するとダイアログ出るのでその時見タイトルバーに出ている数値がスコアです。
私がやってみたところ、300点前後でもきついです…orz

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,455

return

こんなものでも、↓をクリックしてもらえるとありがたいかもww


「HSP | 弾幕っぽいもの?」への4件のフィードバック

  1. わああ@@これは難しいです。
    でもきれいに散らばって楽しいですね^^

  2. どうもありがとうございますww
    短時間で作ったのでいろいろと手抜きなんですが、これでコツはつかめたような感じがするので、もっとちゃんとしたのを作ります!これからもよろしくお願いしますね

コメントは受け付けていません。