HotSoupProcessorの記録 -10ページ目

HotSoupProcessorの記録

コンピューター言語 HotSoupProcessor の練習記録です

どんなプログラムでも配列は使うということで
配列の練習です。

---
; 配列

; 3要素の配列を定義
dim naRGB, 3

; 値を設定
naRGB(0) = 200
naRGB(1) = 240
naRGB(2) = 200

; 値を取得
color naRGB(0), naRGB(1), naRGB(2)

; テスト
boxf

stop
---

特に問題なし。
定義のところが特殊かなぁ。
HSPはオブジェクト指向的な仕組みがない・・と思ったら
似たようなことができるのでそのメモ。

使うのは、#moduleです。

---
; モジュール定義
; classTest
; プロパティ
; int nNo
; str strName
; メソッド
; GetName
; GetNo
; AddNo
#module classTest nNo, strName

#modinit int p_nNo, str p_strName
nNo = p_nNo
strName = p_strName
return

#modcfunc GetName
return strName

#modcfunc GetNo
return nNo

#modcfunc AddNo int nNum
nNo = nNo + nNum
return 0

#global


;****************************
; メイン処理
;****************************
; インスタンス生成
newmod obj1, classTest, 1, "obj1"

; GetName
strTemp = GetName(obj1)
mes "str:" + strTemp

; AddNo
nTemp = AddNo(obj1, 5)
nTemp = GetNo(obj1)
mes "no:" + str(nTemp)

stop
---
長い!
やってることはたいしたことないのに。。

ポイントは、うーん・・あんまりないな。
やり方さえわかれば難しくない。

ただ、ユーザ定義関数とユーザ定義命令というのがあって、
ここらの使い分けが難しそう。
呼び方もちょっと気になる。
~関数が、戻り値ありの関数
~命令が、一般的に言うサブルーチン
という感じ。
画像を移動したかったのでサンプルを探して、結論はこう。

---
*loop

nPosx = 20
nPosy = 40

; 描画処理の停止
redraw 0

; 背景で塗りつぶす
color 200,240,200
boxf

; 画像を表示
gmode 2
pos nPosx, nPosy
celput imgPack

; 描画処理の再開
redraw 1

; 位置を変更
nPosx = nPosx + 5
nPosy = nPosy + 5

; 少し待つ
await 20

goto loop
---


ポイントは、描画処理をいったん停止すること。
今は、塗りつぶしの四角と、1つの画像を表示するだけだけど、
画像が多くなったりするとちらつくので
停止して、全部描画してから、再開。
そうすると一気に描画するからちらつかない。(そういう理由だと思う。。)

あとawait20は、ちらつき防止と、CPUの負荷を軽減するためかなぁ。
よくわからないや。