プチコンのプ その6 お絵描きツールを作ろう

プチコンmkⅡ公式サイトのトップにある、たった三行のプログラムをふくらまして、MSペイントをさらに簡単にしたようなお絵描きツールを作ります。 ** 読み方 ラベルの頭の@は、うっかり誰かにリプを飛ばさないよう◎と書きます。 続きを読む
1

公式トップの超短いプログラムから

ASA @fusuian

プチコンのプ、ちょっと行き詰まり感があるので全然違うことをやりましょう^^; プチコンmkⅡの公式サイトにある、超短いプログラムって打ち込みました? #p4petitcom http://t.co/ZzQTteT7

2012-12-09 13:18:28
拡大
ASA @fusuian

この頭に2行足すと、下画面にタッチペンで直接絵を描けます。 #p4petitcom http://t.co/8MGFGqoh

2012-12-09 13:19:53
拡大

きれいな線を引きたい!

ASA @fusuian

簡易お絵かきプログラムなわけですが、うまく線がつながらないのがさびしいところ。 #p4petitcom http://t.co/flHd9PsH

2012-12-09 13:21:31
拡大
ASA @fusuian

つまりこれは、GPSETを一回実行してから、次に実行するまでの間にペンが動いているからです。前の位置を覚えておいて、今の位置までGLINEで線を引けばカンペキです! #p4petitcom http://t.co/hI0Ulgfm

2012-12-09 13:32:16
拡大
ASA @fusuian

しまった、変な一筆書きみたいになってしまった。そりゃそうか。あとやっぱり途切れがある。 #p4petitcom http://t.co/u5FU1U88

2012-12-09 13:34:15
拡大
ASA @fusuian

途切れ防止に、ループにVSYNCを入れます。あと、ペンが画面を離れたらXを-1にしておいて、それをチェックしてGPSETとGLINEを使い分けます。 #p4petitcom http://t.co/uXjxHZI3

2012-12-09 14:26:44
拡大

カラーパレットをつけよう

ASA @fusuian

絵は描けるけど白黒はさびしいね。画面の左下にパレットを作って、色を選べるようにしましょう。変数C(カラーのC)を色にして、12〜14行でタッチした場所の色を拾います。17〜18行の15をCに変えたのがミソ。 #p4petitcom http://t.co/YCBSKP8g

2012-12-09 18:30:56
拡大
ASA @fusuian

FOR文の二重ループで左下に二段のパレットを描画します。 #p4petitcom http://t.co/kbGschCQ

2012-12-09 18:32:54
拡大

アイコンメニューを追加

ASA @fusuian

#p4petitcom 絵が気に入らないときいちいちセレクト→スタートで消すとか不便だし、塗りつぶしやセーブもしたい。そこでアイコン機能を使います。編集画面の右下の矢印と同じようなやつがICONSET命令で使えます。 http://t.co/Gfd5rFIJ

2012-12-10 08:25:23
拡大
ASA @fusuian

ACLSを削ってますが、大事なのは11行。ICONCHK関数で押されたアイコンの番号がわかります。それをそのままON〜GOTO文のパラメータにします。何も押されてないとき(-1)は、自然に次の行に進みます。 #p4petitcom http://t.co/ydrKtURj

2012-12-10 08:31:34
拡大
ASA @fusuian

◎DRAWの頭で、MODE変数が1ならGPAINTを実行。0なら以前と同じGLINEかGPSET。 #p4petitcom http://t.co/FoCagPCz

2012-12-10 08:34:12
拡大
ASA @fusuian

アイコン0,1に対応する、ペンと塗りつぶしを切り替える◎PENと◎PAINTラベル。 #p4petitcom http://t.co/Of0FkyvZ

2012-12-10 08:37:16
拡大
ASA @fusuian

アイコン2,3に対応する、◎SAVEと◎CLEARラベル。下画面なのでGRP1をセーブするのと、パレットをつぶさないためGCLSでなくGFILLで下画面を消します。 #p4petitcom http://t.co/Uqfg26RZ

2012-12-10 08:39:53
拡大

バグ発覚!

ASA @fusuian

下へ上へと編集場所が移りましたが、プログラムの説明はこの方がしやすい感じですね。ところがこのプログラムにはバグがあります。ペンとペイントを切り替えると、色が黒になってしまうのです。これは不便! #p4petitcom

2012-12-10 08:42:52
ASA @fusuian

17行のGSPOIT命令の次の行に?Cを入れてみましょう。ペンとペイントのアイコンをタッチすると、ペンモード、ヌリツブシモードのあとに0が続けて表示されます。#p4petitcom

2012-12-10 08:53:29
ASA @fusuian

どうやらアイコンを押したあと何フレームかTCHSTが1になるため、アイコンの下のGRPの色を拾ってしまうようです。なるほど。 #p4petitcom

2012-12-10 08:54:35
ASA @fusuian

一行だったON〜GOTOが複雑になりました。まずICONCHKの値をIに入れ、-1なら◎NOICONにジャンプ。0〜3なら、ペンが画面から離れるまで待ってからON I GOTOしています。 #p4petitcom http://t.co/eGnSC4AJ

2012-12-10 09:08:06
拡大
ASA @fusuian

このバグの回避方法は他にもあります。ON〜GOTOの次のループでペンが離れるのを待つとか…色を変えるたびにアイコンの下をGFILLするのも手です。その方がプログラムの流れがシンプルで良かったかも(笑) #p4petitcom

2012-12-10 09:13:07
ASA @fusuian

できばえ。最初のと比べよう!^^; セーブするとパレットが残ってる問題とか、ペイントでアイコンエリア塗れちゃう問題とかありますが、ひとまず完成としましょう! #p4petitcom http://t.co/AVonnJPc

2012-12-10 09:28:43
拡大