HSPを用いたプログラミング。 目標はシューティングゲームの製作。
回答・回答例は反転表示
文字を表示するプログラムを作成する。
mes "この文字列が表示されます" stop
print "これも表示できます" stop
変数を理解する。 以下のソースの意味を述べよ。
a="どうですか?" mes a stop
どうですか? と表示される。
以下のソースを実行した場合どう表示されるか理解し、応用したソースを書く。
a=5 mes a+7 stop
12と表示される。
a=7 mes a+9 ;16と表示される。 stop
以下のソースを実行した場合どう表示されるか。
a="456" mes a+"123" stop
456123 と表示される。
以下のようなことが可能である。
picload "graphics"+filename+".bmp"
たとえばfilenameが数値型のとき、 1が代入されていればgraphics1.bmpを、 15が代入されていればgraphics15.bmpを画像として読み込むことが出来る。
実際にpicload命令を使う。
picload "aaa.bmp" stop
screen,bgscr,buffer命令について簡単にまとめる。
jiki.bmpをbufferとしたウィンドウID2に読み込ませ、 gcopy命令で、真ん中の機体のみウィンドウID0に表示する。
buffer 2 picload "jiki.bmp" gsel 0 gcopy 2, 144, 0, 72, 64 stop
課題7について改変を加え、
buffer 2 picload "jiki.bmp" gsel 0 pos 270, 400 gmode 2 gcopy 2, 144, 0, 72, 64 stop
課題8について改変を加え、
buffer 2 picload "jiki.bmp" gsel 0 x=270 y=400 repeat pos x, y gmode 2 gcopy 2, 144, 0, 72, 64 wait loop
課題9について改変を加え、
buffer 2 picload "jiki.bmp" gsel 0 x=270 y=400 repeat color 0,0,0 boxf 0,0,640,480 pos x, y gmode 2 gcopy 2, 144, 0, 72, 64 await 32 x++ y-- loop stop
ここまでの授業&先生のサンプルより生徒君が書いたソース
その1
その2
先生のソースを受けて生徒君が書いたソース
その3
先生のソース&画像
(追加するショットの画像)
ショットに関する変数
dim shotf,shotmax //これは、ショットが存在するかどうかを表す変数だ(有る=1 無い=0)
dim shotx,shotmax :dim shoty,shotmax //ショット画像の位置を表している
dim shotmx,shotmax:dim shotmy,shotmax //ショットの移動量を表している、ここの値を変えることで横や斜めに飛ばすことも可能だ。
#define ○○ ××
と書いておけばソース中の○○がコンパイル時にすべて××に置き換えられる。
//defineの例 #define mypicture 2 ・ ・ ・ buffer mypicture :picload "jiki.bmp" //結局 buffer 2 :picload "jiki.bmp"と等価
100の大きさの配列変数varを作成し、中身をすべて1で埋める。
dim var, 100 repeat 100 : var.cnt = 1 : loop
128の大きさの配列変数tmpを作成し、中身に偶数を小さい順に代入する。
dim tmp,128 repeat 128 :tmp.cnt=cnt*2 :loop
課題11を改変し、配列変数tmpの中で奇数番目の値すべてに、1〜6までの乱数を加える。
dim tmp, 128 repeat 128 / 2 i = cnt * 2 + 1 rnd tmp.i, 6 tmp.i++ loop
64個の要素を持つ配列変数objx(中身はすべて0〜639の乱数)とobjy(0〜479の乱数)を作成し、
そのすべての場所にpset命令で点を打つ。
補足 : 白いウィンドウの中に黒い点がランダムに64個打たれた物を作る。
//変数の準備 dim objx,64 :dim objy,64 repeat 64 :rnd objx.cnt,640 :rnd objy.cnt,480 :loop //描画 repeat 64 pset objx.cnt,objy.cnt loop stop