Aキーを押したら弾の画像が表示されて
そのあと左に連続で移動するようにしたいです
どうしたらいいでしょうか?
シューティングゲームで弾の発射に使うつもりです
(本当はもっと滑らかにできればいいのですが・・・)
(なんなら自機の移動ももっと・・・)
弾の画像サイズはX:20 Y:20 です
自機のサイズはX:80 Y:40 です
java
1 2import javax.swing.JFrame; 3import javax.swing.JPanel; 4import javax.swing.JLabel; 5import javax.swing.ImageIcon; 6 7import java.awt.BorderLayout; 8import java.awt.event.KeyEvent; 9 10public class MyGame extends JFrame{ 11 12 int zikiX[] = {750}; 13 int zikiY[] = {225}; 14 15 int zikidamaX[] = {zikiX[0]-30}; 16 int zikidamaY[] = {zikiY[0]}; 17 18 ImageIcon icon1 = new ImageIcon 19 ("C:\Users\miyab\Desktop\シューティングゲーム\自機.png");//画像ファイル指定 20 ImageIcon icon2 = new ImageIcon 21 ("C:\Users\miyab\Desktop\シューティングゲーム\自機弾.png"); 22 23 JLabel ziki = new JLabel(icon1);//JLabelに自機の画像ファイル設定 24 JLabel zikizahyou = new JLabel();//自機の座標を生成 25 JLabel zikidama = new JLabel(icon2);//JLabelに自機の弾の画像ファイル設定 26 27 JPanel panel = new JPanel();//panel設定 28 29 public static void main(String[] args){ 30 31 MyGame frame = new MyGame();//ウィンドウを内部的に作成 32 frame.setSize(900, 550);//ウィンドウサイズ設定 33 frame.setTitle("シューティングゲーム"); 34 frame.setLocationRelativeTo(null);//ウィンドウの位置を中央に設定 35 36 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 37 //ウィンドウを×で閉じるようにする設定 38 39 frame.setVisible(true);//ウィンドウを可視化 40 41 } 42 43 MyGame(){ 44 45 panel.setLayout(null);//レイアウトマネージャー無効化 46 47 ziki.setBounds(zikiX[0], zikiY[0], 80, 40);//zikiのサイズと座標設定 48 zikizahyou.setText("X座標:"+zikiX[0]+" Y座標:"+zikiY[0]);//自機の座標を設定 49 zikizahyou.setBounds(5, 5, 150, 15);//自機の座標の座標とサイズを設定 50 51 panel.add(ziki);//自機画像をpanelに追加 52 panel.add(zikizahyou);//自機の座標を画面に表示 53 54 getContentPane().add(panel, BorderLayout.CENTER);//??? 55 56 enableEvents(java.awt.AWTEvent.KEY_EVENT_MASK);//キーイベントの有効化 57 58 } 59 60 protected void processKeyEvent(java.awt.event.KeyEvent e){//キーイベントの関数 61 62 if(e.getID() == java.awt.event.KeyEvent.KEY_PRESSED){ 63 64 if(e.getKeyCode() == java.awt.event.KeyEvent.VK_LEFT){ 65 66 zikiX[0] -= 10;//座標を左に移動 67 if(zikiX[0] <= 0){//座標が画面外に行ったら左端に戻す 68 69 zikiX[0] = 0;//zikiのX座標を0に設定 70 71 } 72 ziki.setLocation(zikiX[0],zikiY[0]);//座標を再設定 73 zikizahyou.setText("X座標:"+zikiX[0]+" Y座標:"+zikiY[0]);//座標表示を更新 74 75 } 76 77 if(e.getKeyCode() == java.awt.event.KeyEvent.VK_RIGHT){ 78 79 zikiX[0] += 10;//座標を右に移動 80 if(zikiX[0] >= 804){//座標が画面外に行ったら右端に戻す 81 82 zikiX[0] = 804;//zikiのX座標を804に設定 83 84 } 85 ziki.setLocation(zikiX[0],zikiY[0]);//座標を再設定 86 zikizahyou.setText("X座標:"+zikiX[0]+" Y座標:"+zikiY[0]);//座標表示を更新 87 88 } 89 90 if(e.getKeyCode() == java.awt.event.KeyEvent.VK_UP){ 91 92 zikiY[0] -= 10;//座標を上に移動 93 if(zikiY[0] <= 1){//座標が画面外に行ったら上端に戻す 94 95 zikiY[0] = 1;//zikiのY座標を1に設定 96 97 } 98 ziki.setLocation(zikiX[0],zikiY[0]);//座標を再設定 99 zikizahyou.setText("X座標:"+zikiX[0]+" Y座標:"+zikiY[0]);//座標表示を更新 100 101 } 102 103 if(e.getKeyCode() == java.awt.event.KeyEvent.VK_DOWN){ 104 105 zikiY[0] += 10;//座標を下に移動 106 if(zikiY[0] >= 471){//座標が画面外に行ったら下端に戻す 107 108 zikiY[0] = 471;//zikiのY座標を471に設定 109 110 } 111 ziki.setLocation(zikiX[0],zikiY[0]);//座標を再設定 112 zikizahyou.setText("X座標:"+zikiX[0]+" Y座標:"+zikiY[0]);//座標表示を更新 113 114 } 115 116 if(e.getKeyCode() == java.awt.event.KeyEvent.VK_A){ 117 118 zikidama.setBounds(zikidamaX[0], zikidamaY[0], 20, 20); 119 panel.add(zikidama); 120 121 for(int i = 0; i < 100; i++){ 122 123 zikidamaX[0] -= 30; 124 125 } 126 127 System.out.println(zikidamaX[0]);//座標確認用 128 System.out.println(zikidamaY[0]); 129 130 } 131 132 } 133 } 134 135} 136 137
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/01 08:05
2017/10/01 09:07