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

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

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

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

Q&A

解決済

3回答

3461閲覧

java  じゃんけんゲーム

kisaragizinzin7

総合スコア90

Java

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

0グッド

0クリップ

投稿2015/07/30 08:18

編集2015/07/30 08:25
コード public class Player { //定数、変数 String name; //プレイヤーの名前 int hand; //出す手 static final int gu = 0, tyoki = 1, pa = 2; //0ならグー、1ならチョキ、2ならパー //コンストラクタ public Player(String name){ this.name = name; } //手を出すメソッド public int playhand(){ Random rnd = new Random(); int run = rnd.nextInt(3); //0から2の数字をランダムに取り出す if(run == 0){ //0ならグー hand = gu; } else if(run == 1){ //1ならチョキ hand = tyoki; } else{ //2(その他)ならパー hand = pa; } System.out.print(hand+"\t"); return hand; } } public class Judge { int playernum = 5; //プレイヤー数 int siainum = 5; //試合数 boolean handboolean[] = new boolean[3]; //どの手が出されたかを示す配列{グー,チョキ,パー} int winner; int loser; //ジャンケンの勝敗を判定するメソッド public void judgejanken(Player players[]){ while(true){ for(int i = 0; i < playernum; i++){ handboolean[players[i].playhand()] = true; } if(handboolean[Player.gu] == true && handboolean[Player.tyoki] == true && handboolean[Player.pa] == false){ //グーチョキのみ winner = Player.gu; loser = Player.tyoki; break; } else if(handboolean[Player.gu] == false && handboolean[Player.tyoki] == true && handboolean[Player.pa] == true){ //チョキパーのみ winner = Player.tyoki; loser = Player.pa; break; } else if(handboolean[Player.gu] == true && handboolean[Player.tyoki] == false && handboolean[Player.pa] == true){ //パーグーのみ winner = Player.pa; loser = Player.gu; break; } else{ System.out.println("もう一度"); handboolean = new boolean[]{false,false,false}; } } System.out.println(winner); } //勝ち負けを区別するメソッド public void dividejanken(Player players[]){ //未完成 } } public class MAIN { public static void main(String[] args) { Judge ref = new Judge(); Player players_main[] = new Player[ref.playernum]; for(int i = 0; i < ref.playernum; i++){ players_main[i] = new Player("プレイヤー"+(i+1)); } ref.judgejanken(players_main); ref.dividejanken(players_main); } }

javaでじゃんけんゲームを作っていて今ここまでできています。
今の段階では5人でじゃんけんをしてあいこの場合は繰り返して、勝負がつくまでじゃんけんをします。

ここから勝った人、負けた人に分けて再びじゃんけんをして1位から5位まで決めたいのですが、勝った人負けた人にグループ分けする方法がわかりません。

public void dividejanken(Player players[]){
//未完成
}
このメソッドを使ってどうすればグループ分けできますでしょうか?

また間違いなど指摘がありましたら言っていただけるとありがたいです。

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

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

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

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

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

guest

回答3

0

メンバーに勝者リストと敗者リストを持つクラスを作って
それを返せばいいと思います。

投稿2015/07/31 08:07

編集2015/07/31 08:12
ozwk

総合スコア13521

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

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

0

ベストアンサー

実際に動かしてませんがdividejankenはこんな感じでできると思います。

List winnerList = new ArrayList();
List loserList = new ArrayList();
for(Player player : players){
if (winner == player.hand){
winnerList.add(player);
} else {
loserList.add(player);
}
}

ただし、判定と分離を何度も処理させるんであれば再帰構造にしないといけないです。

投稿2015/07/30 10:24

yukihito

総合スコア29

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

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

kisaragizinzin7

2015/07/31 07:28

回答ありがとうございます^^ これは新たにwinnerListとloserListの配列を作って Players配列の勝った方をwinnerList配列に、負けた方をloserList配列に分けているという解釈であってますか?
yukihito

2015/07/31 09:41

合っています そうなってるのかprintしてみたらいいと思いますよ
guest

0

なんか前回の私の回答がほぼ無にされているような気がしてならないのですが・・・
分割するなら配列よりjava.util.Listを使ったほうがいいような気がします.
勝者・敗者の2つのListを作って入れ込んで分割するという手法が考えられます.

投稿2015/07/30 09:36

swordone

総合スコア20651

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

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

kisaragizinzin7

2015/07/31 07:24

すみません! 手直しする前のを載せてしまいました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問