WPF 飞行棋游戏

您所在的位置:网站首页 wpf小游戏 WPF 飞行棋游戏

WPF 飞行棋游戏

2022-05-14 10:02| 来源: 网络整理| 查看: 265

每次乘坐公交车的时候,手机信号都很差。为了打发时间,下载了一个小游戏合集,里面就包含有飞行棋。

闲来无聊就打算自己制作一个飞行棋游戏。

在制作飞行棋的时候,我在百度搜索了关于【C#飞行棋】,得到的结果全是用控制台编写的,代码也差不过。不过在后面找到了一篇关于Android的飞行棋博客。

Android博客链接:https://blog.csdn.net/Shenpibaipao/article/details/70194542

他写了三篇飞行棋设计博客,结合他的文章内容和我在手机上的游戏规则,编写了一款辣眼睛的飞行棋游戏。

本来打算写成可局域网对战,奈何自己技术有限,就把这个想法抛弃了。相关链接:https://www.cnblogs.com/wgp13x/p/3800030.html

目前已完成单人游戏的基本功能,就只有抛骰子和迭机动画未写。

 

游戏规则:

1.每次抛掷出6点,都可以在掷一次骰子。

2.若停在与棋子同色的色块上,可飞跃至下一个同色色块;若停在快速通道【程序中称为传送门】的同色色块上,分两种情况:

           ⑴若停在传送门起点,棋子先飞跃至传送门终点,在飞跃至下一个同色色块。

           ⑵若飞跃至传送门起点,则只能够飞跃至传送门终点。

3.击杀:棋子停至某格,若已停有其他颜色的棋子,则可以将其撞会飞机场。

4.迭机:同色棋子停在同一格称之为迭机。某色棋子迭机时,其他棋子无法通过该格,但是会先移动至该格,然后再【后】退,后退过程中还遇到,同理;当某色棋子停在迭机方格,则将迭机棋子全部击杀。

5.四颗棋子率先抵达终点者获胜,若点数多余,则棋子往回走。当游戏胜利后,五秒钟后会重置本轮游戏,玩家数据设为最初的【默认值】。

程序框架:

本来也打算用什么牛B哄哄的框架来写,后面仔细想想有点浪费时间【时间不多】,就一切从简。

就如图上所述一样,

Converters里面存放的都是一些转化,本来是用于DataGrid,将一些数据进行转换,后面被抛弃了局域网,所以这里面的文件也没有用了。

Data里面保存的就两个txt文件,一个是存放地图信息,除了第一次加载地图的时候,其他都是读取map.txt里面的数据;另一个就是保存用户设置。

Entity存放飞行棋最基本的类,Box是地图的方格;Chess是玩家的棋子,继承Button;Player飞行棋玩家;Map就是所有方格的集合。

Game保存游戏里的公共内容。

Helpers游戏的一些帮助类。

Images整个游戏的资源文件存放此处。

theme控件样式。

Windows游戏界面。

 

地图介绍:

图片来至于https://blog.csdn.net/Shenpibaipao/article/details/70194542,我的图片素材是从他那下载过来的,然后再用ps稍微修改了一部分。

这是一张1080*1080的图片,将其分割成36*36,地图上的每个点都能对应一个坐标,后面为了方便给方格排序,我稍微微调一下坐标点。

将方格分类为:基础方格、飞机场方格、起飞点方格、起点方格、传送门起点方格、传送门终点方格、转折点方格、冲刺方格和终点方格

基础方格:棋子正常跑的赛道,但不包含冲刺赛段【最后一段直线】。

转折点方格:某色棋子基础方格的最后一个

冲刺方格:最后一段直线。

/// /// 飞行棋地图中的方格 /// [Serializable] public class Box { /// /// 方格编号 /// public int BoxID { get; set; } /// /// X轴坐标 /// public int PointX { get; set; } /// /// Y轴坐标 /// public int PointY { get; set; } /// /// 所属颜色 /// public ColorEnum Color { get; set; } /// /// 是否是基础方格 /// public bool IsBasic { get; set; } /// /// 是否是飞机场 /// public bool IsAirport { get; set; } /// /// 是否是棋子的起飞点 /// public bool IsTakeOff { get; set; } /// /// 是否是传送门起点 /// public bool IsPortalStart { get; set; } /// /// 是否是传送门终点 /// public bool IsPortalEnd { get; set; } /// /// 是否是棋子的转折点 /// public bool IsCrisis { get; set; } /// /// 是否是赛道的冲刺阶段(最后一段直线) /// public bool IsHomeStraight { get; set; } /// /// 是否是棋子的终点 /// public bool IsDestination { get; set; } }

因为需要将方格集合需要保存到txt文档中去,需要标记【Serializable】

电脑玩家:

其他的内容我也就不多说了,程序中每个方法都有注释,我相信应该能够理解。

电脑玩家的代码我就没随便写了,如果你们有兴趣可以自己完善。我就简单的做了一些if判断。

运行效果图:

   

如果你要换成Winform的项目,那你就需要更改移动动画和界面,整个程序没有加try..cath..,所以嘛。。。。

下载链接:https://download.csdn.net/download/dear200892/11710302

百度云盘:https://pan.baidu.com/s/1j6lEdLoAmrk2eWecoTRmTA 提取码:4qu3 

 

 

 

 

 


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3