1
/
5

じゃんけんゲーム(java)

じゃん拳を極めたじゃんけんマスターを目指すプログラムを作りました。

自分史上最長プログラムです。


オープニング画面


テンキーを利用してじゃんけんをする。
1面はじゃんけん5番勝負に勝たなければならない
2面はじゃんけん5番勝負に負けなければならない
3面はじゃんけん5番勝負に都度勝ち負けの指示が出るので、指示の通りに勝ち負けをコントロールする
ゲーム画面


全てに勝ち進むことでじゃん拳マスターとして認められる
エンディング画面



import java.io.*;

class Kachimake
{
	//インスタンス変数置き場
	int kikai;	//機械:機械側のじゃんけんの「手」を格納する
	int ningen;	//人間:遊び手のじゃんけんの「手」を格納する
	int kekka;	//結果:ゲームの結果を格納する

	//じゃんけんで出す手を決める処理
	public int nanidasuno(){

		//ランダム変数を使って0~2の値を変数kikaiに代入する
		kikai=(int)(Math.random()*3);

		//変数kikaiをそれぞれ、グー/チョキ/パーに変換し、表示する
		if(kikai==0)
			System.out.println("グー");
		
		else if(kikai==1)
			System.out.println("チョキ");
		
		else
			System.out.println("パー");
		

		//数字とじゃんけんの「手」の対応表
		System.out.println("0:グー 1:チョキ 2:パー");

		//機械側が出した手を返す
		return kikai;

	}

	//じゃんけんに勝たなきゃいけないときの判断処理
	public int katsu(int master,int challenger){

		//引数を各変数に代入
		kikai=master;
		ningen=challenger;

		//あいこの場合
		if(kikai==ningen){
			System.out.println("あいこです。\n");
			kekka=0;
		}
		//負けた場合
		else if(kikai==0&&ningen==1||kikai==1&&ningen==2||kikai==2&&ningen==0){
			System.out.println("負けです。\n");
			kekka=0;
		}
		//勝った場合
		else if(kikai==0&&ningen==2||kikai==1&&ningen==0||kikai==2&&ningen==1){
			System.out.println("勝ちました。\n");
			kekka=1;
		}

		//指示通りにできたかを返す
		return kekka;
	}

	//じゃんけんに負けなきゃいけないときの判断処理
	public int make(int master,int challenger){

		//引数を各変数に代入
		kikai=master;
		ningen=challenger;

		//あいこの場合
		if(kikai==ningen){
			System.out.println("あいこです。\n");
			kekka=0;
		}
		//負けた場合
		else if(kikai==0&&ningen==1||kikai==1&&ningen==2||kikai==2&&ningen==0){
			System.out.println("負けです。\n");
			kekka=1;
		}
		//勝った場合
		else if(kikai==0&&ningen==2||kikai==1&&ningen==0||kikai==2&&ningen==1){
			System.out.println("勝ちました。\n");
			kekka=0;
		}

		//指示通りにできたかを返す
		return kekka;
	}
}



class JankenDojo
{
	public static void main(String[] args)throws IOException
	{

		//変数置き場
		int shihan;	//師範:機械側のじゃんけんの「手」を格納する
		int chousensha;	//挑戦者:遊び手のじゃんけんの「手」を格納する
		int docchi;	//どっち:じゃんけんに勝つか負けるかを格納する
		int shouhai;	//勝敗:ゲームの結果を格納する

		//遊び手の入力内容を一時保存する
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		String str;	

		//class Kachimakeを起動
		Kachimake km=new Kachimake();

		//ゲームイントロ
		System.out.println("ここは\n\n『じ\n   ゃ\n  ん\n   拳\n  道\n   場』\n");
		System.out.println("勝ちも負けもマスターしたじゃん拳マスターに君はなれるか!?");

		//インターバル
		try{
			Thread.sleep(3000);
		}
		catch(InterruptedException e){}

		//ゲームスタート
		//1面【じゃんけんに勝つ】
		System.out.println();		//視認性向上を目的とした1行空け
		System.out.println("まずは勝ちを極めるべし");
		System.out.println("じゃんけんに勝つのだ。");

		//じゃんけん5回勝負(じゃんけんに勝つ)
		for(int i=1;i<=5;i++){

			//機械側のじゃんけんの「手」をnanidasunoメソッドに決めてもらう
			shihan=km.nanidasuno();

			//遊び手の入力した値を変数chousenshaに入力
			str=br.readLine();
			chousensha=Integer.parseInt(str);

			//じゃんけんの勝敗をkatsuメソッドに判定してもらい、結果を変数shouhaiに格納する
			shouhai=km.katsu(shihan,chousensha);

			//変数houhai=0の場合(失敗した場合)のゲームオーバーの表示
			if(shouhai==0){
				System.out.println("まだまだだな。");
				System.exit(0);
			}

		}

		//5試合連取した場合のコメント
		System.out.println("なかなかやるな。勝ちは体得しているようだ。");

		//インターバル
		try{
			Thread.sleep(3000);
		}
		catch(InterruptedException e){}

		//2面【じゃんけんに負ける】
		System.out.println();		//視認性向上を目的とした1行空け
		System.out.println("次は負けを極めてもらおう。");

		//じゃんけん5回勝負(じゃんけんに負ける)
		for(int i=1;i<=5;i++){

			//機械側のじゃんけんの「手」をnanidasunoメソッドに決めてもらう
			shihan=km.nanidasuno();

			//遊び手の入力した値を変数chousenshaに入力
			str=br.readLine();
			chousensha=Integer.parseInt(str);

			//じゃんけんの勝敗をmakeメソッドに判定してもらい、結果を変数shouhaiに入れる
			shouhai=km.make(shihan,chousensha);

			//変数houhai=0の場合(失敗した場合)のゲームオーバーの表示
			if(shouhai==0){
				System.out.println("負けは負けではない。");
				System.out.println("すべてを制御できてこそのじゃん拳マスターだ。");
				System.exit(0);
			}

		}

		//5試合連取した場合のコメント
		System.out.println("負けまで体得しているだと!?");
		System.out.println("まさか、本当にじゃん拳マスターに……");		

		//インターバル
		try{
			Thread.sleep(3000);
		}
		catch(InterruptedException e){}

		//3面【じゃんけんに勝ったり負けたりする】
		System.out.println();		//視認性向上を目的とした1行空け
		System.out.println("勝ちも負けもマスターしたじゃん拳マスターに君はなれるか!?");

		//じゃんけん5回勝負(じゃんけんに勝ったり負けたりする)
		for(int i=1;i<=5;i++){

			//ランダム変数を使って0~1の値を変数kikaiに代入する
			docchi=(int)(Math.random()*2);

			//それぞれ、勝ち/負けに変換し、それぞれを表示する
			if(docchi==0)
				System.out.println("\nじゃんけんに勝ってください");
			
			else
				System.out.println("\nじゃんけんに負けてください");
			

			//機械側のじゃんけんの「手」をnanidasunoメソッドに決めてもらう
			shihan=km.nanidasuno();

			//遊び手の入力した値を変数chousenshaに入力
			str=br.readLine();
			chousensha=Integer.parseInt(str);

			//じゃんけんの勝敗をkatsu/makeメソッドに判定してもらい、
			//結果を変数shouhaiに入れる
			if(docchi==0)
				shouhai=km.katsu(shihan,chousensha);
			
			else
				shouhai=km.make(shihan,chousensha);
			

			//変数houhai=0の場合(失敗した場合)のゲームオーバーの表示
			if(shouhai==0){
				System.out.println("頑張ったが、まだ未熟。");
				System.out.println("すべてを制御できてこそのじゃん拳マスターだ。");
				System.exit(0);
			}
		}

		//エンディング
		System.out.println("君こそがじゃん拳マスターだ。");
		System.out.println("  お\n め\n  で\n と\n  う");
		System.out.println("~~fin~~");

	}
}
1 Likes
1 Likes