Java语言程序设计基础篇_编程练习题**14.29(游戏:豆机)

时间:2024-07-17 18:48:45
第十四章第二十九题
  • **14.29 (游戏:豆机)

请写一个程序,显示编程练习题 7.21 中介绍的豆机,如图 14-52c 所示

  • 代码展示
package chapter_14;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Line;
import javafx.scene.shape.Polyline;
import javafx.stage.Stage;

public class 编程练习题14_29BeanMachine extends Application{
	@Override
	public void start(Stage primaryStage) throws Exception {
		Pane pane = new Pane();
		
		int startX = 300;
		int startY = 200;
		for(int row = 1;row <= 8;row++) {//绘制点
			int temp = startX;
			for(int col = 1;col<=row;col++) {
				Circle c = new Circle(temp,startY,10);
				pane.getChildren().add(c);
				temp += 60;
			}
			startX -= 30;
			startY+=40;
		}
		int x = 90;
		for(int i = 0;i < 8;i++) {//绘制直线
			Line line = new Line(x,480, x,550);
			x+=60;
			line.setStrokeWidth(2);
			pane.getChildren().add(line);
		}
		Polyline polyline = new Polyline(//绘制折线
				240,60,
				240,150,
				30 ,480,
				30, 550,
				570, 550,
				570, 480,
				360, 150,
				360, 60
				);
		polyline.setStrokeWidth(2);
		pane.getChildren().add(polyline);
		Scene scene = new Scene(pane, 600, 600);
		primaryStage.setTitle("编程练习题14_29BeanMachine");
		primaryStage.setScene(scene);
		primaryStage.show();
		
	}
	public static void main(String[] args) {
		Application.launch(args);
	}
}
  • 代码解释: 

导入包

首先,代码导入了JavaFX库中所需的类,这些类用于构建用户界面和图形元素。

类定义

定义了一个名为编程练习题14_29BeanMachine的类,它继承自Application类,这是JavaFX应用程序的基础类。

start方法

这是JavaFX应用启动时调用的主要方法。在这个方法里,程序构建了整个UI场景。

创建 Pane
  • 首先,创建一个Pane对象,它是JavaFX中的一个容器,用来布局其他UI元素。
绘制豆子落点
  • 通过两层循环绘制圆形(代表豆子可能的落点)。外层循环控制行数(共8行),内层循环控制每行的圆圈数量,圆圈横向等距分布,每向下一行,起始点左移并下移一定距离(startX,startY)。
绘制水平线
  • 绘制了8条水平线,代表豆子最终可能落入的容器分隔线,这些线从90像素开始,每隔60个像素绘制一条,绘制七条。
绘制多边形边界
  • 使用Polyline绘制了豆子机的边界形状,定义了一系列坐标点构成一个开放多边形,包括顶部、两侧和底部,用于视觉上封闭豆子机的结构。
设置场景和舞台
  • 创建一个Scene对象,将之前创建的Pane作为其根节点,并设置了场景的大小为600x600像素。
  • 设置主舞台(Stage)的标题为“编程练习题14_29BeanMachine”,将场景设置到舞台上并显示出来。

main方法

这是JavaFX应用的入口点,通过调用Application.launch(args)来启动应用程序。

  • 结果展示