This is a pictionary that uses a camera to draw.

このページは2019/09/07時点のものです。それ以降のバージョンは操作方法が変更されている場合があります。

概要

Troubleshooting!

このプログラムはOpenCVを使用するためCLI環境でコンパイルしてください。

これはカメラを使って絵を描くお絵描きお題当てゲームです。描き手と回答者の二人で遊べます。起動するとお題が出題されるので、描き手はそのお題を見てお題に合う絵をカメラを動かすことで一筆書きをしてください。回答者は描き手の描いた絵を見て、元のお題を当ててください。

遊び方

プログラム起動時、画面の右下に白文字のお題が出力されます。ディスプレイにはカメラの動きに合わせて線が出現します。初期状態では何も出力されないので、描き始めるときはユーザ・スイッチ0を押下してください。

納得の絵ができるか、後戻りができなくなったらユーザ・スイッチ0を押下してください。お題が消え、新しい線を書けなくなり、回答フェーズに移ります。
もしユーザ・スイッチ0を間違って押下した際は、もう一度ユーザ・スイッチ0を押下してください。お題が出現し、続きから再開することができます。

  • 消しゴム機能 ユーザ・スイッチ1を押下すると消しゴムになり、描いた線を消せるようになります。描画したものを消したいときはユーザ・スイッチ1を押下してください。もう一度ユーザ・スイッチ1を押下すると線を書けるようになります。

使用機器

このプログラムは次の機器を使用します。

  • GR-LYCHEE            
  • TFT液晶モジュール     
  • カメラモジュール

お題の追加・変更

次のoekaki_theme.cppの中にある配列themeに要素を追加することでお題を増やすことができます。

oekaki_theme.cpp

char *theme[]={
  "STAR",
  "HEART",
  "HOUSE",
  "TIE",
  "BOOK",
  "PEN",
  "TREE",
  "CANDLE",
  "THUNDER",
  "COFFEE CUP"
};
  • 要素の追加方法 追加したいお題をダブルクォーテーション(")で囲み、最後にカンマ(,)をつけてたものを、「char *theme[]={」の次の行に追加してください。

例:お題"DOG"を追加したい場合
「"DOG",」という文字列を、「char *theme[]={」の次の行に追加してください。
追加例

oekaki_theme.cpp

char *theme[]={
  "DOG",    /* ここに追加した */
  "STAR",
  "HEART",
  "HOUSE",
  "TIE",
  "BOOK",
  "PEN",
  "TREE",
  "CANDLE",
  "THUNDER",
  "COFFEE CUP"
};

構成

GR-LYCHEEで使う想定でプログラムを書いています。
USBコネクタに関してはMicroUSBコネクタ, MicroUSBコネクタのどちらに接続しても動作します。

Files at this revision

API Documentation at this revision

Comitter:
knzw
Date:
Thu Oct 03 11:51:37 2019 +0000
Parent:
4:5add66261b25
Commit message:
Fixed so that the red cursor does not appear in the eraser mode.(kesigomu mode no toki ni akai ka-soru ga kienaiyouni shuusei)

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Fri Sep 13 15:20:24 2019 +0000
+++ b/main.cpp	Thu Oct 03 11:51:37 2019 +0000
@@ -12,7 +12,7 @@
 
 #define STRING_DISP_TEST       (1)
 #define DRAW_POINT (3)
-#define ERASER_POINT (8)
+#define ERASER_POINT (10)
 #define TOUCH_BUFFER_BYTE_PER_PIXEL (2u)
 #define TOUCH_BUFFER_STRIDE           (((LCD_PIXEL_WIDTH * TOUCH_BUFFER_BYTE_PER_PIXEL) + 31u) & ~31u)
 #define COLOR_BLUE cv::Scalar(0,255,0)
@@ -379,18 +379,18 @@
 
              kesiflg=1;//消しゴムモードになりました的な
 
-             }else{
+           }else{
                if(kesiflg==1){//消しゴムモード→ペンモードに変わったとき、カーソルがディスプレイに残るので黒で上塗りして消す
-                 draw_touch_pos(user_frame_buffer1,1/*黒*/,ERASER_POINT,akax,akay);
+                 draw_touch_pos(user_frame_buffer1,1,ERASER_POINT,akax,akay);
                  kesiflg=0;
                }
              draw_touch_pos(user_frame_buffer1,clr/*黒*/,DRAW_POINT,posx,posy); //ペン
              DrawLine(prex,prey,posx,posy,DRAW_POINT);
            }
-         }else if(kesiflg==1){//消しゴムモードでUserBottun0を押すとカーソルが残ってしまうので、黒を上塗りして消す
-           draw_touch_pos(user_frame_buffer1,1/*黒*/,ERASER_POINT,akax,akay);
+         }/*else if(kesiflg==1){//消しゴムモードでUserBottun0を押すとカーソルが残ってしまうので、黒を上塗りして消す
+           draw_touch_pos(user_frame_buffer1,1,ERASER_POINT,akax,akay);
            kesiflg=0;
-         }
+         }*/
 
 
 #endif
@@ -435,3 +435,4 @@
     mainTask.join();
 
 }
+