質問編集履歴
4
javaファイルの更新
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
|
-
|
57
|
+
KEY_NO_ACTION=0,
|
56
|
-
|
58
|
+
|
57
|
-
|
59
|
+
KEY_ACTION=1;
|
58
60
|
|
59
61
|
//システム
|
60
62
|
|
61
63
|
private SurfaceHolder holder; //サーフェイスホルダー
|
62
64
|
|
63
|
-
private Graphics g;
|
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
|
-
|
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
|
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
|
-
|
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
|
-
|
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の追加
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
訂正
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
追記:
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
|
-
|
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も見ることができませんでした。
|