JAva学習ノート--「山を運ぶゲーム」の実現

5065 ワード

注:本文はdox-pro.iteye.comから出て、Dox.Proのオリジナルのため、転載して出典を明記してください!
ちょうどこの2,3日学校は実习をして、1つの简単な山を運ぶゲームのコードを书いて、同じく2日javaの后の1つの练习手を见て、コードは难しさがなくて、纯水、纯シミュレーション!
タイトルの説明
      n座山が設けられ、コンピューターと人が試合の双方として、双方が交代で山を運ぶ.毎回山を運ぶ数はk席を超えてはいけないと規定されており、誰が最後の席を運ぶかは負けている.ゲームが開始されると、コンピュータは山の総数(n)と、毎回山を運ぶことを許可する最大数(k)を入力してもらう.それから人に先に始めてもらって、人が運ぶ山の数を入力した後、コンピュータはすぐにそれがどれだけの山を運ぶかを出力して、そしてどれだけの山が残っているかを提示します.双方は交代で最後の山が終わるまで山を運ぶ.コンピューターは誰が勝者なのかを示し、試合を続けるかどうかを尋ねた.人が遊びたくない場合は、山の総数を0に入力すると、コンピュータは何セットを終えたのか、双方の勝負はどうなのかを教えてくれます.
プログラムコード

// MountainGame.java
import java.util.*;

public class MountainGame {
	private static int roundCount;			//     
	private static int computerWinCount;	//          
	private static int humanWinCount;		//         
	private static int n;					//       
	private static int k;					//           
	
	//      
	public static void init()
	{
		roundCount = 0;
		computerWinCount = 0;
		humanWinCount = 0;
		n = k = 0;
	}
	
	//     
	public static int readin()
	{
		int in_n, in_k;
		
		System.out.println( "                     " );
		Scanner cin = new Scanner(System.in);
		in_n = cin.nextInt();
		if ( in_n == 0 ) return 0;	//     
		in_k = cin.nextInt();
		
		while ( in_n < 0 || in_k <= 0 ) {
			System.out.println( "    ,    " );
			Scanner cina = new Scanner(System.in);
			in_n = cina.nextInt();
			in_k = cina.nextInt();
		}
		
		n = in_n;
		k = in_k;
		
		return 1;
	}
	
	//       
	public static int play()
	{	
		while ( n > 0 ) {
			int cin_m;
			
			System.out.println( "         " );
			
			Scanner cin = new Scanner( System.in );
			cin_m = cin.nextInt();
			
			while ( cin_m <= 0 || cin_m > n || cin_m > k ) {
				System.out.println( "    ,     " );
				Scanner cina = new Scanner( System.in );
				cin_m = cina.nextInt();
			}
			
			n -= cin_m;
			if ( n == 0 ) return 0; //    
			else if ( n == 1 ) return 1; //   
			else {
				System.out.println( "         " + n + "   " );
				
				if ( n > k ) {
					System.out.println( "     " + k + "   " );
					n -= k;
				} 
				else {
					System.out.println( "     " + ( n - 1 ) + "   " );
					n -= ( n - 1 );
				}
				System.out.println( "          " + n + "   " );
			}			
		} // end while
		
		return 2;
	}
	
	
	//     
	public static void checkAndReport( int i )
	{
		if ( i == 1 ) {
			System.out.println( "   ,      !" );
			System.out.println();
			humanWinCount++;
		}
		else if ( i == 0 ) {
			System.out.println( "   ,   !" );
			System.out.println();
			computerWinCount++;
		}
	}
	
	//     
	public static void report()
	{
		System.out.println( "    !" );
		System.out.println( "      " + roundCount + "  " );
		System.out.println( "      " + humanWinCount + "  
" + " " + computerWinCount + " " ); System.out.println(); } public static void main( String args[] ) { MountainGame.init(); while ( MountainGame.readin() != 0 ) { MountainGame.checkAndReport( MountainGame.play() ); } MountainGame.report(); System.exit( 0 ); } }

テストの結果を添付
山の総数と毎回最大何基の山を運ぶかを入力してください.
21 4
移動する山の数を入力してください
4
あなたが山を引っ越した後、まだ17の山が残っています.
コンピュータは4つの山を運びます
パソコンが山を運んだ後、まだ13の山が残っている.
移動する山の数を入力してください
4
あなたが山を引っ越した後、まだ9つの山が残っています.
コンピュータは4つの山を運びます
パソコンが山を運んだ後、まだ5つの山が残っている.
移動する山の数を入力してください
4
素晴らしいですね.あなたはパソコンを負かしました.
山の総数と毎回最大何基の山を運ぶかを入力してください.
32 19
移動する山の数を入力してください
19
あなたが山を引っ越した後、まだ13の山が残っています.
コンピュータは12の山を運びます
パソコンが山を運んだ後、まだ1つの山が残っている.
移動する山の数を入力してください
1
残念ながら、あなたは負けました!
山の総数と毎回最大何基の山を運ぶかを入力してください.
88 20
移動する山の数を入力してください
20
あなたが山を引っ越した後、まだ68の山が残っています.
コンピュータは20の山を運びます
コンピューターが山を運んだ後、まだ48の山が残っている.
移動する山の数を入力してください
19
あなたが山を引っ越した後、まだ29の山が残っています.
コンピュータは20の山を運びます
パソコンが山を運んだ後、まだ9つの山が残っている.
移動する山の数を入力してください
8
素晴らしいですね.あなたはパソコンを負かしました.
山の総数と毎回最大何基の山を運ぶかを入力してください.
31 13
移動する山の数を入力してください
13
あなたが山を引っ越した後、まだ18の山が残っています.
コンピュータは13の山を運びます
パソコンが山を運んだ後、まだ5つの山が残っている.
移動する山の数を入力してください
4
素晴らしいですね.あなたはパソコンを負かしました.
山の総数と毎回最大何基の山を運ぶかを入力してください.
0
ゲーム終了!
共にゲーム0ゲームを行います
そのうち君は3セット勝った
コンピューターに1セット負かされる
プログラム自体は何もありませんが、javaに触れたばかりの新鮮さはまだ散っていません.小さなプログラムを書くのも楽しいので、記念に貼っておきましょう.