hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
hsp3/モジュール変数/モジュール変数の使い方例 2 - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS

小ワザ

モジュール変数の使い方例 2

タスクシステムっぽいことをするための雛形をモジュール変数を使って作ってみます。

動作確認のためのサンプル

+  concept.hsp

画面効果サンプル

+  effect.hsp

モジュール変数の入れ替え

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
#module "modutil"
 
#define prmstack    207
 
#define ctype pvalptr@modutil(%1) pvalptr(%1, 0)
    ;	指定した変数のPVALポインタ値を取得
#define ctype getaptr@modutil(%1) pvalptr_(%1, 1)
    ;	指定した(配列)変数のAPTR値を取得
 
#defcfunc pvalptr_@modutil var _p1, int _p2
    mref HSPCTX, 68
    dupptr vptr, HSPCTX.prmstack, 8, 4
    return vptr(_p2)
 
#deffunc swap_mod var dst, var src
    ; 
    dupptr src_pval, pvalptr(src), 48
    src_idx = getaptr(src)
    dupptr src_pt, src_pval(7), src_pval(6)
    ;
    dupptr dst_pval, pvalptr(dst), 48
    dst_idx = getaptr(dst)
    dupptr dst_pt, dst_pval(7), dst_pval(6)
    ; 範囲チェック
    if 5 ! wpeek(dst_pval(0), 0) || 5 ! wpeek(src_pval(0), 0) : return
    if dst_pval(2) <= dst_idx || src_pval(2) <= src_idx : return
    ; 入れ替え
    sdim tmp, 16 ; 16 = struct size
    memcpy tmp,    src_pt,  16, 16 * 0,        16 * src_idx
    memcpy src_pt, dst_pt,  16, 16 * src_idx,  16 * dest_idx
    memcpy dst_pt, tmp,     16, 16 * dest_idx, 16 * 0
    return
#global

コメント

  • 寝る直前にふと思いついてやってみたらうまくいった
    あと、入れ替えが出来なかったので作ってみたけどモジュール変数の入れ替えはかなり危険な気がする -- Shark++ 2006-10-22 (日) 22:42:27
  • HSP 3.0a と HSP 3.1β5 でサンプル1〜3の動作確認しました -- Shark++ 2006-10-22 (日) 22:52:33
  • なんだかわからん・・・ [worried2]     これよりわかりやすい所はあるのだろうか・・・ [ojigi] -- グラサン? 2011-09-29 (木) 17:26:49

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

添付ファイル:
fileeffect.hsp
170件 [詳細]
fileconcept.hsp
180件 [詳細]
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2011-09-29 (木) 17:26:50 (801d)