回答編集履歴

2

コメントを受け、コード案を追記

2017/07/01 09:01

投稿

Bongo
Bongo

スコア10807

test CHANGED
@@ -11,3 +11,161 @@
11
11
 
12
12
 
13
13
  これで初回おみくじ表示以降はdrawが何もしないようになるのではないでしょうか。
14
+
15
+
16
+
17
+ [コメントを受けて追記]
18
+
19
+ 私の案だと、omikuji.jpgはsetupで描いて、文字列だけdrawで描く...というのを想定していました。
20
+
21
+ 一例としてこんな感じのものはどうでしょう?
22
+
23
+
24
+
25
+ ```Java
26
+
27
+ /*
28
+
29
+ * Arduino - Processingシリアル通信
30
+
31
+ * Firmataを使用したサンプル
32
+
33
+ * Processing側
34
+
35
+ */
36
+
37
+
38
+
39
+ boolean didRead = false;
40
+
41
+ PImage img;
42
+
43
+
44
+
45
+ import processing.serial.*;
46
+
47
+ import cc.arduino.*;
48
+
49
+ Arduino arduino;
50
+
51
+ int input0 = 0;
52
+
53
+
54
+
55
+ void setup() {
56
+
57
+ size(500, 800);
58
+
59
+ noStroke();
60
+
61
+ arduino = new Arduino(this, Arduino.list()[1], 57600);
62
+
63
+ img = loadImage("omikuji.jpg");
64
+
65
+ image(img, 0, 0); // 画像だけここで描くようにしました
66
+
67
+ }
68
+
69
+
70
+
71
+ void draw() {
72
+
73
+ // image(img, 0, 0); // draw内では画像の再描画をしないようにしました
74
+
75
+
76
+
77
+ /*
78
+
79
+ if (didRead == false) {
80
+
81
+ return;
82
+
83
+ }
84
+
85
+ */
86
+
87
+ if (didRead) {
88
+
89
+ return; // didReadがfalseの時...ではなく、trueの時に何もしないことを想定していました
90
+
91
+ }
92
+
93
+
94
+
95
+ int analog0 = arduino.analogRead(input0);
96
+
97
+ if (analog0 > 990) {
98
+
99
+ didRead = true;
100
+
101
+ // int r = (int)random(0, 3); // randomの上限値はその値を含まないので(この記述では0以上3未満となり、末吉が出ないと予想されたので)上限値を4にしてみました
102
+
103
+ int r = (int)random(4);
104
+
105
+ switch(r) { // switchを使ってみましたが、ifでもいいと思います
106
+
107
+ case 0:
108
+
109
+ text("中吉", 30, 20, 30, 350);
110
+
111
+ break;
112
+
113
+ case 1:
114
+
115
+ text("大吉", 30, 20, 30, 350);
116
+
117
+ break;
118
+
119
+ case 2:
120
+
121
+ text("小吉", 30, 20, 30, 350);
122
+
123
+ break;
124
+
125
+ case 3:
126
+
127
+ text("末吉", 30, 20, 30, 350);
128
+
129
+ break;
130
+
131
+ }
132
+
133
+ }
134
+
135
+
136
+
137
+ // この位置におみくじ表示ロジックがあると、analog0が990以下でもおみくじ表示が行われてしまうはずなので、上に移しました
138
+
139
+ /*
140
+
141
+ int r = (int)random(0, 3);
142
+
143
+ if (r == 0 && didRead == true) {
144
+
145
+ text("中吉", 30, 20, 30, 350);
146
+
147
+ }
148
+
149
+ if (r == 1 && didRead == true) {
150
+
151
+ text("大吉", 30, 20, 30, 350);
152
+
153
+ }
154
+
155
+ if (r == 2 && didRead == true) {
156
+
157
+ text("小吉", 30, 20, 30, 350);
158
+
159
+ }
160
+
161
+ if (r == 3 && didRead == true) {
162
+
163
+ text("末吉", 30, 20, 30, 350);
164
+
165
+ }
166
+
167
+ */
168
+
169
+ }
170
+
171
+ ```

1

機能の名称を修正(「インスタンス変数」を「グローバル変数」に)

2017/07/01 09:01

投稿

Bongo
Bongo

スコア10807

test CHANGED
@@ -1,6 +1,6 @@
1
1
  こんな方針だとどうでしょう?
2
2
 
3
- - boolean型のインスタンス変数を追加する(名前は仮にdidReadとする)。
3
+ - boolean型のグローバル変数を追加する(名前は仮にdidReadとする)。
4
4
 
5
5
  - おみくじ表示はdrawで行う。
6
6