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

質問編集履歴

1

変更したコードの記載

2017/10/01 11:33

投稿

Alpa
Alpa

スコア80

title CHANGED
File without changes
body CHANGED
@@ -149,4 +149,159 @@
149
149
  }
150
150
 
151
151
 
152
+ ```
153
+
154
+ ###変更後
155
+
156
+ このような使い方でいいでしょうか?
157
+ もし間違っているなら
158
+ しつこいですが
159
+ 教えていただけないでしょうか?
160
+ 理解力がなくてすいません
161
+
162
+ ```JAVA
163
+ import javax.swing.JFrame;
164
+ import javax.swing.JPanel;
165
+ import javax.swing.JLabel;
166
+ import javax.swing.ImageIcon;
167
+ import javax.swing.Timer;
168
+
169
+ import java.awt.BorderLayout;
170
+ import java.awt.event.KeyEvent;
171
+
172
+ public class MyGame extends JFrame{
173
+
174
+ int zikiX[] = {750};//自機のX座標
175
+ int zikiY[] = {225};//自機のY座標
176
+
177
+ int zikidamaX[] = {zikiX[0]-30};//自機の弾のX座標
178
+ int zikidamaY[] = {zikiY[0]};//自機の弾のY座標
179
+
180
+ ImageIcon icon1 = new ImageIcon
181
+ ("C:\Users\miyab\Desktop\シューティングゲーム\自機.png");//画像ファイル指定
182
+ ImageIcon icon2 = new ImageIcon
183
+ ("C:\Users\miyab\Desktop\シューティングゲーム\自機弾.png");
184
+
185
+ JLabel ziki = new JLabel(icon1);//JLabelに自機の画像ファイル設定
186
+ JLabel zikizahyou = new JLabel();//自機の座標を生成
187
+ JLabel zikidama = new JLabel(icon2);//JLabelに自機の弾の画像ファイル設定
188
+
189
+ JPanel panel = new JPanel();//panel設定
190
+
191
+ public static void main(String[] args){
192
+
193
+ MyGame frame = new MyGame();//ウィンドウを内部的に作成
194
+ frame.setSize(900, 550);//ウィンドウサイズ設定
195
+ frame.setTitle("シューティングゲーム");
196
+ frame.setLocationRelativeTo(null);//ウィンドウの位置を中央に設定
197
+
198
+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
199
+ //ウィンドウを×で閉じるようにする設定
200
+
201
+ frame.setVisible(true);//ウィンドウを可視化
202
+
203
+ }
204
+
205
+ MyGame(){
206
+
207
+ panel.setLayout(null);//レイアウトマネージャー無効化
208
+
209
+ ziki.setBounds(zikiX[0], zikiY[0], 80, 40);//zikiのサイズと座標設定
210
+ zikizahyou.setText("X座標:"+zikiX[0]+" Y座標:"+zikiY[0]);//自機の座標を設定
211
+ zikizahyou.setBounds(5, 5, 150, 15);//自機の座標の座標とサイズを設定
212
+
213
+ panel.add(ziki);//自機画像をpanelに追加
214
+ panel.add(zikizahyou);//自機の座標を画面に表示
215
+
216
+ getContentPane().add(panel, BorderLayout.CENTER);//???
217
+
218
+ enableEvents(java.awt.AWTEvent.KEY_EVENT_MASK);//キーイベントの有効化
219
+
220
+ }
221
+
222
+ protected void processKeyEvent(java.awt.event.KeyEvent e){//キーイベントの関数
223
+
224
+ if(e.getID() == java.awt.event.KeyEvent.KEY_PRESSED){
225
+
226
+ if(e.getKeyCode() == java.awt.event.KeyEvent.VK_LEFT){
227
+
228
+ zikiX[0] -= 10;//座標を左に移動
229
+ if(zikiX[0] <= 0){//座標が画面外に行ったら左端に戻す
230
+
231
+ zikiX[0] = 0;//zikiのX座標を0に設定
232
+
233
+ }
234
+ ziki.setLocation(zikiX[0],zikiY[0]);//座標を再設定
235
+ zikizahyou.setText("X座標:"+zikiX[0]+" Y座標:"+zikiY[0]);//座標表示を更新
236
+
237
+ }
238
+
239
+ if(e.getKeyCode() == java.awt.event.KeyEvent.VK_RIGHT){
240
+
241
+ zikiX[0] += 10;//座標を右に移動
242
+ if(zikiX[0] >= 804){//座標が画面外に行ったら右端に戻す
243
+
244
+ zikiX[0] = 804;//zikiのX座標を804に設定
245
+
246
+ }
247
+ ziki.setLocation(zikiX[0],zikiY[0]);//座標を再設定
248
+ zikizahyou.setText("X座標:"+zikiX[0]+" Y座標:"+zikiY[0]);//座標表示を更新
249
+
250
+ }
251
+
252
+ if(e.getKeyCode() == java.awt.event.KeyEvent.VK_UP){
253
+
254
+ zikiY[0] -= 10;//座標を上に移動
255
+ if(zikiY[0] <= 1){//座標が画面外に行ったら上端に戻す
256
+
257
+ zikiY[0] = 1;//zikiのY座標を1に設定
258
+
259
+ }
260
+ ziki.setLocation(zikiX[0],zikiY[0]);//座標を再設定
261
+ zikizahyou.setText("X座標:"+zikiX[0]+" Y座標:"+zikiY[0]);//座標表示を更新
262
+
263
+ }
264
+
265
+ if(e.getKeyCode() == java.awt.event.KeyEvent.VK_DOWN){
266
+
267
+ zikiY[0] += 10;//座標を下に移動
268
+ if(zikiY[0] >= 471){//座標が画面外に行ったら下端に戻す
269
+
270
+ zikiY[0] = 471;//zikiのY座標を471に設定
271
+
272
+ }
273
+ ziki.setLocation(zikiX[0],zikiY[0]);//座標を再設定
274
+ zikizahyou.setText("X座標:"+zikiX[0]+" Y座標:"+zikiY[0]);//座標表示を更新
275
+
276
+ }
277
+
278
+ if(e.getKeyCode() == java.awt.event.KeyEvent.VK_A){
279
+
280
+ zikidama.setBounds(zikidamaX[0], zikidamaY[0], 20, 20);//自機の弾のサイズと座標を設定
281
+ panel.add(zikidama);//panelにzikidamaを追加
282
+
283
+ System.out.println("X座標:"+zikidamaX[0]);//座標確認用
284
+ System.out.println("Y座標:"+zikidamaY[0]);
285
+
286
+ }
287
+
288
+ }
289
+ }
290
+
291
+ void Timer(){
292
+
293
+ Timer dama = new Timer(10, event ->{//timerを設定
294
+
295
+ zikidamaX[0] -= 1;//zikidamaX[0]の座標を-1する
296
+ zikidama.setLocation(zikidamaX[0], zikidamaY[0]);
297
+ if(zikidamaX[0] <= 0){
298
+
299
+
300
+
301
+ }
302
+
303
+ });
304
+ }
305
+
306
+ }
152
307
  ```