回答編集履歴

1

コメント受けての追記

2020/09/30 04:47

投稿

TN8001
TN8001

スコア9756

test CHANGED
@@ -646,4 +646,262 @@
646
646
 
647
647
 
648
648
 
649
- マスの描画の冗長なところをループ等で短くしたいところですが、変えすぎてしまうとわからなくなってしまうでしょうからそのままにしときます^^;
649
+ ~~マスの描画の冗長なところをループ等で短くしたいところですが、変えすぎてしまうとわからなくなってしまうでしょうからそのままにしときます^^;~~
650
+
651
+
652
+
653
+ ---
654
+
655
+
656
+
657
+ > 今は塗りが赤や青に変わっても、文字が見えている状態ですが、文字が見えない状態(真っ赤、真っ青)にできたりするのでしょうか?
658
+
659
+
660
+
661
+ 数字・文字を描くのを、色が白の時だけにすればいいです。
662
+
663
+ ```Processing
664
+
665
+ fill(board[0][0]);
666
+
667
+ ellipse(84, 83, 150, 150);
668
+
669
+ // もし色が白だったら数字・文字を描く(=もし色が白でなければ数字・文字を描かない)
670
+
671
+ if (board[0][0] == WHITE) {
672
+
673
+ fill(0);
674
+
675
+ textSize(40);
676
+
677
+ text("1", 72, 50);
678
+
679
+ textSize(70);
680
+
681
+ text("調査", 15, 110);
682
+
683
+ }
684
+
685
+ ```
686
+
687
+ こういう形です。
688
+
689
+
690
+
691
+ 全部やるのはだるいので^^;「マスの描画の冗長なところをループ等で短く」したバージョンにさせていただきます。
692
+
693
+
694
+
695
+ ```Processing
696
+
697
+ color board[][] = new color[6][6]; // 盤面の色情報
698
+
699
+ int side;
700
+
701
+
702
+
703
+ final color RED = color(255, 0, 0);
704
+
705
+ final color BLUE = color(0, 0, 255);
706
+
707
+ final color WHITE = color(255, 255, 255);
708
+
709
+
710
+
711
+ String suuji[][] = {
712
+
713
+ { "1", "2", "3", "4", "5", "6" },
714
+
715
+ { "7", "8", "9", "10", "11", "12" },
716
+
717
+ { "13", "14", " ", " ", "15", "16" },
718
+
719
+ { "17", "18", " ", " ", "19", "20" },
720
+
721
+ { "21", "22", "23", "24", "25", "26" },
722
+
723
+ { "27", "28", "29", "30", "31", "32" } };
724
+
725
+
726
+
727
+ String kanji[][] = {
728
+
729
+ { "  ", "調査", "確認", "興味", "環境", "  " },
730
+
731
+ { "実験", "観光", "機会", "介護", "思考", "崑崙" },
732
+
733
+ { "家屋", "進化", "  ", "  ", "構成", "石垣" },
734
+
735
+ { "孔雀", "深海", "  ", "  ", "開講", "開講" },
736
+
737
+ { "開講", "開講", "開講", "普段", "普段", "平和" },
738
+
739
+ { "  ", "平和", "平和", "平和", "並行", "  " } };
740
+
741
+
742
+
743
+
744
+
745
+ void setup() {
746
+
747
+ size(1000, 1000);
748
+
749
+ side = height / 6;
750
+
751
+ textFont(createFont("Meiryo", 40));
752
+
753
+
754
+
755
+ // 色情報初期化
756
+
757
+ for (int y = 0; y < 6; y++) {
758
+
759
+ for (int x = 0; x < 6; x++) {
760
+
761
+ board[y][x] = WHITE; // とりあえず全部白にして
762
+
763
+ }
764
+
765
+ }
766
+
767
+ // 初期配置を入れる
768
+
769
+ board[2][2] = RED;
770
+
771
+ board[3][3] = RED;
772
+
773
+ board[2][3] = BLUE;
774
+
775
+ board[3][2] = BLUE;
776
+
777
+
778
+
779
+ showBoard();
780
+
781
+ }
782
+
783
+
784
+
785
+ void draw() {
786
+
787
+ }
788
+
789
+
790
+
791
+ void mousePressed(MouseEvent e) {
792
+
793
+ int x = floor(mouseX / side); // 左上を0としたマスのX座標
794
+
795
+ int y = floor(mouseY / side); // 左上を0としたマスのY座標
796
+
797
+ println(x + "," + y); // デバッグ時数値確認用
798
+
799
+
800
+
801
+ if (e.getButton() == LEFT) {
802
+
803
+ board[y][x] = RED; // 左クリックだったら赤
804
+
805
+ }
806
+
807
+ if (e.getButton() == RIGHT) {
808
+
809
+ board[y][x] = BLUE; // 右クリックだったら青
810
+
811
+ }
812
+
813
+ if (e.getButton() == CENTER) {
814
+
815
+ board[y][x] = WHITE; // 中央クリックだったら白
816
+
817
+ }
818
+
819
+
820
+
821
+ showBoard(); // 再描画
822
+
823
+ }
824
+
825
+
826
+
827
+ void keyPressed() {
828
+
829
+ if (key == 'c') {
830
+
831
+ background(255, 255, 255);
832
+
833
+ }
834
+
835
+ showBoard();
836
+
837
+ }
838
+
839
+
840
+
841
+ void showBoard() {
842
+
843
+ background(0, 160, 0);
844
+
845
+ stroke(0);
846
+
847
+ textAlign(CENTER, CENTER);
848
+
849
+
850
+
851
+ for (int i = 1; i <= 6; i++) {
852
+
853
+ line(i * side, 0, i * side, height);
854
+
855
+ line(0, i * side, 6 * side, i * side);
856
+
857
+ }
858
+
859
+
860
+
861
+ for (int y = 0; y < 6; y++) {
862
+
863
+ for (int x = 0; x < 6; x++) {
864
+
865
+ int centerX = x * side + side / 2;
866
+
867
+ int centerY = y * side + side / 2;
868
+
869
+
870
+
871
+ // 円
872
+
873
+ fill(board[y][x]);
874
+
875
+ ellipse(centerX, centerY, 0.9 * side, 0.9 * side);
876
+
877
+
878
+
879
+ // もし色が白だったら数字・文字を描く(=もし色が白でなければ数字・文字を描かない)
880
+
881
+ if (board[y][x] == WHITE) {
882
+
883
+ // 数字
884
+
885
+ fill(0);
886
+
887
+ textSize(40);
888
+
889
+ text(suuji[y][x], centerX, centerY - 0.35 * side);
890
+
891
+
892
+
893
+ // 文字
894
+
895
+ textSize(70);
896
+
897
+ text(kanji[y][x], centerX, centerY - 0.05 * side);
898
+
899
+ }
900
+
901
+ }
902
+
903
+ }
904
+
905
+ }
906
+
907
+ ```