ババ抜きのゲームを行っております。
fileメソッドから~勝~敗という部分が出力出来ず困っております。
ご教授お願いします。
package
1 2import java.io.BufferedReader; 3import java.io.InputStreamReader; 4import java.util.ArrayList; 5import java.util.List; 6 7import common.CardConst; 8import util.GameInterface; 9import util.TrumpApplication; 10 11 12public class Babanuki extends TrumpApplication implements GameInterface { 13 14 List<String> player1_cards = new ArrayList<String>(); 15 List<String> player2_cards = new ArrayList<String>(); 16 static boolean continue_game = true; 17 18 19 String line; 20 String ru; 21 22 @Override 23 public void execute() { 24 25 System.out.println(startMsg("1.0")); 26 System.out.println("実行した処理の番号を選んでください。"); 27 System.out.println(); 28 System.out.println("1:ババ抜きを始める"); 29 System.out.println(); 30 System.out.println("2:成績を参照する"); 31 System.out.println(); 32 System.out.println("3:処理を終了する"); 33 34 while (true) { 35 try { 36 BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 37 // キーボードから文字が入力された場合、その文字列をlineに格納する 38 line = reader.readLine(); 39 // 入力文字が正しい場合、このループを抜ける処理をこの下に記述する 40 switch (line) { 41 42 case "1": 43 System.out.println(CardConst.GAME_START_MSG); 44 System.out.println(); 45 System.out.println("これよりトランプゲーム【ババ抜き】を開始します。"); 46 game(); 47 System.out.println(CardConst.GAME_END_MSG); 48 49 System.exit(0); 50 51 52 53 54 case "2": 55 System.out.println(CardConst.MSG_SEE_RESULTS); 56 57 58 System.out.println(getGameResults("./file/result.txt")); 59 60 61 System.out.println(); 62 System.out.println(startMsg("1.0")); 63 break; 64 65 case "3": 66 System.out.println(CardConst.MSG_EXIT_AP); 67 System.out.println(startMsg("1.0")); 68 System.exit(0); 69 } 70 } catch (Exception t) { 71 72 } 73 } 74 } 75 76 @Override 77 public void game() { 78 ArrayList<String> deck = new ArrayList<String>(); 79 for (int i = 0; i < 4; i++) { 80 for (int j = 0; j < 13; j++) { 81 deck.add(CardConst.CARD_TRUMP[i][j]); 82 } 83 } 84 85 try { 86 87 System.out.print("カード配布中"); 88 System.out.print("..."); 89 Thread.sleep(3000); 90 System.out.println("完了"); 91 shuffle(deck); 92 deck.add(CardConst.TRUMP_CALL_JOKER); 93 94 } catch (InterruptedException e) { 95 // 本課題では例外時の処理を考慮しない 96 e.printStackTrace(); 97 } 98 99 // player1、player2にランダムにカードを配る 100 while (deck.size() > 1) { 101 int select_num = (int) (Math.random() * deck.size()); 102 103 // 相手のリストに追加 104 player1_cards.add(deck.get(select_num)); 105 deck.remove(select_num); 106 select_num = (int) (Math.random() * deck.size()); 107 108 // プレイヤーのリストに追加 109 player2_cards.add(deck.get(select_num)); 110 deck.remove(select_num); 111 } 112 player1_cards.add(deck.get(deck.size() - 1)); 113 displayCards(player2_cards); 114 115 System.out.println( ); 116 try { 117 System.out.print("カード精査中"); 118 System.out.print("..."); 119 Thread.sleep(3000); 120 System.out.print("完了"); 121 System.out.println(""); 122 displayCards(clearCards(player2_cards)); 123 124 } catch (InterruptedException e) { 125 // 本課題では例外時の処理を考慮しない 126 e.printStackTrace(); 127 } 128 129 130 System.out.println( ); 131 boolean isPlayer2 = true; 132 133 while (continue_game) { 134 135 try { 136 BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 137 if (isPlayer2) { 138 139 System.out.println(CardConst.TURN_MSG_USER); 140 System.out.println("COM側のカード番号を選択してください。"); 141 displayCardsReverse(clearCards(player1_cards)); 142 ru=reader.readLine(); 143 int ko=Integer.parseInt(ru); 144 145 146 147 String choose = player1_cards.get(ko-1); 148 System.out.println("あなたの選んだカード:[" + choose + "]"); 149 System.out.println( ); 150 player1_cards.remove(ko-1); 151 player2_cards.add(choose); 152 displayCardsReverse(player1_cards); 153 displayCards(clearCards(player2_cards)); 154 System.out.println( ); 155 isPlayer2 = false; 156 157 } else { 158 159 int i = (int) (Math.random() * player2_cards.size()); 160 System.out.println(CardConst.TURN_MSG_COM); 161 try { 162 System.out.print("カード選択中"); 163 System.out.print("..."); 164 Thread.sleep(3000); 165 System.out.print("完了"); 166 System.out.println(""); 167 168 } catch (InterruptedException e) { 169 170 e.printStackTrace(); 171 } 172 System.out.println("相手の選んだカード :[" + player2_cards.get(i) + "]"); 173 System.out.println( ); 174 175 player1_cards.add(player2_cards.get(i)); 176 player2_cards.remove(player2_cards.get(i)); 177 displayCardsReverse(clearCards(player1_cards)); 178 displayCards(player2_cards); 179 System.out.println( ); 180 181 isPlayer2 = true; 182 183 } 184 185 } catch (Exception t) { 186 System.out.println("正規の番号を入力してください"); 187 continue; 188 189 } 190 191 } 192 } 193 194 // リスト内に同じ数字がある場合は削除する 195 List<String> clearCards(List<String> player2_cards) { 196 int i = 0; 197 198 199 200 while (i<player2_cards.size()-1) { 201 for(int j=i+1;j<player2_cards.size();j++){ 202 203 204 205 String text = player2_cards.get(i); 206 String k = text.substring(1); 207 String textw = player2_cards.get(j); 208 String z = textw.substring(1); 209 210 211 212 // 同一数値の要素を削除 213 if (k.equals(z)) { 214 player2_cards.remove(player2_cards.get(j)); 215 player2_cards.remove(player2_cards.get(i)); 216 217 break; 218 } else if (j+1 ==player2_cards.size()){ 219 i++; 220 } 221 222 } 223 224 } 225 return player2_cards; 226 } 227 228 List<String> clearCardsReverse(List<String> player1_cards) { 229 int i = 0; 230 int j = 1; 231 i++; 232 233 while (j == player1_cards.size() + 1) { 234 235 236 String text = player1_cards.get(i); 237 String k = text.substring(1, 2); 238 String textw = player1_cards.get(j); 239 String z = textw.substring(1, 2); 240 { 241 242 // 同一数値の要素を削除 243 if (k.equals(z)) { 244 player1_cards.remove(player1_cards.get(j)); 245 player1_cards.remove(player1_cards.get(i)); 246 247 continue; 248 } else { 249 j++; 250 continue; 251 } 252 253 } 254 255 } 256 return player2_cards; 257 } 258 public void displayCards(List<String> a) { 259 if(player2_cards.size() == 0){ 260 System.out.println(CardConst.WIN_MSG); 261 continue_game = false; 262 263 }else{ 264 265 System.out.println(CardConst.MSG_USER_CARD); 266 267 for (String l : a) { 268 269 // リストに保持している値を出力 270 271 System.out.print(l); 272 273 } 274 275 System.out.println(); 276 } 277 278 } 279 280 private void displayCardsReverse(List<String> b) { 281 282 283 284 if(player1_cards.size() == 0){ 285 System.out.println(CardConst.LOSE_MSG); 286 continue_game = false; 287 288 289 }else{ 290 for (String l : b){ 291 System.out.println(CardConst.MSG_COM_CARD); 292 293 // 数値を見せずに出力する 294 for (int i = 0; i < 5; i++) { 295 for (int j = 0; j < b.size(); j++) { 296 297 if (i == 0 || i==4) { 298 System.out.print("+---+"); 299 } else if (i == 1 || j == b.size()) { 300 System.out.print("| |"); 301 302 } else if (i == 2 || j == b.size()) { 303 System.out.print("| " + (j+1)+ " |"); 304 } else if (i == 3 || j == b.size()) { 305 System.out.print("| |"); 306 } else { 307 System.out.print(" "); 308 } 309 } 310 System.out.println(); 311 } 312 break; 313 } 314 } 315 } 316 317 318/* 319 *0(要素0) 320 *勝(要素1) 321 *0(要素2) 322 *敗(要素3) 323 */ 324 325 void file(){ 326 String s= CardConst.GAME_RESULT_FILE; 327 s.substring(0,1); 328 int win =Integer.parseInt(s); 329 s.substring(2,3); 330 int lose=Integer.parseInt(s); 331 332 333 334 if (player2_cards.size() == 0) { 335 336 337 System.out.println(CardConst.WIN_MSG); 338 continue_game = false; 339 340 win++; 341 342 } 343 344 if (player1_cards.size() == 0) { 345 346 347 348 // 相手のカードが0枚の場合は、プレイヤーの負け 349 System.out.println(CardConst.LOSE_MSG); 350 continue_game = false; 351 352 lose++; 353 354 355 } 356 357 String f =getGameResults(CardConst.GAME_RESULT_FILE); 358 String v=String.valueOf(win); 359 String p=String.valueOf(lose); 360 361 v=f.valueOf(v); 362 p=f.valueOf(p); 363 364 System.out.println(v); 365 System.out.println(p); 366 setGameResults("./file/result.txt",v+"勝"+p+"敗"); 367 368 369 } 370 371 372 373 374 375 376 private void shuffle(ArrayList<String> deck) { 377 // TODO 自動生成されたメソッド・スタブ 378 379 } 380 381} 382 383 384 385コード
あなたの回答
tips
プレビュー