28 lines
832 B
Plaintext
28 lines
832 B
Plaintext
class Point{var x,y;
|
|
fcn init(xyOrPoint=0,_=0){
|
|
if(Point.isInstanceOf(xyOrPoint)) set(xyOrPoint);
|
|
else x,y=vm.arglist.apply("toFloat")}
|
|
fcn set(p){x=p.x;y=p.y}
|
|
fcn toString{"(%d,%d)".fmt(x,y)}
|
|
}
|
|
class Circle{var center, radius;
|
|
fcn init(a=0.0,b=0.0,r=1.0){
|
|
switch [arglist]{
|
|
case(Circle){ center=Point(a.center); radius=a.radius }
|
|
case(Point) { center=Point(a); radius=b.toFloat(); }
|
|
else { center=Point(a,b); radius=r.toFloat(); }
|
|
}
|
|
}
|
|
fcn copy{self(self)}
|
|
fcn toString{"(%s,%d)".fmt(center.toString(),radius)}
|
|
}
|
|
// see if various constructors work
|
|
Point(); Point(1); Point(1,2), Point(Point());
|
|
Circle(); Circle(1); Circle(1,2); Circle(1,2,3);
|
|
Circle(Point()); Circle(Point(),1);
|
|
Circle(Circle());
|
|
|
|
c:=Circle(1,2,3);
|
|
c.println(); c.center.println();
|
|
c.copy().println();
|