質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

0回答

1915閲覧

ババ抜き用のアプリに関して

M_L_R_DsoM_1989

総合スコア4

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2020/04/21 12:44

編集2020/04/21 12:51

ババ抜きのゲームを行っております。
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コード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimbe

2020/04/21 14:23

どのようなフレームワークをお使いなのでしょう.
jimbe

2020/04/21 16:07

いえ, ご提示のコードのほうです. TrumpApplication や GameInterface といったものは標準の java のクラス/インターフェースではありませんね?
stdio

2020/04/22 00:51

> 本課題では例外時の処理を考慮しない 学校の課題か何かなら先生にでも聞いて下さい。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問