标题:[求助]海龟作图的程序
只看楼主
viky
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1752
专家分:0
注 册:2007-5-31
 问题点数:0 回复次数:5 
[求助]海龟作图的程序
问题描述]
设计并实现海龟抽象数据类型Turtle,并以此为基础设计一个演示海龟作图的程序。
[基本要求]
(1)设置海龟类型的基本操作为:
procedure StartTurtleGraphlcs ;
{显示作图窗口,并在窗口内写出本人的姓名、上机号和实验题号。}
procedure StartTurtle;
{令海龟处于作图的初始状态。即显示作图窗口,并将海龟定位在窗口正中;}
{置画笔状态为落笔、龟头朝向为0度(正东方向)。}
procedure PenUp;
{改变画笔状态为抬笔。从此时起,海龟移动将不在屏幕上作图。}
procedure PenDown;
{改变画笔状态为落笔。从此时起,海龟移动将在屏幕上作图。}
function TurtleHeadins:inteser ;
{返回海龟头当前朝向的角度。}
function TurtlePos:PaPoint;
{返回海龟的当前位置。}
procedureMove(steps:Integer);
{依照海龟头的当前朝向,向前移动海龟steps步。}
procedureTurn(degrees:Integer);
{改变海龟头的当前朝向,逆时针旋转degrees度。}
procedure MoveTTo(newPos:aPolnt);
{将海龟移动到新的位置 newPos。如果是落笔状态,则同时作图。}
Procedure TurnTTo(angle:real);
{改变海龟头的当前朝向为,从正东方向起的angle度。}
proceduresetTurtleColor(color:Integer);
{设置海龟画笔的颜色为color。}
(2)利用上述定义的海龟实现作图命令,以画出任意长度的线段、任意大小的矩形和圆。
[测试数据]
由学生自行指定线段(的长度)、矩形(的长度和宽度)及圆(的半径)等参数。
[实现提示]
(1)海龟的相关类型说明为:
type penstate=(up,down);
aPoint=record v,h:real end;
newTurtle=record
heading:integer;
{龟头(画笔)方向,简称龟头朝向}
pen:penstate;
{画笔状态:uP抬笔,down落笔}
color:Integer;
{画笔当前颜色}
Pos:aPoint
{海龟当前位置}
end;
(2)将“海龟”实现为 Turbo Pascal的一个单元,并将其相关类型和变量说明封装在年元的实现部分,宿主程序仅通过单元的接口部分调用海龟进行作图。
[选作内容]
(1)扩充海龟抽象数据类型,增添SizeFactor域,作为海龟的尺寸因子(移动单位),其值可改变;
(2)宿主程序中可定义多个海龟变量,以实现多个海龟同时画不同的图形;扩充后的海龟抽象数据类型的基本操作可定义为:
procedure StartTurtle(var raphael:newTurtle; startPos:aPolnt);
{初始化一个新海龟,定位在startPos,并置画笔状态为落笔、龟头朝向为0}
{以及步进的尺寸因子为1。}
procedure PenUp(var raphael:newTurtle);
{改变画笔状态为抬笔。从此时起,海龟移动时将不在屏幕上作图。}
procedure PenDown(var raphael:newTurtle);
{改变画笔状态为落笔。从此时起,海龟移动时将在屏幕上作图。}
functionTurtleHeading(raphael:newTurtle):real;
{返回海龟头朝向的当前角度。}
functionTurtlePos(raphael:newTurtle):aPoint;
{返回海龟的当前位置。}
procedure Move (va raphael:newTurtle;steps:real);
{依照海龟头的当前朝向和尺寸因子,向前移动steps步。}
procedure Turn(var raphael:newTurtle size:real);
{改变海龟头的当前朝向,逆时针旋转size度。}
procedure ScaleTurtle(var raphael:newTurtle scaleFactor:real);
{改变海龟移动的步进尺寸SizeFactor,扩大scaleFactor倍}
procedure MoveTTo(var raphael:newTurtle ; newPos:aPolnt);
{将海龟移动到新位置newPos。newPos是屏幕窗口中的一个“点”。}
procedure TurnTTo(var raphael:newTurtle ; angle:real);
{改变海龟头的当前朝向为从正东方向起的angle度。}
procedure setturtleColor(var raphael:newTurtle;Color;integer);
{设置海龟画笔的当前颜色为color。}
其中、角度、尺寸因子等定义为实型,可提高作图精度。
(3)在海龟单元的基础上,实现一个用鼠标进行海龟作图的界面。界面中应提供基本线型、基本图形、抬笔落笔、选择颜色等作图操作的选单或图标



有人要是可以帮忙或者是以前做过还有留底的!!!!!!!!
帮帮忙!!!!!!!!!!!!
可以帮忙的加viky q:122252765

[此贴子已经被作者于2007-5-31 16:15:26编辑过]

搜索更多相关主题的帖子: 海龟 procedure 窗口 Turtle 
2007-05-31 16:13
viky
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1752
专家分:0
注 册:2007-5-31
得分:0 
无魜既?点解无魜咖!

中環nite 燈光閃閃...
2007-05-31 20:55
zhuocheng102
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-7-2
得分:0 
嘿嘿,我又要,做好留一份给我!!!
2008-07-02 17:01
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
得分:0 
唉,上课时你做什么了?
这是PASCAL语言,你发到C语言来做什么?

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2008-07-02 17:06
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
得分:0 
晕,3楼是考古系的

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2008-07-02 17:07
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
得分:0 
这个……是模仿小海龟软件来自己做一个类似的么?

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-07-02 17:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-143855-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.621663 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved