文档介绍:拖拉机总结一总体框架: 使用了界面线程对游戏状态的变化进行及时的刷新显示,并同时接收鼠标在界面中针对亮牌/小手按钮的单击,以及在翻开的扑克牌窗口中的鼠标左/右键单/双击事件的接收。 游戏NewGame后,将创建一个游戏规则线程,不断的结合界面线程接收到的事件,进行相对的处理,实现游戏的正常运行。 应该要注意的是,有关于用户的亮牌请求,本程序中也使用创建新线程,然后调用相应处理函数进行处理的。二模块分布 1对话框处理负责了整体界面的显示,同时不仅为自己本身的按钮接受鼠标事件,还为自己的子窗口:牌窗口也接收对应的左/右键事件。3亮主状态处理 负责亮主状态的显示,其根据当前庄家为哪个玩家,且此时两对玩家打到几和当前的亮牌花色,选用不同的亮主背景,亮主状态,打几等位图构成该窗口的显示。 2牌类处理主要记载了单张牌的属性,和结合当前打几/亮主状态等对单张牌的属性进行修改。同时还对单击在其对应的窗口中的鼠标信息区分其为不同的点击操作,结合界面中小手按钮的状态决定是否调用SetOutCardsEvent()来设置出牌事件,还是单纯让牌进行点起/放下并调用CheckMyCards()对点起的牌合法性,由此设置小手按钮的状态。 4游戏规则处理 (1)功能阐述:负责了在游戏运行中的洗牌、发牌(同时处理亮牌)、埋底牌,与之后的处理电脑玩家处出牌和用户出牌 (2)主要模块: a处理亮主OtherThreeTrump: 1先根据指定的亮牌花色,扫描当前玩家手中的牌,决定相对自己可以亮牌的数组2,再结合在此时其他玩家(应该只能是用户玩家)可能亮的牌状态、类型决定是否能亮牌3,可以亮牌则进行亮牌动作(用ShowTrumpCards进行处理),将刚亮的牌移动到指定位置,并将之前亮的牌放回到对应玩家手中,此时还是用了RemoveFromList结合发牌时的插入函数AddToList在显示界面上区分了定主、反自己和反别人(主要针对用户)。4,再修改相关的亮牌变量/属性,同时更新亮牌窗口的显示和用户玩家的亮牌按钮休息,释放临界段,返回。b电脑玩家出牌/埋底OutMyCards1,得到当前用户玩家立起的牌/准备出(埋底)的牌2设置手形按钮的使用状态和显示状态3如果没有埋底,则此时的记录的的立起牌数组则是用来埋底的,处理埋底后,在调用OutMyCards再次等待用户的出牌操作4如果已经埋底,则根据用户是否是当前的第一个出牌人,决定是否或如何保存相应的此轮出牌数据,如果用户是第一个出牌人I则还要查看当前出牌否会形成强制出小(按单牌、对子、拖拉机的顺序检查),接着再出牌;而如果用户不是第一个出牌人II则只需分析当前已经出牌的各个玩家出牌情况,将自己的出牌与当前最大出牌玩家出牌比较,决定接下来的最大出牌玩家,再出牌 c检查用户所选牌的合法性CheckMyCards和SetOutCardsEvent 当鼠标在用户的牌窗口上使用左右键进行单双击时,将会根据鼠标的点击情况结合当前小手按钮的状态判断是运行SetOutCardsEvent来设置出牌事件还是单纯的将对应的牌的立起状态该与对立的状态同时调用CheckMyCards对点起的牌进行合法性检查,据此设置小手按钮的状态。 d第一个出牌玩家是电脑玩家时的处理OtherThreeFirstOut1准备工作: (1)重新设置一下关于对应各种玩家的数据(2)得