#12:BLG0

(published: Apr. 10, 2001)

外部ビットマップの取りこみを今回初めて試してみました。 あと画像のマスキング処理も行っています。

ダウンロード(zip形式, 83.6KB)

ゲーム内容

人型宇宙船を動かして球型小惑星に当たらない様に避けつづけて下さい。 当たるとゲームオーバーで、 避けつづけていた時間が表示されます。

操作方法

カーソルキー
8方向移動
z,x,v
スピードアップ
押し方によって8段階にスピードを調節できます

ヒント

球型小惑星の前身であるX型小惑星は触れてもミスにはなりません。

ソフトについての注意

画像ファイルは実行ファイルと同じディレクトリに置かなければなりません。 変にファイルを動かしたりしないこと。

ソース紹介

1 randomize
2 dim x(70),y(70),x0(70),y0(70),c%(70),t%(70),bg(70)
3 pi=atn(1)*4:
4 bload "blg.bmp",blg:bload "blg0.bmp",blg0
5 bload "shp.bmp",shp:bload "shp0.bmp",shp0
6 bload "pre.bmp",pre:bload "pre0.bmp",pre0
7 bload "bxn.bmp",bxn:bload "bxn0.bmp",bxn0
9  get@(x%,y%)-(x%+15,y%+15),bg
10 cls 3
12 x%=0:y%=0:bg=0:s%=-1:f%=0:st%=1
19  get@(x%,y%)-(x%+15,y%+15),bg
20 for l%=0 to 70
21  gosub 1000
25 next l%
78 locate 53,2:print "blg0"
80 locate 53,3:print "[cursor]: move"
82 locate 53,4:print "[z][x][v]: speed up"
84 locate 53,5:print "by Nisino Tatami"
86 locate 53,7:print "push [spc]"
90 i$=inkey$:if i$<>" " then 90
92 locate 53,7:print "          "
100 x0%=0:y0%=0:k0%=0:st%=1
105 put@(x%,y%),bg,and
106 if keystate(asc("Z"))<0 then st%=st%+2
107 if keystate(asc("X"))<0 then st%=st%+4
108 if keystate(asc("V"))<0 then st%=st%+8
110 if keystate(28)<0 then x0%=st%:k0%=1
115 if keystate(29)<0 then x0%=-st%:k0%=1
120 if keystate(31)<0 then y0%=st%:k0%=1
125 if keystate(30)<0 then y0%=-st%:k0%=1
150 x%=x%+x0%:y%=y%+y0%
151 if x%<0 then x%=0
152 if x%>399 then x%=399
153 if y%<0 then y%=0
154 if y%>399 then y%=399
161  get@(x%,y%)-(x%+15,y%+15),bg
162  put@(x%,y%),shp0,and
163  put@(x%,y%),shp,or
500 for l%=0 to 70
510  put@(x(l%),y(l%)),bg(l%),and
515  if t%(l%)>0 then gosub 2000:goto 540
520  x(l%)=x(l%)+x0(l%):y(l%)=y(l%)+y0(l%)
521  if abs(x(l%)-x%)<8 and abs(y(l%)-y%)<8 then f%=1
530  if x(l%)<0 or x(l%)>399 or y(l%)<0 or y(l%)>399 then gosub 1000
531  get@(x(l%),y(l%))-(x(l%)+15,y(l%)+15),bg(l%)
532  put@(x(l%),y(l%)),blg0,and
533  put@(x(l%),y(l%)),blg,or
540 next l%
545 s%=s%+1
550 if f%=0 then 100
600 for l%=1 to 100
602  x0=x%:y0=y%
604  v=rnd(1)*pi*2
606  x1=cos(v)*12:y1=sin(v)*12
632  put@(x0,y0),bxn0,and
633  put@(x0,y0),bxn,or
636  x0=x0+x1:y0=y0+y1
640  if x0>=0 and x0<=399 and y0>=0 and y0<=399 then 632
699 next l%
700 locate 53,7:print "score ";s%;" "
710 locate 53,9:print "retr[y]/e[n]d"
720 i$=inkey$
730 if i$="y" then 10
740 if i$<>"n" then 720
750 end
1000 x(l%)=rnd(1)*400:y(l%)=rnd(1)*400
1010 v=rnd(1)*pi*2
1020 x0(l%)=cos(v)*12:y0(l%)=sin(v)*12
1026 get@(x(l%),y(l%))-(x(l%)+15,y(l%)+15),bg(l%)
1027 t%(l%)=int(rnd(1)*1000)-s%:if t%(l%)<5 then t%(l%)=5
1030 return
2000 t%(l%)=t%(l%)-1
2010 get@(x(l%),y(l%))-(x(l%)+15,y(l%)+15),bg(l%)
2020  put@(x(l%),y(l%)),pre0,and
2030  put@(x(l%),y(l%)),pre,or
2040 return


H-man AND NOW
作:Nishino Tatami (ainosato@vc-net.ne.jp)