Tree 子类不';t显示处理
我正在做一个作业,需要创建一个基类树,子类Flower。 但我不知道哪里弄错了,当鼠标按下时,树上的花不会出现,只有树出现了。这是我到目前为止的代码Tree 子类不';t显示处理,tree,processing,superclass,display,flower,Tree,Processing,Superclass,Display,Flower,我正在做一个作业,需要创建一个基类树,子类Flower。 但我不知道哪里弄错了,当鼠标按下时,树上的花不会出现,只有树出现了。这是我到目前为止的代码 树; ArrayList树列表=新的ArrayList(); 花儿; ArrayList flowerList=新的ArrayList(); 无效设置(){ 大小(800800); 树=新树(mouseX、mouseY、半圆周率、高度/12); 花=新花(mouseX,mouseY,半皮,高度/12); } 作废提款(){ 背景(255); //当
树;
ArrayList树列表=新的ArrayList();
花儿;
ArrayList flowerList=新的ArrayList();
无效设置(){
大小(800800);
树=新树(mouseX、mouseY、半圆周率、高度/12);
花=新花(mouseX,mouseY,半皮,高度/12);
}
作废提款(){
背景(255);
//当前树
对于(int j=0;j5){
drawMouseTree(endX,endY,旋转-PI/5,高*0.7);//左
drawMouseTree(endX,endY,旋转+PI/5,高*0.7);//右
}
//在每根树枝上开一朵花
如果(高度>5){
中风(255102178);
填充(255、102、178);
椭圆(endX,endY,5,5);
}
}
类树{
浮动XPO、YPO;
浮动旋转;
高飘飘,尾端,尾端;
树(浮动XPO、浮动YPO、浮动旋转、浮动高度){
this.xPos=xPos;
this.yPos=yPos;
这个旋转=旋转;
this.tall=高;
}
空心绘图树(浮动XPO、浮动YPO、浮动旋转、浮动高度){
//枝干
浮动端x=xPos-高度*cos(旋转);
浮动端Y=yPos-高度*sin(旋转);
//画一棵树
冲程(0);
冲程重量(2);
行(xpo、ypo、endX、endY);
//创建2个分支
如果(高度>5){
drawTree(endX,endY,旋转-PI/5,高*0.7);//左
drawTree(endX,endY,旋转+PI/5,高*0.7);//右
}
}
}
类花扩展树{
花(浮动XPO、浮动YPO、浮动旋转、浮动高){
超级(XPO、YPO、旋转、高);
}
空花儿(){
超级绘图树(xPos、YPO、旋转、高);
//在每根树枝上开一朵花
如果(高<40&&高>5){//,那么花就会出现在树顶周围
冲程(255、102、178);
填充(255、102、178);
椭圆(endX,endY,5,5);
}
}
}
我对超级儿童班的概念还很陌生。如果您能帮助解决此问题,我们将不胜感激
编辑:
找出我在drawFlower()中使用endX,endY的错误。以下是新代码:
类扩展树{
花(浮动XPO、浮动YPO、浮动旋转、浮动高){
超级(XPO、YPO、旋转、高);
}
空花儿(){
超级绘图树(xPos、YPO、旋转、高);
//在每根树枝上开一朵花
如果(高度>5){
//画花
冲程(255、102、178);
填充(255、102、178);
椭圆(芬克斯,芬尼,5,5);
}
}
}
类树{
浮动XPO、YPO;
浮动旋转;
高高飘浮,芬克斯,芬尼;
树(浮动XPO、浮动YPO、浮动旋转、浮动高度){
this.xPos=xPos;
this.yPos=yPos;
这个旋转=旋转;
this.tall=高;
}
空心绘图树(浮动XPO、浮动YPO、浮动旋转、浮动高度){
//枝干
浮动端x=xPos-高度*cos(旋转);
浮动端Y=yPos-高度*sin(旋转);
finX=endX;
finY=endY;
//画一棵树
冲程(0);
冲程重量(2);
行(xPos,yPos,endX,endY);//分支
//创建2个分支
如果(高度>5){
drawTree(endX,endY,旋转-PI/5,高*0.7);//左
drawTree(endX,endY,旋转+PI/5,高*0.7);//右
}
}
}
然而,结果是:
这棵树的每一根枝干上都有一朵花吗?
如下所示:您窗口的
高度是800
传递到树
或花
构造函数的最后一个参数是height/12
800/12
是66.6666…
,它被截断为66
换句话说,toll
变量保存值66
。然后在该if
语句中使用该变量:
if(高度<40&&t高度>5){
由于66
小于40,因此该if
语句的计算结果永远不会为真
您只需在该if
语句的前面打印出toll
的值,就可以轻松地测试这一点:
println(高);
即使您将if
语句注释掉,您仍然看不到flowers。再次说明,println()
函数的作用是:
笔划(255、102、178);
填充(255、102、178);
println(endX+,“+endY);//打印0.0,0.0
椭圆(endX,endY,50,50);
此时,endX
和endY
的值始终为0
。这与您使用它们的方式有关
我明白你的意思了,但是在代码的这一点上,你实际上没有权限访问分支的结束位置
如果我是你,我会从更简单的角度出发。不要使用递归函数来绘制树,而是从顶部有花的单行开始,然后从那里开始。谢谢你回答我的问题。我应该提到它必须是递归树,需要一些子类。@Tracey,即使这是你的要求,我仍然建议启动siml