質問編集履歴

1

変更したコードの記載

2017/10/01 11:33

投稿

Alpa
Alpa

スコア80

test CHANGED
File without changes
test CHANGED
@@ -301,3 +301,313 @@
301
301
 
302
302
 
303
303
  ```
304
+
305
+
306
+
307
+ ###変更後
308
+
309
+
310
+
311
+ このような使い方でいいでしょうか?
312
+
313
+ もし間違っているなら
314
+
315
+ しつこいですが
316
+
317
+ 教えていただけないでしょうか?
318
+
319
+ 理解力がなくてすいません
320
+
321
+
322
+
323
+ ```JAVA
324
+
325
+ import javax.swing.JFrame;
326
+
327
+ import javax.swing.JPanel;
328
+
329
+ import javax.swing.JLabel;
330
+
331
+ import javax.swing.ImageIcon;
332
+
333
+ import javax.swing.Timer;
334
+
335
+
336
+
337
+ import java.awt.BorderLayout;
338
+
339
+ import java.awt.event.KeyEvent;
340
+
341
+
342
+
343
+ public class MyGame extends JFrame{
344
+
345
+
346
+
347
+ int zikiX[] = {750};//自機のX座標
348
+
349
+ int zikiY[] = {225};//自機のY座標
350
+
351
+
352
+
353
+ int zikidamaX[] = {zikiX[0]-30};//自機の弾のX座標
354
+
355
+ int zikidamaY[] = {zikiY[0]};//自機の弾のY座標
356
+
357
+
358
+
359
+ ImageIcon icon1 = new ImageIcon
360
+
361
+ ("C:\Users\miyab\Desktop\シューティングゲーム\自機.png");//画像ファイル指定
362
+
363
+ ImageIcon icon2 = new ImageIcon
364
+
365
+ ("C:\Users\miyab\Desktop\シューティングゲーム\自機弾.png");
366
+
367
+
368
+
369
+ JLabel ziki = new JLabel(icon1);//JLabelに自機の画像ファイル設定
370
+
371
+ JLabel zikizahyou = new JLabel();//自機の座標を生成
372
+
373
+ JLabel zikidama = new JLabel(icon2);//JLabelに自機の弾の画像ファイル設定
374
+
375
+
376
+
377
+ JPanel panel = new JPanel();//panel設定
378
+
379
+
380
+
381
+ public static void main(String[] args){
382
+
383
+
384
+
385
+ MyGame frame = new MyGame();//ウィンドウを内部的に作成
386
+
387
+ frame.setSize(900, 550);//ウィンドウサイズ設定
388
+
389
+ frame.setTitle("シューティングゲーム");
390
+
391
+ frame.setLocationRelativeTo(null);//ウィンドウの位置を中央に設定
392
+
393
+
394
+
395
+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
396
+
397
+ //ウィンドウを×で閉じるようにする設定
398
+
399
+
400
+
401
+ frame.setVisible(true);//ウィンドウを可視化
402
+
403
+
404
+
405
+ }
406
+
407
+
408
+
409
+ MyGame(){
410
+
411
+
412
+
413
+ panel.setLayout(null);//レイアウトマネージャー無効化
414
+
415
+
416
+
417
+ ziki.setBounds(zikiX[0], zikiY[0], 80, 40);//zikiのサイズと座標設定
418
+
419
+ zikizahyou.setText("X座標:"+zikiX[0]+" Y座標:"+zikiY[0]);//自機の座標を設定
420
+
421
+ zikizahyou.setBounds(5, 5, 150, 15);//自機の座標の座標とサイズを設定
422
+
423
+
424
+
425
+ panel.add(ziki);//自機画像をpanelに追加
426
+
427
+ panel.add(zikizahyou);//自機の座標を画面に表示
428
+
429
+
430
+
431
+ getContentPane().add(panel, BorderLayout.CENTER);//???
432
+
433
+
434
+
435
+ enableEvents(java.awt.AWTEvent.KEY_EVENT_MASK);//キーイベントの有効化
436
+
437
+
438
+
439
+ }
440
+
441
+
442
+
443
+ protected void processKeyEvent(java.awt.event.KeyEvent e){//キーイベントの関数
444
+
445
+
446
+
447
+ if(e.getID() == java.awt.event.KeyEvent.KEY_PRESSED){
448
+
449
+
450
+
451
+ if(e.getKeyCode() == java.awt.event.KeyEvent.VK_LEFT){
452
+
453
+
454
+
455
+ zikiX[0] -= 10;//座標を左に移動
456
+
457
+ if(zikiX[0] <= 0){//座標が画面外に行ったら左端に戻す
458
+
459
+
460
+
461
+ zikiX[0] = 0;//zikiのX座標を0に設定
462
+
463
+
464
+
465
+ }
466
+
467
+ ziki.setLocation(zikiX[0],zikiY[0]);//座標を再設定
468
+
469
+ zikizahyou.setText("X座標:"+zikiX[0]+" Y座標:"+zikiY[0]);//座標表示を更新
470
+
471
+
472
+
473
+ }
474
+
475
+
476
+
477
+ if(e.getKeyCode() == java.awt.event.KeyEvent.VK_RIGHT){
478
+
479
+
480
+
481
+ zikiX[0] += 10;//座標を右に移動
482
+
483
+ if(zikiX[0] >= 804){//座標が画面外に行ったら右端に戻す
484
+
485
+
486
+
487
+ zikiX[0] = 804;//zikiのX座標を804に設定
488
+
489
+
490
+
491
+ }
492
+
493
+ ziki.setLocation(zikiX[0],zikiY[0]);//座標を再設定
494
+
495
+ zikizahyou.setText("X座標:"+zikiX[0]+" Y座標:"+zikiY[0]);//座標表示を更新
496
+
497
+
498
+
499
+ }
500
+
501
+
502
+
503
+ if(e.getKeyCode() == java.awt.event.KeyEvent.VK_UP){
504
+
505
+
506
+
507
+ zikiY[0] -= 10;//座標を上に移動
508
+
509
+ if(zikiY[0] <= 1){//座標が画面外に行ったら上端に戻す
510
+
511
+
512
+
513
+ zikiY[0] = 1;//zikiのY座標を1に設定
514
+
515
+
516
+
517
+ }
518
+
519
+ ziki.setLocation(zikiX[0],zikiY[0]);//座標を再設定
520
+
521
+ zikizahyou.setText("X座標:"+zikiX[0]+" Y座標:"+zikiY[0]);//座標表示を更新
522
+
523
+
524
+
525
+ }
526
+
527
+
528
+
529
+ if(e.getKeyCode() == java.awt.event.KeyEvent.VK_DOWN){
530
+
531
+
532
+
533
+ zikiY[0] += 10;//座標を下に移動
534
+
535
+ if(zikiY[0] >= 471){//座標が画面外に行ったら下端に戻す
536
+
537
+
538
+
539
+ zikiY[0] = 471;//zikiのY座標を471に設定
540
+
541
+
542
+
543
+ }
544
+
545
+ ziki.setLocation(zikiX[0],zikiY[0]);//座標を再設定
546
+
547
+ zikizahyou.setText("X座標:"+zikiX[0]+" Y座標:"+zikiY[0]);//座標表示を更新
548
+
549
+
550
+
551
+ }
552
+
553
+
554
+
555
+ if(e.getKeyCode() == java.awt.event.KeyEvent.VK_A){
556
+
557
+
558
+
559
+ zikidama.setBounds(zikidamaX[0], zikidamaY[0], 20, 20);//自機の弾のサイズと座標を設定
560
+
561
+ panel.add(zikidama);//panelにzikidamaを追加
562
+
563
+
564
+
565
+ System.out.println("X座標:"+zikidamaX[0]);//座標確認用
566
+
567
+ System.out.println("Y座標:"+zikidamaY[0]);
568
+
569
+
570
+
571
+ }
572
+
573
+
574
+
575
+ }
576
+
577
+ }
578
+
579
+
580
+
581
+ void Timer(){
582
+
583
+
584
+
585
+ Timer dama = new Timer(10, event ->{//timerを設定
586
+
587
+
588
+
589
+ zikidamaX[0] -= 1;//zikidamaX[0]の座標を-1する
590
+
591
+ zikidama.setLocation(zikidamaX[0], zikidamaY[0]);
592
+
593
+ if(zikidamaX[0] <= 0){
594
+
595
+
596
+
597
+
598
+
599
+
600
+
601
+ }
602
+
603
+
604
+
605
+ });
606
+
607
+ }
608
+
609
+
610
+
611
+ }
612
+
613
+ ```