teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

漠然とした内容から細かく記載

2015/07/31 07:51

投稿

hikatyu1029
hikatyu1029

スコア7

title CHANGED
File without changes
body CHANGED
@@ -1,15 +1,17 @@
1
1
  ゲームを作っているのですがスタート画面の導入方法が全く分かりません。
2
2
  いまいちフレームやパネルに関する理解が追いついていない現状なのでわかりやすいサイトなどがあればURLを教えていただけるとありがたいです。
3
3
 
4
- 上のコードが作ってるゲームのメインの部分なのですがどのようにすればスタート画面を導入できるのでしょうか?
5
- 下がパネルです。
6
4
  知識不足で申し訳ないのですがご回答お待ちしております。
7
5
 
6
+ まず、MarioLikeクラスを実行してコンストラクタ内でスタート画面に移行します。
7
+ そのスタート画面のプログラムが下にのせてあります。
8
8
 
9
+ スタート画面内でボタンがクリックされたときに次のMainPanelの動作に行きたいのですがどうすればよいのでしょうか??
10
+ できれば画面内にclick hearと表示してクリックされたら次のMainPanelが動くようなプログラムにしたいです。
9
11
  ```lang-java
10
12
  import java.awt.Container;
11
-
12
13
  import javax.swing.JFrame;
14
+ import javax.swing.*;
13
15
 
14
16
  public class MarioLike extends JFrame {
15
17
  public MarioLike() {
@@ -18,6 +20,11 @@
18
20
  // サイズ変更不可
19
21
  setResizable(false);
20
22
 
23
+ //start gamen
24
+ StartPanel panel1 = new StartPanel():
25
+ Container cont = getContentPane();
26
+ cont.add(panel1);
27
+
21
28
  // メインパネルを作成してフレームに追加
22
29
  MainPanel panel = new MainPanel();
23
30
  Container contentPane = getContentPane();
@@ -37,147 +44,27 @@
37
44
  ```
38
45
 
39
46
 
40
- ``` lang-java
41
- import java.awt.Color;
42
- import java.awt.Dimension;
43
- import java.awt.Graphics;
44
- import java.awt.event.KeyEvent;
45
- import java.awt.event.KeyListener;
46
47
 
48
+ ```lang-java
49
+ import java.awt.*;
47
- import javax.swing.JPanel;
50
+ import javax.swing.*;
48
51
 
49
- public class MainPanel extends JPanel implements Runnable, KeyListener {
52
+ public class StartPanel extends JPanel{
50
-
51
- public static final int WIDTH = 640;
53
+ public static final int WIDTH = 640;
52
54
  public static final int HEIGHT = 480;
55
+ private JButton button = new JButton("click here");
53
56
 
54
- private Player player;
57
+ public StartPanel(){
58
+ setPreferredSize(new Dimension(WIDTH, HEIGHT));
55
- private Ball ball;
59
+ add(button);
60
+ button.addActionListener(new MyListener());
61
+ }
56
62
 
57
- // キーの状態(押されているか、押されてないか)
58
- private boolean leftPressed;
59
- private boolean rightPressed;
63
+ private class MyListener implements ActionListener{
60
- private boolean topPressed;
64
+ public void actionPerfomed(ActionEvent e){
61
- private boolean downPressed;
65
+
62
- // ゲームループ用スレッド
66
+ }
67
+ }
63
68
 
64
- private Thread gameLoop;
65
-
66
- public MainPanel() {
67
- // パネルの推奨サイズを設定、pack()するときに必要
68
- setPreferredSize(new Dimension(WIDTH, HEIGHT));
69
- // パネルがキー入力を受け付けるようにする
70
- setFocusable(true);
71
-
72
- // プレイヤーを作成
73
- player = new Player(0, HEIGHT - Player.HEIGHT);
74
- ball = new Ball();
75
-
76
- // キーイベントリスナーを登録
77
- addKeyListener(this);
78
-
79
- // ゲームループ開始
80
- gameLoop = new Thread(this);
81
- gameLoop.start();
82
- }
83
-
84
- /**
85
- * ゲームループ
86
- */
87
- public void run() {
88
- while (true) {
89
- if (leftPressed) {
90
- // 左キーが押されていれば左向きに加速
91
- player.accelerateLeft();
92
- } else if (rightPressed) {
93
- // 右キーが押されていれば右向きに加速
94
- player.accelerateRight();
95
- } else if (topPressed){
96
- player.acceleratetop();
97
- } else if (downPressed){
98
- player.acceleratebotom();
99
- }else {
100
- // 何も押されてないときは停止
101
- player.stop();
102
- }
103
-
104
- // プレイヤーの状態を更新
105
- player.update();
106
-
107
- // 再描画
108
- repaint();
109
-
110
- // 休止
111
- try {
112
- Thread.sleep(20);
113
- } catch (InterruptedException e) {
114
- e.printStackTrace();
115
- }
116
- }
117
- }
118
-
119
- /**
120
- * 描画処理
121
- *
122
- * @param 描画オブジェクト
123
- */
124
- public void paintComponent(Graphics g) {
125
- super.paintComponent(g);
126
-
127
- // 背景を黒で塗りつぶす
128
- g.setColor(Color.BLACK);
129
- g.fillRect(0, 0, getWidth(), getHeight());
130
-
131
- // プレイヤーを描画
132
- player.draw(g);
133
- ball.draw(g);
134
- }
135
-
136
- /**
137
- * キーが押されたらキーの状態を「押された」に変える
138
- *
139
- * @param e キーイベント
140
- */
141
- public void keyPressed(KeyEvent e) {
142
- int key = e.getKeyCode();
143
-
144
- if (key == KeyEvent.VK_LEFT) {
145
- leftPressed = true;
146
- }
147
- if (key == KeyEvent.VK_RIGHT) {
148
- rightPressed = true;
149
- }
150
- if (key == KeyEvent.VK_UP) {
151
- topPressed = true;
152
- }
153
- if (key == KeyEvent.VK_DOWN) {
154
- downPressed = true;
155
- }
156
- }
157
-
158
- /**
159
- * キーが離されたらキーの状態を「離された」に変える
160
- *
161
- * @param e キーイベント
162
- */
163
- public void keyReleased(KeyEvent e) {
164
- int key = e.getKeyCode();
165
-
166
- if (key == KeyEvent.VK_LEFT) {
167
- leftPressed = false;
168
- }
169
- if (key == KeyEvent.VK_RIGHT) {
170
- rightPressed = false;
171
- }
172
- if (key == KeyEvent.VK_UP) {
173
- topPressed = false;
174
- }
175
- if (key == KeyEvent.VK_DOWN) {
176
- downPressed = false;
177
- }
178
- }
179
-
180
- public void keyTyped(KeyEvent e) {
181
- }
182
69
  }
183
70
  ```

2

タイトルみすを訂正

2015/07/31 07:51

投稿

hikatyu1029
hikatyu1029

スコア7

title CHANGED
@@ -1,1 +1,1 @@
1
- Javaでのゲームにスート画面を設置
1
+ Javaでのゲームにスート画面を設置
body CHANGED
File without changes

1

コードを追加しました

2015/07/31 07:22

投稿

hikatyu1029
hikatyu1029

スコア7

title CHANGED
File without changes
body CHANGED
@@ -1,9 +1,11 @@
1
1
  ゲームを作っているのですがスタート画面の導入方法が全く分かりません。
2
2
  いまいちフレームやパネルに関する理解が追いついていない現状なのでわかりやすいサイトなどがあればURLを教えていただけるとありがたいです。
3
3
 
4
- のコードが作ってるゲームのメインの部分なのですがどのようにすればスタート画面を導入できるのでしょうか?
4
+ のコードが作ってるゲームのメインの部分なのですがどのようにすればスタート画面を導入できるのでしょうか?
5
+ 下がパネルです。
5
6
  知識不足で申し訳ないのですがご回答お待ちしております。
6
7
 
8
+
7
9
  ```lang-java
8
10
  import java.awt.Container;
9
11
 
@@ -32,4 +34,150 @@
32
34
  }
33
35
  }
34
36
 
37
+ ```
38
+
39
+
40
+ ``` lang-java
41
+ import java.awt.Color;
42
+ import java.awt.Dimension;
43
+ import java.awt.Graphics;
44
+ import java.awt.event.KeyEvent;
45
+ import java.awt.event.KeyListener;
46
+
47
+ import javax.swing.JPanel;
48
+
49
+ public class MainPanel extends JPanel implements Runnable, KeyListener {
50
+
51
+ public static final int WIDTH = 640;
52
+ public static final int HEIGHT = 480;
53
+
54
+ private Player player;
55
+ private Ball ball;
56
+
57
+ // キーの状態(押されているか、押されてないか)
58
+ private boolean leftPressed;
59
+ private boolean rightPressed;
60
+ private boolean topPressed;
61
+ private boolean downPressed;
62
+ // ゲームループ用スレッド
63
+
64
+ private Thread gameLoop;
65
+
66
+ public MainPanel() {
67
+ // パネルの推奨サイズを設定、pack()するときに必要
68
+ setPreferredSize(new Dimension(WIDTH, HEIGHT));
69
+ // パネルがキー入力を受け付けるようにする
70
+ setFocusable(true);
71
+
72
+ // プレイヤーを作成
73
+ player = new Player(0, HEIGHT - Player.HEIGHT);
74
+ ball = new Ball();
75
+
76
+ // キーイベントリスナーを登録
77
+ addKeyListener(this);
78
+
79
+ // ゲームループ開始
80
+ gameLoop = new Thread(this);
81
+ gameLoop.start();
82
+ }
83
+
84
+ /**
85
+ * ゲームループ
86
+ */
87
+ public void run() {
88
+ while (true) {
89
+ if (leftPressed) {
90
+ // 左キーが押されていれば左向きに加速
91
+ player.accelerateLeft();
92
+ } else if (rightPressed) {
93
+ // 右キーが押されていれば右向きに加速
94
+ player.accelerateRight();
95
+ } else if (topPressed){
96
+ player.acceleratetop();
97
+ } else if (downPressed){
98
+ player.acceleratebotom();
99
+ }else {
100
+ // 何も押されてないときは停止
101
+ player.stop();
102
+ }
103
+
104
+ // プレイヤーの状態を更新
105
+ player.update();
106
+
107
+ // 再描画
108
+ repaint();
109
+
110
+ // 休止
111
+ try {
112
+ Thread.sleep(20);
113
+ } catch (InterruptedException e) {
114
+ e.printStackTrace();
115
+ }
116
+ }
117
+ }
118
+
119
+ /**
120
+ * 描画処理
121
+ *
122
+ * @param 描画オブジェクト
123
+ */
124
+ public void paintComponent(Graphics g) {
125
+ super.paintComponent(g);
126
+
127
+ // 背景を黒で塗りつぶす
128
+ g.setColor(Color.BLACK);
129
+ g.fillRect(0, 0, getWidth(), getHeight());
130
+
131
+ // プレイヤーを描画
132
+ player.draw(g);
133
+ ball.draw(g);
134
+ }
135
+
136
+ /**
137
+ * キーが押されたらキーの状態を「押された」に変える
138
+ *
139
+ * @param e キーイベント
140
+ */
141
+ public void keyPressed(KeyEvent e) {
142
+ int key = e.getKeyCode();
143
+
144
+ if (key == KeyEvent.VK_LEFT) {
145
+ leftPressed = true;
146
+ }
147
+ if (key == KeyEvent.VK_RIGHT) {
148
+ rightPressed = true;
149
+ }
150
+ if (key == KeyEvent.VK_UP) {
151
+ topPressed = true;
152
+ }
153
+ if (key == KeyEvent.VK_DOWN) {
154
+ downPressed = true;
155
+ }
156
+ }
157
+
158
+ /**
159
+ * キーが離されたらキーの状態を「離された」に変える
160
+ *
161
+ * @param e キーイベント
162
+ */
163
+ public void keyReleased(KeyEvent e) {
164
+ int key = e.getKeyCode();
165
+
166
+ if (key == KeyEvent.VK_LEFT) {
167
+ leftPressed = false;
168
+ }
169
+ if (key == KeyEvent.VK_RIGHT) {
170
+ rightPressed = false;
171
+ }
172
+ if (key == KeyEvent.VK_UP) {
173
+ topPressed = false;
174
+ }
175
+ if (key == KeyEvent.VK_DOWN) {
176
+ downPressed = false;
177
+ }
178
+ }
179
+
180
+ public void keyTyped(KeyEvent e) {
181
+ }
182
+ }
35
183
  ```