回答編集履歴

3

ソースの追記と文言の修正

2016/07/11 07:25

投稿

tignear
tignear

スコア260

test CHANGED
@@ -1,6 +1,6 @@
1
1
  同期化処理(排他制御)にはいくつか方法があると思います
2
2
 
3
- - ``java.util.Collections()``を使用する
3
+ - ``java.util.Collections.synchronizedList(List)``を使用する
4
4
 
5
5
  ```java
6
6
 
@@ -11,3 +11,85 @@
11
11
  ```
12
12
 
13
13
  - スレッドを一つにまとめて処理する
14
+
15
+ ```java
16
+
17
+ long c;
18
+
19
+ int pup;
20
+
21
+ boolean cgun;
22
+
23
+ boolean loop=true;
24
+
25
+ @Override
26
+
27
+ public void run(){
28
+
29
+ while(loop){
30
+
31
+ frame();
32
+
33
+ Thread.sleep(16);
34
+
35
+ }
36
+
37
+ }
38
+
39
+
40
+
41
+ private void frame(){
42
+
43
+ c++;
44
+
45
+ player.updata(ke.getKeyCode());
46
+
47
+ cgun();
48
+
49
+ //1フレームごとの処理
50
+
51
+ //cにはloop回数が入ってます
52
+
53
+ }
54
+
55
+ private void cgun(){
56
+
57
+ gun = new Gun(10000, 10000); //Enter押されたらインスタンス生成
58
+
59
+ gunList.add(gun); //配列に追加
60
+
61
+ gunList.get(gunCount).startLine(player.m_x + 16, player.m_y);
62
+
63
+ gunCount++;
64
+
65
+ }
66
+
67
+ protected void processKeyEvent(KeyEvent ke){
68
+
69
+ /*何かキーが押された場合*/
70
+
71
+ if(ke.getID() == KeyEvent.KEY_PRESSED){
72
+
73
+ System.out.println("キー" + ke.getKeyCode() + "が押された");
74
+
75
+
76
+
77
+ /*押されたキーが左右だった場合*/
78
+
79
+ pup=ke.getKeyCode();
80
+
81
+
82
+
83
+ /*押されたキーがENTERだった場合*/
84
+
85
+ if(ke.getKeyCode() == KeyEvent.VK_ENTER){
86
+
87
+ cgun=true;
88
+
89
+ }
90
+
91
+ }
92
+
93
+ }
94
+
95
+ ```

2

非現実的な選択肢を削除

2016/07/11 07:25

投稿

tignear
tignear

スコア260

test CHANGED
@@ -11,5 +11,3 @@
11
11
  ```
12
12
 
13
13
  - スレッドを一つにまとめて処理する
14
-
15
- - ArrayListクラスをスーパークラスとするGunListクラスを作ってremove()とadd()をオーバーライドして・・

1

コードを追記

2016/07/10 00:40

投稿

tignear
tignear

スコア260

test CHANGED
@@ -1,6 +1,14 @@
1
- 同期化処理にはいくつか方法があると思います
1
+ 同期化処理(排他制御)にはいくつか方法があると思います
2
2
 
3
3
  - ``java.util.Collections()``を使用する
4
+
5
+ ```java
6
+
7
+ //FQDN(完全修飾名)
8
+
9
+ java.util.List<Gun> syncArray = java.util.Collections.synchronizedList(new java.util.ArrayList<Gun>());
10
+
11
+ ```
4
12
 
5
13
  - スレッドを一つにまとめて処理する
6
14