毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

VC++数字逻辑电子仿真器设计 第3页

更新时间:2010-5-19:  来源:毕业论文
VC++数字逻辑电子仿真器设计 第3页
 两个关键状态:可连接态IsDrawCircle和正在连接态IsLink
 可连接态IsDrawCircle 当且仅当鼠标移动到某个元件上的某个尚未连接的触点上,才开启可连接态IsDrawCircle。之所以取名IsDrawCircle是因为此时会在鼠标停留的尚未连接的触点上画一个黑色小圆圈。
当鼠标移动离开触点,可连接态IsDrawCircle关闭。
 正在连接态IsLink 当鼠标按下(见图5)并且此时可连接态IsDrawCircle开启(为TRUE)时正在连接态IsLink开启。
 判断当前点是否在某个元件函数:IsPointInObject()
其算法如图7图7
 判断当前点是否在该元件触点上函数:IsPointInPut()
其算法如图8图8
与门与其它5个门有所不同,与门只有一个输入端,所以要分开来判断
对于输入结点,则判断当前点是否在第一个输出端触点。
对于输出结点,则判断当前点是否在第一个输入端触点。
输入结点和输出结点的这样判断,一眼看上去似乎反了,但实际上有利于整个程序的编写。可以简单地这样分类:总共只有两种端,一种输入,一种输出。
     这样,我们就可以将判断触点分为三个函数:
     IsInInput1()
     IsInInput2()
     IsInOutput1()
     拿IsInInput1()来分析:
      centerpoint=GetCirclePoint(Input_1);

      if(IsInArea(point))
      {
       //说明此时就在触点Input_1,用全局变量put记录下来
       put=Input_1;
       //如果当前点在,则要保存触点中心点
       circlepoint=centerpoint;

       return TRUE; 

      }
      else
      {
       //如果移出触点,肯定不要再保存中心点
       return FALSE;
      }
首先,调用函数GetCirclePoint()来取得当前触点的中心点。然后调用IsInArea(point)函数来判断当前点point是否在以当前触点中心点为中心的矩形区域内。如果是,则用一个全局枚举变量put来记录来前触点是两个输入端和一个输出端中哪一个。
我们看这个枚举类型:
enum Myput
{
 Input_1,
 Input_2,
 Output_1
};
接下来用一个全局变量circlepoint来记录当前触点中心点。再返回真。
如果当前点不在以当前触点中心点为中心的矩形区域内,则返回假。这时千万不能记录当前触点中心点。这点不注意会出大错。

 判断当前触点是否已连接函数:IsPutLinked()
BOOL CMyView::IsPutLinked()
{
 switch(put)
 {
 case Input_1:
  if(pNodeNow->input1 !=0)
   return TRUE;
  break;
 case Input_2:
  if(pNodeNow->input2 !=0)
   return TRUE;
  break;
 case Output_1:
  if(pNodeNow->output1 !=0)
   return TRUE;
 }

 return FALSE;
}
这里根据全局变量put的类型和全局变量pNodeNow所指向的元件,

上一页  [1] [2] [3] [4] [5] [6] [7] [8] 下一页

VC++数字逻辑电子仿真器设计 第3页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。