hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
小ワザ/画像処理/目的の点を追いかける - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS

目的の点を追いかける

ソースコード

fileforrow.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
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
-
-
|
|
|
!
-
|
-
|
|
!
!
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
#module
 
//目的位置までなめらかに追いかける
// p1 : 目的位置X
// p2 : 目的位置Y
// p3 : 追いかける点の位置Xがはいった変数
// p4 : 追いかける点の位置Yがはいった変数
// p5 : 0=目的位置と重ねる 1=目的位置の手前で止める
// p6 : p5の範囲
// p7 : 追いかける速さ
#deffunc follow int p1,int p2,var p3,var p4,int p5,int p6 , int p7
    if p7=0:s1=1:else:s1=p7    //追いかける速さ(この値が大きいほどぶれる範囲が大きいのでp5の範囲も大きくしておく)
    
    //目的位置と重ねる
    if p5=0{
        if (p3>=p1-p6)&(p4>=p2-p6)&(p3<=p1+p6)&(p4<=p2+p6){
            p3=p1
            p4=p2
            return 2
        }
    }else{
            //現在の位置を記憶
        if (p3>=p1-p6)&(p4>=p2-p6)&(p3<=p1+p6)&(p4<=p2+p6){
 
            return 2
        }
    }
    
    //おいかける点
    s5=s1            //長さ
    dir=atan(p1-p3,p2-p4)
    s6=sin(dir)*s5+p3:s7=cos(dir)*s5+p4
 
 
    //新しい位置を更新
    p3=s6
    p4=s7
return 1
 
#global
 
    //初期位置を設定
    x=mousex
    y=mousey
    sysfont 17
 
    //サンプルの種類
 
    flags(_type_)=1
 
 
 
//重なったら静止
#if 1
*mainloop
    follow mousex,mousey,x,y,0,1,2
    redraw 0
    color 255,255,255:boxf x-20,y-20,x+20,y+20
    color : pos x,y :mes "☆"
    if (stat=2):title "HIT":else:title ""
    redraw 1
    wait 0
    goto *mainloop
#endif
 
 
//重ならないでとまる
#if 0
*mainloop
    follow mousex,mousey,x,y,1,20,2
    redraw 0
    color 255,255,255:boxf x-20,y-20,x+20,y+20
    color : pos x,y :mes "☆"
    if (stat=2):title "HIT":else:title ""
    redraw 1
    wait 0
    goto *mainloop
#endif
 

スムーズな点移動モジュールです。 一回呼ぶたびに1px分目的位置へ近づきます。 何度も呼び出していくうちに目的地点へ到達した場合はstatに2が返ります。 目的位置に到達すると位置を固定してくれるのでペイントソフトなどに応用が可能。 -- As

コメント


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

添付ファイル:
fileforrow.hsp
412件 [詳細]
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2013-05-26 (日) 10:06:13 (196d)