安野光雅しりとりファンのブログ

絵本「しりとり」について書いてます

安野光雅しりとりファンのブログ5

ちょっと筆休めに?ターミナルで遊べるゲームにしてみました。

キーボードから入力された単語が

1 空でないか

2 単語リストに載ってない単語でないか

3 (2ページ以降)しりとりになっているか

4 (15ページなら)ゴールできる単語か

の順にチェックしてそれぞれの処理をJudgementクラスで行います。

「じどうしゃ」の小さい「ゃ」を大きい「や」に直すため、ゃゅょ判定を入れてます。

(前回までは横着のため、最初から「じどうしや」としてリストに載せていました。)


    import java.io.*;

class Gamesiritori{
	public static void main(String[] args){
		try{
			BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
			Judgement judge=new Judgement();
			int t=0;
			int n=0;
			while(n<judge.word.length){
				judge.print1(n);
				judge.jud=0;
				String ans=in.readLine();
				int len=ans.length();
				if(len==0) judge.print4();//入力なしの場合
				else if(judge.search(n,ans)!=0){
					judge.print3();//リストにない単語の場合
				}
				else if(t==0){
					judge.print5();//最初のみ実行
					judge.putin(t,ans);
					n++;
					t++;
				}
				else if(judge.comp(ans)!=0){
					judge.print2();//次の単語とつながらない場合
				}
				else if(n==judge.word.length-2){//ゴールできるか判定
					judge.putin(t,ans);
					if(judge.goal()!=0){
						judge.print1(judge.word.length-1);
						judge.print6();//最初に戻る場合
						n=0;
						t++;
					}
					else{
						judge.print5();//ゴールにすすむ場合
						judge.putin(t,ans);
						n++;
						t++;
					}
				}
				else{
					judge.print5();//つぎにすすむ場合
					judge.putin(t,ans);
					n++;
					t++;
				}
			}
			System.out.println("ゴール!おめでとう");
			int i=0;
			while(judge.result[i]!=null){
				System.out.print(judge.result[i]+"→");
				i++;
			}
		}catch(Exception ie){
			System.out.println("エラーです");
		}
	}
}
class Judgement{
	String[][]word={
			{"さる","きびだんご","くま","しるこ","こあら","すもも","そば","ごま","せなか","あさひ","うし","えんどうまめ","いわし","おに","けんびきょう","かれーらいす"},
			{"かじか","るーれっと","ばすけっと","すし","にんにく","めがね","ものほしざお","ごぼう","ます","らむね","しか","ひしもち","うみがめ","こなや"},
			{"すもう","かけす","やじろべえ","くつ","おかめ","とうがらし","かめ","ねじりあめ","ちからこぶ","とけい","からす","ねずみ","うめ","しじみ","めぐすり"},
			{"しんでれら","いぬ","うきわ","りんごのき","めんたいこ","めがね","つるはし","ぶるどっぐ","めかくし","すずめ","みつば","えんま","するめ","めざし","みそ"},
			{"ばす","そば","ぐらんぷり","しらうお","まらかす","らっぱ","こだいこ","ねこ","しまうま","めだか","きうい","しらさぎ","わまわし","ぬすびとはぎ"},
			{"しろ","こめ","いなほ","こま","ぎょうじ","すもう","ばんぺい","かっぱ","りんご","おっとせい","かいこ","まき","すいか","ぎんぱい","ぱんけーき"},
			{"じんちょうげ","いど","ほね","いか","めざし","きもの","ぱんだ","ごりら","ろうそく","いも","かずのこ","きのこ","うぐいす","まさかり","こたつ","かっぱのこ"},
			{"くびわ","すべりだい","つき","だんご","こんぶ","もも","のこぎり","げた","りす","かぶと","らっきょう","ねぎ","こうもりがさ","しま","どうだんつつじ"},
			{"わかめ","たいこ","さい","じしゃく","ぶーつ","とかげ","ぎんか","きのこ","うま","すずめ","まんねんひつ","もみじ","りんどう","ごま","いしがき"},
			{"かに","じどうしゃ","めいろ","こがたな","つくえ","つきみそう","こすもす","げた","まんとひひ","めじろ","きじ","くつ","まんと","いけ","うずら"}, 
			{"ひこうき","らっぱ","にじ","じんべい","えもんかけ","すのこ","けむし","ろば","うき","とき","たいこ","やし","ろうそく","つきみ","なす"},
			{"いす","す","こぶ","しない","くつべら","こもり","ばけつ","きんこ","きつつき","けいと","じしゃく","みつばち","ぱーま","きつね","しらぎく"},
			{"くものす","こおろぎ","きんのしゃちほこ","りす","ちえのわ","すべりひゆ","ぶらんこ","ねこ","とうもろこし","いんき","つぼ","らくご","まつ","すいか","くじら"},
			{"ゆうれい","すみ","わさび","すいか","ぼんぼり","かたばみ","こいし","こども","らくだ","ぎんこう","ごみばこ","つきみそう","こまつな","しい","きんもくせい"},
			{"しめなわ","かものはし","うみう","みそさざい","うめぼし","だいがく","いのこづち","うずら","こおり","ももたろう","なきむし","みちしるべ","びわ","いわ","りんご","いも"},
			{"りぼん","らん","ちょうちん","もん","べーこん","わん"}
	};
	void print1(int a){
		for(int i=0;i<word[a].length;i++) System.out.print(word[a][i]+"/");
		System.out.println();
	}
	void print2(){
		System.out.println("▲しりとりになってないよ");
	}
	void print3(){
		System.out.println("▲のってないことばだよ");
	}
	void print4(){
		System.out.println("▲にゅうりょくしてね");
	}
	void print5(){
		System.out.println("つぎにすすむよ");
	}
	void print6(){
		System.out.println("▲ゴールできないよ");
		System.out.println("さいしょから  "+bottom);
	}
	int search(int n,String st){
		int k=word[n].length;
		int flag=0;
		for(int i=0;i<k;i++){
			String word2=word[n][i];
			flag=word2.compareTo(st);
			if(flag==0) break;
		}
		return flag;
	}
	String bottom;
	String[]result=new String[100];
	void putin(int t,String st){
		int len=st.length();
		bottom=st.substring(len-1,len);
		result[t]=st;
		String ya="ゃ";
		String yu="ゅ";
		String yo="ょ";
		int small;
		small=bottom.compareTo(ya);
		if(small==0) bottom="や";
		small=bottom.compareTo(yu);
		if(small==0) bottom="ゆ";
		small=bottom.compareTo(yo);
		if(small==0) bottom="よ";
		System.out.println(bottom);
	}
	int jud;
	int comp(String st){
		jud=bottom.compareTo(st.substring(0,1));
		return jud;
	}
	int goal(){
		int g=0;
		for(int i=0;i<6;i++){
			String st=word[15][i];
			g=bottom.compareTo(st.substring(0,1));
			if(g==0) break;
		}
		return g;
	}	
}

 

実行結果です。

ひらがなしか受け付けないので入力が少し面倒です。

でも作ったものが動くと嬉しいですね!!

さる/きびだんご/くま/しるこ/こあら/すもも/そば/ごま/せなか/あさひ/うし/えんどうまめ/いわし/おに/けんびきょう/かれーらいす/

▲にゅうりょくしてね
さる/きびだんご/くま/しるこ/こあら/すもも/そば/ごま/せなか/あさひ/うし/えんどうまめ/いわし/おに/けんびきょう/かれーらいす/
かわうそ
▲のってないことばだよ
さる/きびだんご/くま/しるこ/こあら/すもも/そば/ごま/せなか/あさひ/うし/えんどうまめ/いわし/おに/けんびきょう/かれーらいす/
さる
つぎにすすむよ
る
かじか/るーれっと/ばすけっと/すし/にんにく/めがね/ものほしざお/ごぼう/ます/らむね/しか/ひしもち/うみがめ/こなや/
るーれっと
つぎにすすむよ
と
すもう/かけす/やじろべえ/くつ/おかめ/とうがらし/かめ/ねじりあめ/ちからこぶ/とけい/からす/ねずみ/うめ/しじみ/めぐすり/
とうがらし
つぎにすすむよ
し
しんでれら/いぬ/うきわ/りんごのき/めんたいこ/めがね/つるはし/ぶるどっぐ/めかくし/すずめ/みつば/えんま/するめ/めざし/みそ/
しんでれら
つぎにすすむよ
ら
ばす/そば/ぐらんぷり/しらうお/まらかす/らっぱ/こだいこ/ねこ/しまうま/めだか/きうい/しらさぎ/わまわし/ぬすびとはぎ/
らっぱ
つぎにすすむよ
ぱ
しろ/こめ/いなほ/こま/ぎょうじ/すもう/ばんぺい/かっぱ/りんご/おっとせい/かいこ/まき/すいか/ぎんぱい/ぱんけーき/
ぱんけーき
つぎにすすむよ
き
じんちょうげ/いど/ほね/いか/めざし/きもの/ぱんだ/ごりら/ろうそく/いも/かずのこ/きのこ/うぐいす/まさかり/こたつ/かっぱのこ/
きもの
つぎにすすむよ
の
くびわ/すべりだい/つき/だんご/こんぶ/もも/のこぎり/げた/りす/かぶと/らっきょう/ねぎ/こうもりがさ/しま/どうだんつつじ/
のこぎり
つぎにすすむよ
り
わかめ/たいこ/さい/じしゃく/ぶーつ/とかげ/ぎんか/きのこ/うま/すずめ/まんねんひつ/もみじ/りんどう/ごま/いしがき/
りんどう
つぎにすすむよ
う
かに/じどうしゃ/めいろ/こがたな/つくえ/つきみそう/こすもす/げた/まんとひひ/めじろ/きじ/くつ/まんと/いけ/うずら/
うずら
つぎにすすむよ
ら
ひこうき/らっぱ/にじ/じんべい/えもんかけ/すのこ/けむし/ろば/うき/とき/たいこ/やし/ろうそく/つきみ/なす/
らっぱ
つぎにすすむよ
ぱ
いす/す/こぶ/しない/くつべら/こもり/ばけつ/きんこ/きつつき/けいと/じしゃく/みつばち/ぱーま/きつね/しらぎく/
ぱーま
つぎにすすむよ
ま
くものす/こおろぎ/きんのしゃちほこ/りす/ちえのわ/すべりひゆ/ぶらんこ/ねこ/とうもろこし/いんき/つぼ/らくご/まつ/すいか/くじら/
まつ
つぎにすすむよ
つ
ゆうれい/すみ/わさび/すいか/ぼんぼり/かたばみ/こいし/こども/らくだ/ぎんこう/ごみばこ/つきみそう/こまつな/しい/きんもくせい/
つきみそう
つぎにすすむよ
う
しめなわ/かものはし/うみう/みそさざい/うめぼし/だいがく/いのこづち/うずら/こおり/ももたろう/なきむし/みちしるべ/びわ/いわ/りんご/いも/
うめぼし
し
りぼん/らん/ちょうちん/もん/べーこん/わん/
▲ゴールできないよ
さいしょから  し
さる/きびだんご/くま/しるこ/こあら/すもも/そば/ごま/せなか/あさひ/うし/えんどうまめ/いわし/おに/けんびきょう/かれーらいす/
しるこ
つぎにすすむよ
こ
かじか/るーれっと/ばすけっと/すし/にんにく/めがね/ものほしざお/ごぼう/ます/らむね/しか/ひしもち/うみがめ/こなや/
こなや
つぎにすすむよ
や
すもう/かけす/やじろべえ/くつ/おかめ/とうがらし/かめ/ねじりあめ/ちからこぶ/とけい/からす/ねずみ/うめ/しじみ/めぐすり/
やじろべえ
つぎにすすむよ
え
しんでれら/いぬ/うきわ/りんごのき/めんたいこ/めがね/つるはし/ぶるどっぐ/めかくし/すずめ/みつば/えんま/するめ/めざし/みそ/
えんま
つぎにすすむよ
ま
ばす/そば/ぐらんぷり/しらうお/まらかす/らっぱ/こだいこ/ねこ/しまうま/めだか/きうい/しらさぎ/わまわし/ぬすびとはぎ/
まらかす
つぎにすすむよ
す
しろ/こめ/いなほ/こま/ぎょうじ/すもう/ばんぺい/かっぱ/りんご/おっとせい/かいこ/まき/すいか/ぎんぱい/ぱんけーき/
すいか
つぎにすすむよ
か
じんちょうげ/いど/ほね/いか/めざし/きもの/ぱんだ/ごりら/ろうそく/いも/かずのこ/きのこ/うぐいす/まさかり/こたつ/かっぱのこ/
かずのこ
つぎにすすむよ
こ
くびわ/すべりだい/つき/だんご/こんぶ/もも/のこぎり/げた/りす/かぶと/らっきょう/ねぎ/こうもりがさ/しま/どうだんつつじ/
こんぶ
つぎにすすむよ
ぶ
わかめ/たいこ/さい/じしゃく/ぶーつ/とかげ/ぎんか/きのこ/うま/すずめ/まんねんひつ/もみじ/りんどう/ごま/いしがき/
ぶーつ
つぎにすすむよ
つ
かに/じどうしゃ/めいろ/こがたな/つくえ/つきみそう/こすもす/げた/まんとひひ/めじろ/きじ/くつ/まんと/いけ/うずら/
つくえ
つぎにすすむよ
え
ひこうき/らっぱ/にじ/じんべい/えもんかけ/すのこ/けむし/ろば/うき/とき/たいこ/やし/ろうそく/つきみ/なす/
えもんかけ
つぎにすすむよ
け
いす/す/こぶ/しない/くつべら/こもり/ばけつ/きんこ/きつつき/けいと/じしゃく/みつばち/ぱーま/きつね/しらぎく/
けいと
つぎにすすむよ
と
くものす/こおろぎ/きんのしゃちほこ/りす/ちえのわ/すべりひゆ/ぶらんこ/ねこ/とうもろこし/いんき/つぼ/らくご/まつ/すいか/くじら/
とうもろこし
つぎにすすむよ
し
ゆうれい/すみ/わさび/すいか/ぼんぼり/かたばみ/こいし/こども/らくだ/ぎんこう/ごみばこ/つきみそう/こまつな/しい/きんもくせい/
しい
つぎにすすむよ
い
しめなわ/かものはし/うみう/みそさざい/うめぼし/だいがく/いのこづち/うずら/こおり/ももたろう/なきむし/みちしるべ/びわ/いわ/りんご/いも/
いのこづち
ち
つぎにすすむよ
ち
りぼん/らん/ちょうちん/もん/べーこん/わん/
ちょうちん
つぎにすすむよ
ん
ゴール!おめでとう
さる→るーれっと→とうがらし→しんでれら→らっぱ→ぱんけーき→きもの→のこぎり→りんどう→うずら→らっぱ→ぱーま→まつ→つきみそう→うめぼし→しるこ→こなや→やじろべえ→えんま→まらかす→すいか→かずのこ→こんぶ→ぶーつ→つくえ→えもんかけ→けいと→とうもろこし→しい→いのこづち→ちょうちん→%