補講 問題を出してみたりする |
問題1
ABOGADROのサンプルプログラムでは、パソコンにジョイパッドが複数つながっていても、そのうちの1本にしか反応しません。どのジョイパッドでも操作できるように、「キー、ジョイパッドの入力」サブルーチンを修正して下さい。
[解答例]
問題2
「球」という字が画面内を動き回るプログラムを作って下さい。
文字の大きさを32に指定しても、正確な横幅、縦幅は分かりません。ここでは32×32ドットであるものと近似します。
[解答例]
問題3
変数numberに代入した数字の、小数点以下を四捨五入するサブルーチンを作って下さい。
(例)
128.625
↓
129
プログラム
; メインルーチン
number=32928 ; 128.625の整数表現
gosub *Round_Num
mes "答は"+answer+"です。"
stop
; numberの小数点以下第一位を四捨五入し、answerに代入するサブルーチン
*Round_Num
この部分に入る処理を考えて下さい。
return
実行結果
答は129です。
[解答例]
問題4
グラデーションがかかった文字列を表示するプログラムを作って下さい。
ひとくちメモ: |
・「#include "hspext.as"」はいらないの? (問題3) |
固定小数自体は考え方の問題ですから、emsinやemcosといった命令を使わないのであれば、HSPEXTプラグインは必要ありません。さらに言えば、256倍する(8ビット左にシフトする)、256で割る(8ビット右にシフトする)、といったキリが悪い数字を用いる固定小数を使わなくても、10倍とか100倍とかすればいいのです。例えば変数diameterに直径を代入し、円周の長さを求めて変数circumに代入するサブルーチンは、次のように書けます。; メインルーチン diameter=27 gosub *Calc_Circum mes "円周の長さは"+circum+"です。" stop ; 円周を求めるサブルーチン *Calc_Circum circum=diameter*314 ; 円周率が100倍した値なので、100で割る(小数点以下は切捨て) circum=circum/100 return整数しか扱えないHSPで、小数を扱うための知恵です。 |