回答編集履歴
1
見直しキャンペーン中
test
CHANGED
@@ -1,179 +1,90 @@
|
|
1
1
|
> 雪が降るプログラムの中に星と動く文字を追加したいです。
|
2
2
|
|
3
|
-
|
4
|
-
|
5
3
|
2つのプログラムを合体させようとしているわけですね?
|
6
|
-
|
7
4
|
単に2つのプログラムをコピペするだけでは動きません。
|
8
|
-
|
9
|
-
|
10
5
|
|
11
6
|
`size (600,600)`・`size(400, 200)`となっていては、どっちのサイズで表示すればいいかわかりませんよね?(そして`setup()`と`draw()`は、複数書けません)
|
12
7
|
|
13
|
-
|
14
|
-
|
15
8
|
つまりそれぞれの`setup()`・`draw()`を、ひとつの`setup()`・`draw()`に適切に合体させる必要があります。
|
16
9
|
|
17
|
-
|
18
|
-
|
19
10
|
`draw()`では後に描くほど上になりますから、コードの順番も非常に重要になります。
|
20
|
-
|
21
11
|
とりあえず雪を最初に描きましたが、順番を変えてみたりしてください。
|
22
12
|
|
23
|
-
|
24
|
-
|
25
13
|
```Processing
|
26
|
-
|
27
14
|
Snowflake[] sf = new Snowflake[2000];
|
28
|
-
|
29
15
|
float x;
|
30
|
-
|
31
16
|
PFont font;
|
32
|
-
|
33
17
|
String msg = "Winter";
|
34
|
-
|
35
18
|
float speed = -1;
|
36
|
-
|
37
19
|
String msgLine = "";
|
38
|
-
|
39
20
|
float msgWidth;
|
40
21
|
|
41
22
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
23
|
void setup() {
|
46
|
-
|
47
24
|
size(600, 600);
|
48
|
-
|
49
25
|
noCursor();
|
50
26
|
|
27
|
+
for (int i = 0; i < sf.length; i++) {
|
28
|
+
sf[i] = new Snowflake();
|
29
|
+
}
|
51
30
|
|
31
|
+
font = createFont("Calibri Bold Italic", 48);
|
32
|
+
textFont(font);
|
33
|
+
textSize(32);
|
34
|
+
x = width;
|
35
|
+
msgWidth = textWidth(msg);
|
36
|
+
for (int i = 0; i < (int) (width / msgWidth) + 2; i++) {
|
37
|
+
msgLine += msg;
|
38
|
+
}
|
39
|
+
}
|
40
|
+
|
41
|
+
void draw() {
|
42
|
+
//background(255);
|
43
|
+
background(12, 15, 32);
|
52
44
|
|
53
45
|
for (int i = 0; i < sf.length; i++) {
|
54
|
-
|
55
|
-
sf[i]
|
46
|
+
sf[i].drop();
|
56
|
-
|
57
47
|
}
|
58
48
|
|
59
|
-
|
60
|
-
|
61
|
-
font = createFont("Calibri Bold Italic", 48);
|
62
|
-
|
63
|
-
textFont(font);
|
64
|
-
|
65
|
-
textSize(32);
|
66
|
-
|
67
|
-
x = width;
|
68
|
-
|
69
|
-
msgWidth = textWidth(msg);
|
70
|
-
|
71
|
-
for (int i = 0; i <
|
49
|
+
for (int i = 0; i < 10; i++) {
|
72
|
-
|
50
|
+
fill((i % 2 + 1) * 128, (i % 2 + 1) * 128, 0);
|
51
|
+
float r = i * TAU / 10 - PI / 2;
|
73
|
-
|
52
|
+
float d = 100 - i % 2 * 50;
|
74
|
-
|
53
|
+
float e = 100 - (i + 1) % 2 * 50;
|
54
|
+
triangle(120, 120, cos(r) * d + 120, sin(r) * d + 120, cos(r + TAU / 10) * e + 120, sin(r + TAU / 10) * e + 120);
|
75
55
|
}
|
76
56
|
|
57
|
+
// fill(0);
|
58
|
+
fill(255);
|
59
|
+
text(msgLine, x, height / 2);
|
60
|
+
x = x + speed;
|
61
|
+
if (x < -msgWidth) {
|
62
|
+
x = 0;
|
63
|
+
}
|
77
64
|
}
|
78
65
|
|
79
66
|
|
80
|
-
|
81
|
-
void draw() {
|
82
|
-
|
83
|
-
//background(255);
|
84
|
-
|
85
|
-
background(12, 15, 32);
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
for (int i = 0; i < sf.length; i++) {
|
90
|
-
|
91
|
-
sf[i].drop();
|
92
|
-
|
93
|
-
}
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
for (int i = 0; i < 10; i++) {
|
98
|
-
|
99
|
-
fill((i % 2 + 1) * 128, (i % 2 + 1) * 128, 0);
|
100
|
-
|
101
|
-
float r = i * TAU / 10 - PI / 2;
|
102
|
-
|
103
|
-
float d = 100 - i % 2 * 50;
|
104
|
-
|
105
|
-
float e = 100 - (i + 1) % 2 * 50;
|
106
|
-
|
107
|
-
triangle(120, 120, cos(r) * d + 120, sin(r) * d + 120, cos(r + TAU / 10) * e + 120, sin(r + TAU / 10) * e + 120);
|
108
|
-
|
109
|
-
}
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
// fill(0);
|
114
|
-
|
115
|
-
fill(255);
|
116
|
-
|
117
|
-
text(msgLine, x, height / 2);
|
118
|
-
|
119
|
-
x = x + speed;
|
120
|
-
|
121
|
-
if (x < -msgWidth) {
|
122
|
-
|
123
|
-
x = 0;
|
124
|
-
|
125
|
-
}
|
126
|
-
|
127
|
-
}
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
67
|
class Snowflake {
|
134
|
-
|
135
68
|
float x = random(width);
|
136
|
-
|
137
69
|
float y = random(height);
|
138
|
-
|
139
70
|
float dy = random(0, 3);
|
140
|
-
|
141
71
|
float s = 5 * dy / 4.0;
|
142
|
-
|
143
72
|
color c = #ffffff;
|
144
73
|
|
145
|
-
|
146
|
-
|
147
74
|
void drop() {
|
148
|
-
|
149
75
|
y += dy;
|
150
|
-
|
151
76
|
if (y > height) y = 0;
|
152
|
-
|
153
77
|
noStroke();
|
154
|
-
|
155
78
|
fill(c);
|
156
|
-
|
157
79
|
ellipse(x, y, s, s);
|
158
|
-
|
159
80
|
}
|
160
|
-
|
161
81
|
}
|
162
|
-
|
163
82
|
```
|
164
|
-
|
165
|
-
|
166
83
|
|
167
84
|
---
|
168
85
|
|
169
|
-
|
170
|
-
|
171
86
|
他変更点
|
172
|
-
|
173
87
|
* `sf`を2000個しか使っていないようなので、[2000]に変更(ループも`sf.length`に)
|
174
|
-
|
175
88
|
* 変数は上にまとめる
|
176
|
-
|
177
89
|
* クラスは下に(あるいは別タブに)
|
178
|
-
|
179
|
-
* `Snowflake`のコンストラクタでの初期化が冗長なので
|
90
|
+
* `Snowflake`のコンストラクタでの初期化が冗長なので宣言時に
|