1. 云栖社区>
  2. 技术文集>
  3. 列表>
  4. 正文

用WPF实现兽棋游戏

作者:用户 来源:互联网 时间:2016-01-30 13:50:35

移动returnc语言三子棋棋子移动falserowcoljava记忆翻牌游戏代码棋c++翻牌钻石棋翻牌效果翻牌效果的时间js图片翻牌效果

用WPF实现兽棋游戏 - 摘要: 本文讲的是用WPF实现兽棋游戏, 4x4的方格作为棋盘 16张牌打乱之后背着放在棋盘的格子里 牌分为黑红两队 规则是象吃狮  狮吃虎 吃豹狼吃狗吃猫 吃鼠 最后鼠吃象 同级相吃两个都消失 先手的那个人先翻一张牌,翻到什么颜色就用什么颜色.后翻的只能用另一种颜

4x4的方格作为棋盘

16张牌打乱之后背着放在棋盘的格子里

牌分为黑红两队

规则是象吃狮  狮吃虎 吃豹狼吃狗吃猫 吃鼠 最后鼠吃象 同级相吃两个都消失

先手的那个人先翻一张牌,翻到什么颜色就用什么颜色.后翻的只能用另一种颜色

第一个翻开第一张牌确定了双方各用什么颜色的牌

然后第二个也翻一张,然后第一个人开始走第二步

他可以选择继续翻牌,或者用已经翻开的牌去撞他周围的4张牌

撞完哪张就翻开哪张,如果是自己的的牌,就完成本回合,如果是对方的牌,按照规则,谁小谁被杀死.被撞得小的话就吃了它,然后占领他的格子

玩到后期的时候,棋盘就有空格了,这时候可以选择上下左右走一步或者继续撞牌

在中间没有其他子的情况下,豹可以自由横向竖向移动,其他棋子只能上、下、左、右移动一格

根据他所提供的说明,运用WPF,做了一个小软件,其中翻牌效果应用了http://code.google.com/p/hackerzhou/downloads/detail?name=WPF_3D_Rotate.rar提供的效果。界面风格用了高手的动画效果http://bbs.silverlightchina.net/forum.php?mod=viewthread&tid=14403

游戏主界面如下:

用WPF实现兽棋游戏-五子棋游戏设计与实现

主要代码实现:

1.初始化棋子:

ChessPiece rElephant = new ChessPiece("象",Colors.Red,7);           
            listChess.Add(rElephant);
     
            ChessPiece rLion = new ChessPiece("狮",Colors.Red,6);
                 
            listChess.Add(rLion);
     
            ChessPiece rTiger = new ChessPiece("虎",Colors.Red,5);
                 
            listChess.Add(rTiger);

2.吃子规则:

/// <summary>
       /// 棋子互吃规则
       /// </summary>
       /// <param name="movePiece"></param>
       /// <param name="targetPiece"></param>
       /// <returns></returns>
       private bool CanEat(ChessPiece movePiece,ChessPiece targetPiece)
       {
           //互吃的子必须颜色不同
           if (movePiece.Color != targetPiece.Color)
           {
               if (movePiece.Name == "鼠" && targetPiece.Name == "象")
               {
                   return true;
               }
               else if (movePiece.Name == "象" && targetPiece.Name == "鼠")
               {
                   return false;
               }
               else if (movePiece.Index >= targetPiece.Index)
               {
                   return true;
               }
               return false;
           }
           return false;
       }

3.

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/net/

/// <summary>
        /// 判断能否移动
        /// </summary>
        /// <param name="chessPiece"></param>
        /// <param name="row"></param>
        /// <param name="col"></param>
        /// <returns></returns>
        private bool CanMove(ChessPiece chessPiece, int row, int col)
        {
            if (chessPiece.PieceRow != row && chessPiece.PieceCol != col)
            {
                return false;
            }
            else
            {
                if (chessPiece.Name == "豹")
                {
                    foreach (ChessPiece c in listChess)
                    {
                        //向上移动了
                        if (selectedPiece.PieceRow == row && selectedPiece.PieceCol > col
                            && c.PieceRow == row && c.PieceCol > col && c.PieceCol < selectedPiece.PieceCol)
                        {
                            return false;
                        }
                        //向下移动了
                        else if (selectedPiece.PieceRow == row && selectedPiece.PieceCol < col
                            && c.PieceRow == row && c.PieceCol < col && c.PieceCol > selectedPiece.PieceCol)
                        {
                            return false;
                        }
                        //向左移动了
                        else if (selectedPiece.PieceCol == col && selectedPiece.PieceRow > row
                            && c.PieceCol == col && c.PieceRow > row && c.PieceRow < selectedPiece.PieceRow)
                        {
                            return false;
                        }
                        //向右移动了
                        else if (selectedPiece.PieceCol == col && selectedPiece.PieceRow < row
                            && c.PieceCol == col && c.PieceRow < row && c.PieceRow > selectedPiece.PieceRow)
                        {
                            return false;
                        }
                    }
                    return true;
                }
                else
                {
                    if ((Math.Abs(col - selectedPiece.PieceCol) == 1 && row == selectedPiece.PieceRow) || (Math.Abs(row - selectedPiece.PieceRow) == 1 && col == selectedPiece.PieceCol))
                    {
                        return true;
                    }
                    return false;
                }               
            }
        }

4.随机排列棋子:

/// <summary>
       /// 随机排列数组元素
       /// </summary>
       /// <param name="listChess"></param>
       /// <returns></returns>
       private List<ChessPiece> ListRandom(List<ChessPiece> listChess)
       {
                
           Random ran = new Random();
           List newList = new List();
           int k = 0;
           ChessPiece c = new ChessPiece();
           for (int i = 0; i < listChess.Count; i++)
           {
     
               k = ran.Next(0, 15);
               if (k != i)
               {
                   c = listChess[i];
                   listChess[i] = listChess[k];
                   listChess[k] = c;
               }
           }
           return listChess;
       }

由于水平有限,代码还有很多不足之处,代码有些乱,面向对象封装、继承、多态的特性没有体现出来,欢迎一起探讨进步

源代码:

http://files.cnblogs.com/infly123/%E6%BA%90%E4%BB%A3%E7%A0%81.rar

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有 的相关内容,欢迎继续使用右上角搜索按钮进行搜索移动 , return , c语言三子棋 , 棋子移动 , false , row , col , java记忆翻牌游戏代码 , 棋c++ , 翻牌 , 钻石棋 , 翻牌效果 , 翻牌效果的时间 js图片翻牌效果 五子棋游戏设计与实现、棋牌游戏实现、h5 实现棋牌游戏、斗兽棋游戏下载、斗兽棋游戏,以便于您获取更多的相关知识。

急!求大神帮忙!!!android棋类游戏!

...! 求个android版斗兽棋的源码参考学习一下,有蓝牙联机功能最好了。。或者军旗源码也行,有暗棋的游戏方式!大神们~~ 解决方案 国际象棋https://github.com/jcarolu...

WPF调用Matlab函数的方法_C#教程

...ab又做不出WPF那样的好看界面,怎么办呢。 今天正好我要实现这个功能,就顺便写个小例子,给需要的人做个借鉴。 想要用WPF调用Matlab代码,就用到了Matlab生成.DLL文件的功能。 注:我的VS版本是2013,Matlab版本是2012a,两个软件...

WPF开发连连看系列I-warming up!

...24K纯微软技术粉)的WPF技术重新写写连连看。并将之前没实现完的功能都实现。 由于自己平时还是会比较忙吧,这个项目虽说难度不大,但是我也不可能一下子就写完。大概我会一周出一篇博客的样子(具体视我个人时间而定...

转帖:DotNet 资源大全中文版

...展模型。官网 CoreFX:corefx 仓库包含了 .NET 核心功能库的实现(被称为“CoreFX”)。包含了 System.Collections、System.IO、System.Xml 以及诸多其它组件。目前构建并运行于 Windows 平台。你可以关注这个仓库,了解在未来的几个月内即将...

Ajax是过渡 RIA将成主流?

...。设计人员凭借类似Flash的方式,就可以开发出类似视频游戏那样的用户界面。 由于Expression开发出来的界面具有科幻电影般的感觉,所以对用户会产生极大的新引力。特别是在我国,普通用户IT素养小于零,完全是外行看热闹...

前三篇
后三篇