コミュニティアイコン プチコン 非公式コミュニティ トピック

アバター
たらこ ◆PWy.X.JqENU2
2018/12/24 20:37
質問
タッチ
GPAINT で色をぬって、touchで色を判断して、その色だったら、音を鳴らす
というやつを作っています
間違ってたら、訂正お願いします

コメント

アバター
たらこ 2018/12/24 20:39 ◆PWy.X.JqENU2
アバター
あまさとしおん 2018/12/24 21:18 ◆mzDKTVUAtwqE
画像が回転していたので修正してみた

プチコンの色で注意がいるのは「色要素は5bitしかない」ことです。

見かけ上はR,G,Bの数値は256段階(8bit)ですが、実際は32段階(5bit)です。

256÷32=8なので、8の倍数でないと正しく動きません。
(8の倍数じゃない数値を指定すると切り捨て)

ですから、RGB(100,180,180)ではなくRGB(96,176,176)のようにする必要があります。
アバター
あまさとしおん 2018/12/24 21:21 ◆mzDKTVUAtwqE
ループにVSYNCが入っていませんが、一部のバージョンでフリーズを誘発するのでご注意を。(いわゆるBEEPバグ)
アバター
たらこ 2018/12/24 21:44 ◆PWy.X.JqENU2
あまさとしおんさん
画像修正ありがとうございます

では真っ白のRGB(255,255,255)は不可能ということですか?
あと前に取得した値がはたらきつづけている?っぽいので、
beepのあとに、tx=0:ty=0を入れたのですが変わりませんでした
一回タッチしたら一回だけ反応するようにしたいんですよね
あとvsync入れました
アバター
takumi 2018/12/24 21:48 ◆Ce3Q40uXWJjn
一回だけ処理したいなら、
8行目の後に、
IF TT==1 THEN


・BEEP 5
ENDIF
ENDIF
とすれば・・・?
アバター
たらこ 2018/12/24 21:53 ◆PWy.X.JqENU2
あと別のほうのテストでやったんですけど、
c=gspoit(15,15):print c
で-460552(RGB(255,255,255))ってやつでてきて、
さっきのやつに入れると、うまくできたのですが、
こっちでも大丈夫なんでしょうか?
アバター
takumi 2018/12/24 22:00 ◆Ce3Q40uXWJjn
-460552はホワイトなので大丈夫です
アバター
たらこ 2018/12/24 22:01 ◆PWy.X.JqENU2
takumiさん
ありがとうございます
できました
すごいですね
アバター
たらこ 2018/12/24 22:02 ◆PWy.X.JqENU2
-460552ってなんのすうじなんですか?
アバター
たらこ 2018/12/24 22:05 ◆PWy.X.JqENU2
TT=1ってタッチの始めしか反応しないよ
ということなんですね。
よくわかりました
アバター
はる 2018/12/24 22:16 ◆75Vh4SY8TdKS
>-460552ってなんのすうじなんですか?

-460552は色コードです。
16進数にすると、
&HFFF8F8F8
1byteことに分けると、
&HFF,&HF8,&HF8,&HF8
となります。
これらを10進数にすると、
255,248,248,248
となります。
これは、
RGB(255,248,248,248)
ということです。
RGB(255,255,255)
としたはずなのにと思うかも知れませんが、
問題ありません。
グラフィックページに描画されるときは、
1bit,5bit,5bit,5bitで合計2byteの形式で保存されるので、
値が変わるのです。
アバター
たらこ 2018/12/24 22:23 ◆PWy.X.JqENU2
なるほど
難しい
ありがとうございます
アバター
はる 2018/12/24 22:27 ◆75Vh4SY8TdKS
難しく聞こえますがそんなに難しくないですよ。
アバター
おちゃめ 2018/12/25 1:33 ◆jH1opV6FnGyx
すでに他の方が書かれていますが、プチコン3号は32bitカラーが扱えますが、実際の表示は16bitカラーなので表示色を元に判定を行う場合は誤動作が起きてしまいます。
誤動作を防ぐならば表示の段階でRGBが8の倍数値になるようにしてやれば良いのですが、「意味がよく分からない」というのであればプログラム中のRGB関数をすべてこのRGB16関数に置き換えれば簡単に解決できます。

DEF RGB16(R,G,B)
RETURN RGB(R>>3<<3,G>>3<<3,B>>3<<3)
END

このRGB16関数を使えば白RGB16(255,255,255)はプチコン3号で表示可能な白RGB(248,248,248)に自動的に変換してくれます。
アバター
おちゃめ 2018/12/25 1:42 ◆jH1opV6FnGyx
8の倍数(R,,G,B 各32階調)に丸められるというのは実際に値を1ずつ変えながら画面表示をしてみれば一目瞭然です。

ACLS
FOR I=0 TO 255
 GLINE I,0,I,239,RGB(I,I,I)
NEXT

1ずつ変化させているにも関わらず32段階(8ずつ変化)の表示しかできてないことがこれで一目瞭然ですね。
アバター
ブルー 2018/12/25 14:02 ◆F30iKws/Dqrq
まぁ、ボクはあまり気になりませんけど(それを言ったらおしまい)
アバター
たらこ 2018/12/25 14:53 ◆PWy.X.JqENU2
なるほどありがとうございました
アバター
ツララ 2018/12/25 15:49 ◆ArUdBYOYME1V
笑顔で話し終わらそうとしてて草
何でGRAY関数の仕組みについて聞いてあげないんです?
出されたものは平らげるのが礼儀ってもんですよ?
分からないなら分からないなりに予想を返して上げるのが一番のお礼だと思いますけど

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -