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

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

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

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

Q&A

解決済

1回答

1294閲覧

JAVA spaceを押しても次の画面に映らない

117894552

総合スコア2

Java

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

1グッド

0クリップ

投稿2021/06/02 20:06

前提・実現したいこと

javaでshootinggameを作っています。
今Spaceを押したら次の画面(GAME)に移らせたい

発生している問題・エラーメッセージ

エラーは出ていない

該当のソースコード

Java

1Shooting 2 3import java.awt.Color; 4import java.awt.Font; 5import java.awt.FontMetrics; 6import java.awt.Graphics; 7import java.awt.event.KeyEvent; 8 9import javax.swing.*; 10 11public class Shooting { 12 13 public static ShootingFrame shootingFrame; //変数の設定(どこからでも使えるように) 14 public static boolean loop; //変数でループを終われるように 15 16 public static void main(String[] args) { 17 18 shootingFrame = new ShootingFrame(); //フレーム生成 19 loop = true; 20 21 //ゲームの開始 22 Graphics gra = shootingFrame.panel.image.getGraphics(); 23 24 //FPS 25 long startTime; 26 long fpsTime = 0; 27 int fps = 30; 28 int FPS = 0; 29 int FPSCount = 0; 30 31 EnumShootingScreen screen = EnumShootingScreen.START; 32 33 while (loop) { 34 if ((System.currentTimeMillis() - fpsTime) >= 1000) { 35 36 fpsTime = System.currentTimeMillis(); 37 FPS = FPSCount; 38 FPSCount = 0; 39 40 } 41 FPSCount++; 42 43 startTime = System.currentTimeMillis(); 44 45 gra.setColor(Color.WHITE); //背景色 46 gra.fillRect(0, 0, 500, 500); 47 48 switch (screen) { 49 case START: 50 51 gra.setColor(Color.BLACK); //描画色 52 53 Font font = new Font("SansSerif", Font.PLAIN, 50); 54 gra.setFont(font); 55 FontMetrics metrics = gra.getFontMetrics(font); 56 gra.drawString("Shooting", 250 - (metrics.stringWidth("Shooting") / 2), 100); 57 58 font = new Font("SansSerif", Font.PLAIN, 20); 59 gra.setFont(font); 60 metrics = gra.getFontMetrics(font); 61 gra.drawString("Press SPACE to Start", 250 - (metrics.stringWidth("Press SPACE to Start") / 2), 160); 62 63 if (Keyboard.isKeyPressed(KeyEvent.VK_SPACE)) { 64 screen = EnumShootingScreen.GAME; //画面遷移 65 } 66 67 break; 68 69 case GAME: 70 break; 71 72 case GAMEOVER: 73 break; 74 75 } 76 77 gra.setColor(Color.BLACK); 78 gra.setFont(new Font("SansSerif", Font.PLAIN, 10)); 79 gra.drawString(FPS + "FPS", 0, 470); 80 81 shootingFrame.panel.draw(); //ブァッフアした結果を表示する関数の呼び出し 82 83 try { 84 long runTime = System.currentTimeMillis() - startTime; 85 if (runTime < (1000 / fps)) { 86 Thread.sleep((1000 / fps) - (runTime)); 87 } 88 89 } catch (InterruptedException e) { 90 e.printStackTrace(); 91 } 92 System.out.println(System.currentTimeMillis() - startTime); //FPSの計測時間  実行と待機時間の表示 93 } 94 } 95} 96 97ShootingFrame 98package game; 99 100import java.awt.event.WindowAdapter; 101import java.awt.event.WindowEvent; 102 103import javax.swing.*; 104 105public class ShootingFrame extends JFrame { 106 107 //drawを変数に 108 public ShootingPanel panel; 109 110 public ShootingFrame() { 111 112 //インスタンス生成 113 panel = new ShootingPanel(); 114 this.add(panel); 115 116 this.addWindowListener(new WindowAdapter() { 117 @Override 118 public void windowClosed(WindowEvent e) { 119 super.windowClosed(e); 120 Shooting.loop = true; 121 } 122 }); 123 124 this.addKeyListener(new Keyboard()); //インスタンス生成 キーボード入力が受け取れる 125 126 this.setDefaultCloseOperation(EXIT_ON_CLOSE); //×を押したときの処理 127 this.setTitle("Shooting"); //タイトル設定 128 this.setSize(500, 500); // ウィンドウの大きさ 129 this.setLocationRelativeTo(null); //中央に出現 130 this.setResizable(false); //リサイズを不可能に 131 this.setVisible(true); //ウィンドウの表示 132 133 } 134} 135 136KeyBoard 137package game; 138 139import java.awt.event.KeyAdapter; 140import java.awt.event.KeyEvent; 141import java.util.ArrayList; 142 143public class Keyboard extends KeyAdapter { 144 145 private static ArrayList<Integer> pressedButtons = new ArrayList<>(); 146 147 public static boolean isKeyPressed(int keyCode) { //キーが押されているか判断 148 return pressedButtons.contains(keyCode); 149 } 150 151 public void KeyPressed(KeyEvent e) { 152 super.keyPressed(e); 153 if (!pressedButtons.contains(e.getKeyCode())) 154 pressedButtons.add(e.getKeyCode()); 155 156 } 157 158 public void KeyReleased(KeyEvent e) { 159 super.keyReleased(e); 160 pressedButtons.remove((Integer) e.getKeyCode()); 161 } 162} 163ShootingPanel 164package game; 165 166import javax.swing.*; 167import java.awt.Graphics; 168import java.awt.image.BufferedImage; 169 170//ゲーム画面を表示するクラス 171public class ShootingPanel extends JPanel { 172 173 public BufferedImage image; 174 175 public ShootingPanel() { 176 super(); 177 //変数初期化 178 this.image = new BufferedImage(500, 500, BufferedImage.TYPE_INT_RGB); 179 } 180 181 @Override 182 public void paint(Graphics g) { 183 super.paint(g); 184 g.drawImage(image, 0, 0, this); //ペイントの描画を表示させる 185 } 186 187 //結果を表示させる関数 188 public void draw() { 189 this.repaint(); 190 } 191} 192 193EnumShootingScreen 194package game; 195 196public enum EnumShootingScreen { 197 198 START, GAME, GAMEOVER, 199}

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

eclipse使用
よろしくお願い致します。

TN8001👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

Java

1public void KeyPressed(KeyEvent e) {} 2public void KeyReleased(KeyEvent e) {}

メソッド名の先頭が大文字です。
こういったうっかりミスを防ぐため、@Overrideを付けるようにしましょう。

Java

1@Override public void keyPressed(KeyEvent e) {} 2@Override public void keyReleased(KeyEvent e) {}

投稿2021/06/03 16:18

TN8001

総合スコア9862

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

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

117894552

2021/06/03 21:16

ありがとうございます。無事動きました。 基礎をおろそかにしていました。 これからは絶対に忘れないようにいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問