- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
红绿灯设计报告
红绿灯设计报告1152745 邱峰使用说明本程序分为游戏模式和作业模式,游戏模式是在作业模式的前提下,对程序稍作修改,制作成一个小游戏,启动程序,出现如下界面,可以选择相应模式选择作业模式后出现如下界面其中,正中央的数字为红绿灯的倒计时。点击各个按钮可以为各个车道增加车辆(点击以后是先加入到一个队列中,相当于进程处于等待创建的状态,当有一定车距时,车辆才会出来)。由于点击按钮后是加入到等待创建的进程队列中,所以有时候一直点一个按钮,只会出来几辆车,然后不点它了,车子又会一直出来,这是因为在之前点按钮时,任务被加入到了等待创建的队列中。自动出车按钮会根据目前车辆的多少调节车辆,相当于如果有某个方向有很多车正在等待创建状态,自动出车不会出这个方向的车辆,点击了自动出车以后,仍然可以手动添加车辆,与车道上的创建车按钮不冲突。白车为特殊车,可以闯红灯(下图上面那辆车会无视那个红灯过去),车距也相对较大;黄车为普通车,会在红灯停车(下图右下角的黄车在红灯时停车)。黄车的车道在对应车道的外侧,白车车道在内测。左上角的主菜单可以返回到首页选择游戏模式后,会出现如下界面点击右上角的帮助,显示了如下信息一旦游戏结束跳转到下面的画面,点击屏幕任意一个地方回到主菜单。或者点击游戏高分榜可以得到游戏历史的高分榜我最高打到60分。。游戏每10分一个档次,随着分数的增加,会缩短黄线、紫线的距离,车辆会增多,红绿灯切换时间变短。程序设计图这里,我想先说明一点,由于游戏模式是在完成了作业模式以后,突发奇想添加的,因此,当初设计时,并没有把游戏模式包含在内,而游戏模式很多代码都是从作业模式直接copy过来的。而最后两个模式融合到一起的时候,只是对所有的类加了homework和game的前缀。★在游戏模式中只有car类,并增加了一个属性whoAmI。汽车状态转移图类方法设计图Car类checkBeforeAndAfter:检查前后碰撞checkLeftRightwithQueue:根据queue信息,检查this与queue中所有车的左右碰撞(十字路口上不同方向的车)move:调用车移动函数NormalCar类addCarAtPoint: 创建一个汽车进程atView AtDirection inQueue,用户点击按钮,将相应的方向加入到队列中,让进程处于等待创建的状态canMoveWithLight根据目前红绿灯状态判断是否可以过去SpecialCar类与NormalCar函数相同,仅仅没有canMoveWithLight这里我说明一点,由于这个程序是用objective-c写的,它有一种叫做属性的东东,所以很多get和set的函数都可以不用写,直接声明为属性就好了。实现思想对于红绿灯的设计,是在完成电梯以后去写的。在电梯设计中,崔昊学长给了我不少帮助,但是这个红绿灯是我一个人独立设计的。我的思想主要是根据那个状态转移图设计的,主进程中,对所有的队列的每一个进程都不断调用callMove和addCar两个函数。addCar的任务是,根据同队列中离它最近的一辆车的距离判断这个汽车能否被创建,一旦可以创建,则创建一个新的汽车,加入到图像当中。callMove的任务是,检查每一辆车是否能够前进5个单位,如果可以,就让它前进5个单位。对于特殊车和普通车的不同之处是,普通车需要多检查一个红绿灯。起初在设计checkLeftRightwithQueue(十字路口的交叉碰撞)函数时,我设计思想分了两种情况:当一辆车出于另外一辆车中间的时候,即(红车向下行走,绿车向左)这种情况。这时候,由于绿车已经占据了位置,所以,只能让红车停下等待绿车走过。当两辆车都没有处于对方中间,但是如果一起行走就撞到一起时,即这种情况,我的选择是 ↓让←, ←让↑,↑让→,→让↓,之所以这样设计是因为从下图,我们可以看到→方向的车已经马上要通过十字路口了,我希望它能尽快通过这个路口,防止阻塞其他车辆。但是,上面的这个设计方法却造成了一个隐患,从让车的设计来看,这是一个循环等待,并且每辆车都要求下一个车让出位置,因此可能出现死锁的现象,这也就出现了第一次设计时的缺陷(死锁)。图为红绿灯的第一个版本,蓝色为普通车,紫色为特殊车。造成上述的原因第一是满足了死锁发生的条件,第二是因为特殊车闯红灯的原因,由于太多特殊车的加入导致了在红绿灯路口处出现了排队的现象,并且队伍特别长,直接赌住了另外一边绿灯的车辆。然后四边一起出现一堆特殊车,就全部挤在中间了。解决方法:后来,我加大了特殊车的车距,理论上仍然有可能出现死锁现象,就是当4辆特殊车同时占据对方的位置时,但是,这个概率变得微乎其微了,我测试了很久,无论我怎么点按钮死锁都出现不了了。四、可以改进的地方个人觉得死锁的解决方法不是很完美,我是通过加大了很多特殊车
有哪些信誉好的足球投注网站
文档评论(0)