HotSoupProcessorの記録 -7ページ目

HotSoupProcessorの記録

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

ソースコードのコピペをすると
字下げのタブが消えて、ベターっとなってしまうのですね。。

すみません。。

今度からはタブを全角2つに変換してコピペします。
これまでのはもう・・・(略
2点クリックで直線が書けたら、
よくあるペイントツールのように、ドラッグで線を描きたくなりました。

これもこないだのドラッグのソースをコピペして
ほんのちょっと修正したら動きました。
---
; ドラッグで線を引く
; 線の1点目
dim naPos,2
naPos = 0, 0
*main
stick key,$300
if( key&$100 ){
; ドラッグ開始
; 開始位置を記録
naPos(0) = mousex
naPos(1) = mousey

goto *main2
}
await 15
goto *main

*main2
stick key,$300
if( (key&$100)=0 ){
; ドラッグ終了
goto *main
}

; 線の1点目と現在位置が違っていたら
; 1点目から現在位置まで線を引く
if( (mousex != naPos(0)) or (mousey != naPos(1)) ){
; 違っているから書く
line naPos(0), naPos(1), mousex, mousey
; 次のために、現在位置を記録
naPos(0) = mousex
naPos(1) = mousey
}

await 15
goto *main2
---
ドラッグ中に、直線をこまめに描いてるだけです。



こうなると、
 ・線の太さを変えるボタンとか
 ・色をつけるボタンとか
 ・消すボタンとか
つけたくなるのだけども、
めんどくささが微妙に勝り、実装されることはないのでした。m(_ _)m
たいしたことはないのですが、
いずれ必要になりそうなので、
クリックした2点間に線を引くプログラムを作ってみました。

基本は以前のクリックのと同じです。
---
; クリックした2点間に線を引く
; クリックフラグ [ 1回目のクリック:1 | 2回目のクリック:0 ]
bIsFirstClick = 1
; 1点目座標(x,y)
dim na1Points, 2
na1Points = 0, 0 ; 初期化(0,0)

onclick gosub *WriteLine
stop

*WriteLine
if( bIsFirstClick=1 ){
; 1回目のクリック
; 座標を覚えておくだけ
na1Points(0) = mousex
na1Points(1) = mousey

bIsFirstClick = 0
}else{
; 2回目のクリック
; 1点目から現在のマウス位置に線を引く
line na1Points(0), na1Points(1), mousex, mousey

bIsFirstClick = 1
}

return
---
配列の初期化は、前のRedimの記事で紹介した方法を使ってみました。


ちゃちゃっと作れるようになってきたことにちょっと感動。