こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

画面遷移について困ってます。

TITLE →(Enterクリック)→ GAME
というふうにしたいのですが…できません><どこがダメなんでしょうか。


import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;
import javax.swing.JPanel;
public class JavaGame3 {
public static void main(String age[]) {
JFrame frame = new JFrame();
frame.setTitle("ゲームフレーム");
frame.setSize(500, 550);
frame.setLocation(1000, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
Testpanel panel = new Testpanel();
frame.add(panel);
}
}
class Testpanel extends JPanel implements KeyListener {
static final int TITLE = 0; // タイトルモード
static final int GAME = 1; // ゲームモード
int mode;
public Testpanel() {
setBackground(Color.black);
addKeyListener(this);
mode = TITLE; // 最初はタイトル画面
}
private void drawTitle(Graphics g) {
g.setColor(Color.blue);
g.drawString("test1", 165, 150);
g.setColor(Color.white);
g.drawString("Hit Enter Key!", 150, 350);
}
private void drawGameOver(Graphics g) {
g.setColor(Color.white);
g.fillRect(5,120,240,30);
g.setColor(Color.red);
g.drawString("test2", 85, 140);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
if(mode == TITLE) {
drawTitle(g);
} else if(mode == GAME) {
drawGameOver(g);
}
}
public void keyPressed(KeyEvent e){
int key = e.getKeyCode();
if(mode == TITLE) {
switch(key) {
case KeyEvent.VK_ENTER:
mode = GAME;
break;
}
}repaint();
}
public void keyReleased(KeyEvent e){}

public void keyTyped(KeyEvent e){}
}

投稿日時 - 2014-04-21 23:40:20

QNo.8563930

困ってます

質問者が選んだベストアンサー

オリジナルのソースを以下から入手してみてください。

http://www.cuc.ac.jp/~miyata/classes/prg2.H24/13/

単純に
startGame();
が無いだけのようですが。


◆◆重要◆◆
デバッグのためにどのように、どこまで動作しているかを確認すべきです。各メソッドの先頭とか分岐のところに
System.out.println("drawTitle:"+g);
とか
System.out.println("keyPressed:"+s);
とか入れて、どの順番に、どこまで動作しているかを確認するべきです。さすればどこに問題があるのかわかるようになります。
問題がどこにあるのかを見つけなければ机上の空論ばかりで解決にはなかなか至りません。見つけるためにはデバッグ文を入れるのが一番です。

とにかく「fact finding」です。

今回、ソースを見つけたのは1つ前の質問のurlからです。この手のところは、scene.htmlをとってみるとか、13/scene.htmlをとってみるとかすれば上位の情報が取得できる可能性が高いです。

p.s.
オリジナルのソースからなのですが、public void paintComponentにはなれないほうが良いかも。
protected void paintComponentが正しいはずです。

投稿日時 - 2014-04-22 15:12:41

お礼

詳しくありがとうござます!

投稿日時 - 2014-04-22 16:45:57

このQ&Aは役に立ちましたか?

12人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問