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

質問編集履歴

2

コードの変更

2017/11/25 18:07

投稿

Alpa
Alpa

スコア80

title CHANGED
File without changes
body CHANGED
@@ -1,11 +1,222 @@
1
1
  ```java
2
+ import javax.swing.*;//swingのimport
2
- JPanel panel = new JPanel();
3
+ import java.awt.*;//awtのimport
4
+ import java.awt.event.*;//awtのeventのimport
3
5
 
6
+ public class action extends JFrame implements ActionListener{
7
+
8
+ static action Frame;//Frame
9
+
10
+ JPanel Panel;//Panel
11
+
12
+ JLabel Player;//プレイヤーの画像が入ったJLabel
13
+ JLabel Block;//ブロックの画像が入ったJLabel
14
+
15
+ ImageIcon PlayerIcon;//プレイヤーの画像読み込み
4
- ImageIcon icon = new ImageIcon("./xxx");
16
+ ImageIcon BlockIcon;//ブロックの画像読み込み
17
+
18
+ Timer timer;
19
+
20
+ int PlayerX = 20;//プレイヤーのX座標
21
+ int PlayerY = 40;//プレイヤーのY座標
22
+
23
+ int BlockX = 0;//ブロックのX座標
24
+ int BlockY = 442;//ブロックのY座標
25
+
26
+ static boolean Jflag = false;//ジャンプ判定フラグ
27
+ static boolean UKflag = false;//ジャンプキー判定フラグ
28
+ static boolean LKflag = false;//左キー判定フラグ
29
+ static boolean RKflag = false;//右キー判定フラグ
30
+ static boolean Dflag = false;//デバック許可判定フラグ
31
+
32
+ static boolean f = true;//TESTフラグ
33
+ int start = 0;
34
+
35
+ public static void main(String args[]){
36
+
37
+ Frame = new action();
38
+
39
+ Frame.setSize(900, 500);//ウィンドウのサイズ設定(X, Y)
40
+ Frame.setTitle("アクションゲーム");//ウィンドウのタイトル
41
+ Frame.setLocationRelativeTo(null);//ウィンドウを画面の中央に表示する
42
+ Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//xで閉じるようにする
43
+ Frame.setVisible(true);//ウィンドウを可視化
44
+
45
+ }
46
+
47
+
48
+
49
+ action(){
50
+
51
+ timer = new Timer(10, this);//タイマー間隔設定
52
+
5
- Jlabel block = new JLabel(icon);
53
+ Panel = new JPanel();
54
+ Panel.setLayout(null);//レイアウトマネージャー無効化
55
+
56
+ PlayerIcon = new ImageIcon("./PlayerIcon.png");//プレイヤーの画像指定
57
+ BlockIcon = new ImageIcon("./BlockIcon.png");//ブロックの画像指定
58
+
59
+ Player = new JLabel(PlayerIcon);//プレイヤー画像設定
60
+ Player.setBounds(PlayerX, PlayerY, 20, 40);//プレイヤーの座標とサイズ設定
61
+
62
+ Block = new JLabel(BlockIcon);//ブロック画像設定
63
+ Block.setBounds(BlockX, BlockY, 20, 20);//ブロックの座標とサイズ設定
64
+
65
+ Panel.add(Player);//プレイヤー画像追加
66
+ Panel.add(Block);//ブロック画像追加
67
+
68
+ Container contentPane = getContentPane();//???
69
+ contentPane.add(Panel, BorderLayout.CENTER);//???
70
+
71
+ timer.start();//タイマースタート
72
+
73
+ while(f == true){
74
+
75
+ start += 1;
76
+
77
+ System.out.println(start);
78
+
79
+ if(start >= 1000){
80
+
81
+ break;
82
+
83
+ }
84
+
85
+ }
86
+
87
+ }
88
+
89
+
90
+
91
+ public void actionPerformed(ActionEvent e){//タイマーの処理
92
+
93
+ if(PlayerY < 399 && UKflag == false){//空中判定処理
94
+
95
+ Jflag = true;//ジャンプフラグをtrueにする
96
+
97
+ }else if(PlayerY >= 399){
98
+
99
+ Jflag = false;//ジャンプフラグをfalseにする
100
+
101
+ }
102
+
103
+ if(Jflag == true){//重力処理
104
+
105
+ PlayerY += 6;//プレイヤーのY座標を+3
106
+ Player.setBounds(PlayerX, PlayerY, 20, 40);//プレイヤーの座標再設定
107
+ Panel.repaint();//パネルを更新
108
+
109
+ }
110
+
111
+ if(UKflag == true){//ジャンプ処理
112
+
113
+ PlayerY -= 40;//プレイヤーのY座標を-40
114
+ Player.setBounds(PlayerX, PlayerY, 20, 40);//プレイヤーの座標再設定
115
+ Panel.repaint();//パネルを更新
116
+
117
+ if(PlayerY <= 349){//もしPlayerYが359以下なら
118
+
119
+ Jflag = true;//ジャンプフラグをtrueにする
120
+ UKflag = false;//ジャンプキー判定フラグをfalseにする
121
+
122
+ }
123
+
124
+ }
125
+
126
+ if(LKflag == true){//左移動処理
127
+
128
+ PlayerX -= 4;//プレイヤーのX座標を-4
129
+ Player.setBounds(PlayerX, PlayerY, 20, 40);//プレイヤーの座標再設定
130
+ Panel.repaint();//パネルを更新
131
+
132
+ if(PlayerX < 0){//もしPlayerXが0未満なら
133
+
134
+ PlayerX = 0;//プレイヤーのX座標を0に設定
135
+ Player.setBounds(PlayerX, PlayerY, 20, 40);//プレイヤーの座標再設定
136
+ Panel.repaint();//パネルを更新
137
+
138
+ }
139
+
140
+ LKflag = false;//左キー判定フラグをfalseにする
141
+
142
+ }
143
+
144
+ if(RKflag == true){//右移動処理
145
+
146
+ PlayerX += 4;//プレイヤーのX座標を+4
147
+ Player.setBounds(PlayerX, PlayerY, 20, 40);//プレイヤーの座標再設定
148
+ Panel.repaint();//パネルを更新
149
+
150
+ if(PlayerX >= 864){//もしPlayerXが864以上なら
151
+
152
+ PlayerX = 864;//プレイヤーのX座標を864に設定
153
+ Player.setBounds(PlayerX, PlayerY, 20, 40);//プレイヤーの座標再設定
154
+ Panel.repaint();//パネルを更新
155
+
156
+ }
157
+
158
+ RKflag = false;//右キー判定フラグをfalseにする
159
+
160
+ }
161
+
162
+ }
163
+
164
+
165
+
166
+ protected void processKeyEvent(KeyEvent e){//キー入力の処理
167
+
168
+ if(e.getID() == KeyEvent.KEY_PRESSED){
169
+
170
+ if(e.getKeyCode() == KeyEvent.VK_UP && Jflag == false){//ジャンプキー判定
171
+
172
+ UKflag = true;//ジャンプキー判定フラグをfalseにする
173
+
174
+ }
175
+
176
+ if(e.getKeyCode() == KeyEvent.VK_LEFT){//左キー判定
177
+
178
+ LKflag = true;//左キー判定フラグをfalseにする
179
+
180
+ }
181
+
182
+ if(e.getKeyCode() == KeyEvent.VK_RIGHT){//右キー判定
183
+
184
+ RKflag = true;//右キー判定フラグをfalseにする
185
+
186
+ }
187
+
188
+ if(e.getKeyCode() == KeyEvent.VK_D && Dflag == true){//デバックキー判定
189
+
190
+ System.out.println("\nJflag:" + Jflag);
191
+ System.out.println("UKflag:" + UKflag);
192
+ System.out.println("LKflag:" + LKflag);
193
+ System.out.println("RKflag:" + RKflag);
194
+ System.out.println("Dflag:" + Dflag);
195
+ System.out.println("PlayerX座標:" + PlayerX);
196
+ System.out.println("PlayerY座標:" + PlayerY + "\n");
197
+
198
+ }
199
+
200
+ if(e.getKeyCode() == KeyEvent.VK_S && Dflag == false){//デバック許可キー判定
201
+
202
+ Dflag = true;//デバック許可キー判定フラグをtrueにする
203
+ System.out.println("デバック機能を有効にしました");//デバック許可メッセージ出力
204
+
205
+ }
206
+
207
+ if(e.getKeyCode() == KeyEvent.VK_E && Dflag == true){//終了キー判定
208
+
209
+ Frame.dispose();//Frame削除
210
+ System.out.println("正常に終了しました");//終了メッセージ表示
211
+
212
+ }
213
+
214
+ }
215
+
216
+ }
217
+
218
+ }
6
219
 
7
- panel.add(block);
8
-
9
220
  ```
10
221
 
11
222
  このように設定した画像をたくさん表示したいのですが

1

コードの追記

2017/11/25 18:07

投稿

Alpa
Alpa

スコア80

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,13 @@
1
+ ```java
2
+ JPanel panel = new JPanel();
3
+
1
4
  ImageIcon icon = new ImageIcon("./xxx");
2
5
  Jlabel block = new JLabel(icon);
3
6
 
7
+ panel.add(block);
8
+
9
+ ```
10
+
4
11
  このように設定した画像をたくさん表示したいのですが
5
12
  座標を変えて再表示したりしても
6
13
  なかなかうまくいきません