質問編集履歴

1

文章の修正

2022/12/05 18:58

投稿

kunn
kunn

スコア2

test CHANGED
File without changes
test CHANGED
@@ -15,6 +15,270 @@
15
15
  at java.base/java.util.TimerThread.mainLoop(Timer.java:566)
16
16
  at java.base/java.util.TimerThread.run(Timer.java:516)
17
17
 
18
+ ### 該当のソースコード
19
+ java
20
+ ```ここに言語名を入力
21
+ class superClass {
22
+ static int leftCenterCard;
23
+ static int rightCenterCard;
24
+ static String[][] array = new String[27][40];
25
+ protected boolean player = false;
26
+ protected boolean cpu = false;
27
+
28
+ void setCarddesign() {
29
+ for(int i = 0; i < array.length; i++) {
30
+ for(int j = 0; j < array[0].length; j++) {
31
+ array[i][j] = " ";
32
+ }
33
+ }
34
+
35
+ //トランプの形を作る
36
+ for(int k = 0; k < 32; k += 8) {
37
+ if(k == 0 || k == 8) {
38
+ for(int g = 9; g < 18; g ++) {
39
+ if(g == 9 || g == 17){
40
+ for(int h = 13; h < 20; h++){
41
+ if(h == 13 || h == 19)
42
+ array[g][h + k] = "・";
43
+ else
44
+ array[g][h + k] = " -";
45
+ }
46
+ }else if(10 <= g) {
47
+ array[g][13 + k] = "|";
48
+ array[g][19 + k] = "|";
49
+ }
50
+ }
51
+ }
52
+ for(int i = 0; i < 27; i++) {
53
+ if(i == 0 || i == 6 || i == 20 || i == 26) {
54
+ for(int h = 6; h < 11; h++){
55
+ if(h == 6 || h == 10)
56
+ array[i][h + k] = "・";
57
+ else
58
+ array[i][h + k] = " -";
59
+ }
60
+ }else if(1<= i && i <= 5 || 21 <= i && i <= 25) {
61
+ array[i][6 + k] = "|";
62
+ array[i][10 + k] = "|";
63
+ }
64
+ }
65
+ }
66
+ };
67
+
68
+ void draw() {
69
+ //配列全要素を表示
70
+ for(int i = 0; i < array.length; i++) {
71
+ for(int h = 0; h < (40 - (array[0].length / 2)); h++) {
72
+ System.out.print(" ");
73
+ }
74
+ for(int j = 0; j < array[0].length; j++) {
75
+ System.out.print(array[i][j]);
76
+ }
77
+ System.out.println();
78
+ }
79
+ }
80
+
81
+ //トランプが中央に出せるかどうか判断
82
+ int judgement(int num) {
83
+ if(leftCenterCard + 1 == num || leftCenterCard - 1 == num)
84
+ return 1;
85
+ else if(rightCenterCard + 1 == num || rightCenterCard - 1 == num)
86
+ return 2;
87
+ else if(leftCenterCard == 13 && num == 1|| leftCenterCard == 1 && num == 13)
88
+ return 1;
89
+ else if(rightCenterCard == 13 && num == 1 || rightCenterCard == 1 && num == 1)
90
+ return 2;
91
+ else
92
+ return 0;
93
+ }
94
+ //中央のカードを新しいカードに変更(左)
95
+ void setcenterleftcard(String str) {
96
+ array[13][16] = str;
97
+ }
98
+
99
+ //中央のカードを新しいカードに変更(右)
100
+ void setcenterright(String str) {
101
+ array[13][24] = str;
102
+ }
103
+ }
104
+ ```
105
+
106
+ ### 該当のソースコード
107
+ java
108
+ ```ここに言語名を入力
109
+ import java.util.ArrayList;
110
+ import java.util.Collections;
111
+ import java.util.Timer;
112
+ import java.util.TimerTask;
113
+
114
+ class player extends superClass{
115
+ private ArrayList<Integer> playerArray = new ArrayList<>();
116
+ //配列の何番まで出たかを記憶
117
+ private int pickoutcoutp = -1;
118
+
119
+ //持っている手札の配列の番号を記憶
120
+ private int arrayNumber1p = 0;
121
+ private int arrayNumber2p = 0;
122
+ private int arrayNumber3p = 0;
123
+ private int arrayNumber4p = 0;
124
+
125
+ //手札の1番目のガードを新しく交換
126
+ void setnumberp1() {
127
+ pickoutcoutp ++;
128
+ array[23][8] = String.format("%2s", playerArray.get(pickoutcoutp));
129
+ arrayNumber1p = pickoutcoutp;
130
+ }
131
+ //手札の2番目のガードを新しく交換
132
+ void setnumberp2() {
133
+ pickoutcoutp ++;
134
+ array[23][16] = String.format("%2s", playerArray.get(pickoutcoutp));
135
+ arrayNumber2p = pickoutcoutp;
136
+ }
137
+ //手札の3番目のガードを新しく交換
138
+ void setnumberp3() {
139
+ pickoutcoutp ++;
140
+ array[23][24] = String.format("%2s", playerArray.get(pickoutcoutp));
141
+ arrayNumber3p = pickoutcoutp;
142
+ }
143
+ //手札の4番目のガードを新しく交換
144
+ void setnumberp4() {
145
+ pickoutcoutp ++;
146
+ array[23][32] = String.format("%2s", playerArray.get(pickoutcoutp));
147
+ arrayNumber4p = pickoutcoutp;
148
+ }
149
+
150
+ //配列の要素を取得
151
+ int getnumberp(int number) {
152
+ return playerArray.get(number);
153
+ }
154
+
155
+ //中央に出せるかどうか判断し出せる場合は中央のカードを出し、最後に描画させる
156
+ void mainFunc(int num) {
157
+ switch(num) {
158
+ case 1:{
159
+ int number = getnumberp(arrayNumber1p);
160
+ int answer = judgement(number);
161
+ if(answer == 1){
162
+ super.setcenterleftcard(array[23][8]);
163
+ leftCenterCard = number;
164
+ setnumberp1();
165
+ }else if(answer == 2) {
166
+ super.setcenterright(array[23][8]);
167
+ rightCenterCard = number;
168
+ setnumberp1();
169
+ }
170
+ checkpoint1();
171
+ break;
172
+ }
173
+ case 2:{
174
+ int number = getnumberp(arrayNumber2p);
175
+ int answer = judgement(number);
176
+ if(answer == 1){
177
+ super.setcenterleftcard(array[23][16]);
178
+ leftCenterCard = number;
179
+ setnumberp2();
180
+ }else if(answer == 2) {
181
+ super.setcenterright(array[23][16]);
182
+ rightCenterCard = number;
183
+ setnumberp2();
184
+ }
185
+ checkpoint1();
186
+ break;
187
+ }
188
+ case 3:{
189
+ int number = getnumberp(arrayNumber3p);
190
+ int answer = judgement(number);
191
+ if(answer == 1){
192
+ super.setcenterleftcard(array[23][24]);
193
+ leftCenterCard = number;
194
+ setnumberp3();
195
+ }else if(answer == 2){
196
+ super.setcenterright(array[23][24]);
197
+ rightCenterCard = number;
198
+ setnumberp3();
199
+ }
200
+ checkpoint1();
201
+ break;
202
+ }
203
+ case 4:{
204
+ int number = getnumberp(arrayNumber4p);
205
+ int answer = judgement(number);
206
+ if(answer == 1){
207
+ super.setcenterleftcard(array[23][32]);
208
+ leftCenterCard = number;
209
+ setnumberp4();
210
+ }
211
+ else if(answer == 2){
212
+ super.setcenterright(array[23][32]);
213
+ rightCenterCard = number;
214
+ setnumberp4();
215
+ }
216
+ checkpoint1();
217
+ break;
218
+ }
219
+ }
220
+ }
221
+
222
+ //cpuが中央にカードを出せなくなった場合playerも出せなくなるのを随時確認し両方出せなくなった場合それぞれの手札から中央にカードを出す
223
+ synchronized void checkpoint() {
224
+ Timer timer = new Timer(false);
225
+ TimerTask task = new TimerTask() {
226
+ @Override
227
+ public void run() {
228
+ if(player && cpu) {
229
+ pickoutcoutp ++;
230
+ array[13][16] = String.format("%2s", playerArray.get(pickoutcoutp));
231
+ System.out.println("新しく交換します");
232
+ leftCenterCard = playerArray.get(pickoutcoutp);
233
+ player = false;
234
+ timer.cancel();
235
+ }
236
+ }
237
+ };
238
+ timer.schedule(task, 0, 2000);
239
+ }
240
+
241
+ //手元に出せるカードがあるか確認
242
+ void checkpoint1() {
243
+ int [] card = {getnumberp(arrayNumber1p),getnumberp(arrayNumber2p),getnumberp(arrayNumber3p),getnumberp(arrayNumber4p)};
244
+ int count = 0;
245
+
246
+ for(int i :card) {
247
+ if(leftCenterCard + 1 != i && leftCenterCard - 1 != i && rightCenterCard + 1 != i && rightCenterCard - 1 != i) {
248
+ count++;
249
+ }
250
+ if(count == 4){
251
+ player = true;
252
+ checkpoint();
253
+ }
254
+ }
255
+ }
256
+
257
+ //トランプの数字を配列に入れる
258
+ void createcardnumberp() {
259
+ for(int i = 1; i < 14; i ++) {
260
+ playerArray.add(i);
261
+ playerArray.add(i);
262
+ }
263
+ Collections.shuffle(playerArray);
264
+ Collections.shuffle(playerArray);
265
+ Collections.shuffle(playerArray);
266
+ firstCardset();
267
+ }
268
+
269
+
270
+ //場に最初の4枚のカードを出す
271
+ void firstCardset() {
272
+ setnumberp1();
273
+ setnumberp2();
274
+ setnumberp3();
275
+ setnumberp4();
276
+ array[13][16] = String.format("%2s", playerArray.get(4));
277
+ pickoutcoutp ++;
278
+ leftCenterCard = playerArray.get(4);
279
+ }
280
+ }
281
+ ```
18
282
 
19
283
  ### 該当のソースコード
20
284
  java