補講 問題を出してみたりする

問題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で、小数を扱うための知恵です。
 

[目次へ][前へ][次へ] inserted by FC2 system