質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

解決済

1回答

6857閲覧

processing 特定の図形を押すと色が変わるようにしたい

Lale

総合スコア1

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

1グッド

0クリップ

投稿2020/09/29 06:39

編集2020/09/29 14:06

前提・実現したいこと

今、processingで東大王の難読漢字オセロを作っているのですが、特定のオセロをクリックしたら色が変わるようにしたいです。出来たらマウス左クリックで赤色に変更、マウス右クリックで青色に変更できるようにしたいです。ゲームのサポート用として、手動でひっくり返せるようにしたいと思っています。
参考コード⇒ [150行で動くリバーシ(オセロ)のプログラム - Qiita]
https://qiita.com/Sunset_Yuhi/items/fcc8a83847ccfb3a7895

該当のソースコード

processing

1int board[][] = new int[10][10]; //盤面の記録用 2int bw; //石の色。先手(黒石)は1、後手(白石)は-1 3int pass,side; //パスの回数、1マスの長さ 4int num0,numB,numW; //石を打てる所の数、黒石の数、白石の数 5 6 7void setup(){ 8 size(1000, 1000); //w=6*side, h=6*side 9 side=height/6; //1マスの長さ 10 11 12 showBoard(); //盤面を描画 13} 14 15void draw(){ 16 17 18} 19 20void mousePressed(){ 21 int i = floor(mouseX/side +1); //各マスの左上の座標を定義 22 int j = floor(mouseY/side +1); //floor()で小数点以下切り捨て 23 24 25} 26 27 28void keyPressed() { 29 if ( key == 'c' ) {//押されたキーがCだったら 30 background(255, 255, 255);//黒く塗りつぶす 31 } 32 showBoard(); 33 34} 35 36 37 38 39 40//盤面、両者の石を描画 41void showBoard(){ 42 //盤面(背景とグリッド) 43 background(0,160,0); 44 stroke(0); 45 for (int i=1;i<=6;i++){ 46 line(i*side,0, i*side,height); //縦線 47 line(0,i*side, 6*side,i*side); //横線 48 49 //1 50 fill(255); 51 ellipse(84, 83, 150, 150); 52 fill(0); 53 PFont font0 = createFont("Meiryo", 40); 54 textFont(font0); 55 text("1", 72, 50); 56 PFont font = createFont("Meiryo", 70); 57 textFont(font); 58 text("調査", 15, 110); 59 60 //2 61 fill(255); 62 ellipse(250, 83, 150, 150); 63 fill(0); 64 PFont font1 = createFont("Meiryo", 40); 65 textFont(font1); 66 text("2", 235, 50); 67 PFont font2 = createFont("Meiryo", 70); 68 textFont(font2); 69 text("確認", 180, 115); 70 71 72 73 //3 74 fill(255); 75 ellipse(417, 83, 150, 150); 76 fill(0); 77 PFont font3 = createFont("Meiryo", 40); 78 textFont(font3); 79 text("3", 400, 50); 80 PFont font4 = createFont("Meiryo", 70); 81 textFont(font4); 82 text("興味", 348, 115); 83 84 //4 85 fill(255); 86 ellipse(581, 83, 150, 150); 87 fill(0); 88 PFont font5 = createFont("Meiryo", 40); 89 textFont(font5); 90 text("4", 568, 50); 91 PFont font6 = createFont("Meiryo", 70); 92 textFont(font6); 93 text("環境", 512, 115); 94 95 96 //5 97 fill(255); 98 ellipse(581, 83, 150, 150); 99 fill(0); 100 PFont font7 = createFont("Meiryo", 40); 101 textFont(font7); 102 text("4", 568, 50); 103 PFont font8 = createFont("Meiryo", 70); 104 textFont(font8); 105 text("環境", 512, 115); 106 107 //6 108 fill(255); 109 ellipse(747, 83, 150, 150); 110 fill(0); 111 PFont font9 = createFont("Meiryo", 40); 112 textFont(font9); 113 text("5", 737, 50); 114 PFont font10 = createFont("Meiryo", 70); 115 textFont(font10); 116 text("実験", 678, 115); 117 //7 118 fill(255); 119 ellipse(747, 83, 150, 150); 120 fill(0); 121 PFont font11 = createFont("Meiryo", 40); 122 textFont(font11); 123 text("5", 737, 50); 124 PFont font12 = createFont("Meiryo", 70); 125 textFont(font12); 126 text("実験", 678, 115); 127 128 //8 129 fill(255); 130 ellipse(915, 83, 150, 150); 131 fill(0); 132 PFont font13 = createFont("Meiryo", 40); 133 textFont(font13); 134 text("6", 903, 50); 135 PFont font14 = createFont("Meiryo", 70); 136 textFont(font14); 137 text("観光", 845, 115); 138 //9 139 140 fill(255); 141 ellipse(84, 249, 150, 150); 142 fill(0); 143 PFont font15 = createFont("Meiryo", 40); 144 textFont(font15); 145 text("7", 72, 215); 146 PFont font16 = createFont("Meiryo", 70); 147 textFont(font16); 148 text("機会", 15, 280); 149 //10 150 151 fill(255); 152 ellipse(250, 249, 150, 150); 153 fill(0); 154 PFont font17 = createFont("Meiryo", 40); 155 textFont(font17); 156 text("8", 238, 215); 157 PFont font18 = createFont("Meiryo", 70); 158 textFont(font18); 159 text("介護", 180, 280); 160 //11 161 162 fill(255); 163 ellipse(415, 249, 150, 150); 164 fill(0); 165 PFont font19 = createFont("Meiryo", 40); 166 textFont(font19); 167 text("9", 405, 215); 168 PFont font20 = createFont("Meiryo", 70); 169 textFont(font20); 170 text("思考", 348, 280); 171 //12 172 173 fill(255); 174 ellipse(582, 249, 150, 150); 175 fill(0); 176 PFont font21 = createFont("Meiryo", 40); 177 textFont(font21); 178 text("10", 558, 215); 179 PFont font22 = createFont("Meiryo", 70); 180 textFont(font22); 181 text("崑崙", 515, 280); 182 //13 183 184 fill(255); 185 ellipse(750, 249, 150, 150); 186 fill(0); 187 PFont font23 = createFont("Meiryo", 40); 188 textFont(font23); 189 text("11", 724, 215); 190 PFont font24 = createFont("Meiryo", 70); 191 textFont(font24); 192 text("家屋", 680, 280); 193 //14 194 195 fill(255); 196 ellipse(915, 249, 150, 150); 197 fill(0); 198 PFont font25 = createFont("Meiryo", 40); 199 textFont(font25); 200 text("12", 887, 215); 201 PFont font26 = createFont("Meiryo", 70); 202 textFont(font26); 203 text("進化", 845, 280); 204 //15(赤) 205 fill(255, 0, 0); 206 ellipse(415, 415, 150, 150); 207 //16(青) 208 fill(0, 0, 255); 209 ellipse(582, 415, 150, 150); 210 //17 211 212 fill(255); 213 ellipse(86, 415, 150, 150); 214 fill(0); 215 PFont font27 = createFont("Meiryo", 40); 216 textFont(font27); 217 text("13", 60, 380); 218 PFont font28 = createFont("Meiryo", 70); 219 textFont(font28); 220 text("構成", 16, 450); 221 //18 222 223 fill(255); 224 ellipse(250, 415, 150, 150); 225 fill(0); 226 PFont font29 = createFont("Meiryo", 40); 227 textFont(font29); 228 text("14", 225, 382); 229 PFont font30 = createFont("Meiryo", 70); 230 textFont(font30); 231 text("石垣", 178, 450); 232 //19 233 234 fill(255); 235 ellipse(748, 415, 150, 150); 236 fill(0); 237 PFont font31 = createFont("Meiryo", 40); 238 textFont(font31); 239 text("15", 721, 378); 240 PFont font32 = createFont("Meiryo", 70); 241 textFont(font32); 242 text("孔雀", 675, 450); 243 //20 244 245 fill(255); 246 ellipse(915, 415, 150, 150); 247 fill(0); 248 PFont font33 = createFont("Meiryo", 40); 249 textFont(font33); 250 text("16", 887, 379); 251 PFont font34 = createFont("Meiryo", 70); 252 textFont(font34); 253 text("深海", 848, 450); 254 //21(青) 255 fill(0, 0, 255); 256 ellipse(415, 580, 150, 150); 257 //22(赤) 258 fill(255, 0, 0); 259 ellipse(582, 580, 150, 150); 260 //23 261 262 fill(255); 263 ellipse(83, 580, 150, 150); 264 fill(0); 265 PFont font35 = createFont("Meiryo", 40); 266 textFont(font35); 267 text("17", 58, 543); 268 PFont font36 = createFont("Meiryo", 70); 269 textFont(font36); 270 text("開講", 13, 611); 271 //24 272 273 fill(255); 274 ellipse(255, 580, 150, 150); 275 fill(0); 276 PFont font37 = createFont("Meiryo", 40); 277 textFont(font37); 278 text("18", 229, 545); 279 PFont font38 = createFont("Meiryo", 70); 280 textFont(font38); 281 text("開講", 188, 611); 282 //25 283 284 fill(255); 285 ellipse(754, 580, 150, 150); 286 fill(0); 287 PFont font39 = createFont("Meiryo", 40); 288 textFont(font39); 289 text("19", 726, 544); 290 PFont font40 = createFont("Meiryo", 70); 291 textFont(font40); 292 text("開講", 684, 611); 293 //26 294 295 fill(255); 296 ellipse(913, 580, 150, 150); 297 fill(0); 298 PFont font41 = createFont("Meiryo", 40); 299 textFont(font41); 300 text("20", 888, 545); 301 PFont font42 = createFont("Meiryo", 70); 302 textFont(font42); 303 text("開講", 843, 611); 304 //27 305 306 fill(255); 307 ellipse(83, 749, 150, 150); 308 fill(0); 309 PFont font43 = createFont("Meiryo", 40); 310 textFont(font43); 311 text("21", 55, 715); 312 PFont font44 = createFont("Meiryo", 70); 313 textFont(font44); 314 text("開講", 14, 785); 315 //28 316 317 fill(255); 318 ellipse(250, 749, 150, 150); 319 fill(0); 320 PFont font45 = createFont("Meiryo", 40); 321 textFont(font45); 322 text("22", 222, 715); 323 PFont font46 = createFont("Meiryo", 70); 324 textFont(font46); 325 text("普段", 181, 785); 326 //29 327 328 fill(255); 329 ellipse(250, 749, 150, 150); 330 fill(0); 331 PFont font47 = createFont("Meiryo", 40); 332 textFont(font47); 333 text("22", 222, 715); 334 PFont font48 = createFont("Meiryo", 70); 335 textFont(font48); 336 text("普段", 181, 785); 337 //30 338 339 fill(255); 340 ellipse(415, 749, 150, 150); 341 fill(0); 342 PFont font49 = createFont("Meiryo", 40); 343 textFont(font49); 344 text("23", 389, 715); 345 PFont font50 = createFont("Meiryo", 70); 346 textFont(font50); 347 text("普段", 345, 785); 348 //31 349 350 fill(255); 351 ellipse(581, 749, 150, 150); 352 fill(0); 353 PFont font51 = createFont("Meiryo", 40); 354 textFont(font51); 355 text("24", 555, 715); 356 PFont font52 = createFont("Meiryo", 70); 357 textFont(font52); 358 text("平和", 510, 785); 359 //32 360 361 fill(255); 362 ellipse(745, 749, 150, 150); 363 fill(0); 364 PFont font53 = createFont("Meiryo", 40); 365 textFont(font53); 366 text("25", 722, 715); 367 PFont font54 = createFont("Meiryo", 70); 368 textFont(font54); 369 text("平和", 673, 785); 370 //33 371 372 fill(255); 373 ellipse(911, 749, 150, 150); 374 fill(0); 375 PFont font55 = createFont("Meiryo", 40); 376 textFont(font55); 377 text("26", 889, 715); 378 PFont font56 = createFont("Meiryo", 70); 379 textFont(font56); 380 text("平和", 838, 785); 381 //34 382 383 fill(255); 384 ellipse(82, 915, 150, 150); 385 fill(0); 386 PFont font57 = createFont("Meiryo", 40); 387 textFont(font57); 388 text("27", 58, 879); 389 PFont font58 = createFont("Meiryo", 70); 390 textFont(font58); 391 text("平和", 10, 950); 392 //35 393 394 fill(255); 395 ellipse(248, 915, 150, 150); 396 fill(0); 397 PFont font59 = createFont("Meiryo", 40); 398 textFont(font59); 399 text("28", 223, 879); 400 PFont font60 = createFont("Meiryo", 70); 401 textFont(font60); 402 text("並行", 181, 948); 403 404 } 405} 406 407 408### 試したこと 409 410mouseClicked()mousePressed()などで試してみたり、検索を掛けて模索しています。 411### 補足情報(FW/ツールのバージョンなど) 412 413Windows10、processing3.5.4
TN8001👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TN8001

2020/09/29 11:59

現状リバーシのロジック部分が全くありませんが、最終的には自動でひっくり返すようにするんでしょうか? それともあくまでゲームのサポート(盤面表示)用で、手動でひっくり返せればいいということでしょうか? 冒頭の数行は、 [150行で動くリバーシ(オセロ)のプログラム - Qiita](https://qiita.com/Sunset_Yuhi/items/fcc8a83847ccfb3a7895 そのままに見えます。 【参考コードがあるなら質問に明記してください】 となると前者なのかな?と思いますが、 理屈上はshowBoardの適切な位置に、text()を入れればいいはずです。 しかし後半は文字をベタ置きで、とてもじゃないが自動化できる気がしません。 > マウス左クリックで赤色に変更、マウス右クリックで青色に変更 ということから後者な気もします。 使っていないboard[][]に色情報を入れれば、切り替えも容易です。
Lale

2020/09/29 14:05

細かくご指摘ありがとうございます。質問の追記、修正させていただきました。 board[][]に色情報を入れるということについてですが、具体的にどう使えば良いのでしょうか? お手数をおかけしますがよろしくお願いいたします。
guest

回答1

0

ベストアンサー

まずLaleさんのコードから無駄な部分を変えました。

  • マスの描画が線の描画のループ中に入っていた
  • 大量のcreateFont
  • 重複していたマス

特定のオセロをクリックしたら色が変わるようにしたいです。

それぞれのマス描画の先頭でfill(255);がありますが、それを可変にできればいいわけです。
そのためには変数が必要です。
ちょうどboard[][]がありますのでそれを使います。
fill(board[0][0]);のような形になります。

mousePressed()ではその値を変更し再描画します。
board[i][j] = RED;のような形になります。

Processing

1color board[][] = new color[6][6]; // 盤面の色情報 2int side; 3 4final color RED = color(255, 0, 0); 5final color BLUE = color(0, 0, 255); 6final color WHITE = color(255, 255, 255); 7 8void setup() { 9 size(1000, 1000); 10 side = height / 6; 11 textFont(createFont("Meiryo", 40)); 12 13 // 色情報初期化 14 for (int i = 0; i < 6; i++) { 15 for (int j = 0; j < 6; j++) { 16 board[i][j] = WHITE; // とりあえず全部白にして 17 } 18 } 19 // 初期配置を入れる 20 board[2][2] = RED; 21 board[3][3] = RED; 22 board[2][3] = BLUE; 23 board[3][2] = BLUE; 24 25 showBoard(); 26} 27 28void draw() { 29} 30 31void mousePressed(MouseEvent e) { 32 int i = floor(mouseX / side); // 左上を0としたX座標 33 int j = floor(mouseY / side); // 左上を0としたY座標 34 println(i + "," + j); // デバッグ時数値確認用 35 36 if (e.getButton() == LEFT) { 37 board[i][j] = RED; // 左クリックだったら赤 38 } 39 if (e.getButton() == RIGHT) { 40 board[i][j] = BLUE; // 右クリックだったら青 41 } 42 if (e.getButton() == CENTER) { 43 board[i][j] = WHITE; // 中央クリックだったら白 44 } 45 46 showBoard(); // 再描画 47} 48 49void keyPressed() { 50 if (key == 'c') { 51 background(255, 255, 255); 52 } 53 showBoard(); 54} 55 56void showBoard() { 57 background(0, 160, 0); 58 stroke(0); 59 for (int i = 1; i <= 6; i++) { 60 line(i * side, 0, i * side, height); 61 line(0, i * side, 6 * side, i * side); 62 } 63 64 fill(board[0][0]); // boardから塗る色を引いてくる 65 ellipse(84, 83, 150, 150); 66 fill(0); 67 textSize(40); 68 text("1", 72, 50); 69 textSize(70); 70 text("調査", 15, 110); 71 72 fill(board[1][0]); 73 ellipse(250, 83, 150, 150); 74 fill(0); 75 textSize(40); 76 text("2", 235, 50); 77 textSize(70); 78 text("確認", 180, 115); 79 80 fill(board[2][0]); 81 ellipse(417, 83, 150, 150); 82 fill(0); 83 textSize(40); 84 text("3", 400, 50); 85 textSize(70); 86 text("興味", 348, 115); 87 88 fill(board[3][0]); 89 ellipse(581, 83, 150, 150); 90 fill(0); 91 textSize(40); 92 text("4", 568, 50); 93 textSize(70); 94 text("環境", 512, 115); 95 96 fill(board[4][0]); 97 ellipse(747, 83, 150, 150); 98 fill(0); 99 textSize(40); 100 text("5", 737, 50); 101 textSize(70); 102 text("実験", 678, 115); 103 104 fill(board[5][0]); 105 ellipse(915, 83, 150, 150); 106 fill(0); 107 textSize(40); 108 text("6", 903, 50); 109 textSize(70); 110 text("観光", 845, 115); 111 112 fill(board[0][1]); 113 ellipse(84, 249, 150, 150); 114 fill(0); 115 textSize(40); 116 text("7", 72, 215); 117 textSize(70); 118 text("機会", 15, 280); 119 120 fill(board[1][1]); 121 ellipse(250, 249, 150, 150); 122 fill(0); 123 textSize(40); 124 text("8", 238, 215); 125 textSize(70); 126 text("介護", 180, 280); 127 128 fill(board[2][1]); 129 ellipse(415, 249, 150, 150); 130 fill(0); 131 textSize(40); 132 text("9", 405, 215); 133 textSize(70); 134 text("思考", 348, 280); 135 136 fill(board[3][1]); 137 ellipse(582, 249, 150, 150); 138 fill(0); 139 textSize(40); 140 text("10", 558, 215); 141 textSize(70); 142 text("崑崙", 515, 280); 143 144 fill(board[4][1]); 145 ellipse(750, 249, 150, 150); 146 fill(0); 147 textSize(40); 148 text("11", 724, 215); 149 textSize(70); 150 text("家屋", 680, 280); 151 152 fill(board[5][1]); 153 ellipse(915, 249, 150, 150); 154 fill(0); 155 textSize(40); 156 text("12", 887, 215); 157 textSize(70); 158 text("進化", 845, 280); 159 160 fill(board[0][2]); 161 ellipse(86, 415, 150, 150); 162 fill(0); 163 textSize(40); 164 text("13", 60, 380); 165 textSize(70); 166 text("構成", 16, 450); 167 168 fill(board[1][2]); 169 ellipse(250, 415, 150, 150); 170 fill(0); 171 textSize(40); 172 text("14", 225, 382); 173 textSize(70); 174 text("石垣", 178, 450); 175 176 177 fill(board[2][2]); 178 ellipse(415, 415, 150, 150); 179 180 fill(board[3][2]); 181 ellipse(582, 415, 150, 150); 182 183 184 fill(board[4][2]); 185 ellipse(748, 415, 150, 150); 186 fill(0); 187 textSize(40); 188 text("15", 721, 378); 189 textSize(70); 190 text("孔雀", 675, 450); 191 192 fill(board[5][2]); 193 ellipse(915, 415, 150, 150); 194 fill(0); 195 textSize(40); 196 text("16", 887, 379); 197 textSize(70); 198 text("深海", 848, 450); 199 200 fill(board[0][3]); 201 ellipse(83, 580, 150, 150); 202 fill(0); 203 textSize(40); 204 text("17", 58, 543); 205 textSize(70); 206 text("開講", 13, 611); 207 208 fill(board[1][3]); 209 ellipse(255, 580, 150, 150); 210 fill(0); 211 textSize(40); 212 text("18", 229, 545); 213 textSize(70); 214 text("開講", 188, 611); 215 216 217 fill(board[2][3]); 218 ellipse(415, 580, 150, 150); 219 220 fill(board[3][3]); 221 ellipse(582, 580, 150, 150); 222 223 224 fill(board[4][3]); 225 ellipse(754, 580, 150, 150); 226 fill(0); 227 textSize(40); 228 text("19", 726, 544); 229 textSize(70); 230 text("開講", 684, 611); 231 232 fill(board[5][3]); 233 ellipse(913, 580, 150, 150); 234 fill(0); 235 textSize(40); 236 text("20", 888, 545); 237 textSize(70); 238 text("開講", 843, 611); 239 240 fill(board[0][4]); 241 ellipse(83, 749, 150, 150); 242 fill(0); 243 textSize(40); 244 text("21", 55, 715); 245 textSize(70); 246 text("開講", 14, 785); 247 248 fill(board[1][4]); 249 ellipse(250, 749, 150, 150); 250 fill(0); 251 textSize(40); 252 text("22", 222, 715); 253 textSize(70); 254 text("普段", 181, 785); 255 256 fill(board[2][4]); 257 ellipse(415, 749, 150, 150); 258 fill(0); 259 textSize(40); 260 text("23", 389, 715); 261 textSize(70); 262 text("普段", 345, 785); 263 264 fill(board[3][4]); 265 ellipse(581, 749, 150, 150); 266 fill(0); 267 textSize(40); 268 text("24", 555, 715); 269 textSize(70); 270 text("平和", 510, 785); 271 272 fill(board[4][4]); 273 ellipse(745, 749, 150, 150); 274 fill(0); 275 textSize(40); 276 text("25", 722, 715); 277 textSize(70); 278 text("平和", 673, 785); 279 280 fill(board[5][4]); 281 ellipse(911, 749, 150, 150); 282 fill(0); 283 textSize(40); 284 text("26", 889, 715); 285 textSize(70); 286 text("平和", 838, 785); 287 288 fill(board[0][5]); 289 ellipse(82, 915, 150, 150); 290 fill(0); 291 textSize(40); 292 text("27", 58, 879); 293 textSize(70); 294 text("平和", 10, 950); 295 296 fill(board[1][5]); 297 ellipse(248, 915, 150, 150); 298 fill(0); 299 textSize(40); 300 text("28", 223, 879); 301 textSize(70); 302 text("並行", 181, 948); 303}

マスの描画の冗長なところをループ等で短くしたいところですが、変えすぎてしまうとわからなくなってしまうでしょうからそのままにしときます^^;


今は塗りが赤や青に変わっても、文字が見えている状態ですが、文字が見えない状態(真っ赤、真っ青)にできたりするのでしょうか?

数字・文字を描くのを、色が白の時だけにすればいいです。

Processing

1 fill(board[0][0]); 2 ellipse(84, 83, 150, 150); 3 // もし色が白だったら数字・文字を描く(=もし色が白でなければ数字・文字を描かない) 4 if (board[0][0] == WHITE) { 5 fill(0); 6 textSize(40); 7 text("1", 72, 50); 8 textSize(70); 9 text("調査", 15, 110); 10 }

こういう形です。

全部やるのはだるいので^^;「マスの描画の冗長なところをループ等で短く」したバージョンにさせていただきます。

Processing

1color board[][] = new color[6][6]; // 盤面の色情報 2int side; 3 4final color RED = color(255, 0, 0); 5final color BLUE = color(0, 0, 255); 6final color WHITE = color(255, 255, 255); 7 8String suuji[][] = { 9 { "1", "2", "3", "4", "5", "6" }, 10 { "7", "8", "9", "10", "11", "12" }, 11 { "13", "14", " ", " ", "15", "16" }, 12 { "17", "18", " ", " ", "19", "20" }, 13 { "21", "22", "23", "24", "25", "26" }, 14 { "27", "28", "29", "30", "31", "32" } }; 15 16String kanji[][] = { 17 { "  ", "調査", "確認", "興味", "環境", "  " }, 18 { "実験", "観光", "機会", "介護", "思考", "崑崙" }, 19 { "家屋", "進化", "  ", "  ", "構成", "石垣" }, 20 { "孔雀", "深海", "  ", "  ", "開講", "開講" }, 21 { "開講", "開講", "開講", "普段", "普段", "平和" }, 22 { "  ", "平和", "平和", "平和", "並行", "  " } }; 23 24 25void setup() { 26 size(1000, 1000); 27 side = height / 6; 28 textFont(createFont("Meiryo", 40)); 29 30 // 色情報初期化 31 for (int y = 0; y < 6; y++) { 32 for (int x = 0; x < 6; x++) { 33 board[y][x] = WHITE; // とりあえず全部白にして 34 } 35 } 36 // 初期配置を入れる 37 board[2][2] = RED; 38 board[3][3] = RED; 39 board[2][3] = BLUE; 40 board[3][2] = BLUE; 41 42 showBoard(); 43} 44 45void draw() { 46} 47 48void mousePressed(MouseEvent e) { 49 int x = floor(mouseX / side); // 左上を0としたマスのX座標 50 int y = floor(mouseY / side); // 左上を0としたマスのY座標 51 println(x + "," + y); // デバッグ時数値確認用 52 53 if (e.getButton() == LEFT) { 54 board[y][x] = RED; // 左クリックだったら赤 55 } 56 if (e.getButton() == RIGHT) { 57 board[y][x] = BLUE; // 右クリックだったら青 58 } 59 if (e.getButton() == CENTER) { 60 board[y][x] = WHITE; // 中央クリックだったら白 61 } 62 63 showBoard(); // 再描画 64} 65 66void keyPressed() { 67 if (key == 'c') { 68 background(255, 255, 255); 69 } 70 showBoard(); 71} 72 73void showBoard() { 74 background(0, 160, 0); 75 stroke(0); 76 textAlign(CENTER, CENTER); 77 78 for (int i = 1; i <= 6; i++) { 79 line(i * side, 0, i * side, height); 80 line(0, i * side, 6 * side, i * side); 81 } 82 83 for (int y = 0; y < 6; y++) { 84 for (int x = 0; x < 6; x++) { 85 int centerX = x * side + side / 2; 86 int centerY = y * side + side / 2; 87 88 // 円 89 fill(board[y][x]); 90 ellipse(centerX, centerY, 0.9 * side, 0.9 * side); 91 92 // もし色が白だったら数字・文字を描く(=もし色が白でなければ数字・文字を描かない) 93 if (board[y][x] == WHITE) { 94 // 数字 95 fill(0); 96 textSize(40); 97 text(suuji[y][x], centerX, centerY - 0.35 * side); 98 99 // 文字 100 textSize(70); 101 text(kanji[y][x], centerX, centerY - 0.05 * side); 102 } 103 } 104 } 105}

投稿2020/09/29 15:39

編集2020/09/30 04:47
TN8001

総合スコア9862

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Lale

2020/09/30 03:42

ご丁寧な回答、ありがとうございます!変更点も分かりやすく書いていただきとても分かりやすく本当にありがたいです。何度もお聞きし恐縮なのですが、もう一つ質問させていただきたいです。今は塗りが赤や青に変わっても、文字が見えている状態ですが、文字が見えない状態(真っ赤、真っ青)にできたりするのでしょうか?
TN8001

2020/09/30 04:48

追記しました^^
Lale

2020/09/30 14:12

素早いご回答ありがとうございます!本当に助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問