teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

回答をいただいたあとの修正版

2015/06/02 10:33

投稿

Rino-T_C
Rino-T_C

スコア95

title CHANGED
File without changes
body CHANGED
@@ -197,4 +197,154 @@
197
197
  解決「現在は実行時エラーです。
198
198
  また、実行時エラーにならずとも、足跡が描画されなかったり、右下にしか亀が動かなかったりします。」
199
199
 
200
- 現在、実行した段階でなぜか毎回決まった線が描画されてしまっています。
200
+ 現在、実行した段階でなぜか毎回決まった線が描画されてしまっています。
201
+
202
+ 修正後
203
+ Turtle.java
204
+ ```lang-<Java>
205
+ public class Turtle{
206
+
207
+ //インスタンス変数の宣言
208
+
209
+ int x, y;
210
+ double angle = 0;
211
+
212
+ ArrayList<Point> points = new ArrayList<Point>();
213
+
214
+
215
+ //コンストラクタの定義
216
+
217
+ Turtle(int i, int j){
218
+ x = i;
219
+ y = j;
220
+ points.add(new Point(x, y));
221
+
222
+ }
223
+ //各種メソッドの定義
224
+ public void move(double x, double y){
225
+ int i = points.size() - 1;
226
+ Point pt = points.get(i);
227
+
228
+ points.add(new Point( (int)x+pt.x, (int)y+pt.y));
229
+ }
230
+
231
+ //亀の軌跡の描画
232
+
233
+ public void paint(Graphics g){
234
+
235
+ g.setColor(pencolor);
236
+
237
+ int i;
238
+ int px[] = new int[points.size()];
239
+ int py[] = new int[points.size()];
240
+ for( i = 0; i < points.size(); i++){
241
+ Point p_i = points.get(i);
242
+ px[i] = p_i.x;
243
+ py[i] = p_i.y;
244
+ }
245
+ g.drawPolyline(px, py, points.size());
246
+
247
+ }
248
+ }
249
+ ```
250
+ Turtle2.java
251
+ ```lang-<Java>
252
+ public class Turtle2{
253
+
254
+ Turtle kame[] = new Turtle[4];
255
+
256
+ Turtle2(Turtle k[]){
257
+ kame = k;
258
+ }
259
+
260
+ void move(double x, double y){
261
+ kame[1].move(x/2, y/2);
262
+ kame[2].move(x/3, y/3);
263
+ kame[3].move(x*2, y*2);
264
+
265
+
266
+ void paint(Graphics g){
267
+ for(int i = 0; i < 4; i++){
268
+ kame[i].paint(g);
269
+ }
270
+ }
271
+
272
+ }
273
+ ```
274
+ Rabbit.java
275
+ ```lang-<Java>
276
+ public class Rabbit extends Applet implements MouseListener, MouseMotionListener{
277
+ int current_x; //マウスの現在のx座標
278
+ int current_y; //マウスの現在のy座標
279
+ Turtle kame[] = new Turtle[4];
280
+ Turtle2 Usagi = new Turtle2(kame);
281
+ Image imgs;
282
+
283
+
284
+ public void init(){
285
+ setBackground(Color.white);
286
+ imgs= getImage(getDocumentBase(), "kame2.gif");
287
+
288
+ kame[0] = new Turtle(100, 100);
289
+ kame[1] = new Turtle(300, 100);
290
+ kame[2] = new Turtle(100, 300);
291
+ kame[3] = new Turtle(300, 300);
292
+
293
+ addMouseListener(this);
294
+
295
+ addMouseMotionListener(this);
296
+
297
+ }
298
+
299
+ public void mouseDragged(MouseEvent e){
300
+
301
+ int size = kame[0].points.size() - 1;
302
+ Point p_0 = kame[0].points.get(size);
303
+ if(current_x >= p_0.x && current_x <= p_0.x+68 && current_y >= p_0.y && current_y <= p_0.y + 48){
304
+ current_x = e.getX();
305
+ current_y = e.getY();
306
+ kame[0].points.add(new Point(current_x, current_y));
307
+ repaint();
308
+ }
309
+ }
310
+
311
+ public void mouseMoved(MouseEvent e){
312
+
313
+ }
314
+
315
+ public void mouseClicked(MouseEvent e){
316
+
317
+ }
318
+ public void mouseEntered(MouseEvent e){
319
+
320
+ }
321
+ public void mouseExited(MouseEvent e){
322
+
323
+ }
324
+
325
+ public void mousePressed(MouseEvent e){
326
+
327
+ }
328
+
329
+ public void mouseReleased(MouseEvent e){
330
+
331
+ }
332
+
333
+ public void paint(Graphics g){
334
+ for(int i = 0; i < 4; i++){
335
+
336
+ int size = kame[i].points.size() - 1;
337
+
338
+ Point p_cur = kame[i].points.get(size - 1);
339
+ Point p_prev = kame[i].points.get(size - 1);
340
+ double dx = p_cur.x - p_prev.x;
341
+ double dy = p_cur.y - p_prev.y;
342
+ Usagi.move(dx, dy);
343
+ g.drawImage(imgs, kame[i].points.get(size).x, kame[i].points.get(size).y,this);
344
+ }
345
+ g.setColor(Color.black);
346
+ Usagi.paint(g);
347
+ }
348
+ }
349
+ ```
350
+ こんなかんじになりました。現在実行時エラーです(´;ω;`)

2

追記

2015/06/02 10:33

投稿

Rino-T_C
Rino-T_C

スコア95

title CHANGED
File without changes
body CHANGED
@@ -194,5 +194,7 @@
194
194
 
195
195
 
196
196
  ```
197
- 現在は実行時エラーです。
197
+ 解決「現在は実行時エラーです。
198
- また、実行時エラーにならずとも、足跡が描画されなかったり、右下にしか亀が動かなかったりします。
198
+ また、実行時エラーにならずとも、足跡が描画されなかったり、右下にしか亀が動かなかったりします。
199
+
200
+ 現在、実行した段階でなぜか毎回決まった線が描画されてしまっています。

1

式の修正

2015/06/02 07:28

投稿

Rino-T_C
Rino-T_C

スコア95

title CHANGED
File without changes
body CHANGED
@@ -180,7 +180,7 @@
180
180
  double dx = current_x - p_0.x;
181
181
  double dy = current_y - p_0.y;
182
182
  deg = Math.atan2(dy, dx);
183
- if( deg == 0 || deg == pi || deg == -pi){
183
+ if( deg != 0 || deg != pi || deg != -pi){
184
184
  length = dx;
185
185
  }
186
186
  else{
@@ -192,6 +192,7 @@
192
192
  }
193
193
  }
194
194
 
195
+
196
+ ```
195
197
  現在は実行時エラーです。
196
- また、実行時エラーにならずとも、足跡が描画されなかったり、右下にしか亀が動かなかったりします。
198
+ また、実行時エラーにならずとも、足跡が描画されなかったり、右下にしか亀が動かなかったりします。
197
- ```