65.9K
CodeProject 正在变化。 阅读更多。
Home

Java 中的保龄球记分板游戏

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.60/5 (3投票s)

2012 年 4 月 26 日

CPOL

2分钟阅读

viewsIcon

63655

downloadIcon

1453

一个 Java 保龄球记分牌游戏。

引言

以下 Java 控制台代码用于在每次击倒球瓶后查看您的分数。这个 Java 控制台保龄球程序对于跟踪所有分数以及显示每次输入保龄球分数时所有可能的情况都很有用。

此外,这段 Java 代码也可以用作插件,将其合并到您的 Java 程序中,因为它可以在数组结构中填充数据并计算存储的变量。

尽情享受吧!

背景

这个 Java 游戏允许您添加分数并跟踪玩家在保龄球游戏中击倒每个球瓶时的分数。第一个球的分数显示第一次击倒的球瓶数,第二个球的分数显示第二次击倒的球瓶数(假设使用了第二个球)。总分将显示到包括可能的第 10 局额外球的总分。

使用代码

要使用这段代码,您需要一个 Java 编辑器,例如 TextPad,以及您的计算机上的 Java JDK。使用 Java 类可以在安装了 JDK 的主要操作系统上运行。

完成安装要求后,运行 Java 代码应该很简单。但是,如果您想创建一个 bat 或 exe 文件来运行您的类文件,也可以这样做。 在您的文本编辑器中输入以下代码,并将其保存为 Bowling.bat

echo "Launching My Java Bowling game Score Board"
java -jar "location of java file (Bowling.java)"

显示控制台菜单界面

以下 Java 代码显示游戏的菜单(请参阅注释):

//
//Main 
//Menu

int frme[] = new int[10]; // Init Frame in a 1 dimension Array
int allfrme[][] = new int[2][12]; // Init Frames with 2 Extra Pins in 2 dimension Array
String s; // Input String
 
 do { //A loop to get all input string from user and 
  System.out.println("\n\t  Welcome to Java Bowling Console Gaming Score Board ");
   for(int l1 = 0; l1 < 10; l1++)
	  frme[l1] = 0;
     for(int l2 = 0; l2 < 12; l2++)
	   allfrme[0][l2] = allfrme[1][l2] = 0;
   nxtfrme: //Init the arrays

 for(int i = 0; i < 10; i++) {
    boolean chk = false;
    int Pins = 0;

   while(!chk) { //Accepting string inputs and validating it
    System.out.printf("\n\t   FRAME %2d ", new Object[] {
	 Integer.valueOf(i + 1)	});

    System.out.printf("\n\t Ball 1: ");
	 Pins = keyIn.nextInt();

     if(Pins <= 10 && Pins >= 0) {
	  allfrme[0][i] = Pins;
	  chk = true;
	 }
   } 
   if(Pins == 10) { //Displaying to user that he made a Strike when equal to 10 pins
     System.out.println("\n\t\t\tExcelent, Strike!!");
	 continue;

   }
  chk = false;

以二维形式显示您的保龄球分数

以下代码显示用户或玩家完成输入他们的保龄球分数后的分数。当用户输入每个字符串时,将其放置在其地址中,将字符串转换为对象 int 值,并计算每个间隔值作为 int,放置在每个数组地址中。

//Calculating values
//start
if(allfrme[0][0] + allfrme[0][1] == 10)
   frme[0] = 10 + allfrme[0][1];
 else
   frme[0] = allfrme[0][0] + allfrme[1][0];

//middle
if(allfrme[0][0] == 10) {
  if(allfrme[0][1] == 10)
	 frme[0] = 20 + allfrme[0][2];
   else
	 frme[0] = 10 + allfrme[0][1] + allfrme[1][1];
}

//end
for(int j = 1; j < 10; j++) {

 if(allfrme[0][j] == 10){
  if(allfrme[0][j + 1] == 10)
	frme[j] = frme[j - 1] + 20 + allfrme[0][j + 2];
  else
	frme[j] = frme[j - 1] + 10 + allfrme[0][j + 1] + allfrme[1][j + 1];
    continue;
 }

if(allfrme[0][j] + allfrme[1][j] == 10)
   frme[j] = frme[j - 1] + 10 + allfrme[0][j + 1];
else
   frme[j] = frme[j - 1] + allfrme[0][j] + allfrme[1][j];

}

//Printing Values
System.out.print("\n\n\t  FRAME"); // Frame Heading
//Init object loops to get and add values to the right address
for(int k = 1; k < 11; k++)
	 System.out.printf("%4d", new Object[] {
	   Integer.valueOf(k) });

   if(allfrme[0][9] == 10) {
	 if(allfrme[0][10] == 10)
	   System.out.print("  XTR1 XTR2");
	 else
	   System.out.print("  EXTRA");

   }else if(allfrme[0][9] + allfrme[1][9] == 10)
	System.out.print("  XTRA");
	System.out.print("\n\n\tBall 1 ");

  for(int l = 0; l < 10; l++)
      System.out.printf("%4d", new Object[] {
	 Integer.valueOf(allfrme[0][l])
     });
 //Displaying the array addresses in each frame.
 if(allfrme[0][9] == 10)	{
  if(allfrme[0][10] == 10)
    System.out.printf("%4d%4d", new Object[] {
     Integer.valueOf(allfrme[0][10]), Integer.valueOf(allfrme[0][11]) });
   else
      System.out.printf("%4d", new Object[] {
       Integer.valueOf(allfrme[0][10]) });

 } else
  if(allfrme[0][9] + allfrme[1][9] == 10)
	System.out.printf("%4d", new Object[] {
		Integer.valueOf(allfrme[0][10])
	});
    System.out.print("\n\tBall 2 ");
  for(int i1 = 0; i1 < 10; i1++)
	System.out.printf("%4d", new Object[] {
		Integer.valueOf(allfrme[1][i1])
	});

  if(allfrme[0][9] == 10 && allfrme[0][10] != 10)
	System.out.printf("%4d", new Object[] {
		Integer.valueOf(allfrme[1][10])
	});

    System.out.print("\n\n\t  SCORE");
  for(int j1 = 0; j1 < 10; j1++)
	System.out.printf("%4d", new Object[] {
		Integer.valueOf(frme[j1])
	});
  //Prompt to the user 
  System.out.print("\n\n\t\t\tPlay more (Y/N)? ");
  s = keyIn.next();
  String s1 = keyIn.nextLine();

  } while(s.toUpperCase().charAt(0) == 'Y');
}

非常简单,但又很复杂的 Java 程序,因为需要在控制台中以二维模式打印值。 自己运行它,并讨论任何问题、建议和改进,以创建保龄球游戏。

关注点

挑战自己,看看您如何使用一些 for 循环和 if 语句来实现各种编程问题。

历史

创建日期:2011 年 11 月 30 日。

© . All rights reserved.