先生の授業

HSPを用いたプログラミング。 目標はシューティングゲームの製作。

課題、回答のまとめ(2005/03/06まで)

回答・回答例は反転表示


■課題1

文字を表示するプログラムを作成する。

回答例1

回答例2


■課題2

変数を理解する。 以下のソースの意味を述べよ。

a="どうですか?" 
mes a 
stop

回答


■課題3

以下のソースを実行した場合どう表示されるか理解し、応用したソースを書く。

a=5 
mes a+7 
stop

回答

回答例(応用したソース)


■課題4

以下のソースを実行した場合どう表示されるか。

a="456" 
mes a+"123" 
stop

回答


●ここまでの応用

以下のようなことが可能である。

picload "graphics"+filename+".bmp"

解説

たとえばfilenameが数値型のとき、 1が代入されていればgraphics1.bmpを、 15が代入されていればgraphics15.bmpを画像として読み込むことが出来る。


■課題5

実際にpicload命令を使う。

回答例(aaa.bmpという画像を読み込む)


■課題6

screen,bgscr,buffer命令について簡単にまとめる。

解説


■課題7

jiki.bmp

jiki.bmpをbufferとしたウィンドウID2に読み込ませ、 gcopy命令で、真ん中の機体のみウィンドウID0に表示する。

回答例


■課題8

課題7について改変を加え、

回答例


■課題9

課題8について改変を加え、

回答例


■課題10

課題9について改変を加え、

回答例


●発展 - 先生のサンプル

先生のサンプル

ここまでの授業&先生のサンプルより生徒君が書いたソース
その1
その2


●発展 - 先生のソースについて

先生のソース

解説

先生のソースを受けて生徒君が書いたソース
その3


●発展 - ショットを追加する

先生のソース&画像
(追加するショットの画像)

解説

ショットに関する変数
dim shotf,shotmax //これは、ショットが存在するかどうかを表す変数だ(有る=1 無い=0)
dim shotx,shotmax :dim shoty,shotmax //ショット画像の位置を表している
dim shotmx,shotmax:dim shotmy,shotmax //ショットの移動量を表している、ここの値を変えることで横や斜めに飛ばすことも可能だ。


●発展 - #defineとは?

#define ○○ ××
と書いておけばソース中の○○がコンパイル時にすべて××に置き換えられる。

//defineの例
#define mypicture 2 
・ 
・ 
・ 
buffer mypicture :picload "jiki.bmp" //結局 buffer 2 :picload "jiki.bmp"と等価

■課題11

100の大きさの配列変数varを作成し、中身をすべて1で埋める。

回答例


■課題12

128の大きさの配列変数tmpを作成し、中身に偶数を小さい順に代入する。

回答例


■課題13

課題11を改変し、配列変数tmpの中で奇数番目の値すべてに、1〜6までの乱数を加える。

回答例


■課題14

64個の要素を持つ配列変数objx(中身はすべて0〜639の乱数)とobjy(0〜479の乱数)を作成し、 そのすべての場所にpset命令で点を打つ。
補足 : 白いウィンドウの中に黒い点がランダムに64個打たれた物を作る。

回答例


ここまでで達成済みのプログラムまとめサンプル&ソース