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