###実現したいこと
上キーを押したときに-40Y座標を下げて
またJflagで落下させたい
これはアクションゲームを作っています
###該当のソースコード
import javax.swing.*;//swingのimport import java.awt.*;//awtのimport import java.awt.event.*;//awtのeventのimport public class action extends JFrame implements ActionListener{ static action Frame;//Frame JPanel Panel;//Panel JLabel Player;//プレイヤーの画像が入ったJLabel JLabel Block;//ブロックの画像が入ったJLabel ImageIcon PlayerIcon;//プレイヤーの画像読み込み ImageIcon BlockIcon;//ブロックの画像読み込み Timer timer; Timer Ktimer; int PlayerX = 20;//プレイヤーのX座標 int PlayerY = 40;//プレイヤーのY座標 static boolean Jflag = false;//ジャンプフラグ static boolean UKflag = false;//ジャンプキーフラグ static boolean LKflag = false;//左移動キーフラグ static boolean RKflag = false;//右移動キーフラグ static boolean Dflag = false;//デバックフラグ public static void main(String args[]){ Frame = new action(); Frame.setSize(900, 500);//ウィンドウのサイズ設定(X, Y) Frame.setTitle("アクションゲーム");//ウィンドウのタイトル Frame.setLocationRelativeTo(null);//ウィンドウを画面の中央に表示する Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//xで閉じるようにする Frame.setVisible(true);//ウィンドウを可視化 } action(){ timer = new Timer(10, this);//タイマー間隔設定 Ktimer = new Timer(10, this);//タイマー間隔設定 Panel = new JPanel(); Panel.setLayout(null);//レイアウトマネージャー無効化 PlayerIcon = new ImageIcon("./PlayerIcon.png");//プレイヤーの画像指定 BlockIcon = new ImageIcon("./BlockIcon.png");//ブロックの画像指定 Player = new JLabel(PlayerIcon);//プレイヤー画像設定 Player.setBounds(PlayerX, PlayerY, 20, 40);//プレイヤーの座標とサイズ設定 Block = new JLabel(BlockIcon);//ブロック画像設定 Block.setBounds(0, 442, 20, 20);//ブロックの座標とサイズ設定 Panel.add(Player);//プレイヤー画像追加 Panel.add(Block);//ブロック画像追加 Container contentPane = getContentPane();//??? contentPane.add(Panel, BorderLayout.CENTER);//??? timer.start();//タイマースタート } public void actionPerformed(ActionEvent e){//タイマーの処理 if(PlayerY <= 399){ Jflag = true;//ジャンプフラグをtrueにする }else{ Jflag = false;//ジャンプフラグをfalseにする } if(Jflag == true){//もしジャンプフラグがtrueなら PlayerY += 10;//プレイヤーのY座標を+10 Player.setBounds(PlayerX, PlayerY, 20, 40);//プレイヤーの座標再設定 Panel.repaint();//パネルを更新 if(PlayerY >= 399){ Jflag = false; timer.stop(); } } if(UKflag == true){ PlayerY -= 10;//プレイヤーのY座標を-10 Player.setBounds(PlayerX, PlayerY, 20, 40);//プレイヤーの座標再設定 Panel.repaint();//パネルを更新 if(PlayerY <= 359){ UKflag = false; Jflag = false; timer.stop(); } } } protected void processKeyEvent(KeyEvent e){//キー入力の処理 if(e.getID() == KeyEvent.KEY_PRESSED){ if(e.getKeyCode() == KeyEvent.VK_UP && Jflag == false){ UKflag = true; Jflag = true; timer.start(); System.out.println("UP"); } if(e.getKeyCode() == KeyEvent.VK_LEFT && Jflag == false){ LKflag = true; timer.start(); System.out.println("LEFT"); } if(e.getKeyCode() == KeyEvent.VK_RIGHT && Jflag == false){ RKflag = true; timer.start(); System.out.println("RIGHT"); } if(e.getKeyCode() == KeyEvent.VK_D && Dflag == true){ System.out.println("\nJflag:" + Jflag); System.out.println("UKflag:" + UKflag); System.out.println("LKflag:" + LKflag); System.out.println("RKflag:" + RKflag); System.out.println("Dflag:" + Dflag); System.out.println("PlayerX座標:" + PlayerX); System.out.println("PlayerY座標:" + PlayerY + "\n"); } if(e.getKeyCode() == KeyEvent.VK_S){ if(Dflag == false){ Dflag = true; System.out.println("デバック機能を有効にしました"); } } if(e.getKeyCode() == KeyEvent.VK_E){ Frame.dispose(); System.out.println("正常に終了しました"); } } } }
###試したこと
Jflagを↑を押したときにtrueにしたり
timerを止めてもう一度キーを押したときにスタートさせた
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/25 11:25
2017/11/25 11:49