質問編集履歴

4

javaファイルの更新

2016/10/13 08:31

投稿

kirbyprog
kirbyprog

スコア7

test CHANGED
File without changes
test CHANGED
@@ -32,6 +32,8 @@
32
32
 
33
33
  ###該当のソースコード
34
34
 
35
+ - AdventureView.java
36
+
35
37
  ```java
36
38
 
37
39
  public class AdventureView extends SurfaceView
@@ -52,15 +54,15 @@
52
54
 
53
55
  private final static int
54
56
 
55
- KEY_NO_ACTION=0,
57
+ KEY_NO_ACTION=0,
56
-
58
+
57
- KEY_ACTION=1;
59
+ KEY_ACTION=1;
58
60
 
59
61
  //システム
60
62
 
61
63
  private SurfaceHolder holder; //サーフェイスホルダー
62
64
 
63
- private Graphics g; ![イメージ説明](5dd454eae065350260d1e119e44967ba.png)フィック
65
+ private Graphics g;
64
66
 
65
67
  private Thread thread; //スレッド
66
68
 
@@ -126,6 +128,8 @@
126
128
 
127
129
  private boolean FLAG_CHAT = false;
128
130
 
131
+ private int count_program = 0;
132
+
129
133
 
130
134
 
131
135
 
@@ -230,9 +234,9 @@
230
234
 
231
235
  int idx = MAP[j][i];
232
236
 
233
- g.drawBitmap(bmp[idx], 48*i, 80*j);
237
+ g.drawBitmap(bmp[idx], 48*i, 80*j,false);
234
-
238
+
235
- }
239
+ }
236
240
 
237
241
  }
238
242
 
@@ -252,7 +256,7 @@
252
256
 
253
257
  if (j == 0) {
254
258
 
255
- } else if (j < 0) {
259
+ } else if (j < 0) {
256
260
 
257
261
  Now_myY++;
258
262
 
@@ -272,7 +276,11 @@
272
276
 
273
277
  }
274
278
 
279
+ Log.d("run:sMAP","Through"+"Now_myX="+Now_myX+"myX="+myX
280
+
281
+ +"Now_myY="+Now_myY+"myY="+myY);
282
+
275
- g.drawBitmap(bmp[4], Now_myX * 48, Now_myY * 80);
283
+ g.drawBitmap(bmp[4], Now_myX * 48, Now_myY * 80, true);
276
284
 
277
285
  g.unlock();
278
286
 
@@ -280,12 +288,14 @@
280
288
 
281
289
 
282
290
 
283
- //会話する条件がそろったとき(=人をタッチしたかつ、人の近くまで移動したとき)実行
291
+ //会話する条件がそろったとき(=人をタッチしたかつ、人の近くまで移動したとき)実行
284
292
 
285
293
  if(human != 0 && Now_myX==myX && Now_myY==myY){
286
294
 
287
295
  scene = sCHAT;
288
296
 
297
+ Log.d("会話条件TRUE","Through");
298
+
289
299
  }
290
300
 
291
301
  //---------------------------------//
@@ -294,9 +304,9 @@
294
304
 
295
305
  else if(scene == sCHAT){
296
306
 
297
- //ここから
307
+ //ここから
298
-
308
+
299
- Log.d("run;sChat", "Through");
309
+ Log.d("run:sChat", "Through");
300
310
 
301
311
  g.lock();//
302
312
 
@@ -306,9 +316,9 @@
306
316
 
307
317
  waitSelect();
308
318
 
309
- //ここまでが怪しい
319
+ //ここまでが怪しい
310
-
320
+
311
- //m_chat();を消しても効果なし。全部消すと会話文こそなくなるものの正常に動作する。
321
+ //m_chat();を消しても効果なし。全部消すと会話文こそなくなるものの正常に動作する。
312
322
 
313
323
  }
314
324
 
@@ -340,15 +350,213 @@
340
350
 
341
351
  case MotionEvent.ACTION_DOWN:
342
352
 
353
+ Log.d("ACTION_DOWN","Through");
354
+
343
355
  switch (scene) {
344
356
 
345
357
  case sMAP:
346
358
 
359
+ Log.d("ACTION_DOWN:sMAP", "Through");
360
+
347
- //会話していないかつ、
361
+ //会話していないかつ、
348
-
362
+
349
- //タッチした場所が人だった場合、変数human=1
363
+ //タッチした場所が人だった場合、変数human=1
350
-
364
+
351
- //タッチした場所が動ける場所だった時、動く。
365
+ //タッチした場所が動ける場所だった時、動く。
366
+
367
+ toTouch_Event(touchX, touchY);
368
+
369
+ break;//scene=sMAP
370
+
371
+ case sCHAT:
372
+
373
+ Log.d("ACTION_DOWN:sCHAT", "Through");
374
+
375
+ scene = sMAP;
376
+
377
+ human = 0;
378
+
379
+ //とりあえず、会話画面が表示されて画面をタッチしたらまた移動できるように。
380
+
381
+ key = KEY_ACTION;
382
+
383
+ break;//scene=sCHAT
384
+
385
+ }
386
+
387
+ break;//actionEvent=down
388
+
389
+ }
390
+
391
+ return true;
392
+
393
+ }
394
+
395
+ //スリープ
396
+
397
+ private void sleep(int time) {
398
+
399
+ try {
400
+
401
+ Thread.sleep(time);
402
+
403
+ } catch (Exception e) {
404
+
405
+ }
406
+
407
+ }
408
+
409
+ //決定キー待ち
410
+
411
+ private void waitSelect(){
412
+
413
+ key = KEY_NO_ACTION;
414
+
415
+ while(key!=KEY_ACTION){
416
+
417
+ sleep(200);
418
+
419
+ }
420
+
421
+ }
422
+
423
+ //初期化
424
+
425
+ private void init(){
426
+
427
+ MAP = MAP_first;
428
+
429
+ myX =2;
430
+
431
+ myY =2;
432
+
433
+
434
+
435
+ Now_myX=myX;
436
+
437
+ Now_myY=myY;
438
+
439
+ }
440
+
441
+ //主人公の移動
442
+
443
+ private void mMove(int x,int y){
444
+
445
+ myX = x/48;
446
+
447
+ myY = y/80;
448
+
449
+ }
450
+
451
+ //MAPの状態
452
+
453
+ private int stateMAP(int x,int y){
454
+
455
+ int state = 0;
456
+
457
+ int ax=x/48;
458
+
459
+ int ay=y/80;
460
+
461
+ state=MAP[ay][ax];
462
+
463
+ return state;
464
+
465
+ }
466
+
467
+ //会話するため
468
+
469
+ private void m_chat(){
470
+
471
+ chat = decision_chat();
472
+
473
+ g.drawText(chat);
474
+
475
+ }
476
+
477
+ //会話の内容を決める。
478
+
479
+ private String decision_chat(){
480
+
481
+ String string_chat;
482
+
483
+ string_chat = "テスト用会話:"+human;
484
+
485
+ return string_chat;
486
+
487
+ }
488
+
489
+ //タッチ先イベント処理
490
+
491
+ private void toTouch_Event(int e_touchX,int e_touchY){
492
+
493
+ switch (stateMAP(e_touchX, e_touchY)) {
494
+
495
+ case 0:
496
+
497
+ mMove(e_touchX, e_touchY);
498
+
499
+ break;//scene=sMAP : stateMAP=case0
500
+
501
+ case 1:
502
+
503
+ if (stateMAP(e_touchX - 48, e_touchY - 80) == 0) {
504
+
505
+ myX = e_touchX - 48;
506
+
507
+ myY = e_touchY - 80;
508
+
509
+ mMove(myX, myY);
510
+
511
+ human = stateMAP(e_touchX, e_touchY);
512
+
513
+ }
514
+
515
+ break;//scene=sMAP: stateMAP=case1
516
+
517
+ }
518
+
519
+ }
520
+
521
+ }
522
+
523
+
524
+
525
+ ```###試したこと
526
+
527
+ ソースコード中に書いてある、あやしいと書いてあるところを変更することで仕様通りにはなりませんが、正常に動作しました。
528
+
529
+ 瞬間移動する際、主人公が移動するメソッドは使用されていませんでした。
530
+
531
+ 他の方法でも(テキストを表示させる)試してみたのですが、setTextメソッドを使わずに意図しない文章が表示されたのでおそらく何らかの形で画像が保存されて出力されているのかなと思いました。
532
+
533
+
534
+
535
+ 戻るのは、毎回2フレーム戻りました。
536
+
537
+ また、村人の近くに行くのは1フレームのみでした。
538
+
539
+ (タッチ→数フレーム→村人の近くへ→1フレーム→2フレーム前に戻る)
540
+
541
+ ###追記(10/13)
542
+
543
+ ```java
544
+
545
+ ~省略~
546
+
547
+ public boolean onTouchEvent(MotionEvent event) {
548
+
549
+ int touchAction = event.getAction();
550
+
551
+ switch (touchAction) {
552
+
553
+ case MotionEvent.ACTION_DOWN:
554
+
555
+ switch (scene) {
556
+
557
+ case sMAP:
558
+
559
+ //タッチ先が人ならhuman=1にする。
352
560
 
353
561
  toTouch_Event(touchX,touchY);
354
562
 
@@ -358,12 +566,6 @@
358
566
 
359
567
  Log.d("sCHAT", "Through");
360
568
 
361
- scene = sMAP;
362
-
363
- human = 0;
364
-
365
- //とりあえず、会話画面が表示されて画面をタッチしたらまた移動できるように。
366
-
367
569
  key = KEY_ACTION;
368
570
 
369
571
  break;//scene=sCHAT
@@ -378,244 +580,8 @@
378
580
 
379
581
  }
380
582
 
381
- //スリープ
382
-
383
- private void sleep(int time) {
384
-
385
- try {
386
-
387
- Thread.sleep(time);
388
-
389
- } catch (Exception e) {
390
-
391
- }
392
-
393
- }
394
-
395
- //決定キー待ち
396
-
397
- private void waitSelect(){
398
-
399
- key = KEY_NO_ACTION;
400
-
401
- while(key!=KEY_ACTION){
402
-
403
- sleep(200);
404
-
405
- }
406
-
407
- }
408
-
409
- //初期化
410
-
411
- private void init(){
412
-
413
- MAP = MAP_first;
414
-
415
- myX =2;
416
-
417
- myY =2;
418
-
419
-
420
-
421
- Now_myX=myX;
422
-
423
- Now_myY=myY;
424
-
425
- }
426
-
427
- //主人公の移動
428
-
429
- private void mMove(int x,int y){
430
-
431
- myX = x/48;
432
-
433
- myY = y/80;
434
-
435
- }
436
-
437
- //MAPの状態
438
-
439
- private int stateMAP(int x,int y){
440
-
441
- int state = 0;
442
-
443
- int ax=x/48;
444
-
445
- int ay=y/80;
446
-
447
- state=MAP[ay][ax];
448
-
449
- return state;
450
-
451
- }
452
-
453
- //会話するため
454
-
455
- private void m_chat(){
456
-
457
- chat = decision_chat();
458
-
459
- g.drawText(chat);
460
-
461
- }
462
-
463
- //会話の内容を決める。
464
-
465
- private String decision_chat(){
466
-
467
- String string_chat;
468
-
469
- string_chat = "テスト用会話:"+human;
470
-
471
- return string_chat;
472
-
473
- }
474
-
475
- //タッチ先イベント処理
476
-
477
- private void toTouch_Event(int e_touchX,int e_touchY){
478
-
479
- switch (stateMAP(e_touchX, e_touchY)) {
480
-
481
- case 0:
482
-
483
- mMove(e_touchX, e_touchY);
484
-
485
- break;//scene=sMAP : stateMAP=case0
486
-
487
- case 1:
488
-
489
- if (stateMAP(e_touchX - 48, e_touchY - 80) == 0) {
490
-
491
- myX = e_touchX - 48;
492
-
493
- myY = e_touchY - 80;
494
-
495
- mMove(myX, myY);
496
-
497
- human = stateMAP(e_touchX, e_touchY);
498
-
499
- }
500
-
501
- break;//scene=sMAP: stateMAP=case1
502
-
503
- }
504
-
505
- }
506
-
507
- }
508
-
509
-
510
-
511
-
512
-
513
-
514
-
515
-
516
-
517
-
518
-
519
- /*----------------------------------------------------------------
520
-
521
- Graphic.java
522
-
523
-
524
-
525
583
  ~省略~
526
584
 
527
-
528
-
529
- //ロック
530
-
531
- public void lock() {
532
-
533
- canvas = holder.lockCanvas();
534
-
535
- if (canvas == null) return;
536
-
537
- canvas.translate(originX, originY);
538
-
539
- }
540
-
541
-
542
-
543
- //アンロック
544
-
545
- public void unlock() {
546
-
547
- if (canvas == null) return;
548
-
549
- holder.unlockCanvasAndPost(canvas);
550
-
551
- }
552
-
553
-
554
-
555
- ~省略~*/
556
-
557
-
558
-
559
- ```###試したこと
560
-
561
- ソースコード中に書いてある、あやしいと書いてあるところを変更することで仕様通りにはなりませんが、正常に動作しました。
562
-
563
- 瞬間移動する際、主人公が移動するメソッドは使用されていませんでした。
564
-
565
- 他の方法でも(テキストを表示させる)試してみたのですが、setTextメソッドを使わずに意図しない文章が表示されたのでおそらく何らかの形で画像が保存されて出力されているのかなと思いました。
566
-
567
-
568
-
569
- 戻るのは、毎回2フレーム戻りました。
570
-
571
- また、村人の近くに行くのは1フレームのみでした。
572
-
573
- (タッチ→数フレーム→村人の近くへ→1フレーム→2フレーム前に戻る)
574
-
575
- ###追記(10/13)
576
-
577
- ```java
578
-
579
- ~省略~
580
-
581
- public boolean onTouchEvent(MotionEvent event) {
582
-
583
- int touchAction = event.getAction();
584
-
585
- switch (touchAction) {
586
-
587
- case MotionEvent.ACTION_DOWN:
588
-
589
- switch (scene) {
590
-
591
- case sMAP:
592
-
593
- //タッチ先が人ならhuman=1にする。
594
-
595
- toTouch_Event(touchX,touchY);
596
-
597
- break;//scene=sMAP
598
-
599
- case sCHAT:
600
-
601
- Log.d("sCHAT", "Through");
602
-
603
- key = KEY_ACTION;
604
-
605
- break;//scene=sCHAT
606
-
607
- }
608
-
609
- break;//actionEvent=down
610
-
611
- }
612
-
613
- return true;
614
-
615
- }
616
-
617
- ~省略~
618
-
619
585
  **run()内**
620
586
 
621
587
  else if(scene == sCHAT){

3

Logの追加

2016/10/13 08:31

投稿

kirbyprog
kirbyprog

スコア7

test CHANGED
File without changes
test CHANGED
@@ -645,3 +645,15 @@
645
645
  この時の変数は、常に一定の値で予期していた値通りでした。
646
646
 
647
647
  また、Bitmapを描写する関数を通ったLOGも見られませんでした。
648
+
649
+
650
+
651
+ ###追記2(10/13)
652
+
653
+ ![イメージ説明](450af01d72749b22798cec695302e51f.png)
654
+
655
+ ![イメージ説明](9ee9b6f48ca02adac35783920f3bf160.png)
656
+
657
+ ![イメージ説明](ac8711f533621f0755aedcb208015a1a.png)
658
+
659
+ また、ソースコードの変更も行いましたので、更新させていただきます。

2

訂正

2016/10/13 08:23

投稿

kirbyprog
kirbyprog

スコア7

test CHANGED
File without changes
test CHANGED
@@ -630,6 +630,8 @@
630
630
 
631
631
  waitSelect();//タッチすると1フレーム動く
632
632
 
633
+ }
634
+
633
635
 
634
636
 
635
637
  ```
@@ -642,4 +644,4 @@
642
644
 
643
645
  この時の変数は、常に一定の値で予期していた値通りでした。
644
646
 
645
- また、Bitmapを描写する関数を通ったLOGも見ることができませんでした。
647
+ また、Bitmapを描写する関数を通ったLOGも見られませんでした。

1

追記:

2016/10/12 20:12

投稿

kirbyprog
kirbyprog

スコア7

test CHANGED
File without changes
test CHANGED
@@ -572,6 +572,74 @@
572
572
 
573
573
  (タッチ→数フレーム→村人の近くへ→1フレーム→2フレーム前に戻る)
574
574
 
575
+ ###追記(10/13)
576
+
577
+ ```java
578
+
579
+ ~省略~
580
+
581
+ public boolean onTouchEvent(MotionEvent event) {
582
+
583
+ int touchAction = event.getAction();
584
+
585
+ switch (touchAction) {
586
+
587
+ case MotionEvent.ACTION_DOWN:
588
+
589
+ switch (scene) {
590
+
591
+ case sMAP:
592
+
593
+ //タッチ先が人ならhuman=1にする。
594
+
595
+ toTouch_Event(touchX,touchY);
596
+
597
+ break;//scene=sMAP
598
+
599
+ case sCHAT:
600
+
601
+ Log.d("sCHAT", "Through");
602
+
603
+ key = KEY_ACTION;
604
+
605
+ break;//scene=sCHAT
606
+
607
+ }
608
+
609
+ break;//actionEvent=down
610
+
611
+ }
612
+
613
+ return true;
614
+
615
+ }
616
+
617
+ ~省略~
618
+
619
+ **run()内**
620
+
621
+ else if(scene == sCHAT){
622
+
623
+ FLAG_CHAT = true;
624
+
625
+ while(FLAG_CHAT==true){//falseにならないので無限ループに入る
626
+
627
+ g.lock();
628
+
629
+ g.unlock();
630
+
575
- ###補足情報(言語/FW/ル等のバージョンなど)
631
+ waitSelect();//タッチすると1フレム動く
632
+
633
+
634
+
576
-
635
+ ```
636
+
637
+ 一部を上記のように書き直した際、主人公の位置は、
638
+
639
+ 2フレーム前→1フレーム前→0フレーム前→2フレーム前→1フレーム前→・・・
640
+
577
- 詳細な情報
641
+ と繰返して位置が変わっていました。
642
+
643
+ この時の変数は、常に一定の値で予期していた値通りでした。
644
+
645
+ また、Bitmapを描写する関数を通ったLOGも見ることができませんでした。