Java语言程序设计基础篇_编程练习题*18.19 (思瑞平斯基三角形)

news2024/9/21 8:04:01

题目:*18.19 (思瑞平斯基三角形)

修改程序清单18-9, 开发一个程序让用户使用 “+” 和 "-” 按钮将当前阶数增1或减1,如图 18 -12a 所示。初始阶数为0。如果当前阶数为0,就忽略按钮。

  • 代码示例

编程练习题18_19SierpinskiTriangle.java

package chapter_18;

import javafx.application.Application;
import javafx.geometry.Point2D;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.shape.Line;
import javafx.stage.Stage;

public class 编程练习题18_19SierpinskiTriangle  extends Application{
	private static int order = 0;
	@Override
	public void start(Stage primaryStage) throws Exception {
		SierpinskiTrianglePane trianglePane = new SierpinskiTrianglePane();
		Button btAdd = new Button("+");
		btAdd.setOnMouseClicked(e ->{
			trianglePane.increaseByOne();
		});
		Button btSubtract = new Button("-");
		btSubtract.setOnMouseClicked(e ->{
			trianglePane.decreaseByOne();
		});
		HBox hBox = new HBox(10);
		hBox.getChildren().addAll(btAdd,btSubtract);
		hBox.setAlignment(Pos.CENTER);
		
		BorderPane borderPane = new BorderPane();
		borderPane.setCenter(trianglePane);
		borderPane.setBottom(hBox);
		
		Scene scene = new Scene(borderPane, 200, 210);
		primaryStage.setTitle("编程练习题18_19SierpinskiTriangle");
		primaryStage.setScene(scene);
		primaryStage.show();
	}
	static class SierpinskiTrianglePane extends Pane{
		private int order = 0;
		
		public void setOrder(int order) {
			this.order = order;
			paint();
		}
		SierpinskiTrianglePane(){
		}
		protected void paint() {
			Point2D p1 = new Point2D(getWidth()/2, 10);
			Point2D p2 = new Point2D(10, getHeight() - 10);
			Point2D p3 = new Point2D(getWidth()-10, getHeight() -10);
			this.getChildren().clear();
			displayTriangles(order,p1,p2,p3);
		}
		private void displayTriangles(int order,Point2D p1,
				Point2D p2,Point2D p3) {
			if(order < 0) {
				System.out.println("Order must be non-negative");
				return;
			}
			if(order == 0){
				/*Polygon triangle = new Polygon();
				triangle.getPoints().addAll(p1.getX(),p1.getY()
						,p2.getX(),p2.getY(),p3.getX(),p3.getY());
				triangle.setStroke(Color.BLACK);
				triangle.setFill(Color.WHITE);
				this.getChildren().add(triangle);*/
				Line l1 = new Line(p1.getX(), p1.getY(), p2.getX(), p2.getY()); 
				Line l2 = new Line(p2.getX(), p2.getY(), p3.getX(), p3.getY()); 
				Line l3 = new Line(p3.getX(), p3.getY(), p1.getX(), p1.getY()); 
				this.getChildren().addAll(l1,l2,l3);
			}else {
				Point2D p12 = p1.midpoint(p2);
				Point2D p23 = p2.midpoint(p3);
				Point2D p31 = p3.midpoint(p1);
				
				displayTriangles(order-1, p1, p12, p31);
				displayTriangles(order-1, p12, p2, p23);
				displayTriangles(order-1, p31, p23, p3);
			}
			
		}
		public void decreaseByOne() {
            if (order > 0) {
                setOrder(order - 1);
            }
        }

        public void increaseByOne() {
            setOrder(order + 1);
        }
	}
	public static void main(String[] args) {
		Application.launch(args);
	}
}
  •  结果展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2127757.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WEBSERVICE报错逻辑端口不存在问题

例如如下的报错 打开你的SOA 修改这个位置的代码

JavaScript ES6特性(var let const、function=>、增强表达赋值、类与对象)

一、var let const 1、var var明明定义在for里面的但是外部能够访问这个变量,说明var可以跨域访问。 2、let let明明定义在for里面的但是外部不能够访问这个变量,说明let不可以跨域访问。 3、const const foo = {}; // 为 foo 添加一个属性,可以成功 foo.prop = 123; fo…

【mechine learning-六-supervise learning之线性回归模型】

监督学习之线性回归模型 线性回归模型线性模型回归模型 如何使用线性模型实现智能化预测呢寻找数据训练模型输入、特征、目标、预测值、模型代价函数 线性模型是人工智能监督学习中最广泛的应用&#xff0c;所以有必要先学习一下这个基础模型&#xff0c;做好基石。 线性回归模…

商业体育馆的未来之选:气膜馆引领新赛道—轻空间

随着城市化进程的加快&#xff0c;土地资源日益紧张&#xff0c;商业体育馆的建设需求也日渐增多。传统建筑在用地、成本、周期等方面存在诸多限制&#xff0c;而气膜馆的出现&#xff0c;为体育场馆建设提供了一条全新的解决方案。在未来十年&#xff0c;气膜体育馆将成为商业…

【系统方案】ERP管理系统总体建设方案(Word)

第一部分 概述 第二部分 方案介绍 第三部分 系统业务流程 3.1 关键需求概括分析 3.1.1 销售管理方面 3.1.2 采购管理方面 3.1.3 仓库管理方面 3.1.4 财务管理方面 3.1.5 人力资源方面 3.2 关键需求具体分析 3.2.1 财务管理 3.2.1.1会计凭证解决 3.2.1.2钞票流量预算管理 3.2.1.…

C语言15--联合体与枚举

联合体&#xff08;共同体&#xff09;基本概念 联合体的外在形式跟结构体非常类似&#xff0c;但它们有一个本质的区别&#xff1a;结构体中的各个成员是各自独立的内存空间&#xff0c;而联合体中的各个成员却共用同一块内存&#xff0c;因此联合体也称为共用体。 联合体各成…

[苍穹外卖]-09Spring Task定时任务

Spring Task spring Task是spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑 只要是需要定时处理的场景都可以使用Spring Task定时任务框架 cron表达式就是一个字符串,可以定义任务触发的时间 构成规则: 分为6或7个域, 由空格隔开,每个域代表一个含义每…

即插即用篇 | YOLOv8 引入并行的分块注意力 | 北京大学 2024 | 微小目标

本改进已同步到YOLO-Magic框架! 摘要:红外小目标检测是一项重要的计算机视觉任务,涉及在红外图像中识别和定位通常仅包含少量像素的微小目标。然而,由于目标体积小且红外图像背景通常复杂,这一任务面临诸多挑战。本文提出了一种深度学习方法,HCF-Net,通过多个实用模块显…

客厅适合用什么灯?客厅落地台灯款式分享

客厅适合用什么灯&#xff1f;客厅落地台灯具备着提供舒适、宽广光线的作用&#xff0c;非常受广大学生、家长们的欢迎。然而&#xff0c;市面上有些品质低劣的产品不仅难以达到预期的照明效果&#xff0c;更有可能导致眼睛受到二次伤害&#xff0c;甚至潜藏安全隐患。作为一名…

云端与 IDE 智能体整合:解决工具碎片化,实现 AI 全流程自动编码

在那篇《2024 年 AI 辅助研发趋势》里&#xff0c;我们谈及了未来的趋势是&#xff1a;从辅助开发人员发展到涵盖软件开发的 整个生命周期。而软件研发本身也是一个复杂的流程&#xff0c;涉及到需求分析、设计、开发、测试、部署等等。在开源的《AI 辅助软件工程&#xff1a;实…

SpringCloud Alibaba入门简介

1、诞生 2018.10.31&#xff0c;Spring Cloud Alibaba 正式入驻了 Spring Cloud 官方孵化器&#xff0c;并在 Maven 中央库发布了第一个版本。 2、是什么&#xff0c;去哪下 官网&#xff1a;Spring Cloud Alibaba官网_基于Springboot的微服务教程-阿里云-阿里云Spring Cloud …

蓄电池制造5G智能工厂物联数字孪生平台,推进制造业数字化转型

蓄电池制造5G智能工厂物联数字孪生平台&#xff0c;推进制造业数字化转型。5G智能工厂&#xff0c;作为“5G工业互联网”深度融合的产物&#xff0c;将5G技术广泛应用于工厂生产现场&#xff0c;实现了生产单元的广泛连接、IT与OT的深度融合以及数据要素的充分利用。随着5G技术…

健身房|基于springboot的健身房管理系统设计与实现(附项目源码+论文+数据库)

私信或留言即免费送开题报告和任务书&#xff08;可指定任意题目&#xff09; 目录 一、摘要 二、相关技术 三、系统设计 四、数据库设计 五、核心代码 六、论文参考 七、源码获取 一、摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理…

【ROS2】地平线RDK X3Pi系统由1.x升级到3.0.0

1、硬件说明 1.1 硬件版本 截止2024.9.11,地平线RDK X3的硬件有四个版本:V1.0、V1.1、V1.2和V2.1 1.2 外观区别 1)V1.x版本外观 2)V2.X版本外观 1.3 配置区别 RDK X3 2.0 主要特性包括四核 Cortex A53 处理器、5Tops BPU 算力、最高 4GB 内存、支持 4K@60 帧视频编…

腾讯混元首个多模态模型——hunyuan-vision

腾讯混元系列升级&#xff1a; 腾讯混元发布多模态模型hunyuan-vision&#xff0c;具有4K的上下文&#xff0c;成本为18元/百万tokens。 感谢您的阅读&#xff0c;在智匠AI&#xff08;MindCraft AI&#xff09;上体验最新更新的模型。

人工智能+数字孪生技术在智慧型项目中的应用研究(Word原件)

1 基于BIM的智慧社区运维管理信息系统构建 1.1 数据存储 1.2 数据交换 1.3 BIM模型的数据整合及轻量化 1.运维BIM模型 2.BIM模型的数据整合 3.BIM模型的轻量化处理 2 GIS与BIM融合数字孪生技术应用 2.1 BIM模型在实景三维GIS平台上分析 2.2 BIM与GIS数据交互 …

【C++登堂入室】类与对象(上)

目录 一、面向过程和面向对象初步认识 二、类的引入 三、类的定义 四、类的访问限定符及封装 4.1 访问限定符 4.2 封装 五、类的作用域 六、类的实例化 七、类对象模型 7.1如何计算类对象的大小 7.2 类对象的存储方式猜测 7.3 结构体内存对齐规则 八、this指针 …

git:恢复纯版本库

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

WebGL系列教程五(使用索引绘制彩色立方体)

目录 1 前言2 立方体3 开始绘制3.1 声明顶点和颜色3.2 使用索引绘制3.3 效果3.4 完整代码 4 总结 1 前言 上一讲我们讲了如何绘制彩色的三角形&#xff0c;这一讲我们来说如何绘制立方体。为什么几乎所有的WebGL教程总是从开始绘制三角形开始&#xff0c;因为三角形是最小的面&…

搜狗输入法电脑版颜文字如何关闭(快捷键冲突)

在使用快捷键:CTRLShiftb的时候&#xff0c;发现这个快捷键与搜狗输入法的快捷键存在冲突。 解决办法 在输入法图标上&#xff0c;右键&#xff0c;选择更多设置 找到左侧的高级选项&#xff0c;然后在右侧找到颜文字&#xff0c;选择关闭即可。