質問編集履歴
2
コードの変更
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,11 +1,222 @@
|
|
1
1
|
```java
|
2
|
+
import javax.swing.*;//swingのimport
|
2
|
-
|
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
|
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
|
-
|
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
コードの追記
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
|
なかなかうまくいきません
|