首页 > 试题广场 >

完成下列题目: (1)利用你的系统中能用的所有图形功能

[问答题]
完成下列题目:
(1)利用你的系统中能用的所有图形功能系统(如果你没有一个好的图形系统,或者你对任何图形系统都没有经验,那么你也可以考虑一个简单的“大象素ASCII实现”,其中的一个点就是一个字符位置,你写时就是放一个适当的字符—例如*—在某个位置):Window(n, m)在屏幕上建立一块大小为n乘以m的区域。屏幕上的点用(x,y)坐标(笛卡尔坐标)作为地址。Window w有一个当前位置w.current(),初始时current是Point(0,0)。当前位置可以用w.current(p)设置,其中的p是一个Point。一个Point用一对坐标刻画:Point(x,y)。一个Line用一对Point刻画:Line(w.current(),p2)。类Shape是Dot、Line、Rectangle、Circle等的公共界面。Point不是Shape。有一个Dot,Dot(p)用于表示在屏幕上的Point p。任何Shape都是不可见的,除非通过draw()将它画出来,例如:w.draw(Circle(w.current(),10))。每个Shape有9个接触点:e(东)、w(西)、n(北)、s(南)、ne(东北)、nw(西北)、se(东南)、sw(西南)和c(中心)。例如,Line(x.c(),y.nw())将建立起一条从x的中心到y的左上角的线段。在用draw()画出一个Shape之后,当前位置就是这个Shape的se()。Rectangle用它的左下角和右上角刻画:Rectangle(w.current(),Point(10,10))。作为一个简单试验,请设法显示出一个简单的“儿童画的房子”,带有一个房顶,两扇窗户和一个门。
(2)为什么在(1)中需要同时存在Point和Dot?在什么环境中将如Line等关键类的具体版本作为Shape类的参数是个好主意?

这道题你会答吗?花几分钟告诉大家答案吧!