社区
数据结构与算法
帖子详情
海龟作图
xqiang66
2003-07-27 03:26:40
假设有只海龟,用一个50*50的二维数组模拟一块由方格组成的
画板,记录海龟爬行路线。海龟的行踪命令从一个数组中读取
,如读到1代表右转弯,读到2代表左转弯,读到36则代表前进6
格,经过的格子则置1,假设每次海龟都从[0][0]开始。请问如
何从左转和右转中找到控制二维数组行列增减的方法?
...全文
388
3
打赏
收藏
海龟作图
假设有只海龟,用一个50*50的二维数组模拟一块由方格组成的 画板,记录海龟爬行路线。海龟的行踪命令从一个数组中读取 ,如读到1代表右转弯,读到2代表左转弯,读到36则代表前进6 格,经过的格子则置1,假设每次海龟都从[0][0]开始。请问如 何从左转和右转中找到控制二维数组行列增减的方法?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
寻开心
2003-07-28
打赏
举报
回复
BlueSky2008() 的方法很简单有效
对问题的抽象比较好,操作和数据都可以归并到一个海龟对象类当中加以解决
海龟类 『
public: // 属性
当前位置
当前方向
public: // 方法
运动()
』
theoldman
2003-07-28
打赏
举报
回复
看看这样是否对你有帮助?
#include "iostream.h"
const int COL = 50 ;
const int ROW = 50 ;
const bool LEFT = false ;
const bool RIGHT = true ;
int Cur_Col = 0 ; // 当前纵向位置
int Cur_Row = 0 ; // 当前横向位置
bool Row_Or_Col = false ; // 默认纵向
bool Add_Or_Dec = true ; // 必增
bool Turn(bool dir)
{
int col, row ;
bool row_or_col, add_or_dec ;
row_or_col = !Row_Or_Col ;
add_or_dec = (dir==RIGHT?!(Row_Or_Col^Add_Or_Dec):Row_Or_Col^Add_Or_Dec) ;
row = Cur_Row+((row_or_col)?(add_or_dec?1:-1):0) ;
col = Cur_Col+((row_or_col)?0:(add_or_dec?1:-1)) ;
if(row<0 || row>ROW || col<0 || col>COL) return false ;
Row_Or_Col = row_or_col ;
Add_Or_Dec = add_or_dec ;
Cur_Col = col ;
Cur_Row = row ;
return true ;
}
bool GoStraight()
{
int buffer ;
if(Row_Or_Col)
{
buffer = Cur_Row+(Add_Or_Dec?1:-1) ;
if(buffer<0 || buffer>ROW) return false ;
Cur_Row = buffer ;
}
else
{
buffer = Cur_Col+(Add_Or_Dec?1:-1) ;
if(buffer<0 || buffer>COL) return false ;
Cur_Col = buffer ;
}
return true ;
}
void Display(const bool ok)
{
if(!ok) cout << "error!" << endl ;
else
{
cout << Cur_Row << " "<< Cur_Col << " " ;
Row_Or_Col ? cout<<"row" : cout<<"col" ;
cout <<" " ;
Add_Or_Dec ? cout<<"add" : cout<<"dec" ;
cout << endl ;
}
}
void main()
{
cout << "ROW" << " " << "COL" << endl << endl ;
Display(true) ;
Display(GoStraight()) ;
for(int i=0; i<4; i++)
Display(Turn(i%2?RIGHT:LEFT)) ;
Display(Turn(RIGHT)) ;
}
BlueSky2008
2003-07-27
打赏
举报
回复
做一个状态转移表:
当前方向 转向 转后方向:
东:行增 左 北
右 南
南:列增 左 东
右 西
西:行减 左 南
右 北
北:列减 左 西
右 东
用C/C++编的
海龟
作图
海龟
作图
,程序虽短,但功能齐全!! 设置
海龟
类型的基本操作为:procedure StartTurtleGraphlcs ;{显示
作图
窗口,并在窗口内写出本人的姓名、上机号和实验题号。}procedure StartTurtle;{令
海龟
处于
作图
的初始...
海龟
作图
课程设计 非图形化界面
很完整的
海龟
作图
,有实验报告~~!
海龟
的相关类型说明为: #define UP 0 #define DOWN 1 Typedef int penState; //取值UP或者DOWN Typedef struct{float v,h;}aPoint; Typedef struct{ Int heading; //龟头...
数据结构实验报告
海龟
作图
数据结构实验
海龟
作图
,里面很全,包括源程序、调试文件和实验报告
海龟
作图
-C典型程序
大家都玩过DOS下的
海龟
作图
吧,这就是用C语言编写的
海龟
作图
。
严蔚敏:数据结构题集(C语言版)的
海龟
作图
题
严蔚敏:数据结构题集(C语言版)的
海龟
作图
题,代码很完整,书中的第77页
数据结构与算法
33,007
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章