[求助]海龟作图的程序
[em08][em08][em08]问题描述]<br>设计并实现海龟抽象数据类型Turtle,并以此为基础设计一个演示海龟作图的程序。 <br>[基本要求]<br>(1)设置海龟类型的基本操作为:<br>procedure StartTurtleGraphlcs ;<br>{显示作图窗口,并在窗口内写出本人的姓名、上机号和实验题号。}<br>procedure StartTurtle;<br>{令海龟处于作图的初始状态。即显示作图窗口,并将海龟定位在窗口正中;}<br>{置画笔状态为落笔、龟头朝向为0度(正东方向)。}<br>procedure PenUp;<br>{改变画笔状态为抬笔。从此时起,海龟移动将不在屏幕上作图。}<br>procedure PenDown;<br>{改变画笔状态为落笔。从此时起,海龟移动将在屏幕上作图。}<br>function TurtleHeadins:inteser ;<br>{返回海龟头当前朝向的角度。}<br>function TurtlePos:PaPoint;<br>{返回海龟的当前位置。}<br>procedureMove(steps:Integer);<br>{依照海龟头的当前朝向,向前移动海龟steps步。}<br>procedureTurn(degrees:Integer);<br>{改变海龟头的当前朝向,逆时针旋转degrees度。}<br>procedure MoveTTo(newPos:aPolnt);<br>{将海龟移动到新的位置 newPos。如果是落笔状态,则同时作图。}<br>Procedure TurnTTo(angle:real);<br>{改变海龟头的当前朝向为,从正东方向起的angle度。}<br>proceduresetTurtleColor(color:Integer);<br>{设置海龟画笔的颜色为color。} <br>(2)利用上述定义的海龟实现作图命令,以画出任意长度的线段、任意大小的矩形和圆。<br>[测试数据]<br>由学生自行指定线段(的长度)、矩形(的长度和宽度)及圆(的半径)等参数。<br>[实现提示]<br>(1)海龟的相关类型说明为:<br>type penstate=(up,down);<br> aPoint=record v,h:real end;<br> newTurtle=record<br>heading:integer;<br>{龟头(画笔)方向,简称龟头朝向}<br>pen:penstate;<br>{画笔状态:uP抬笔,down落笔}<br>color:Integer;<br>{画笔当前颜色}<br>Pos:aPoint<br>{海龟当前位置}<br>end;<br>(2)将“海龟”实现为 Turbo Pascal的一个单元,并将其相关类型和变量说明封装在年元的实现部分,宿主程序仅通过单元的接口部分调用海龟进行作图。<br>[选作内容]<br>(1)扩充海龟抽象数据类型,增添SizeFactor域,作为海龟的尺寸因子(移动单位),其值可改变; <br>(2)宿主程序中可定义多个海龟变量,以实现多个海龟同时画不同的图形;扩充后的海龟抽象数据类型的基本操作可定义为:<br>procedure StartTurtle(var raphael:newTurtle; startPos:aPolnt);<br>{初始化一个新海龟,定位在startPos,并置画笔状态为落笔、龟头朝向为0}<br>{以及步进的尺寸因子为1。}<br>procedure PenUp(var raphael:newTurtle);<br>{改变画笔状态为抬笔。从此时起,海龟移动时将不在屏幕上作图。}<br>procedure PenDown(var raphael:newTurtle);<br>{改变画笔状态为落笔。从此时起,海龟移动时将在屏幕上作图。}<br>functionTurtleHeading(raphael:newTurtle):real;<br>{返回海龟头朝向的当前角度。}<br>functionTurtlePos(raphael:newTurtle):aPoint;<br>{返回海龟的当前位置。}<br>procedure Move (va raphael:newTurtle;steps:real);<br>{依照海龟头的当前朝向和尺寸因子,向前移动steps步。}<br>procedure Turn(var raphael:newTurtle size:real);<br>{改变海龟头的当前朝向,逆时针旋转size度。}<br>procedure ScaleTurtle(var raphael:newTurtle scaleFactor:real);<br>{改变海龟移动的步进尺寸SizeFactor,扩大scaleFactor倍}<br>procedure MoveTTo(var raphael:newTurtle ; newPos:aPolnt);<br>{将海龟移动到新位置newPos。newPos是屏幕窗口中的一个“点”。}<br>procedure TurnTTo(var raphael:newTurtle ; angle:real);<br>{改变海龟头的当前朝向为从正东方向起的angle度。}<br>procedure setturtleColor(var raphael:newTurtle;Color;integer);<br>{设置海龟画笔的当前颜色为color。}<br>其中、角度、尺寸因子等定义为实型,可提高作图精度。 <br>(3)在海龟单元的基础上,实现一个用鼠标进行海龟作图的界面。界面中应提供基本线型、基本图形、抬笔落笔、选择颜色等作图操作的选单或图标<br>[attach]21701[/attach]<br><br><br>有人要是可以帮忙或者是以前做过还有留底的!!!!!!!!<br>帮帮忙!!!!!!!!!!!!<br>可以帮忙的加viky q:122252765<br> <br>[align=right][color=#000066][此贴子已经被作者于2007-5-31 16:15:26编辑过][/color][/align]
无魜既?点解无魜咖! 嘿嘿,我又要,做好留一份给我!!! 唉,上课时你做什么了?
这是PASCAL语言,你发到C语言来做什么? 晕,3楼是考古系的 这个……是模仿小海龟软件来自己做一个类似的么?
页:
[1]
