飞行棋游戏的设计与实现(7)
时间:2026-01-20
时间:2026-01-20
Private Sub To_NextPlayer() '得到下一个玩家的编号,并把骰子传给下一个玩家
Dim p As Long '临时计数器
If GmData.Dice <> 6 Then '如果骰子不是六点,则需要把控制控交给下一个玩家
Unable_Player GmData.PlayNow '锁定玩家棋子 Do
p = (p + 1) Mod 4
Loop Until CntPlanStat(p, Complete) <> 4 '查找还有棋子的玩家 PutDice2Map GmData.PlayNow
Else '如果骰子显示六点则原来玩家继续控制该轮的骰子
Enable_Dice End If
ShowMsg '更新相关的状态信息 End Sub
p = GmData.PlayNow '初始化临时计数器
GmData.PlayNow = p '把找到后的结果给系统变量
(五)、游戏中所需文字信息的处理
对游戏中出现的各类文字信息进行简单的处理,主要包括 信息格式的转换与显示等。
1 ShowMsg()显示玩家状态
此模块除了显示玩家状态以外还担负着游戏结果判断的额外任务。 2 GetPlayerColor()将玩家的索引号转换成对应的颜色名称
(六)、棋子的响应与处理
1 Image2_Click()分析玩家的操作,不同情况作出不同处理
本模块在接到玩家操作棋子的动作后,分析玩家所选的棋子状态后,做出对应的动作。 比如:
被选择的飞机在机场则只需判断是否允许起飞。
被选择的飞机已准备起飞秩序判断,能飞多远,是否要击落其它玩家的飞机,有无坠毁 可能。
2 SetAbs_Idx()设置棋子的绝对索引号和相对索引号 为其他服务程序计算棋子状态作好数据准备
Private Sub SetAbs_Idx(Player_Idx As Long, Plan_Idx As Long, Dice_Num As Long)
'根据骰子点数设置棋子的绝对索引号和相对索引号
If GmData.Plan(Player_Idx, Plan_Idx).Stat = Landing Then '着陆航线上坐标计算
GmData.Plan(Player_Idx, Plan_Idx).Idx_Abs GetLanding_Idx(GmData.Plan(Player_Idx, Plan_Idx).Idx_Abs, Dice_Num)
下一篇:大学语文12——论快乐