質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

5288閲覧

ボタンを押したら別のjavaファイルを実行したい

Alpa

総合スコア80

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2017/10/14 04:05

編集2017/10/14 08:32

シューティングゲームのメニューでボタンを押したら
シューティングゲーム(別のjavaファイル)を実行するようにしたいのですが
どのようにしたらいいのか調べてもよくわかりませんでした
回答よろしくお願いします

###追記

まず自分は今シューティングゲームを作っていて
そのメニュー画面を今作っていて
そのメニュー画面にボタンを表示していて
そのボタンを押したらゲームが始まるようにしたいです

そこでボタンを押したら{}内を処理するというのは出来たのですが
別javaファイルに書いたゲームをどのように
メニュー画面の処理を書いたファイルから開始させたらいいのかわかりません

これがメニュー画面で

JAVA

1public class MyGame2 extends JFrame implements ActionListener{ 2 3 JPanel MenuPanel; 4 5 JButton GameStart; 6 JButton Custom; 7 JButton DeveloperCode; 8 JButton Option; 9 JButton GameEnd; 10 11 public static final String Cmd_GameStart = "GameStart"; 12 public static final String Cmd_Custom = "Custom"; 13 public static final String Cmd_DeveloperCode = "DeveloperCode"; 14 public static final String Cmd_Option = "Option"; 15 public static final String Cmd_GameEnd = "GameEnd"; 16 17 public static void main(String[] args){ 18 19 MyGame2 MenuFrame = new MyGame2();//ウィンドウを内部的に作成 20 MenuFrame.setSize(900, 550);//ウィンドウサイズ設定 21 MenuFrame.setTitle("シューティングゲーム"); 22 MenuFrame.setLocationRelativeTo(null);//ウィンドウの位置を中央に設定 23 24 MenuFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 25 //ウィンドウを×で閉じるようにする設定 26 27 MenuFrame.setVisible(true);//ウィンドウを可視化 28 29 } 30 31 MyGame2(){ 32 33 MenuPanel = new JPanel();//menupanel設定 34 MenuPanel.setLayout(null);//レイアウトマネージャー無効化 35 36 GameStart = new JButton("ゲーム開始");//ボタンの文字列設定 37 Custom = new JButton("カスタム"); 38 DeveloperCode = new JButton("開発者コード"); 39 Option = new JButton("設定"); 40 GameEnd = new JButton("ゲーム終了"); 41 42 GameStart.setForeground(Color.BLACK);//文字の色設定 43 GameStart.setBackground(Color.WHITE);//背景の色設定 44 Custom.setForeground(Color.BLACK); 45 Custom.setBackground(Color.WHITE); 46 DeveloperCode.setForeground(Color.BLACK); 47 DeveloperCode.setBackground(Color.WHITE); 48 Option.setForeground(Color.BLACK); 49 Option.setBackground(Color.WHITE); 50 GameEnd.setForeground(Color.BLACK); 51 GameEnd.setBackground(Color.WHITE); 52 53 GameStart.setHorizontalAlignment(JButton.CENTER);//文字の大まかな位置の設定 54 GameStart.setVerticalAlignment(JButton.CENTER); 55 Custom.setHorizontalAlignment(JButton.CENTER); 56 Custom.setVerticalAlignment(JButton.CENTER); 57 DeveloperCode.setHorizontalAlignment(JButton.CENTER); 58 DeveloperCode.setVerticalAlignment(JButton.CENTER); 59 Option.setHorizontalAlignment(JButton.CENTER); 60 Option.setVerticalAlignment(JButton.CENTER); 61 GameEnd.setHorizontalAlignment(JButton.CENTER); 62 GameEnd.setVerticalAlignment(JButton.CENTER); 63 64 GameStart.setBounds(769, 0, 115, 100);//ボタンの座標とサイズ設定 65 Custom.setBounds(769, 100, 115, 100); 66 DeveloperCode.setBounds(769, 200, 115, 100); 67 Option.setBounds(769, 300, 115, 100); 68 GameEnd.setBounds(769, 400, 115, 100); 69 70 GameStart.setActionCommand(Cmd_GameStart); 71 Custom.setActionCommand(Cmd_Custom); 72 DeveloperCode.setActionCommand(Cmd_DeveloperCode); 73 Option.setActionCommand(Cmd_Option); 74 GameEnd.setActionCommand(Cmd_GameEnd); 75 76 GameStart.addActionListener(this); 77 Custom.addActionListener(this); 78 DeveloperCode.addActionListener(this); 79 Option.addActionListener(this); 80 GameEnd.addActionListener(this); 81 82 MenuPanel.add(GameStart);//ボタンをMenuPanelに追加 83 MenuPanel.add(Custom); 84 MenuPanel.add(DeveloperCode); 85 MenuPanel.add(Option); 86 MenuPanel.add(GameEnd); 87 88 getContentPane().add(MenuPanel, BorderLayout.CENTER);//??? 89 90 } 91 92 public void actionPerformed(ActionEvent e){ 93 94 String cmd = e.getActionCommand(); 95 96 if(cmd.equals(Cmd_GameStart)){ 97 98 } 99 100 if(cmd.equals(Cmd_Custom)){ 101 102 } 103 104 if(cmd.equals(Cmd_DeveloperCode)){ 105 106 } 107 108 if(cmd.equals(Cmd_Option)){ 109 110 } 111 112 if(cmd.equals(Cmd_GameEnd)){ 113 114 } 115 116 } 117 118}

これがシューティングゲームです

java

1public class MyGame extends JFrame implements ActionListener, MouseMotionListener{ 2 3 int zikiX = 750;//自機のX座標 4 int zikiY = 225;//自機のY座標 5 6 int teki1X = 130;//敵機1のX座標 7 int teki1Y = 200;//敵機1のY座標 8 9 int zikidamaX = zikiX-30;//自機の弾のX座標 10 int zikidamaY = zikiY;//自機の弾のY座標 11 12 int count;//カウント感知用変数 13 14 ImageIcon icon1 = new ImageIcon 15 ("C:\Users\miyab\Desktop\シューティングゲーム\画像ファイル\自機.png");//自機の画像ファイル指定;//ImageIconのicon1作成 16 ImageIcon icon2 = new ImageIcon 17 ("C:\Users\miyab\Desktop\シューティングゲーム\画像ファイル\自機弾.png");//自機弾の画像ファイル指定;//ImageIconのicon2作成 18 19 ImageIcon icon3 = new ImageIcon 20 ("C:\Users\miyab\Desktop\シューティングゲーム\画像ファイル\敵機.png");//敵機の画像ファイル指定;//ImageIconのicon3作成 21 22 JLabel ziki;//自機作成 23 JLabel zikizahyou;//自機の座標作成 24 JLabel zikidamazahyou;////自機弾の座標作成 25 JLabel zikidama;//自機弾作成 26 27 JLabel teki1;//敵機1作成 28 JLabel teki1zahyou;//敵機1の座標作成 29 30 JPanel panel;//panel作成 31 32 Timer timer;//timer作成 33 34 public static void main(String[] args){ 35 36 MyGame frame = new MyGame();//ウィンドウを内部的に作成 37 frame.setSize(900, 550);//ウィンドウサイズ設定 38 frame.setTitle("シューティングゲーム"); 39 frame.setLocationRelativeTo(null);//ウィンドウの位置を中央に設定 40 41 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 42 //ウィンドウを×で閉じるようにする設定 43 44 frame.setVisible(true);//ウィンドウを可視化 45 46 } 47 48 MyGame(){ 49 50 panel = new JPanel();//panel設定 51 panel.setLayout(null);//レイアウトマネージャー無効化 52 53 ziki = new JLabel(icon1);//JLabelに自機の画像ファイル設定 54 zikizahyou = new JLabel();//自機の座標を入れる 55 zikidamazahyou = new JLabel();//自機の弾の座標を入れる 56 zikidama = new JLabel(icon2);//JLabelに自機の弾の画像ファイル設定 57 58 teki1 = new JLabel(icon3);//JLabelに敵機の画像ファイル設定 59 teki1zahyou = new JLabel();//敵機の座標を入れ 60 61 ziki.setBounds(zikiX, zikiY, 80, 40);//zikiのサイズと座標設定 62 zikizahyou.setText("自機 "+"X座標:"+zikiX+" Y座標:"+zikiY);//自機の座標を設定 63 zikizahyou.setBounds(5, 5, 200, 15);//自機の座標の座標とサイズを設定 64 zikidamazahyou.setText("自機の弾 "+"X座標:"+zikidamaX+" Y座標:"+zikidamaY);//自機の座標を設定 65 zikidamazahyou.setBounds(5, 17, 200, 15);//自機の座標の座標とサイズを設定 66 67 teki1.setBounds(teki1X, teki1Y, 40, 20);//teki1のサイズと座標設定 68 teki1zahyou.setText("敵機1 "+"X座標:"+teki1X+" Y座標:"+teki1Y);//自機の座標を設定 69 teki1zahyou.setBounds(5, 30, 200, 15);//自機の座標の座標とサイズを設定 70 71 timer = new Timer(10, this);//タイマーの間隔 72 73 panel.add(ziki);//自機画像をpanelに追加 74 panel.add(zikizahyou);//自機の座標を画面に表示 75 panel.add(zikidamazahyou);//自機の弾の座標を画面に表示 76 77 panel.add(teki1);//敵機を追加 78 panel.add(teki1zahyou);//敵機1の座標を画面に表示 79 80 pack();//??? 81 82 getContentPane().add(panel, BorderLayout.CENTER);//??? 83 84 enableEvents(java.awt.AWTEvent.KEY_EVENT_MASK);//キーイベントの有効化 85 86 addMouseMotionListener(this);//マウスの動きの感知を有効化 87 88 } 89 90 protected void processKeyEvent(java.awt.event.KeyEvent e){//キーイベントの関数 91 92 if(e.getID() == java.awt.event.KeyEvent.KEY_PRESSED){ 93 94 if(e.getKeyCode() == java.awt.event.KeyEvent.VK_A){ 95 96 if(zikidama.getParent() == panel){ 97 98 //zikidamaがpanelにある時は何もしない 99 100 }else{ 101 102 zikidamaX = zikiX-10;//zikidamaXを初期化 103 zikidamaY = zikiY;//zikidamaYを初期化 104 105 zikidama.setBounds(zikidamaX, zikidamaY, 20, 20);//自機の弾のサイズと座標を設定 106 panel.add(zikidama);//panelにzikidamaを追加 107 108 } 109 timer.start();//タイマースタート 110 111 } 112 113 } 114 } 115 116 public void actionPerformed(ActionEvent e){ 117 118 if(zikidamaX <= 0){ 119 120 timer.stop();//timerストップ 121 panel.remove(zikidama);//panelからzikidama削除 122 panel.repaint();//panelを更新 123 124 zikidamaX = zikiX-10;//zikidamaXを初期化 125 zikidamaY = zikiY;//zikidamaYを初期化 126 zikidama.setBounds(zikidamaX, zikidamaY, 20, 20);//自機の弾のサイズと座標を設定 127 128 }else{ 129 130 zikidamaX -= 15;//zikidamaXを-15 131 zikidama.setLocation(zikidamaX,zikidamaY);//座標を再設定 132 zikidamazahyou.setText("自機の弾 "+"X座標:"+zikidamaX+" Y座標:"+zikidamaY); 133 //座標表示を更新 134 135 } 136 137 if(zikidamaX >= teki1X-10 && zikidamaX <= teki1X+10 && 138 zikidamaY >= teki1Y-10 && zikidamaY <= teki1Y+10 && 139 teki1.getParent() == panel){ 140 141 timer.stop();//タイマーストップ 142 panel.remove(zikidama);//zikidama削除 143 panel.remove(teki1);//teki1削除 144 panel.repaint();//panel更新 145 146 } 147 148 } 149 150 public void mouseMoved(MouseEvent e){ 151 152 Point point = e.getPoint(); 153 zikiX = point.x-43;//マウスに画像のX座標の中心を合わせる 154 zikiY = point.y-45;//マウスに画像のY座標の中心を合わせる 155 156 if(zikiX <= 0){//座標が画面外に行ったら左端に戻す 157 158 zikiX = 0;//zikiのX座標を0に設定 159 160 } 161 162 if(zikiX >= 804){//座標が画面外に行ったら右端に戻す 163 164 zikiX = 804;//zikiのX座標を804に設定 165 166 } 167 168 if(zikiY <= 1){//座標が画面外に行ったら上端に戻す 169 170 zikiY = 1;//zikiのY座標を1に設定 171 172 } 173 174 if(zikiY >= 471){//座標が画面外に行ったら下端に戻す 175 176 zikiY = 471;//zikiのY座標を471に設定 177 178 } 179 180 ziki.setLocation(zikiX,zikiY);//座標を再設定 181 zikizahyou.setText("自機 "+"X座標:"+zikiX+" Y座標:"+zikiY);//座標表示を更新 182 183 } 184 185 public void mouseDragged(MouseEvent e){ 186 187 //マウスがドラッグされたときに呼び出される 188 189 } 190 191}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fiveHundred

2017/10/14 05:47

あまりにも情報が少なすぎます。具体的な情報やソースコードを提示してください。
fiveHundred

2017/10/14 07:52

追記されたようですが、まだ情報が足りません。どのようなものでメニューのUIやシューティングゲームを作ったのでしょうか?。また、メニューのクラスとシューティングゲームのクラスがどのようになっているのか分からないので、この2点のソースコードを記載してください。
guest

回答1

0

ベストアンサー

MyGameやMyGame2で継承しているJFrameは、ウィンドウを表すクラスです。
そのため、同じウィンドウ内でメニュー画面とゲーム画面を切り替える、という方法を使いたいのであれば、代わりにJPanelを継承するのがいいのではないかと思います。
そうすれば、最初はメニュー画面のパネルを表示し、「ゲーム開始」ボタンを押されたら、メニュー画面のパネルを非表示にしてゲーム画面のパネルを表示する、ということが出来ます。

そうではなく、別ウィンドウでゲームを立ち上げるというのであれば、MyGameのmainメソッドを別の名前に変更し、それをMyGame2から呼べばいいと思います。

投稿2017/10/14 09:56

fiveHundred

総合スコア9774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Alpa

2017/10/14 10:24

なるほどそんな方法があったんですね!! ありがとうございます!! 頑張ってやってみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問