拉米纸牌游戏开发之路学习篇2

在篇1中的Deck类中表示一副纸牌采用的是Card数组的方法,该种方法灵活性较小,在纸牌游戏中经常会用到一组纸牌的操作,在此有必要创建纸牌集合类Cards

1.通过继承集合类实现

首先介绍System.Collection空间中的ArryList类吧,该类继承了IList接口,可以动态添加或者移去元素,很好用.对之前的代码只需略加修改.具体修改如下:

(1)处,需要修改Deck类的字段

        //private Card[] _Cards=new Card[52];
        private ArrayList _CardsList = new ArrayList();

(2)处,需要修改Deck类构造器

public Deck()
        {
            for (int i = 0; i < 4; i++)
            {
                for (int j = 1; j <= 13; j++)
                {
                   // _Cards[i * 13 + j - 1] = new Card((CardSuit)i, (CardRank)j);
                    _CardsList.Add(new Card((CardSuit)i, (CardRank)j));
                }
            }
        }

(3)处,需要修改洗牌方法Shuffle()

        public void Shuffle()
        {
            // Card[] cards=new Card[52];
            ArrayList cardsList = new ArrayList();
            bool[] isFind=new bool[52];
            Random rand=new Random();
            int index;
            for (int i = 0; i < 52; i++)
            {
                do
                {
                    index=rand.Next(52);
                }
                while(isFind[index]);
                //cards[i]=_Cards[index];
                cardsList.Add(_CardsList[index]);
                isFind[index] = true;
            }
            //cards.CopyTo(_Cards, 0);
            _CardsList=(ArrayList)cardsList.Clone();
        }

(4)处,需要修改GetCard()方法

        public Card GetCard(int cardIndex)
        {
            if(cardIndex<0 || cardIndex>=52)
                throw(new Exception("超过了索引范围[0,51]"));
            //return _Cards[cardIndex];
            return (Card)_CardsList[cardIndex];
        }

到此,修改全部完事,运行结果一样.但是这个类有一个致命的缺点,敬请下次分解.

时间: 2024-08-05 10:54:21

拉米纸牌游戏开发之路学习篇2的相关文章

《cocos2d-x游戏开发》—— lua学习总结(一)数组的使用

在lua中,数组是用table来实现的. 1.数组的定义: self.itemArrays = {}; --作为数组来使用的表itemArrays 2. 数组插入一条数据: local showItemSprite =  CCSprite:create(); --创建一个精灵对象showItemSprite table.insert(self.itemArrays,table.getn(self.itemArrays)+1,showItemSprite); --将showItemSprite插入

lua游戏开发实践指南学习笔记1

本文是根据lua游戏开发实践指南做的一些学习笔记,仅用于继续自己学习的一些知识. Lua基础 1.  语言定义: 在lua语言中,标识符有很大的灵活性(变量和函数名),不过用户不呢个以数字作为起始符,也要避免下划线(_)接大写字母,因为这种格式为lua自身保留如_Start. 建议用户使用如下格式和命名规则来定义变量.常量和函数名: ①  常量用全大写和下划线,例如:MY_CONSTANT ②  变量第一个字母小写,例如:myVariable ③  全角变量第一个字母用小写g表示,例如:gMyG

lua游戏开发实践指南学习笔记2

深入学习Lua 本人学习lua游戏开发实践指南的学习笔记,主要记录书中的一些知识点. 1.  函数 函数是划分游戏脚本功能的主要工具,它是通过标识符(事实上是一个变量)调用的lua代码块,可以执行某种处理.返回值,或者二者都有. 简单的函数定义如下: Function Wow() print(" ") print(Wow ,that wasaawesome:) print(" ") end 函数定义以function关键字开始,后面是函数名称,然后是传递给函数的参数

[Unity3D]Unity3D游戏开发Lua随着游戏的债券(在)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 喜欢我的博客请记住我的名字:秦元培,我的博客地址是blog.csdn.net/qinyuanpei. 转载请注明出处,本文作者:

Unity游戏开发学习之路——数据持久化

数据持久化 谈到数据持久化,在Unity的游戏开发中十分重要的,不管是是在本地和服务器端,数据持久化都是我们学习的难点,数据持久化的技术有很多种,这里只选取几种,目前也是我所学到的,在接下来的时间里会陆续整理到这里. Part1:PlayerPrefs类 这是unity圣典中给出的, PlayerPrefs 游戏存档 Description 描述 在游戏会话中储存和访问游戏存档.这个是持久化数据储存,比如保存游戏记录. Editor/Standalone 编辑器 / 桌面平台 Mac OS 在M

zz 游戏程序员的学习之路(中文版)

游戏程序员的学习之路(中文版) Milo Yip · 1 天前 感谢 @楚天阔(tkchu)编写脚本及整理中文译本数据,自动从英文版生成中文版,SVG / PDF 版本中的书籍图片现在链接至豆瓣页面. Github miloyip/game-programmer 检视/下载中文版 SVG / PDF 「真诚赞赏,手留余香」 赞赏 15 人赞赏 程序员游戏开发书籍推荐 分享 举报 977 文章被以下专栏收录 Milo的编程 进入专栏 97 条评论 写下你的评论 trycatch 这是劝退吧...

HTML5移动开发之路(8)——坦克大战游戏2

本文为 兄弟连IT教育 机构官方 HTML5培训 教程,主要介绍:HTML5移动开发之路(8)--坦克大战游戏2 在上一篇文章中我们已经画出了自己的坦克,并且可以控制自己的坦克移动,我们继续接着上一篇来实现我们的坦克大战游戏吧. 一.将JS文件分离出来 使用OO的思想,我们已经对坦克进行了封装,对画坦克也进行了封装,下面我们将这两个对象提取到外部的js文件中,文件内容如下: [javascript] view plain copy print? //定义一个Hero类(后面还要改进) //x表示

游戏开发完整学习路线(各个版本都有)

转载自http://www.cnblogs.com/majianchao/p/6523455.html 在软件开发中,游戏开发这个方向看起来目标很明确,但其实是个领域很广的方向,入门的时候如果得不到指点一二,很容易误入歧途,相反,如果走这条路之前能得到前人的一些指路,是可以事半功倍的. 一 平台与编程语言选择 首先,游戏开发的平台就有很多类型: 个人主机平台:Windows.Linux.Mac OC: 移动平台:iOS.Android.Windows Phone.BlackBerryOS.Sym

一个C语言开发的炸金花纸牌游戏附带vs性能分析报告

一.游戏说明: 编写的是一个模拟炸金花的纸牌游戏,游戏附有一个操作说明文档,按照文档上的操作方法,可以简单的开启游戏,整个程序包扩一个编译好的.exe文件,和两个资源文件夹,分别存有该游戏运行时候所需要的照片资源和音乐资源,用户可以直接点击exe文件运行游戏,然后按照相关操作方法来进行游戏. 二.编程语言环境介绍: 本游戏是在VC6.0环境下,用C语言加上一个easyx的C语言图形库实现的.程序源文件建立的是.cpp文件,但是程序开发是采用的C语言语法和风格,建立.cpp文件的原因是,easyx