| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 695 人关注过本帖
标题:难度比较大!
只看楼主 加入收藏
bqilu
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-10-17
收藏
 问题点数:0 回复次数:11 
难度比较大!

用面向对象方法和面向对象程序设计语言,实现满足下述要求的单个机器人的活动仿真程序。
问题域概述
创建一个仿真系统,使得用户可以操纵机器人来探索虚拟世界,并观察机器人的行为。
虚拟世界用来模拟现实世界中的不同环境(这里假设它是由14×14的方格构成的,如下图所示)。在虚拟世界的特定区域存在一些障碍物,机器人在运动过程中,必须避开这些障碍物。在虚拟世界的交叉点上可能会放置单个的字符。机器人到达这个位置时,用户可以控制机器人读取这个字符,或者用其他的字符替换这个位置的字符。机器人在虚拟世界中只能沿着交叉点向东、南、西、北四个方向做直线运动(不能走斜线)


机器人维护着两个变量b1和b2,用来保存从虚拟世界中读取的字符。
机器人有6种基本动作:
(1) Move:机器人朝着正前方移动一个交叉点(以上图中的机器人为例,执行一次“Move”动作之后,机器人由位置(8,1)移动到(7,1))。
(2) Left:机器人原地沿逆时针方向旋转90度。
(3) Read:机器人读取其所在位置的字符,并将这个字符的值赋给b1;如果这个位置上没有字符,则不改变b1的当前值。
(4) Write:机器人将b1中的字符写入机器人当前所在的位置,如果这个位置上已经有字符,该字符的值将会被b1的值替代。如果这时b1没有值,即在执行Write动作之前没有执行过任何Read动作,那么需要提示用户相应的错误信息。
(5) b1=b2:将b2的值赋给b1,b1的值被b2的值替代。
(6) b2=b1:将b1的值赋给b2,b2的值被b1的值替代。
用户有3种操控机器人的方法:
(1) 手动控制:通过直接调用机器人的基本动作使机器人产生相应的行为。例如用户直接发送“Move”命令,使机器人移动到下一个交叉点。
(2) 自动控制(Run):事先编排好机器人的动作序列(这里称为指令),直接执行这个指令,使机器人可以连续运作。
(3) 单步控制(Step):是自动控制方式一种特殊形式,只执行指定指令中的一个动作。单步控制与手动控制的区别在于,单步控制时执行的是指令中的动作,只有一种控制方式,即执行下个动作;而手动控制时有6种基本动作可控制。
限定条件
(1) 机器人不能跨越虚拟世界的边界,即机器人的活动范围只能在上图所示的14×14 的方阵内。
(2) 机器人不能穿越障碍物,只能避开。
(3) 若机器人试图跨越边界或穿越障碍物,则必须提示用户,不允许执行这个操作。
(4) 变量b1、b2的值只能通过机器人的“Read”、“b1=b2”、“b2=b1”动作设置,不能在程序中进行初始化。
须仿真的活动
(1) 创建虚拟世界:根据障碍物、字符的特定位置(针对特定的虚拟世界,这些位置在仿真过程中不能改变)和机器人的初始位置,创建机器人的活动环境(这时称虚拟世界处于其初始状态)。虚拟世界处于初始状态时,默认为机器人都面向北方。
(2) 用户手动控制机器人的行为:要能够提供用户直接调用机器人基本动作的方式。
(3) 用户采用自动控制方式操控机器人。
(4) 用户采用单步控制方式操控机器人。
(5) Reset:终止机器人的活动,并回到虚拟世界的初始状态。
(6) 提示用户错误操作:在仿真过程中,若出现错误而导致仿真活动无法继续进行时,要给出明确的错误提示信息。
仿真时的可变参数
(1) 创建虚拟世界所必须的信息(障碍物、字符的位置和机器人的初始位置)必须以文件的形式输入到仿真系统中。这样在仿真的过程中,用户可以通过选择不同的文件来创建不同的虚拟世界,改变机器人的工作环境。
(2) 指令必须以文件形式输入到仿真系统中,这样用户可以通过选择不同的指令文件来改变机器人的行为。
(3) 在执行某条指令时,每两个动作之间可以有短暂的延迟,即机器人需等待这个延迟结束后,才能进行下一个动作。延迟的长短由用户在开始操控机器人之前指定。用户若不指定,则采用仿真系统的默认值:1秒。
开发结果的行为特征
(1) 能够提供用户操控机器人的三种方式;
(2) 有简单的界面,以体现:
• 机器人和字符的当前位置。如果用数据而不是用图形表示,应给出机器人和字符的坐标,如:机器人的位置(8,1),字符F的位置(8,3),等等。
• 机器人的下一步操作(在手动控制方式下,不需要显示)。
• b1、b2的当前值。
注意能说明问题即可,切忌把主要精力放在界面上而忽视了实质问题。

可在完成本作业的基础上,将虚拟世界中的机器人扩展到两个或更多个,并让这些机器人相互交换其变量b1、b2的值,进行协作和通信。也可以将用户手动操控机器人时的动作序列记录下来,自动构成新的指令。也可以把机器人的多次不同执行轨迹,用不同的颜色标注出来。

[此贴子已经被作者于2007-10-17 14:12:20编辑过]

附件: 游客没有浏览附件的权限,请 登录注册
搜索更多相关主题的帖子: 难度 
2007-10-17 14:08
ink1219
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-10-13
收藏
得分:0 
2007-10-17 14:24
︶ㄣ臭臭ㄜ︵
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-10-16
收藏
得分:0 
不懂!!!还在努力中
2007-10-17 14:27
随风逐流
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:passerby
等 级:版主
威 望:8
帖 子:4054
专家分:271
注 册:2007-6-13
收藏
得分:0 
好玩,有点意思.可以试试.

[url=http://www./html/6/6694/]极道金丹[/url][url=http://www./html/2/2849/]九阴九阳[/url][url=http://www./html/2/2596/]凡人修仙传[/url]
2007-10-17 14:29
nkactuary
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-9-3
收藏
得分:0 
回复:(︶ㄣ臭臭ㄜ︵)不懂!!!还在努力中
2007-10-17 15:23
枫雪有情
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-10-17
收藏
得分:0 
看不懂
2007-10-17 15:28
zhuxy3011
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-10-17
收藏
得分:0 

不太明白!刚开始学结构化程序设计。


2007-10-17 16:06
willever
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-10-19
收藏
得分:0 
2007-10-19 15:36
willever
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-10-19
收藏
得分:0 
2007-10-19 15:36
baby66
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-10-16
收藏
得分:0 
以后再来

现在就算了

现在就靠你们
2007-10-19 15:39
快速回复:难度比较大!
数据加载中...
 
   



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

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