回 帖 发 新 帖 刷新版面

主题:看起来这道题真难!!!

你一定见过马路上的交通信号灯。你的任务是用程序模拟信号灯的工作过程。
在一个“十”字路口,通常有4套信号灯,每套信号灯有红黄绿三种颜色的灯。如果“南-北”走向的信号灯为红,则“东-西”走向必为绿,反之亦然。另外,当绿灯变为红灯之前,应该有大约5秒钟的过渡时间,此时黄灯亮。而红灯变绿灯则不必。可以用键盘控制“南-北”走向和“东-西”走向的时间。当按下左键时,减少“东-西”走向的时间一秒,右键则增加一秒;当按下下键时,减少“南-北”走向的时间一秒,上键则增加一秒。最初时,每个走向都是10秒。界面用图形方式。
(提示:只有利用时间函数gettime()才能准确控制灯亮灭的时间,用delay()函数不可能精确控制) 
各位朋友现在已经看完了这道题了吧! 希望来的朋友多多指点,如果有兴趣的把这道题的答案写下来就再好不过了,但是,我更希望大家都给我提提这道题用的是怎么样的一种思路和方法,
谢谢!·····  帮忙![em1][em2][em2][em1]

回复列表 (共2个回复)

沙发

这道题就是循环取时间,当时间的差值满足变灯条件就开始变灯
至于键盘控制的部分,只是单纯的改变了条件值

可以给这道题建立如下简单数学模型:
当前时间tn
上次变灯时间tl
东西向绿灯时长time[0]
南北向绿灯时长time[1]
当前指示灯绿灯方向dir(取值0东西,1南北)

每次取得tn跟tl相减,判断tn-tl是否等于time[dir],如果相等,dir=1-dir,tl=tn
现在看到了吧,那个增减时间只是改变了time数组里的值,跟模拟无关

板凳

你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846

我来回复

您尚未登录,请登录后再回复。点此登录或注册