1、手机游戏编程基础(一),第一讲:棋牌类游戏基础原理主讲人:韩磊,主要内容,棋牌游戏的简介 棋类游戏的运行原理 棋类游戏的代码构架,兵将棋示例,什么是棋牌游戏?,棋盘游戏和牌类统称棋牌游戏。棋牌类从明清开端一度昌盛,触及赌博等。现代棋牌游戏以休闲为主,在华语区影响较深的主要有扑克、斗地主、麻将、中国象棋、中国跳棋、军棋、黑白棋、五子棋等。,棋牌类游戏的分类,棋盘游戏: 中国象棋、四国军旗、飞行棋、跳子棋、五子棋、围棋、国际象棋。 其中牌类游戏中又分扑克和麻将: 扑克游戏:斗地主、跑的快、晋级、拱猪、锄大地、跑胡子、三打一、桥牌、打滚子、干瞪眼、双扣。 麻将游戏:四川麻将、国际麻将、台湾麻将、欢乐
2、麻将、二八杠。,经典游戏斗地主,扑克游戏,玩法简单,文娱性强,老少皆宜。该游戏由三个人玩,用一副牌,共54张,每局牌有一个玩家是“地主”,地主为一方,其他两家农民为一方,双方对战,先出完牌的人所代表的一方获胜。由于每一局“地主”、“农民”都会有变化,所以对立性和配合性都很强。斗地主,包括普通斗地主、特征CT斗地主和超级斗地主,在游戏里参加了特征任务,玩家在游戏中完成规则的任务,还有额外的奖励奉送,任务有运气,有技术,其乐无量。,经典游戏麻将,麻将来源于中国,属皇家和王公贵族的游戏,其历史可追溯到三四千年前。麻将的游戏人数为4人,分别为东、南、西、北,其中一家为庄家,其他为旁家。每人手里抓13张
3、牌,经过吃牌、碰牌、杠牌等方式,使手牌依照相关规则的牌型条件和牌,先和牌者胜出。CT麻将,添加了麻将的文娱性和兴趣性,更有哈尔滨麻将和上海麻将等中央特征麻将。,经典游戏扑克,扑克的来源众口一词,但它却是盛行于全世界的一种文娱游戏。玩法多种多样,休闲文娱,精彩刺激。 至尊五张不只需求技巧更靠运气,可谓是理想人生的缩影。 德州扑克,易学难精,被称为是“学一时,精一世”的经典扑克游戏。 十三支,在理牌的过程中不但充溢乐趣,也是对玩家理牌技术和实力的考验。 更有智勇三张、角斗士、晋级和锄大地,缤纷游戏,不容错过。,经典游戏象棋,“运筹帷幄之中,决胜千里之外”的中国象棋,是棋艺的比拼,更是一种把握棋局的
4、才能。中国象棋,给玩家一个愈加公平的对弈空间。四国军旗,由于不能看棋子,使其更具有应战性。军旗游戏支持四国大战,相对的两家协作与左右方玩家对立,配合战役的乐趣更是其他游戏不能领会的。,棋类游戏什么样子?,有个棋盘(场景,舞台) 黑白棋子(玩家,演员) 一套规则(算法,剧情),牌类游戏什么样子?,桌子,展示扑克 地主和农民以及手中的牌 地主农民的身份区别以及大小牌规则,棋类游戏学习案例兵将棋,游戏简介 “兵将棋”源于山东民间棋牌游戏,是乡村闲暇之时最受欢迎的棋牌游戏之一。农闲之时,众人齐聚大街之上,以石为凳以地为盘,其乐无穷。现对其进行整理,重新命名为“兵将棋”。兵者,难敌将,只能采用人海战术,
5、把将包围住即可胜利。将者,武艺高强,手持利刃远可斩兵,歼灭兵为赢,然近却施展不开,有被兵包围的危险。虽然简单几个棋子,但是其中可有千万种变化,可施展无数战术,内涵绝不逊于围棋象棋之属。,http:/ 玩家基础类BasePlayer 电脑玩家的类ComputerPlayer 游戏场景 游戏视图GameView 游戏规则 棋走法的规则ChessRule 人工智能 人工智能AIPlayer,以人为本游戏玩家需要什么,玩家类BasePlayer、ComputerPlayer 玩家的类,拥有一个玩家所具有的一系列属性和动作,BasePlayer,Int playerID 玩家的角色 boolean is
6、Enable是否有控制权,Void selectPoint()选择棋子Void runPoint() 走棋Void regretPoint() 悔棋Void win() 赢棋,ComputerPlayer,Int playerID 玩家的角色 boolean isEnable是否有控制权,Void selectPoint()选择棋子Void runPoint() 走棋Void regretPoint() 悔棋Void win() 赢棋,后备充足游戏场景提供各种杂货,游戏视图GameView游戏视图的类,主要提供画图方法和处理点击事件,GameView,Int map 棋盘的布局,void dr
7、awChessBoard(Canvas canvas) 画棋盘void drawQiZi(Canvas canvas) 画棋子int getPos(MotionEvent e) 根据点击屏幕获得棋子,没有规矩不成方圆规则类,游戏规则ChessRule游戏规则的类,主要约束棋的走法,ChessRule,private int map;/棋盘的布局 private int fromX; private int fromY; private int toX; private int toY; private int moveChessID;/起始位置是什么棋子 private int targetI
8、D;/目的地是什么棋子或空地,Boolean canMove() 能不能走,与电脑对战人工智能类,人工智能类AIPlayer人工智能的类,主要用于人机对战时电脑的思考走棋,AIPlayer,int qizi 当前棋局的信息,List allPossibleMoves(int map, int chessRole) 获得所有走法ChessMove searchAGoodMove(int qizi, int chessRole) 选择一个最优的走法,游戏构架分析,棋走法规则 ChessRule,游戏视图 GameView,人工智能 AIPlayer,玩家A BasePlayer,玩家A BasePlayer,人类玩家A BasePlayer,人类玩家B BasePlayer,人类玩家Q BasePlayer,电脑玩家C ComputerPlayer,选棋子,走棋,可以走 改变视图 判断输赢 停止玩家A 解锁玩家B,不是人为选择,而是电脑选择,注意事项,屏幕的问题,3格,4格,5格,6格,7格 状态量的问题,多了容易乱,牌类游戏斗地主,敬请期待,谢 谢,博主韩磊,,