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

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

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

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

Q&A

1回答

1474閲覧

eclipse

msia

総合スコア33

Java

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

0グッド

0クリップ

投稿2015/10/27 01:12

「ん」が最後につけば君の負けにしたいのですが
cpがまけたことになってしまいます
最初に出る言葉が最初から「ん」だったりします
exitの文の作ったのですが上手く動きませんでした
どういう文を作ればいいのでしょうか?
またeclipseでandroidのほうにこのjavaのソースをactivityのほうに移したいのですがソースを書き換えなければいけませんよね?
どう書き換えればいいのでしょうか
質問が多くてすいません
やさしい方教えてください

package siritori.main;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class Siritori1 {

private static final BufferedReader READER = new BufferedReader( new InputStreamReader(System.in));

private static final List<String> DICTIONARY = Collections
.unmodifiableList(Arrays.asList("りんご", "ごりら", "らっぱ","ぱんつ","つくし", "しりとり","しめじ","じかん","つみき","きつね","ねこ","こぶた","たぬき","きりん","らーめん"));

private static final List<String> USED = new ArrayList<>();

private static final Random RANDOM;
static {
try {
RANDOM = SecureRandom.getInstanceStrong();
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}

public static void main(String[] args) throws IOException {
String yours = DICTIONARY.get(RANDOM.nextInt(DICTIONARY.size()));
System.out.println(new StringBuilder().append("じゃあねー最初は[").append(yours)
.append(']').append("だよ"));

for (;;) { final String mine = READER.readLine(); if (mine.isEmpty()) { continue; } if(mine.equals("!")){ System.out.println("you lose"); return; } if (yours.charAt(yours.length() - 1) != mine.charAt(0)) { System.out.println(new StringBuilder().append("その単語[") .append(yours.charAt(yours.length() - 1)) .append("]で始まってないじゃん!")); continue; } if (!DICTIONARY.contains(mine)) { System.out.println("その単語知らない!知ってそうな単語を入力して!"); continue; } if(USED.contains(mine)){ System.out.println("その単語使ったよ!忘れたとはいわせないよ!"); continue; } USED.add(mine); List<String> result = search(mine.charAt(mine.length() - 1)); if (result.isEmpty()) { System.out.println("もうわかんない...you win!!"); return; } yours = result.get(RANDOM.nextInt(result.size())); if(USED.contains(yours)){ System.out.println(new StringBuilder().append('[').append(yours).append(']') .append("は言ったっけー.わかんない..you win!!!")); return; } System.out.println(new StringBuilder().append("じゃあ[") .append(yours).append(']').append('!')); } }

public static final List<String> search(char firstChar) {
List<String> result = new ArrayList<>();
for (String word : DICTIONARY) {
if (word.charAt(0) == firstChar) {
result.add(word);
}
}
return result;
}

}

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

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

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

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

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

guest

回答1

0

「ん」で終わった場合に負けの判定をする部分がどこにもないように見えます.
そのため「ん」で始まる単語をCPが探そうとするも見つからないため「CPの負け」と判定してしまいます.
探す前と,CPが選んだ単語が「ん」で終わっていないかを判定するメソッドが必要ではないかと思います.

Androidで使うのであれば,Java8は使えないはずなので,SecureRandomクラスやArrayList<>の書き方を変える必要があります.
それとは別に,これを「単にしりとりのゲームに使う判定や単語検索」に特化したクラスにして,Activityから扱いやすい形にするといいかもしれません.

投稿2015/10/27 01:33

swordone

総合スコア20649

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問