飞行棋游戏的设计与实现(6)
时间:2026-01-20
时间:2026-01-20
指定骰子移动到指定玩家的机场中。
Private Sub PutDice2Map(Player_now As Long) '将骰子移动到指定玩家的机场
Dim StPS As TP_XY, EdPS As TP_XY
MovDice.Enabled = False '此时禁止玩家掷骰子
GetDice_XY (Player_now) '得到骰子需要到达的那一点的坐标
StPS.X = Image3.Left '得到当前骰子的坐标
StPS.Y = Image3.Top
EdPS.Y = Image1.Top + Image1.Height / 17 * GetDice_XY(Player_now).Y '计算每次 移动所需的偏移量
EdPS.X = Image1.Left + Image1.Width / 17 * GetDice_XY(Player_now).X MovDice.Enabled = True '动画开始
SetMovie 0, StPS, EdPS, 50 '设置实现图片移动动画所需的参数
End Sub
5 GetDice_XY()查询骰子在各玩家机场上的坐标
根据不同的玩家编号返回对应的坐标,以确定骰子在棋盘上的位置
6 SetMovie()设置实现图片移动动画所需的参数 设置实现图片移动动画所需的参数 计算并设置实现图片移动动画所需的偏量。
Private Sub SetMovie(Img_Idx As Long, Start_Pos As TP_XY, End_Pos As TP_XY, ImgStep As Long)
'设置实现图片移动动画所需的参数
MovieStat.PlanImgIdx = Img_Idx 'img 索引号,仅供移动飞机用
MovieStat.Ylimt = (End_Pos.Y - Start_Pos.Y) / ImgStep 'Y方向位移偏移量 MovieStat.Finish = False '动画完成设记 End Sub
MovieStat.Xlimt = (End_Pos.X - Start_Pos.X) / ImgStep 'X 方向位移偏移量
7 MovDice_Timer()骰子移动效果的实现
实现骰子的移动效果和实现骰子的连掷动画一样也需要Timer控件的帮助,通过timer
控件不断的改变骰子图片的位置,就产生了骰子移动的效果。经过试验,以20毫秒的频率
不断修改骰子坐标,效果还可行。
8 Image3_Click()对玩家抛骰子操作的响应过程
这个模块在接到玩家点击骰子动作后,产生一个抛骰子动画,并显示一个1~6的整
数来模拟现实中的骰子,并且在后台统计相关信息。
9 Unable_Dice()与Enable_Dice()骰子的锁定与要锁过程
通常在游戏中在抛骰子的时候是不能移动棋子的,反之也一样,下面两个程序就是模拟这个约束条件。
(四)、玩家的控制与切换
在实现玩家控制与切换时,稍微麻烦一点的就是 如何判断下一位玩家是谁?同时 把骰子放到那个玩家的机场中,剩余的就是 对玩家的棋子进行锁定与要锁。
1 Unable_Player()与Enable_Player()玩家棋子的锁定与要锁过程 2 To_NextPlayer()玩家控制控的转移
下一篇:大学语文12——论快乐