×

关注微信公众号

免备案网站空间虚拟主机双线空间域名查询PS数码后期
photoshop互助课堂数百G视频教程下载英语培训机构初中英语如何学随时随地聆听大师开讲/课堂
酷素材!视频教程打包下手绘教程抠图教程路径专辑photoshop cs3视频教程
楼主: dqxxx

[教程] ⑸Cards类<再版《斗地主》@张志晨as3教程系列59

[复制链接]
发表于 2013-3-30 10:41:56 | 显示全部楼层 |阅读模式
本帖最后由 dqxxx 于 2013-8-19 07:27 编辑

再版《斗地主》@张志晨as3教程系列59



             志者共勉

          莫道功名真如土
          布衣走卒命最苦
          自古皇家续青史
          输赢就是荣和辱
          战天斗地主沉浮
          巨擘一龙蛇舞
          钟情笃鹊搭桥
          敢于昏磨铁杵



⑸Cards类<再版《斗地主》@张志晨as3教程系列59


  Crads类,就是把“一手牌”做为一个对象来思考,故写成类。优点是,把一手牌的相关属性集成化了,要以通过“实例名.属性”的方式访问和设置。
  一、用于对玩家的想要出的牌的合法性进行判断。判断玩家选择的牌是不是一手合法的牌。如果这不是一手牌,那么返回Cards对象的valid=ERR。在这个类中,YES表示有效牌(而且是能够管上上一手牌的),NOT表示是有效牌,但不能管人,ERR是无效版型,不能出牌。
  二、Cards可以记录一手有效牌的相关信息:  
  是谁出的牌,匹配的声音,是否有效,牌型,牌的大小,牌长(多少张),一手牌的价值……  
  这些信息当然可以用若干变量来记忆,在我的上一个版本中就是用变量方法完成的。本例则偏重于“类”的应用,将信息集成为功能函数,并尽力转化为“类对象”。
  


  1. package {
  2.         public class Cards {
  3.                 //YES=1是有效牌型,NOT=0无效牌型,ERR=-1错误牌型
  4.                 public const YES:int = 1;
  5.                 public const NOT:int = 0;
  6.                 public const ERR:int = -1;
  7.                 var _who:uint ;//这手牌是谁的
  8.                 var _sndName:* ;//匹配的声音名
  9.                 var _valid:int;// 有效性
  10.                 var _type:String;//牌型
  11.                 var _big:uint;//牌大小
  12.                 var _ids:Array;//每张牌的id号

  13.                 public function Cards() {//构造函数
  14.                         clear();//初始化实例
  15.                 }

  16.                 public function setting(type:String="",big:uint=0,ids:Array=null,valid:int=-1,sndName:*=null,who:uint=0) {//对实例属性重新设置,有默认值,和clear()方法一模一样
  17.                 _type = type;
  18.                 _big = big;
  19.                 _ids = ids;
  20.                 _valid = valid;
  21.                 _who = who;
  22.                 _sndName = sndName;
  23.                 return this;
  24.         }

  25.         public function clear() {
  26.                 _type = "";
  27.                 _big = 0;
  28.                 _ids = [];
  29.                 _valid = ERR;
  30.                 _who = 8;
  31.                 _sndName = null;
  32.                 return this;
  33.         }

  34.         public function copy(crd:Cards ) {//也许有用,但在本例没有用到
  35.                 _type = crd.type;
  36.                 _big = crd.big;
  37.                 _ids = crd.ids;
  38.                 _valid = crd.valid;
  39.                 _who = crd.who;
  40.                 _sndName = crd.sndName;
  41.                 return this;
  42.         }
  43.         //封闭属性:
  44.         public function set who(value:uint) {
  45.                 _who = value;
  46.                 return this;
  47.         }
  48.         public function get who():uint {
  49.                 return _who;
  50.         }
  51.         public function set sndName(value:*) {
  52.                 _sndName = value;
  53.                 return this;
  54.         }
  55.         public function get sndName():* {
  56.                 return _sndName;
  57.         }
  58.         public function set valid(value:int ) {
  59.                 _valid = value;
  60.                 return this;
  61.         }
  62.         public function get valid():int {
  63.                 return _valid;
  64.         }
  65.         public function get type( ):String {
  66.                 return _type;
  67.         }
  68.         public function get big():uint {
  69.                 return _big;
  70.         }
  71.         public function get ids():Array {
  72.                 return _ids;
  73.         }
  74.         public function get length():uint {
  75.                 return _ids.length;
  76.         }
  77.         //只读属性:一手有效牌的价值:
  78.         public function get value():uint {
  79.                 /*为每一种牌型定义权值的大小:
  80.                 1单张 1
  81.                 2对子 2
  82.                 3\31\32三带 3
  83.                 11111……连牌 4 (每多一张牌权值+1)
  84.                 222……连对 5(每多一对牌,权值+2)
  85.                 33……飞机 6(每多一飞机,权值在基础上+3)
  86.                 4、1617炸弹 7(包括对王在内)*/
  87.                 switch (type.substr(0,2)) {
  88.                         case "1" :
  89.                                 return 1;
  90.                         case "11" :
  91.                                 return type.length-1;
  92.                         case "2" :
  93.                                 return 2;
  94.                         case "22" :
  95.                                 return type.length*2-1;
  96.                         case "3" :
  97.                         case "31" :
  98.                         case "32" :
  99.                                 return 3;
  100.                         case "33" :
  101.                                 return type.length*3/2;
  102.                         case "16" :
  103.                         case "4" :
  104.                         case "42" :
  105.                                 return 7;
  106.                 }
  107.                 return 0;
  108.         }
  109.         //类实例属性的字符串表达式:
  110.         public function toString() {
  111.                 var s:String = "[valid=" + valid;
  112.                 s = s + "][type=" + type;
  113.                 s = s + "][big=" + big;
  114.                 s = s + "][value=" + value;
  115.                 s = s + "][length=" + length;
  116.                 s = s + "][ids=" + ids;
  117.                 s = s + "][who=" + who;
  118.                 s = s + "][sndName=" + sndName + "]";
  119.                 return s;
  120.         }

  121.         //-------------
  122. }
  123. }
复制代码
示例:
var crd:Cards=new Cards()
实例化后,可用于记忆一手牌:
多数属性可以一一设置,
也可以用setting()一次性设置
crd.setting("11111",3,[0,5,9,14,19],crd.YES,"shunzi",0)
意思是:34567这条顺子,是玩家(南家)出的牌。


------------------美------丽------的------分------隔------符----------------------------------

制作简易的“斗地主”游戏@张志晨as3实例教程57

⑴舞台元素再版《斗地主》@张志晨as3教程系列59
⑵发牌动画再版《斗地主》@张志晨as3教程系列59
⑶几个约定再版《斗地主》@张志晨as3教程系列59
⑷Poker类再版《斗地主》@张志晨as3教程系列59
-->⑸Cards类再版《斗地主》@张志晨as3教程系列59
⑹Snd类再版《斗地主》@张志晨as3教程系列59
⑺制作扑克再版《斗地主》@张志晨as3教程系列59
⑻查看效果再版《斗地主》@张志晨as3教程系列59
⑼放牌容器再版《斗地主》@张志晨as3教程系列59
⑽地主和帽再版《斗地主》@张志晨as3教程系列59
⑾统管按钮再版《斗地主》@张志晨as3教程系列59
⑿辅助函数再版《斗地主》@张志晨as3教程系列59
⒀终局处理再版《斗地主》@张志晨as3教程系列59
⒁分发ID再版《斗地主》@张志晨as3教程系列59
⒂发牌函数再版《斗地主》@张志晨as3教程系列59
⒃手牌居中再版《斗地主》@张志晨as3教程系列59
⒄抓完牌理牌再版《斗地主》@张志晨as3教程系列59
⒅叫地主再版《斗地主》@张志晨as3教程系列59
⒆选牌事件再版《斗地主》@张志晨as3教程系列59
⒇出牌甩牌再版《斗地主》@张志晨as3教程系列59[
(21)统计牌情《斗地主》@张志晨as3教程系列59
------------------美------丽------的------分------隔------符----------------------------------
本帖的地址:http://bbs.jcwcn.com/forum.php?mod=viewthread&tid=524538
跟着教程做一遍,做完的图要到这里评论交作业,教程有看不懂的地方,可以在贴子下面评论
发表于 2017-9-11 21:31:37 | 显示全部楼层
酷素材
很不错。。。
回复 支持 反对

使用道具 举报

发表于 2017-9-11 21:42:44 | 显示全部楼层
顶顶多好
回复 支持 反对

使用道具 举报

发表于 2017-9-11 21:56:36 | 显示全部楼层
LZ真是人才
回复 支持 反对

使用道具 举报

发表于 2017-9-11 21:50:01 | 显示全部楼层
酷素材
好帖子要收藏
回复 支持 反对

使用道具 举报

发表于 2017-9-11 22:12:05 | 显示全部楼层
酷素材
果断收藏了
回复 支持 反对

使用道具 举报

发表于 2017-12-26 18:22:41 | 显示全部楼层
说的非常好
回复 支持 反对

使用道具 举报

发表于 2017-12-26 17:54:14 | 显示全部楼层
不错不错
回复 支持 反对

使用道具 举报

发表于 2017-12-26 18:18:42 | 显示全部楼层
LZ真是人才
回复 支持 反对

使用道具 举报

发表于 2017-12-26 18:08:26 | 显示全部楼层
学习了。。。
回复 支持 反对

使用道具 举报

发表于 2017-12-26 17:43:46 | 显示全部楼层
教程网我挺你
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层
很不错。。。
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层
顶顶多好
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层
真心顶。。。。
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层
说的非常好
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | [立即注册]

本版积分规则

2345