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

質問編集履歴

5

試したことを追記

2018/10/20 08:02

投稿

Alpa
Alpa

スコア80

title CHANGED
File without changes
body CHANGED
@@ -14,7 +14,13 @@
14
14
  ・パッケージ名がクラス名と被らないようにした
15
15
  ・public修飾子をクラスにつけた
16
16
  ・インポートをした
17
+ ・コンパイル時にjavac *.javaでコンパイルした
17
18
 
19
+ javac *.javaでコンパイルすると
20
+ コンパイルはできたのですが
21
+ クラスがないといわれて
22
+ 実行ができませんでした
23
+
18
24
  下のコードは実際に書いたコードです
19
25
  このほかのクラスも同じパッケージにしています
20
26
  エラーが発生する場所はFileOperationクラスの作成とMapクラスの作成や使用の部分です

4

追記

2018/10/20 08:02

投稿

Alpa
Alpa

スコア80

title CHANGED
File without changes
body CHANGED
@@ -6,6 +6,7 @@
6
6
  ### 発生している問題・エラーメッセージ
7
7
 
8
8
  同じパッケージ内のクラスがインスタンス化できない
9
+ パッケージをつける前はコンパイルも通り実行できました
9
10
 
10
11
  ### 試したこと
11
12
 

3

タイトルの変更等の追記

2018/10/20 07:54

投稿

Alpa
Alpa

スコア80

title CHANGED
@@ -1,1 +1,1 @@
1
- 同じパッケージ内のクスが使えな
1
+ たくさんあるエーを解決した
body CHANGED
@@ -1,6 +1,7 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- 同じパッケージ内のクラスを使いたい
3
+ 同じパッケージ内のクラスを使いたい
4
+ 19個エラーが出てしまっているのでどうにかしたい
4
5
 
5
6
  ### 発生している問題・エラーメッセージ
6
7
 

2

エラー内容を追記

2018/10/20 07:51

投稿

Alpa
Alpa

スコア80

title CHANGED
File without changes
body CHANGED
@@ -335,6 +335,27 @@
335
335
  }
336
336
  ```
337
337
 
338
+ ### エラー
339
+
340
+ ```
341
+ Terraria.java:32: エラー: シンボルを見つけられません
342
+ FileOperation file = new FileOperation();
343
+ シンボル: クラス FileOperation
344
+ 場所: クラス Terraria
345
+
346
+ Terraria.java:128: エラー: シンボルを見つけられません
347
+ if(map.get(i).mapChipNumber == 1){
348
+ シンボル: 変数 mapChipNumber
349
+ 場所: インタフェース Map
350
+
351
+ Terraria.java:293: エラー: Mapはabstractです。インスタンスを生成することはできません
352
+ map.add(new Map((j * 10) + 10, (i * 10) + 31, 0, Integer.parseInt(strs[j])));
353
+
354
+ 同じようなエラーは文字数制限の都合上削除しました
355
+
356
+ エラー19個
357
+ ```
358
+
338
359
  ### 補足情報(FW/ツールのバージョンなど)
339
360
 
340
361
  Javaのバージョン 10.0.2

1

実際のコードの追加&エラー発生の場所の追記

2018/10/20 07:43

投稿

Alpa
Alpa

スコア80

title CHANGED
File without changes
body CHANGED
@@ -13,6 +13,328 @@
13
13
  ・public修飾子をクラスにつけた
14
14
  ・インポートをした
15
15
 
16
+ 下のコードは実際に書いたコードです
17
+ このほかのクラスも同じパッケージにしています
18
+ エラーが発生する場所はFileOperationクラスの作成とMapクラスの作成や使用の部分です
19
+ ```java
20
+ package terraria.game;
21
+
22
+ import terraria.game.*;
23
+ import javax.swing.*;
24
+ import javax.swing.Timer;
25
+ import javax.imageio.*;
26
+ import java.awt.*;
27
+ import java.awt.event.*;
28
+ import java.awt.image.*;
29
+ import java.util.*;
30
+ import java.io.*;
31
+
32
+ public class Terraria extends JFrame implements ActionListener, KeyListener, MouseMotionListener, MouseListener
33
+ {
34
+ //処理の段階分けの列挙型
35
+ enum STATUS{
36
+ INIT,
37
+ TITLE,
38
+ GAME
39
+ }
40
+
41
+ STATUS status = STATUS.INIT;
42
+
43
+ //画面のダブルバッファリング関係
44
+ BufferedImage buff = new BufferedImage(700, 500, BufferedImage.TYPE_4BYTE_ABGR_PRE);
45
+ Graphics2D g2 = buff.createGraphics();
46
+
47
+ //キー入力の処理を行うタイマー
48
+ Timer keyTimer = new Timer(10, this);
49
+
50
+ //ファイル操作クラス
51
+ FileOperation file = new FileOperation();
52
+
53
+ //マップデータを格納したコレクション
54
+ ArrayList<Map> map = new ArrayList<Map>();
55
+
56
+ //キー入力フラグ
57
+ boolean key_up = false;
58
+ boolean key_down = false;
59
+ boolean key_right = false;
60
+ boolean key_left = false;
61
+ boolean key_enter = false;
62
+ boolean key_space = false;
63
+
64
+ //ウィンドウに入ったか判定するフラグ
65
+ boolean windowIn = false;
66
+
67
+ //マウスの座標
68
+ int mouseX = 0;
69
+ int mouseY = 0;
70
+
71
+ //マップデータを格納したコレクションの要素数
72
+ int mapSize = map.size();
73
+
74
+ public static void main(String[] args)
75
+ {
76
+ Terraria frame = new Terraria();
77
+ frame.setTitle("テラリア");
78
+ frame.setSize(700, 500);
79
+ frame.setLocationRelativeTo(null);
80
+ frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
81
+ frame.setResizable(false);
82
+ frame.setAlwaysOnTop(false);
83
+ frame.setVisible(true);
84
+ }
85
+
86
+ Terraria()
87
+ {
88
+ JPanel panel = new JPanel();
89
+ panel.setLayout(null);
90
+
91
+ addKeyListener(this);
92
+ addMouseMotionListener(this);
93
+ addMouseListener(this);
94
+
95
+ keyTimer.setActionCommand("キー入力");
96
+
97
+ getContentPane().add(panel, BorderLayout.CENTER);
98
+ }
99
+
100
+ public void actionPerformed(ActionEvent e)
101
+ {
102
+ String cmd = e.getActionCommand();
103
+
104
+ switch(cmd){
105
+ case "キー入力":{
106
+ //キー入力処理を実行
107
+ keyProcessing();
108
+ }break;
109
+ }
110
+ }
111
+
112
+ public void paint(Graphics g)
113
+ {
114
+ g2 = buff.createGraphics();
115
+
116
+ switch(status){
117
+ case INIT:{
118
+ if(!file.fileCheck("./SeveData")){
119
+ file.makeDir("./SeveData");
120
+ System.exit(0);
121
+ }
122
+
123
+ //背景色を白に設定
124
+ g2.setBackground(Color.white);
125
+
126
+ //マップを読み込む
127
+ loadMap();
128
+
129
+ //キー入力処理のタイマーを開始
130
+ keyTimer.start();
131
+
132
+ //タイトル画面に遷移
133
+ status = STATUS.TITLE;
134
+ repaint();
135
+ }break;
136
+
137
+ case TITLE:{
138
+ //画面を初期化
139
+ clearBack();
140
+ }break;
141
+
142
+ case GAME:{
143
+ //画面を初期化
144
+ clearBack();
145
+
146
+ for(int i = 0; i < mapSize; i++){
147
+ if(map.get(i).mapChipNumber == 1){
148
+ g2.setColor(Color.green);
149
+ }else if(map.get(i).mapChipNumber == 2){
150
+ g2.setColor(Color.blue);
151
+ }
152
+
153
+ g2.fillRect(map.get(i).x, map.get(i).y, 10, 10);
154
+ }
155
+ }break;
156
+ }
157
+
158
+ g.drawImage(buff, 0, 0, this);
159
+ g2.dispose();
160
+ }
161
+
162
+ public void keyReleased(KeyEvent e)
163
+ {
164
+ switch(e.getKeyText(e.getKeyCode())){
165
+ case "上": key_up = false; break;
166
+ case "下": key_down = false; break;
167
+ case "右": key_right = false; break;
168
+ case "左": key_left = false; break;
169
+ case "Enter": key_enter = false; break;
170
+ case "スペース": key_space = false; break;
171
+ }
172
+ }
173
+
174
+ public void keyPressed(KeyEvent e)
175
+ {
176
+ switch(e.getKeyText(e.getKeyCode())){
177
+ case "上": key_up = true; break;
178
+ case "下": key_down = true; break;
179
+ case "右": key_right = true; break;
180
+ case "左": key_left = true; break;
181
+ case "Enter": key_enter = true; break;
182
+ case "スペース": key_space = true; break;
183
+ }
184
+ }
185
+
186
+ public void keyTyped(KeyEvent e){}
187
+
188
+ public void mouseMoved(MouseEvent e)
189
+ {
190
+ if(windowIn){
191
+ Point point = e.getPoint();
192
+ mouseX = point.x;
193
+ mouseY = point.y;
194
+ }
195
+ }
196
+
197
+ public void mouseDragged(MouseEvent e)
198
+ {
199
+ if(windowIn){
200
+ Point point = e.getPoint();
201
+ mouseX = point.x;
202
+ mouseY = point.y;
203
+
204
+ int index = getMapIndex(mouseX, mouseY);
205
+
206
+ if(index != -1){
207
+ debug("I: " + index + " X: " + map.get(index).x + " Y: " + map.get(index).y + " L: " + map.get(index).layer + " M: " + map.get(index).mapChipNumber);
208
+ }
209
+ }
210
+ }
211
+
212
+ public void mouseClicked(MouseEvent e)
213
+ {
214
+ if(windowIn){
215
+ int btn = e.getButton();
216
+
217
+ switch(btn){
218
+ case MouseEvent.BUTTON1:{
219
+ int index = getMapIndex(mouseX, mouseY);
220
+
221
+ if(index != -1){
222
+ debug("Index番号: " + index);
223
+ debug("X座標: " + map.get(index).x);
224
+ debug("Y座標: " + map.get(index).y);
225
+ debug("Layer: " + map.get(index).layer);
226
+ debug("MapCN: " + map.get(index).mapChipNumber);
227
+ }
228
+ }break;
229
+
230
+ case MouseEvent.BUTTON2:{
231
+ //中クリックした時の処理
232
+ }break;
233
+
234
+ case MouseEvent.BUTTON3:{
235
+ //右クリックした時の処理
236
+ }break;
237
+ }
238
+
239
+ if(e.getClickCount() >= 2){
240
+ //ダブルクリックした時の処理
241
+ }
242
+ }
243
+ }
244
+
245
+ public void mouseEntered(MouseEvent e)
246
+ {
247
+ windowIn = true;
248
+ }
249
+
250
+ public void mouseExited(MouseEvent e)
251
+ {
252
+ windowIn = false;
253
+ }
254
+
255
+ public void mousePressed(MouseEvent e){}
256
+ public void mouseReleased(MouseEvent e){}
257
+
258
+ void clearBack()
259
+ {
260
+ //画面の初期化処理
261
+ g2.setColor(Color.white);
262
+ g2.fillRect(0, 0, 700, 500);
263
+ }
264
+
265
+ void keyProcessing()
266
+ {
267
+ if(key_up){
268
+
269
+ }
270
+
271
+ if(key_down){
272
+
273
+ }
274
+
275
+ if(key_right){
276
+
277
+ }
278
+
279
+ if(key_left){
280
+
281
+ }
282
+
283
+ if(key_enter){
284
+ if(status == STATUS.TITLE){
285
+ //ゲーム画面に切り替え
286
+ status = STATUS.GAME;
287
+ repaint();
288
+ }
289
+ }
290
+
291
+ if(key_space){
292
+
293
+ }
294
+ }
295
+
296
+ void loadMap()
297
+ {
298
+ //マップデータを1行ずつ読み込んで格納するコレクション
299
+ ArrayList<String> mapData = new ArrayList<String>();
300
+
301
+ //マップデータの読み込み
302
+ file.readS2("./SeveData/Test/TestMapData.txt", mapData);
303
+
304
+ //読み込んだマップデータの要素数を数値化
305
+ int mapDataSize = mapData.size();
306
+
307
+ //[,]で分割してマップデータを作成し格納
308
+ for(int i = 0; i < mapDataSize; i++){
309
+ String[] strs = mapData.get(i).split(",", 0);
310
+
311
+ for(int j = 0; j < strs.length; j++){
312
+ map.add(new Map((j * 10) + 10, (i * 10) + 31, 0, Integer.parseInt(strs[j])));
313
+ }
314
+ }
315
+
316
+ //マップデータの要素数を更新
317
+ mapSize = map.size();
318
+ }
319
+
320
+ int getMapIndex(int x, int y)
321
+ {
322
+ for(int i = 0; i < mapSize; i++){
323
+ if((x >= map.get(i).x && x <= map.get(i).x + 10) && (y >= map.get(i).y && y <= map.get(i).y + 10)){
324
+ return i;
325
+ }
326
+ }
327
+
328
+ return -1;
329
+ }
330
+
331
+ void debug(Object obj)
332
+ {
333
+ System.out.println(obj);
334
+ }
335
+ }
336
+ ```
337
+
16
338
  ### 補足情報(FW/ツールのバージョンなど)
17
339
 
18
340
  Javaのバージョン 10.0.2