当前位置:文档之家› 斗地主游戏(网络版)的设计与实现

斗地主游戏(网络版)的设计与实现

斗地主游戏(网络版)的设计与实现
斗地主游戏(网络版)的设计与实现

菏泽学院

本科生毕业设计(论文)

题目斗地主游戏(网络版)的设计与实现

姓名

系别计算机与信息工程系

专业计算机科学与技术专业

指导教师

2009 年5 月31日

菏泽学院教务处制

目录

摘要 (1)

关键词 (1)

Abstract (1)

Key words (1)

1 概述 (2)

1.1课题研究的目的和意义 (2)

1.1.1 课题来源 (2)

1.1.2 研究目的 (2)

1.1.3 研究意义 (2)

1.2 研究现状综述 (2)

1.3研究内容 (2)

1.3.1设计原理 (2)

1.3.2方案选择 (3)

1.4 课题研究技术要求、研究方法和要解决的关键问题 (3)

1.4.1 技术要求 (3)

1.4.2 研究方法 (3)

1.4.3 关键问题 (3)

2 系统开发环境与网络通信技术 (3)

2.1 开发环境 (3)

2.1.1 系统环境需求 (3)

2.1.2 开发工具简介 (4)

2.2 Visual Studio C++编程特点 (4)

2.2.1 C++语言 (4)

2.2.2 Microsoft Visual Studio C++ 简介 (4)

2.3 Windows sockets简介 (5)

2.3.1 Windows Sockets规范 (5)

2.3.2 Windows Sockets通信程序的基本流程 (5)

3 需求分析 (6)

3.1 需求分析 (6)

3.1.1 需求分析的作用 (6)

3.1.2 需求分析过程 (6)

3.1.3 需求分析的方法 (6)

3.2 可行性分析 (7)

3.2.1 可行性分析的意义 (7)

3.2.2 可行性分析报告 (7)

3.3 系统定义 (7)

3.4 系统的组成和功能结构 (7)

3.5 研究方法 (8)

3.5.1 软件工程的定义 (8)

3.5.2 软件工程的模型 (8)

3.5.3 本系统的研究方法 (9)

4 概要设计 (9)

4.1 系统总体设计方案 (9)

4.1.1 C/S模式 (9)

4.1.2 设计原则 (9)

4.2 基于C/S的模块设计 (9)

4.2.1 服务器端模块设计 (9)

4.2.2 客户端模块设计 (11)

4.3 相关技术的处理应用 (11)

4.3.1 面向连接的套接字编程 (11)

4.3.2 数据格式转换的问题 (12)

5 详细设计与系统实现 (13)

5.1 服务器端各功能模块的实现 (13)

5.1.1 服务器的启动功能 (13)

5.1.2 接收连接请求功能 (13)

5.1.3 数据捕获功能 (14)

5.1.4 合法性判断功能 (15)

5.2 客户端各功能模块的实现 (15)

5.2.1 登录功能功能 (15)

5.2.2数据接收功能 (15)

5.2.3 显示信息功能 (16)

5.2.4 游戏退出功能 (18)

6 系统测试与维护 (19)

6.1 系统测试的原则 (19)

6.2 测试过程及方法 (19)

6.3 本系统测试环境 (20)

6.4 测试中问题总结 (20)

6.5 系统的维护 (20)

参考文献 (21)

附录A 部分源程序清单 (21)

附录B 网络斗地主的规则简介 (30)

致谢 (32)

结束语 (32)

地主游戏(网络版)的设计与实现

计算机科学与技术专业学生马文斌

指导老师罗秀娟

摘要:近年来,随着经济的日益发展,人们的生活水平不断提高,生活质量也在渐渐的改善。适当的娱乐游戏对人们的业余生活是不可必缺的。游戏设计已经成为现在社会的一种热门行业。

本设计以一副牌规则为准。讲述了网络斗地主的游戏算法的设计,游戏通讯部分的开发(多线程,socket)的设计过程。flash UI部分由Wesly.Allen 实现并提供部分代码。本设计采用Microsoft Visual Studio C++ 作为开发工具,结合socket 编程,使用flash mx 开发游戏界面。

设计过程中,首先建立系统的应用模型,然后在此基础上进行需求迭代,详细设计时不断地修正和完善,经过测试阶段反复调试和验证,最终形成达到设计要求的可行系统。

关键词:网络斗地主;服务器;客户端;socket编程;

The design and realization of network Landlords game

Student majoring in Computer Science and Technology Bin

Tutor Xiujuan Luo

Abstract:Recently,with the development of economic,the people's life becomes better and better,life condition also is improving more and more.Proper recreation is indispensable in the people's pasttime life. The game designed already becomes the present society one popular profession.

This thesis described a network of the game Landlords algorithm design, communications part of the game development (multithreading, socket) of the design process. The process of Flash UI realized by Wesly.Allen and provide some code.The design using Microsoft Visual Studio C++ as a development tool, with socket programming, using the Flash MX to develop the user interface.

Designing process, first step is the establishment of application model, and then on the basis of this iterative demand, detailed design has been refined and perfected, through repeated testing and debugging test eventually reached the design requirements of the system viable.

Key words: Network Landlords; Server; Client ;Socket programming;

1 概述

1.1课题研究的目的和意义

1.1.1 课题来源

随着电脑软硬件技术和互联网的飞速发展,电脑游戏也突飞猛进,成功游戏案例不断涌现,例如反恐精英(CS)、星际争霸、魔兽争霸、FIFA2008、帝国时代等等。这时也出现了越来越多的网络小游戏,例如网络围棋、中国象棋、四国军棋、桥牌、麻将、拱猪、拖拉机、斗地主等。我曾经在安博(昆山)服务外包产业园参加C++项目实训开发,本设计的程序既是以当时的一个程序为蓝本,稍加修改而得。

1.1.2 研究目的

网络小游戏制作的目的是满足了人们休闲的需要,在紧张工作之余休闲类的小游戏能够给人带来最大程度的放松,也可以增进人们之间的交流,沟通,通过游戏还可以认识更多的朋友,也可以到达跨省、跨市,甚至跨国间人们互相娱乐的目的。

另外也通过本毕业设计将四年来所学的专业知识和其他方面的知识融入到

实际应用中。

1.1.3 研究意义

通过此次课题的设计,掌握制作一个游戏软件的方法,以及制作游戏软件的整个流程,制作游戏软件的步骤,为以后的就业工作打下基础。

1.2 研究现状综述

网络游戏正处于加速发展周期中,中国网络游戏市场迅速扩大,近三年的年均增长率超过100%。网络游戏的高速发展,逐渐引起了我国政府的高度重视,信息产业部、文化部、新闻出版总署相关部门都在积极推动各项市场监管和鼓励网络游戏产业发展的政策措施的出台,2003年网络游戏首次被正式纳入国家863计划,标志着我国网络游戏产业已经得到政府的充分重视。2007年中国网络游戏实际销售收入为105.7亿元人民币,比2006年增长61.5%。其中,中国自主研发的民族网络游戏市场实际销售收入达68.8亿元,占网络游戏市场实际销售收入的65.1%。此外,在网络游戏产业发展的同时,有力带动了相关行业的发展,如软件、计算机、通信、电信运营、互联网等,根据统计,网络游戏能够带动10倍于自身产值的相关行业的发展。预计未来三年,中国游戏规模将保持60%

以上的高速增长,至2010年市场规模将接近1000亿元,而多样的资本运作模式将成为网络游戏产业发展的重要推动力。同时,手机游戏、家用游戏机、游戏传媒、电子竞技等游戏周边行业也将快速发展起来。

1.3研究内容

1.3.1设计原理

本设计采用客户机——服务器模式,网络上的任何一台计算机都可以连接到服务器,当连接成功时,则分别点击准备以待游戏的开始,当对战各方都准备后程序自动判定游戏开始。游戏开始后,各方都有自己的游戏区域,互不干扰,当一方出完全部的牌则向各个玩家发送游戏结束信息,并在各方显示相关提示信息,游戏过程中,各方都会显示对家和自己还剩下未出去的牌数。

游戏规则是模仿网络上普通的斗地主游戏,主要是自己打的牌是否大过参照牌的问题。当前,前提是点击张数相同的牌,若点击的是牌数不相同,或者选择

的牌型不同,或者牌面不够大,则不可以打出去,并提示玩家错误信息。否则,可以将牌打出去,并在各方游戏区域显示牌。

游戏过程,任意一家(假设为A方)打出牌后必须同时向其他玩家发送出牌的信息。其他各方(假设为B或C方)在获取信息后即显示A方剩余的牌数,当A方剩余牌数为0,则提示A方胜利。其他各方失败的信息。

1.3.2方案选择

在概要设计阶段,有两中方案可供选择:

(1)各方都有自己的游戏区域,互不干扰,谁先出完全部的牌就为胜出的一方,同时不管其他各方是否已经出完全部的牌,游戏仍然结束。

(2)在前一个方案的基础上加入“showhand”键组,只要玩家点击某个showhand键,就可以在游戏结束时,将自己的该局得分乘以相应的倍数。

在第二种方案中,各方都有机会选择自己得分的翻番倍数,这样虽然可以增加玩家的新鲜感和带来刺激,但是,可能会引起玩家的赌徒心理,而不益于青少年的身心健康。在网络上流行的斗地主游戏或者其他的游戏都是以第一种方案为设计思想,对第二种方案设计的游戏的规则可能会不太习惯,玩起来就不能达到娱乐的目的了。所以我们放弃第二种方案的设计思想,参考网络上流行的斗地主的游戏规则,设计出第一种方案。

1.4 课题研究技术要求、研究方法和要解决的关键问题

1.4.1 技术要求

网络中任意计算机当运行该游戏软件时,要当客户机,要主动去连接服务器。当玩家完成登陆后,方可准备游戏;服务器能自动判断是否所有玩家都已经准备就绪,从而决定是否发牌;游戏中能正确判断玩家出牌是否合法,是否可以打出去(比参照牌大,就可以打出去)、能正确判断游戏是否已经结束和哪一方玩家胜出。还可顺利发消息给对方和接收对方发来的消息。

1.4.2 研究方法

按照软件开发的总过程进行设计,经历定义和计划、需求分析、软件设计、软件编码、软件测试等过程。

1.4.3 关键问题

开始制作游戏时,主要要解决的问题有以下几个方面:如何设置整个游戏的界面;如何控制斗地主游戏中每个玩家牌的随机生成,以保证各个玩家有公平的机会拿到任何一张牌;游戏开始后,判断哪个玩家可以开始叫地主,第二个或第三个是否可以叫地主,能叫几分;还有如何发牌的问题,每个玩家该拿几张牌,发牌顺序是怎样的,以及有玩家竞争到地主时,将底牌发送过去给地主;如何连接网络上的三台计算机实现网络对战,如何判断游戏是否结束以及输赢问题等。

2 系统开发环境与网络通信技术

2.1 开发环境

古语云:工欲善其事,必先利其器。利用一系列高效的、具有良好可视化的编程环境去开发各种软件,从而达到事半功倍的效果,所以开发硬件、软件、环境的选择显得非常重要。

2.1.1 系统环境需求

因为要实现的项目本身规模不是太大,只要以下简单需求

两台以上计算机(也可用一台计算机通过虚拟机实现)

●CPU 1G以上、内存 256M以上硬盘 20G以上

●Windows 2000以上或Redhat Linux 9.0

●Microsoft Visual Studio 6.0以上或gcc

2.1.2 开发工具简介

随着计算机技术不断发展,各种编程工具也随着发展,但是现在市面上的数据库编程工具门类众多,优良不齐,比如VB、PB、DELPHI、C++ Builder、VC、JAVA等。我们先来了解一下各类开发工具。

VB,全称Visual Basic,它是以Basic语言作为其基本语言的一种可视化编程工具。VB开发效率高,代码执行效率一般,但是入门和学习速度快,有较好的学习氛围和帮助书籍和帮助文档。但是随着微软的.NET技术的推广,VB将会逐渐退出历史舞台。

PB,全称PowerBuilder,是开发MIS系统和各类数据库跨平台的首选,使用简单,容易学习,容易掌握,在代码执行效率上也有相当出色的表现。但是PB的高级编程书籍的缺乏和基础语言PowerScript的普及程度对PB的明天有一定的限制。

DELPHI/ C++Builder它们都是基于VCL库的可视化开发工具,它们在组件技术的支持、数据库支持、系统底层开发支持、网络开发支持、面向对象特性等各方面都有相当不错的表现,并且学习使用较为容易,充分提现了所见即所得的可视化开发方法,开发效率高。它们所作的最大不足之处就是他们的帮助系统在众多的编程工具中是属于比较差的。

JAVA工具,目前比较出名的是Borland出的JBuilder和IBM出的Visual Age for Java(Eclipse),两种工具。适用于开发除了系统软件、驱动程序、高性能实时系统、大规模图像处理以外所有的应用。在一般的管理信息系统中和一般的数据库开发中,很少有人会选择JAVA。但是JAVA的强大网络功能和真正的面向对象特性决定了JAVA的未来,JAVA将在一个较为长期的时段里可以与微软家族抗衡。

Visual Studio C++,是基于MFC库的可视化的开发工具,从总体上说它是一个功能强大但是不便使用的一种工具。它在网络开发和多媒体开发都具有不俗的表现,帮助系统也做得非常不错,从开发效率角度讲只局限于开发windows系统应用、可重用组件及驱动程序。因为有微软的支持,其自身的基础语言的普及程度高,以及其代码的执行效率高等特性、VC自带强大帮助文档和大量优质教材,VC在开发工具中始终可以稳住阵角。

由于除了有些语言不是很熟悉外,而且是第一次开发网络游戏,对语言的驾驭能力还很有限,我选择了帮助功能非常强大的Microsoft (微软)的Visual C++作为我的开发工具。

2.2 Visual Studio C++编程特点

2.2.1 C++语言

C++是由C语言发展而来,是面向对象程序设计语言之一. C++语言是一种应用较广的面向对象的程序设计语言,使用它可以实现面向对象的程序设计。面向对象的设计与面向过程的设计是有很大区别的,面向对象的程序设计是在面向过程的程序设计的基础上一个质的飞跃。

2.2.2 Microsoft Visual Studio C++ 简介

Visual Studio C++是Microsoft公司的Visual Studio开发工具箱中的一个C++程序开发包。Visual Studio提供了一整套开发Internet和Windows应用

程序的工具,包括VisualC++, Visual Basic, Visual Foxpro, Visual InterDev, Visual J++以及其他辅助工具,如代码管理工具Visual SourceSafe和联机帮助系统MSDN。Visual C++包中除包括C++编译器外,还包括所有的库、例子和为创建Windows应用程序所需要的文档。

从最早期的1.0版本,经过6.0版本,发展到最新的9.0 版本,也就是Visual Studio 2008,Visual Studio C++已经有了很大的变化,在界面、功能、库支持方面都有许多的增强。最新的2008版本在编译器、MFC类库、编辑器以及联机帮助系统等方面都比以前的版本做了较大改进。

2.3 Windows sockets简介

2.3.1 Windows Sockets规范

Windows Sockets规范以U.C. Berkeley大学BSD UNIX中流行的Socket接口为范例定义了一套Microsoft Windows下网络编程接口。它不仅包含了人们所熟悉的Berkeley Socket风格的库函数;也包含了一组针对Windows的扩展库函数,以使程序员能充分地利用Windows消息驱动机制进行编程。

Windows Sockets规范本意在于提供给应用程序开发者一套简单的API,并让各家网络软件供应商共同遵守。此外,在一个特定版本Windows的基础上,Windows Sockets也定义了一个二进制接口(ABI),以此来保证应用Windows Sockets API的应用程序能够在任何网络软件供应商的符合Windows Sockets协议的实现上工作。因此这份规范定义了应用程序开发者能够使用,并且网络软件供应商能够实现的一套库函数调用和相关语义。

遵守这套Windows Sockets规范的网络软件,我们称之为Windows Sockets 兼容的,而Windows Sockets兼容实现的提供者,我们称之为Windows Sockets 提供者。一个网络软件供应商必须百分之百地实现Windows Sockets规范才能做到现Windows Sockets兼容。

任何能够与Windows Sockets兼容实现协同工作的应用程序就被认为是具有Windows Sockets接口。我们称这种应用程序为Windows Sockets应用程序。

Windows Sockets规范定义并记录了如何使用API与Internet协议族(IPS,通常我们指的是TCP/IP)连接,尤其要指出的是所有的Windows Sockets实现都支持流套接口和数据报套接口。

应用程序调用Windows Sockets的API实现相互之间的通讯。Windows Sockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作。

虽然我们并不反对使用这一套API来实现另一通讯协议栈(而且我们期望在将来规范的修改中能够讨论这个问题),但这种用法已经超出了我们这一份规范所规定的范围,我们在此将不作讨论。

2.3.2 Windows Sockets通信程序的基本流程

Socket设计在操作系统的核心中,提供一些系统调用以支持多种通信协议(如tcp,udp等等)。当要支持一种新的通信协议时,则需要把核心做一些改变。为了免除改变核心太多而造成不便,可以采用流的模块方式来添加新的功能,但这种方式并无法完全免除更动核心的操作。实际上,核心的设计把网络系统分成三个不同的层。socket支持3种访问传输系统的接口:其中一种就是同步阻塞方式:使用同步阻塞方式时,socket库函数暂停程序的运行,等待传输系统完成请求的操作,操作一旦完成,应用程序重新获得控制权。

3 需求分析

3.1 需求分析

3.1.1 需求分析的作用

需求分析就是分析软件用户的需求是什么.如果投入大量的人力,物力,财力,时间,开发出的软件却没人要,那所有的投入都是徒劳.如果费了很大的精力,开发一个软件,最后却不满足用户的要求,从而重新开发,这种返工是让人痛心疾首的。比如,用户需要一个Linux环境下的软件,而你在软件开发前期忽略了软件的运行环境,忘了向用户询问这个问题,而想当然的认为是开发Windows环境下

的软件,当你千辛万苦地开发完成向用户提交时才发现出了问题,那这个时候的损失就是巨大的。

3.1.2 需求分析过程

需求分析阶段的工作,可以分为四个方面:问题识别,分析与综合,制订规格说明,评审。

●问题识别:就是从系统角度来理解软件,确定对所开发系统的综合要求,

并提出这些需求的实现条件,以及需求应该达到的标准.这些需求包括:

功能需求(做什么),性能需求(要达到什么指标),环境需求(如机型,操作

系统等),可靠性需求(不发生故障的概率),安全保密需求,用户界面需求,资源使用需求(软件运行是所需的内存,CPU等),软件成本消耗与开发进

度需求,预先估计以后系统可能达到的目标。

●分析与综合:逐步细化所有的软件功能,找出系统各元素间的联系,接口

特性和设计上的限制,分析他们是否满足需求,剔除不合理部分,增加需

要部分。最后,综合成系统的解决方案,给出要开发的系统的详细逻辑模

型。

●制订规格说明书:即编制文档,描述需求的文档称为软件需求规格说明

书。注意需求分析阶段的成果是需求规格说明书,向下一阶段提交。

●评审:对功能的正确性,完整性和清晰性,以及其它需求给予评价。评审通

过才可进行下一阶段的工作,否则重新进行需求分析。

3.1.3 需求分析的方法

需求分析的方法有很多。这里只强调原型化方法,其它的方法如:结构化方法,动态分析法等(个人认为,对初学者不必深究这些方法,实际上我也从来没用过这些方法在此不讨论)。

原型化方法是十分重要的。原型就是软件的一个早期可运行的版本,它实现了目标系统的某些或全部功能。

原型化方法就是尽可能快地建造一个粗糙的系统,这系统实现了目标系统的某些或全部功能,但是这个系统可能在可靠性,界面的友好性或其他方面上存在

缺陷。建造这样一个系统的目的是为了考察某一方面的可行性,如算法的可行性,技术的可行性,或考察是否满足用户的需求等。例如:为了考察是否满足用户的要求。可以用某些软件工具快速的建造一个原型系统,这个系统只是一个界面,

然后听取用户的意见,改进这个原型.以后的目标系统就在原型系统的基础上开发。

原型主要有三种类型:探索型,实验型,进化型.探索型:目的是要弄清楚对目标系统的要求,确定所希望的特性,并探讨多种方案的可行性。实验型:用于大规模开发和实现前,考核方案是否合适,规格说明是否可靠。进化型:目的不在于改

进规格说明,而是将系统建造得易于变化,在改进原型的过程中,逐步将原型进化成最终系统。

使用原型化方法有两种不同的策略:废弃策略,追加策略。废弃策略:先建造一个功能简单而且质量要求不高的模型系统,针对这个系统反复进行修改,形成比较好的思想,据此设计出较完整,准确,一致,可靠的最终系统。系统构造完成后,原来的模型系统就被废弃不用.探索型和实验型属于这种策略。

追加策略:先构造一个功能简单而且质量要求不高的模型系统,作为最终系统的核心,然后通过不断地扩充修改,逐步追加新要求,发展成为最终系统。进化型属于这种策略。

3. 2 可行性分析

3.2.1 可行性分析的意义

可行性研究能使新系统达到以最小的开发成本取得最佳的经济效益。可行性研究的目的,是根据所开发系统的请求,通过初步调查和系统目标分析,对要开发的斗地主游戏系统从技术上、经济上、资源上和管理上进行是否可行的研究。这是一项保证资源合理使用、避免失误和浪费的重要工作。

●经济上的可行性:主要分析成本与收益、投资效果等(个人实验可以不

考虑)。

●技术上的可行性:要分析技术力量、计算机性能、通讯网络和系统条件

等。

●资源上的可行性:主要指管理、经费能否得到保证。

●管理上的可行性:如帐户管理水平、数据收集可能性、规章制度健全程

度和领导对发展系统的态度。

3.2.2 可行性分析报告

以下为将可行性分析转化为的可行性报告:

●经济上的可行性:

●技术上的可行性:本系统技术实现简单可靠,通讯组网简单,因为不需

要大规模的计算和读取数据,所以对计算机的性能要求并不高,对环境的搭建没有特殊的要求。

●资源上的可行性:开发本系统无需很特殊设备与环境,所以资源上具有

可行性。

●管理上的可行性:对于每个用户都可建立一个帐号和密码,安全性相当

的高,且便于管理。

以上可行性分析就各个方面进行了分析,接下来需遵照相关标准和规定进行审议,通过后进入了以下需求分析阶段。

3.3 系统定义

本游戏是斗地主游戏(网络版),是根据民间的盛行的扑克牌游戏斗地主,融合现代网络游戏的特点和管理需要,推出的体现当前行业最具有代表意义的解决方案。作为面向广大用户网络游戏,主要用于提供斗地主的游戏平台,提供登陆,发牌,叫牌,出牌,胜负判定以及退出等主要功能。

3.4 系统的组成和功能结构

●用户动作信息录入功能--输入

●系统信息显示功能--输出

●登陆功能

●退出功能

3.5 研究方法

3.5.1 软件工程的定义

软件工程是一类求解软件的工程,它应用计算机科学、数学及管理科学等原理,借鉴传统工程的原则、方法,创建软件以达到提高质量、降低成本的目的。其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。软件工程是一门指导计算机软件开发和维护的工程学科。

3.5.2 软件工程的模型

软件工程的模型是软件开发全部过程、活动和任务的结构框架。

●瀑布模型内容及特点:瀑布模型核心思想是按工序将问题化简,将功

能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方

法将逻辑实现与物理实现分开。将软件生命周期划分为制定计划、需

求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,

并且规定了它们自上而下、相互衔接的固定次序。将软件生存周期的

各项活动规定为依固定顺序连接的若干阶段工作,是一种线性模型。

每个开发阶段具有以下特征,从上一阶段接受本阶段工作的对象作为

输入,对上述输入实施本阶段的活动,给出本阶段的工作成果作为输

出传入下一阶段,对本阶段工作进行评审,若本阶段工作得到确认,

则继续下阶段工作,否则返回前一阶段甚至更前阶段。瀑布模型最为

突出的缺点是该模型缺乏灵活性。

●演化模型内容及特点:演化模型主要针对事先不能完整定义需求的软

件开发,其开发过程一般是首先开发核心系统,当核心系统投入运行

后,软件开发人员根据用户的反馈,实施开发的迭代过程,每一迭代

过程均由需求、设计、编码、测试、集成等阶段组成,直到软件开发

结束,属于迭代开发风范。演化模型在一定程度上减少了软件开发活

动的盲目性。

●螺旋模型内容及特点:它是在瀑布模型和演化模型的基础上,加入两

者所忽略的风险分析所建立的一种软件开发模型。沿螺旋模型顺时针

方向,依次表达了四个方面的活动,制定计划、风险分析、实施工程、

客户评估。

●喷泉模型内容及特点:喷泉模型是一种以用户需求为动力,以对象为

驱动的模型,该模型认为软件开发过程自下而上周期的各阶段是相互

迭代和无间隙的特性。软件的某个部分常常被重复工作多次,相关对

象在每次迭代中随之加入渐进的软件成分。无间隙指在各项活动之间

无明显边界,如分析和设计活动之间没有明显的界限。它体现了软件

创建所固有的迭代和无间隙特征,喷泉模型主要用于支持面向对象开

发过程。

●增量模型内容:在设计了软件系统整体体系结构之后,首先完整的开

发系统的一个初始子集,继之,根据这一子集,建造一个更加精细的

版本,如此不断的进行系统的增量开发。

瀑布模型、演化模型、螺旋模型之间的联系:相同点是这三个模型都分为多个阶段,而瀑布模型一次完成软件,演化模型分为多次完成,每次迭代完成软件的一个部分,螺旋模型也分为多次完成,每次完成软件的一个新原型,并考虑风险分析。

3.5.3 本系统的研究方法

本系统的开发严格遵守软件工程开发的标准流程。深入调查,进行需求分析,书写需求分析表和初步的软件说明书。在模块设计的同时进行单元测试,系统设计完成进行系统调试和系统集成测试。设计完成后,编写完整的软件说明书和用户手册,最后还需写对自己所作设计的评价和总结。

经过对各个软件工程的模型的分析,我决定使用瀑布模型进行开发。因为本系统的开发人员仅为我一人,非小组合作,在对各个阶段的交接上,只能按顺

序进行,完成上

一阶段后才能进行下一阶段的工作。整个软件开发流程如图3.1:

图3.1 斗地主游戏系统开发流程

4 概要设计

4.1 系统总体设计方案

4.1.1 C/S模式

C/S (Client/Server,客户机/服务器)模式又称C/S结构,是软件系统体系结构的一种。C/S模式主要由客户应用程序(Client)、服务器管理程序(Server)和中间件(middleware)三个部件组成。客户应用程序是系统中用户与数据进行交互的部件。服务器程序负责有效地管理系统资源,如管理一个信息数据库,其主要工作是当多个客户并发地请求服务器上的相同资源时,对这些资源进行最优化管理。中间件负责连接客户应用程序与服务器管理程序,协同完成一个作业,以满足用户查询管理数据的要求。

4.1.2 设计原则

(1)客户端与服务器端必须连接在一起。

(2)登录的控制问题。当登录人数达到3时,拒绝其他客户端登录请示;当已登录玩家中,有人中途退出,其他已准备玩家须保持其状态(除非自行请示改变),而下面请示的玩家将直接填补退出者的位置。对于中途退出者,若是发牌之前或经过其他玩家一致同意其退出,则不对其进行处罚,否则,为逃跑性质,进行处罚。

(3)当满足开始游戏条件时,服务器发牌至每个连接客户端。并规定该局首先叫牌者,使之进入叫牌状态。最终叫到地主的客户端必须首先出牌。

(4)所有的客户端的任何动作必须询问服务器。当请示动作合法时,服务器发送许可消息,客户端方能做出请示动作(实际上只是显示动作的结果,因为服务器已经处理了该动作,在发送许可的同时发送了处理结果)。否则,服务器发送拒绝消息,客户端则显示有关错误信息。

(5)服务器处理所有的玩家的动作,然后广播数据给每个玩家;客户端通过判断机制决定是否接受广播,并执行相应的显示与相关的游戏设置。

4.2 基于C/S的模块设计

4.2.1 服务器端模块设计

(1)数据传输的实现

使用WINSOCK编程实现C/S之间的通信。主要使用了以下几个类来实现数据的传输。

类CListenSocket: 监视连接socket,监视来自客户端的连接请求。

类CClientSocket: 数据传送socket,传送C/S之间的数据、消息。

类Cs : C/S模式之间的数据传送。成员:消息 message,数据相关者InfoAbout,Serialize(CArchive& ar),专用于收发数据,并存储于内存。

当客户端请示登录时,CListenSocket自动捕获请示,当请示合法且系统还有空位时,接受请示。并创建一个CClientSocket对象,CClientSocket处于活跃状态。然后,当对应客户端发来动作请示时,CClientSocket自动捕获之,通过playingcards1调用规则机制(请看(2)游戏规则的实现),进行合法性判断以后,把所得的处理结果填入Cs数据传送单元,再广播出去。

(2)游戏规则的实现

通过封装相应的类来实现规则。

类card :卡片类(牌),数据成员为花色(color),牌面(value),数目(num),存在标志(exist)。

枚举colors :包括方块,梅花,红心,黑桃,小鬼,大鬼总共六种花色。

结构体comb :内含头头是单,双,三顺,炸弹,火箭等所有牌型的标记位。

类player :玩家类,数据成员:玩家靓号(m_strplayerID),个性签名(m_strName),登陆密码(m_strPassword)等。

类playingCards :游戏规则类,数据成员:玩家数目(numPlayers),有牌数目(numCards),每个玩家有牌数目(cardsEach)等。成员函数:游戏初始化initgame(),洗牌suffle(),发牌sendCards()叫地主candlander(int seat,int point),出牌outcards(player &ThisPlayer)等等。

Card是游戏的对象,一般而言,特定的游戏都有特定的游戏对象。Colors,comb都是根据需要,对card 的补充。Colors 是各个牌的花色共有6种,后两种是小鬼(Bjoke)大鬼(Rjoke),不用于其他牌。Comb是combo的意思,指牌的类型。在斗地主中,牌型有单牌,顺子,对子, 3带**, 4带**,炸弹,火箭等,详细请看附录2 网络斗地主的规则简介。

Player是玩家在服务器中的一个映射,玩家的任何动作都由它代为完成,然后将结果返回给服务器的相关内存。

playingCards 充分利用以上几个类的对象,对附录2中“一副牌的规则”进行了模拟实现,做到了一模一样。并且加上了方法。封装起来,外界通过类的对象,只要调用它的方法,就可以实施对玩家出牌的合法性判断,并做相关结果的存储工作。至于判断结果如何处置,请参看(3)游戏平台的实现

(3)游戏平台的实现

对话框CServerSocketDlg :数据成员:玩家数目(m_nStaPlayers),监视套接字(CListenSocket *m_pSocket),通信套接字(CClientSocket *pSocket)等等。成员函数:Socket连接接受(OnAccept()),数据接受函数OnReceive(CClientSocket *),登陆认证函数VerifyUser(CString Name,CString Password),Socket关闭函数OnClose(),系统广播函数Broadcast2Everyone(Cs &msg,CClientSocket *pSocket)等等。

CserverSocketDlg主要处理数据的转换以及相关的调控。数据转换功能在后面将详细讲到,请参看 4.3.2 数据格式转换的问题。相关的调控功能是在OnRecieve()方法中用 switch()-case实现的。详细请参看附录A。

登录的控制:CClientSocket接收登录请示,处理退出。当某玩家登录时,给该玩家分配相应的位置(m_norder_seats),并将其分得的CClientSocket对象存入列表(UseSocketList),发送登录成功消息;退出时,将该玩家的CClientSocket从列表中移走,将其m_norder_seats记录下来,以待下一位登录者。

4.2.2 客户端模块设计

(1)登录功能的实现:

类CClientUseSocket :客户端登陆Socket,专用于收发连接登陆请求,登陆成功之后,即刻关闭。

类CUseSocketDlg :客户端登陆对话框。

类CUseSocketApp :客户端登陆实现应用函数。

启动客户端程序,弹出登录对话框,要求用户输入用户名,密码。点击”确定”就可以向服务器发送登录请示。当登录请示得到许可时,提示登录成功,关闭CClientUseSocket,启动CClientUseSocket2并进入游戏等待状态。这时可以点击”准备”告诉服务器已经准备就绪。

(2)与服务器通信功能的实现:

类CClientUseSocket2 :客户端游戏数据传送socket,专用于收发对服务器的数据。客户端退出时,才被关闭。

类Card : 卡片类(牌),数据成员花色(color),牌面(value)等等类CS :数据传送单元,C/S模式之间的数据传送。数据成员:消息ID号message,数据相关者InfoAbout 等等。成员函数: Serialize(CArchive& ar),该成员函数专用于收发数据,并存储于内存。

这其实与 4.2.1(1)数据传输的实现讲的是同一个原理,它们不同之处就在客户端不向服务器端发送反馈信息。

(3)游戏平台的实现:

对话框CdisplayflashDlg :客户端游戏界面,内含与flash UI通信的接口。数据成员:积分m_nintegral,剩牌数目m_nsparecards 座位号m_norder_seats,放弃动作m_nPass,手上的牌m_strpcards 选择的牌m_strselectcards,合法牌m_stroutcards等等。成员函数:连接Connect(),登陆ConnectServer(CClientUseSocket2 *pSocket),接收数据OnReceive(CClientUseSocket2 *pClientSocket),关闭 OnClose()等等。

顾名思义,display就是显示的意思, flash就是用动画显示。在客户端,只通过接收机制判断命令是否针对自己,若是,则执行之,显示服务器处理结果。否则,不执行,只获取当前玩家状态。该接收机制就是OnReceive方法。它通过switch()-case 机制区分不同的消息;通过https://www.doczj.com/doc/c22343416.html,About和m_norder_seats 来判断消息中的指令是否针对自己发出的。

4.3 相关技术的处理应用

4.3.1 面向连接的套接字编程

由于Windows的基于消息的特点,WINSOCK和BSD套接口相比,有如下一些新的扩充:

1.异步选择机制

异步选择函数WSAAsyncSelect()允许应用程序提名一个或多个感兴趣的网络事件,如FD_READ,FD_WRITE,FD_CONNECT,FD_ACCEPT等等代表的网络事件.当被提名的网络事件发生时,Windows应用程序的窗口函数将收到一个消息.这样

就可以实现事件驱动了.

2.异步请求函数

异步请求函数允许应用程序用异步方式获得请求的信息,如WSAAsyncGetXByY()类函数. 这些函数是对BSD标准函数的扩充.函数WSACancelAsyncRequest()允许客户端中止一个正在执行的异步请求.

3.阻塞处理方法

WINSOCK提供了"钩子函数"负责处理Windows消息,使Windows的消息循环能够继续.它提供了两个函数:(WSASetBlockingHook()和WSAUnhookBlockingHook())。让应用程序设置或取消自己的"钩子函数".函数WSAIsBlocking()可以检测是否阻塞,函数WSACancelBlockingCall()可以取消一个阻塞的调用.

4.错误处理

WINSOCK提供了两个WSAGetLastError()和WSASetLastError()来获取和设置最近错误号.

5.启动和终止

由于Windows Sockets的服务是以动态连接库WINSOCK.DLL形式实现的,所以必须要先调用WSAStartup()函数对Windows Sockets DLL进行初始化,协商WINSOCK的版本支持,并分配必要的资源.在应用程序关闭套接口后,还应调用WSACleanup()终止对Windows Sockets DLL的使用,并释放资源,以备下一次使用.

在这些函数中,实现Windows网络实时通信的关键是异步选择函数WSAAsyncSelect()的使用.

4.3.2 数据格式转换的问题

由于Archiev不支持bool ,struct,enum等数据类型的传输,只好将相关数据用Cstring ,int 类型在服务器与客户端之间进行传送。这是出现一个数据格式的转换问题:当客户端从服务器接收派牌时,类card的定义是这样的:enum colors{Diamond=1,Club,Heart,Spade,Bjoke,Rjoke};

//方块,梅花,红心,黑桃,小鬼,大鬼

class card{

public:

int value;

enum colors color;

int exist;

int num;

};

当类card 的一个对象card1需要被传送时,由于Archiev中并没有定义这样的数据类型,它的数据成员将无法被传送。我试图建立这样一个机制:在服务器端和客户端各建立一个完全一样的类card和Archiev传送类。然后,用1~6表示不同的color,把card1的数据成员转换成诸如“13/3/1/1”(表示红桃K)数据传送单元。

将class card 的数据成员转换成Cstring的函数是:

CString playingCards::Card2CStrMsg(card* card54,int len) 将Cstring转换成class card的数据成员的函数是:

CdisplayflashDlg::m_str2Card(CString &m_strpcards,card *card20) 详细代码请看附录A;

5 详细设计与系统实现

详细设计是整个设计过程中,最重要的步骤之一。本系统的功能主要分成两大模块: 服务器端和客户端。每个模块有可以分成几个子模块。下面分几个部分对各个模块进行详细设计:

服务器端各功能模块

●服务器的启动功能

●接收连接请求功能

●数据捕获功能

●合法性判断功能

客户端各功能模块

●登录功能

●数据接收功能

●显示信息功能

●游戏退出功能

5.1 服务器端各功能模块的实现

5.1.1 服务器的启动功能

点击“启动服务器”就可以调用成员函数OnSet(),启动服务器。如图5.1:

图5.1 启动服务器

启动服务器其实就是构造一个CListenSocket的对象m_pSocket,并使用它进行监听客户端的连接请示。这个很简单,就不多讲啦。

5.1.2 接收连接请求功能

启动服务器后,用 m_pSocket监视来自客户端的连接请求,通过成员函数m_pSocket->OnAccept()接受连接请求。如图5.2:

图5.2 一用户连接成功并登录成功

在受理连接请示的时候,如果已经接受的客户端数目少于3,就接受连接。否则不进行处理。当接受连接后,会构造一个CClientSocket的指针pSocket,如果构造成功(设置pSocket->m_staSecondConnect==1 “连接”)并且m_pSocket->Accept(*pSocket)返回为真,则用户连接成功,在图中表现为:“一用户进入“,删除pSocket。连接成功后,用户可以在登录对话框中输入自己的用户名和密码,点击“确定”发送登录请示和登录数据。服务器(用m_pSocket)收到该请示后,将再次构造pSocket(设置pSocket->m_staSecondConnect==2“登录”),符合与上相同条件时,登录成功并用语句

UseSocketList.AddTail(pSocket);

将pSocket保存起来(用于后面对客户端的通信,UseSocketList是一个CPtrList 类型的对象),在图中表现为:“一用户坐下”。至于“登录数据”—-用户名和密码,则由CServerSocketDlg::OnRecieve(CClientSocket *pSocket)接收并处理,最后显示在“信息内容”。

5.1.3 数据捕获功能

CserverSocketDlg::OnReceive(CClientSocket *)捕获数据。如图5.3:

图5.3 捕获玩家3 准备就绪的数据

上图中只是个例子,其实,自从登录开始,客户端与服务器端的所有数据,全部是由void CServerSocketDlg::OnReceive(CClientSocket *pSocket)处理

的。也就是说它不仅仅是字面意义上在接收,还包括了数据的存储,游戏的高度,系统的广播等等功能。所以这是服务器的真正的“sever”

5.1.4 合法性判断功能

playingCards *playingcards1来调用类playingCards中的封装的规则实现方法,最终完成合法性判断。

首先,在CServerSocketDlg::OnRecieve()方法中,实现对用户出牌的m_strpos(里面包含的是客户端点击的牌的position)的剥离,使之转换成整型数组pos[lenpc],lenpc是客户端实际出牌的长度。

然后,调用出牌方法playingcards1->outcards(&当前发出动作的玩家),进行出牌动作;

再就是,经过选牌card *selectcards(player &ThisPlayer),返回card *pc;以及牌型处理方法:card* playingCards::dealcards(card *pc)返回card *card1和comb playingCards::dealcaa(card *card1),返回 comb1;

最后,牌型合法性判断bool playingCards::legalcomb(comb comb1,card *card1),如果牌型合法,则继续下面的牌面大小合法性的判断bool playingCards:: biggerthanfront(card *card2),否则,提示出牌不合法。如果牌面大小合法,则出牌最终是合法的,将出牌处理结果,存入card front[length](#define length 20),并发送给各个客户端。

值得一提的是,地主开局第一次出牌或者后继两家玩家都pass掉时,card front[length]中的value值全为-1,其他诸如:exist,color,num分别为1,(colors)1,1;所以此时,当前出牌玩家出的牌,只要是合法的牌型,就可打合法地打出去。

5.2 客户端各功能模块的实现

5.2.1 登录功能功能

登陆对话框,点击“连接服务器”,发送连接请求,连接成功后,输入用户ID,密码,点击“确定”,发送登陆请求。如图5.4:

图5.4 连接服务器和登陆

由于本程序并不着重于数据库的开发与连接,不是本设计的重点,所以该实现比较简单,所以不详细讲了。

5.2.2数据接收功能

CdisplaySocketDlg::OnReceive(CClientUseSocket2 *pClientSocket)接收数据。客户端通过关键字m_norder_seats来判断接收与否。

接收判断机制switch(msg.message)-case中,case 共分0:登录 1:退出 2:开牌 3:叫牌 4:出牌 5:pass 6:计分六种情况。在此以最重要使用、最频繁的“case 4:出牌”来讲述这个功能。

首先,判断处理结果是否表明前面出牌是否非法,如果是,将给机会客户端重新出牌。否则,判断,信息是否是发给发出前面动作的本人。是,则将合法牌显示在UI上,并更新手上的牌。否则,只显示别人打出来的牌,及其所剩牌数目。

然后,当前面动作者是接收方的直接上家(或逻辑上家)时,接收方获得出牌权。否则,没有出牌权。

详细规则请参看附录1 客店端对出牌的显示控制。

5.2.3 显示信息功能

CdisplaySocketDlg:: m_strpcards 存储玩家手上的牌。然后实现排序的问题和合法牌打出以及非法牌回收的问题。

排序效果如图5.5:

图5.5 玩家收到的牌及其三种排序(按花色,大小,牌型) 排序算法如下:

先将用户手上的牌card20 copy 到cardHit中去.

然后,按其数据成员color(桃>心>梅>方),value(大>小),num(多>少)设置为不同级别的关键字.

(1)按花色排序: 主关键字color,次关键字value

(2)按大小排序: 主关键字value,次关键字color

(3)按牌型排序: 主关键字num,次关键字value,color

前两种排序只是处理调用sortOnValue()与sortOnColor()的先后关系.而按comb排序稍复杂一点,先按大小排序,再从右边开始查找.先找只有2个牌相同的,找到就往最左边放.然后依同理查找只有3个牌相同的和只有4个牌相同的,再就是查找火箭.最后剩下单牌就留在最后边.

CdisplaySocketDlg:: m_strpos玩家通过点击flash UI上面的牌,flash UI 把各个被选中的牌的position传递至这个参数,并被存储起来。

当玩家用鼠标点击某个牌时,该牌会弹出来,高出其他兄弟牌半截,此时,它在牌组cardHit中的位置position已经被取出并存入msg.m_strpos中,等待发送至服务器端.当用户选完想出的牌,点击手形图标后,就同时触发方法void

CdisplayflashDlg::OnButtonOutcards(),msg.m_strpos就随之被发送到服务器端了。服务器的处理方式请参看 5.1.4 合法性判断功能

CdisplaySocketDlg::m_stroutcards 玩家出如果经服务器判断合法,将被接受并存储在这个参数里。客户端将合法的牌全部显示在界面中央,并在动作者的手上将相应的牌清除掉(使相应牌的exist=-1)。如下图:

我们可以看到,动作者手上的梅花3补打出去了,由于这是地主的第一次出牌,服务器判定其合法,客户端收到判断结果后,将牌打出去在界面的中央位置显示,而在自己手上,清除掉该“梅花3”。如图5.6:

图5.6 选中一张牌并正常打出去

如果不合法,系统将不打出去,并给出错误提示.并且,将不合法的牌还原到动作者手中,让动作者重新选择:出牌OR PASS。原理其实与上面的大同小异,就不必赘述了。如图5.7:

斗地主中不合角色的出牌技巧详解

斗地主中不合角色的出牌技巧详解 在斗地主游戏中每一个角色都是可以改变的,但每一个角色出牌的方式是固定的。关键是如何运用个中的技巧。下面我们来简单的介绍一下每个角色的出牌原则。 地主下家出牌方式: (1)地主发单,过小单;地主发对,过小对;地主出除夜单,选择性的拆2。这是因为地主最不随意草率节制的牌路,也为你的下家创作发明走牌的机遇。 (2)接打伙伴的中除夜单和对子,上手后有单牌必然要出单,单牌很除夜也可出对子,无单了出对子。 (3)报单双时,假如地主过的单牌很少(地主上家顶住了牌没有让地主过小单),就报除夜单,不然报双。 地主上家出牌方式: (1)地主发单,顶除夜单,上手则改打中对;地主发对子,伙伴出小对子则卡住地主的小对子,卡住对8以下的,可出对7、8,让伙伴接以前;若伙伴出到对10阁下则切切不克不及接伙伴的牌,在伙伴打不起时在接打地主,上手后出除夜单。 (2)伙伴上手后,发小单过来,则要顶除夜单,假如除夜牌是对子就应该拆开对子来顶地主,上手后继续发中对,但假如前面已经知道伙伴没丰除夜对子了,则可以在顶牌时稍微顶小点,顶到10阁下,让伙伴去接地主的单牌。 (3)看着牌很可能打不赢的时刻,可以采用不凡的方式。如有一个A、2、加上几张烂牌,顶牌A ,地主不要,这个时刻就打一个2,如许假如地主不是双王,他必然会用王打你,如许就让地主少过了一张牌,给伙伴创作发明了更好的机遇,假如地主是双王,他牌不好他也可能把双王给拆 掉落,(正本他可以炸出来的)如许,就被你给骗到了,这种景遇能逼地主不炸就为赢了。 (4)地主上家要算好地主是单牌差劲照样对子差劲,专门打地主的弱点。假如地主单牌过完了,便发单,分死他。 (5)地主上家必然要记住本身的义务:不到万不得已切切要卡住地主的小单、小对。 (6)假如牌很好,可不顶牌。但至少要有80%以上把握才能如许放。 (7)在地主上一家如双王没有走本身剩三张牌有一张2别的一对或两单,都应该先打2(除非地主根底膳绫腔有过单牌才能发最小单) (8)若单牌出的太多,则尽量不要留一张,真的地主没单而你也只能留一张的话,而下家还有很多牌,就要看地主有若干除夜牌拦你,有很多的话,切切不要留一张。 地主出牌方式: (1)拿上牌后,理会本身的牌,除开三带一后,剩下的单牌在10点及以下,则发单。假如本身除夜对子对照多,能收回对子,便发对。具有几手相似的牌形如有几手连牌(沟通张数),就先打连牌

四人斗地主规则(上海版)

四人斗地主 四人斗地主由四人玩两副牌,地主为一方,其余三家为另一方,双方对战,先出完的一方胜。出牌规则类似"争上游"。 基本规则 玩家人数:4人 组队:地主是一队,其他三家为另一队 牌数:两幅牌共108张牌,你拿33张牌,其他三家各25张牌 出牌顺序:每局都由地主最先出牌 发牌:游戏开始后发牌,留8张底牌,每人发25张牌。 叫分:随机选择一个玩家开始依次叫分,玩家可以选择叫“1分”、“2分”、“3分”或者不叫分,所叫的分数必须比上一家高。 叫3分的玩家成为地主。 如果没有玩家叫3分,则一轮下来叫分最高的玩家成为地主。 如果没有任何一个玩家叫分,则重新发牌。 底牌:决定地主后,底牌发给成为地主的玩家,其他玩家不可见。 牌型介绍 1、四个王,称为天尊,什么牌都可以打,是最大的牌。 2、8个一样的,如八个Q,威力紧次于天尊,被称为天炸。 3、7个一样的,如七个J,威力小于天炸,被称为导弹(民间称七巧)。 4、6个一样的,如六个10,威力小于导弹,被称为火箭(民间称六喜)。 5、5个一样的,如五个9,威力小于火箭,被称为炮。 6、4个一样的,如四个8,威力小于炮,被称为枪。 以上牌除比自己大的炸弹外,什么牌型都可打。 7、单牌(一手牌):单个牌。 8、对牌(一手牌):数值相同的两张牌。 9、三张牌:数值相同的三张牌(如三个10)。 10、三带一对:数值相同的三张牌+一对牌。例如:333+44 只能带对子。 11、五张或五张以上牌点连续的牌,花色不限。例如:3、4、5、6、7、8、9、10、J、Q、K等。注意:可以选择1,2,3,4,5;或者2,3,4,5,6,或者10,J,Q,K,A。 12、双顺:三对或更多的连续对牌(如:334455、88991010JJ)。包括AA2233,223344,客服在线KKAA 13、三顺:二个或更多的连续三张牌(如:333444、444555666777)。包括AAA222333,222333444,QQQKKKAAA。也叫飞机不带翅膀。 14、飞机带翅膀。三顺+同数量的一对牌。例如:333444+6677(双飞)333444555+667788(三飞)333444555666+7788991010(四飞)等。注意,所带的一对牌,必须是连顺,不允许出现:333444+6688 牌型比较:天尊是最大的牌。天炸,导弹,火箭,炮,枪除了比自己大的炸弹外,比其它牌型都大。一般牌型而言,只有当牌型相同和总张数相同的牌,才可比较大小。其中像三带二、飞机带翅膀等组合牌型,只要比较其牌数最多牌值就行。只有比当前出的牌(场牌)大的牌才能出。 炸弹控制:4个(或以上)一样,地主可以随便出,但是非地主玩家,没有叫分的话,只能出一个炸弹,其他玩家叫多少分只能出多少个炸弹,还有炸弹只能拆开出。

四人斗地主java程序

package poker; /** * Title: 斗地主 * Description: * Copyright: Copyright (c) 2004 * Company: * author 艳生 * version 1.0 */ import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.util.*; public class CallPokerDialog extends JDialog{ JButton btnOne = new JButton(); JButton btnTwo = new JButton(); JButton btnThree = new JButton(); JButton btnFour = new JButton(); int score = PokerKernal.score; public CallPokerDialog() { try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { this.setSize(new Dimension(330, 80)); //居中显示 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); this.setLocation((screenSize.width - 330)/2,(screenSize.height - 80)/2); this.setModal(true); this.setResizable(false); this.setTitle("请叫牌"); if(score==1){ btnOne.setBackground(Color.pink); }

最经典的斗地主技巧--超级详细篇!

一、天时 主要指你应有充分游戏时间,他人也应有充分时间,否则人心不稳,情绪波动打不好。当然天气好坏对心情也有影响。 二、地利 主要指你在三人中的坐位,弱上家、强下家是你的最佳位置,强上家会破坏你做地主的机会,弱下家会守门无力。当然好的地理环境有利于你的水平发挥。 三、人和 主要指他人和你,他人应不是同伙,你应身体、心情良好,周围无多嘴闲杂人。以下几种人不与之赌: 1、无钱者:输几把即欠帐者很无趣,你输给他的概率却高。 2、技太差者:享受不到斗智的乐趣,还常受其气。 3、技太好者:指超出你一大截者,与之久赌你必输,却是好的学习对象。 4、输赢看得过重者:与之赌输赢你都不会愉快的。 5、无牌品者:常搞小动作(作弊)。 6、你厌恶之人:如过于急躁者(这种人输钱时更烦躁,不断催你,也许是他的心理战)、废话过多者(干扰你的情绪、打断你的思路,对付办法:他说他的,你打你的)、你仇家(你可能会意气用事)。 7、与你财力不相称的赌场不参与(要么因输不起而压力过大影响水平发挥,要么财大气粗不在乎而掉以轻心致大输)。

四、战略:对游戏的总体认识 1、胜负机制 ①突围论:一副牌54张原为一家,正副统帅+4路大军,一分为二后为两军对垒(两人打),一分为三后为三国大战,各为其主,互相掩护突围(大带小),最先完全撤出者胜。非进攻型游戏,仁者游戏啊--大顾小嘛! 注意: ●大带小只能做到一大带一小,勿幻想一拖二会成功,如地主一套天牌+二轮小牌必输,想胜必须做到大小完全匹配。 ●中间牌属自己突围出去(顺牌自救),运气好坏看别人,故中间牌为挡牌重点,对手也不会指望过小牌的。天牌不用帮,但需机会。 天牌:指某牌型中的最大牌。 ●天牌是动态概念,随着双方互耗,猴子会称大王,故有当前天牌、潜在天牌之分,学问大。 ●天牌牌型中张数越少者越好,如单牌一般较多,易接牌。 ●一般每家有天牌1-3套。 ●也有不知不觉中扔掉天牌的。 ●农民手中牌只需在地主手中为天牌即可。 ●相对而言,地牌是永远无法自己出去的牌,看作小牌即可。

四人斗地主规则

游戏使用两副牌,四个玩家同时游戏,一队为地主,另外三个人为另一队,先出完牌的一队获胜。 【斗地主(两副牌)游戏规则】 1. 发牌和决定地主 发牌:游戏开始后发牌,留8张底牌,每人发25张牌。 叫分:随机选择一个玩家开始依次叫分,玩家可以选择叫“1分”、“2分”、“3分”或者不叫分,所叫的分数必须比上一家高。 叫3分的玩家成为地主。 如果没有玩家叫3分,则一轮下来叫分最高的玩家成为地主。 如果没有任何一个玩家叫分,则重新发牌,三轮都没有人叫地主,则解散游戏。 底牌:决定地主后,底牌发给成为地主的玩家,其他玩家不可见。 2. 牌型 单张:任意一张单牌。 顺子:任意五张或者五张以上点数相连的牌,2和王不能出现在顺子中。 对子:任意两张点数相同的牌,两个小王或两个大王也算对子牌型。 连对:三对或三对以上点数相连的牌,如:556677。2和王不能出现在连对中。

三张:任意三张点数相同的牌。 三顺:两组或两组以上点数相连的三张牌,如:555666;555666777888。2和王不能出现在三顺中。 三带二:点数相同的三张牌+一对牌,如55577 飞机带翅膀:三顺+数量相同的对牌,如555666777+99JJKK 炸弹:四张或四张以上点数相同的牌,如:66666,999999 天王炸弹:四张王牌 3. 牌型的比较 天王炸弹大于所有其他的牌型。 炸弹牌型大于除天王炸弹外的所有其他牌型。炸弹的牌型相互比较时,牌张数多的大,牌数相同的情况,则比较点数,点数大的炸弹大。 非炸弹的牌型,牌型、张数相同才能相互比较,点数大的则大。三带二、飞机带翅膀的牌型比较牌型中张数最多的牌的点数即可。 点数大小,从大到小依次为:大王、小王、2、A、K、Q、J、10、9、8、7、6、5、4、3。 4. 胜负条件 地主为一队,其他三个玩家为另一队,先出完牌的玩家所属的队伍获胜。

必胜策略,围棋之道

必胜策略,围棋之道 在职业围棋圈,一部分棋手自称“求道派”。“道”者,终极真理是也。与“棋道”如影随形,“围棋上帝”、“围棋之神”也是棋手和棋迷常挂在嘴边的两个概念。在上一章节我们讲到,围棋之多变如恒河沙数,非人力所能及。思及此,棋迷朋友可能会诘问,围棋的终极真理是否存在,“围棋上帝”到底会怎样下棋。笔者将在本文解答这两个问题。(本文部分内容参考了笔者的其它回答) 1、小学生的游戏围棋,终究还是个游戏。欲知围棋之道,我们可以先从研究一个简单的游戏入手。抢三十,一个酒桌上的小游戏,也是一道小学奥数题。它的规则是这样的:甲和乙从1开始轮流报数,每次可以报1、2或3个数。比如甲报1,2;乙报3,4,5,甲报6,乙报7,8. 报出“30”这个数字的玩家获胜。抢三十的诀窍,说来也不难,只需用到一点逆向思维。如果甲想抢到30,一定不能以29收尾,否则乙下回合可以直接抢到30。同理,甲也不能以28或27收尾,不然乙也能直接抢到30. 不过,若是甲以26收尾,则乙在下一回合必然抢不到30. 不仅如此,乙下一回合必然以27,28,29三者之一收尾。这样一来,轮到甲的时候,甲必然能抢到30. 因此,甲抢到26就可以保证获胜。同理,想要抢到26,甲必须抢到2 2、18、14、10、6、2. 我们以下

图示意:以红色的30为最终目标,橙色的26、22等数是兵家必争之地,而白色的27、28、29等数,只能过站,不可以停留。甲玩家只需一路占领2、6、10、14、18、22、26这一串等差数列,即可将胜利收入囊中。小结一下。抢三十这个游戏,先手方(即先报数的甲玩家)有必胜策略,而且可以用数学语言精确地描述:先手方先报1,2;之后, 若后手方报n个数(n=1,2或3),则先手方立即回以4-n个数。最终,先手方总能抢到30. 在博弈论(Game Theory)中,数学家把像22、26这些游戏中的“兵家必争之地”,称作必胜局面(Winning Position)。换句话说,抢到必胜局面的一方,即可稳操胜券。相应的,像27,28,29这样的节点,在此停留就会失败,被称为必败局面(Losing Position). 这个策略说来容易,却隐藏着许多变化。举个例子。甲报1,2,乙报3,4;这是一个回合。每一个回合,甲都会占领一个新 的必胜节点。七个回合结束以后,甲才能抢到30. 每一个回合中,乙可以报一个、两个或三个数,各有三种选择。根据乘法原理,六个回合中,乙共有3*3*3*3*3*3*3=3^7=2187 种策略的组合。只不过,乙的变化再多,也逃不出甲的手掌心。那么,如果甲和乙抢的不是三十,而是每次可以报1-299个数字,报出1,000,000者为胜呢?依样画葫芦,我 们仍可以为先手方找到必胜策略:先手方只需先报100。然后,若后手方报n个数(n=1,2,...,299),先手方立即回以

四人斗地主游戏规则

宏晶微电子——四人斗地主游戏规则说明该游戏由四人玩两副牌,地主为一方,其余三家为另一方,双方对战先出完的一方胜。出牌规则类似"争上游"。 谁先当地主的方式和普通的1副牌相同,当地主得分方式可以选择1分,2分,3分。如果不愿意当地主或者当地主为1分,2分,而地主被别人抢当。 发牌: 两副牌,留八张底牌,其他发给四家,底牌加到地主手中。 出牌: 首先将八张底牌交给地主,八张底牌所有人都能看到。由地主出始出牌,然后按逆时针顺序依次出牌,轮到你跟牌时,你可以表示不跟或出牌。直至某一方牌出完就结束此局。 牌型: 1、四个王,称为天尊,什么牌都可以打,是最大的牌。 2、8个一样的,如八个Q,威力紧次于天尊,被称为天炸。 3、7个一样的,如七个J,威力小于天炸,被称为导弹(民间称七巧)。 4、6个一样的,如六个10,威力小于导弹,被称为火箭(民间称六喜)。 5、5个一样的,如五个9,威力小于火箭,被称为炮。 6、4个一样的,如四个8,威力小于炮,被称为枪。 以上牌除比自己大的炸弹外,什么牌型都可打。 7、单牌(一手牌):单个牌。

8、对牌(一手牌):数值相同的两张牌。 9、三张牌:数值相同的三张牌(如三个10)。 10、三带一对:数值相同的三张牌+一对牌。例如:333+44 只能带对子。 11、五张或五张以上牌点连续的牌,花色不限。例如:3、4、5、6、7、8、9、10、J、Q、K等。注意:可以选择1,2,3,4,5;或者2,3,4,5,6,或者10,J,Q,K,A。 12、双顺:三对或更多的连续对牌(如:334455、88991010JJ)。包括AA2233,223344,QQKKAA 。 13、三顺:二个或更多的连续三张牌(如:333444、444555666777)。包括AAA222333,222333444,QQQKKKAAA。也叫飞机不带翅膀。 14、飞机带翅膀。三顺+同数量的一对牌。例如:333444+6677(双飞)333444555+667788(三飞)333444555666+7788991010(四飞)等。注意,所带的一对牌,必须是连顺不允许出现:333444+6688。 牌型的大小: 天尊是最大的牌。天炸,导弹,火箭,炮,枪除了比自己大的炸弹外,比其它牌型都大。一般牌型而言,只有当牌型相同和总张数相同的牌,才可比较大小。其中像三带二、飞机带翅膀等组合牌型,只要比较其牌数最多牌值就行。只有比当前出的牌(场牌)大的牌才能出。 合肥宏晶微电子科技有限公司 二零一一年十月三十一日

斗地主技巧口决

斗地主技巧口决: 1 敌人打单我打双意为不要跟对手穿同一条裤子。菜鸟常犯的错误之一就是敌人打啥我打啥。地主打个3带,自己接住以后也打个3带,极有可能把牌权又送回去了。单双连同理。 2 打对,破顺自己有连又有对时,如果不能确定连牌是不是大,可先打对,拿到牌权后再出连牌,这样PASS的几率会高一些。 这时先打55,对方过JJ的话就无法再管你的6连,22收回牌权后就可打完。 3 远传对子近传单如果是地主上家,自己快速打完希望渺茫,想把牌权交到同伴那去的话,最好打对子。但是不能打太小,以防地主过小对。同理,地主下家应首选打单牌传给同伴。但是应留下最小一张,以备同伴报单。 4

先死就是跑得快菜鸟常犯的错误之一。无论地主还是农民,除非有回手,或可能打报牌,否则应尽量先将手中的杂牌打掉。道理很简单,先出多牌被对方拦住无法回手的话,对方的牌整齐可直接打报牌,这时手上的杂牌就出不去了。而先把杂牌打掉,等对手牌打差不多了自己手上的牌就是大的了。 5 情况不明对先行在不知道打什么的情况下应首先考虑打对,因为打对最容易起到拆牌和见牌的作用。当然这是建立在记牌的前提下,分析对手可能不吃对,或者自己和同伴有能力收回牌权的情况下可遵循本口诀。出牌:如果地主单牌多,就要坚决顶住,甚至不惜破开对A或对K来压制地主,建议按K、A、Q、2、J的顺序顶牌。出K是很有学问的, END 斗地主技巧第一层心法: 1 可以试探地主有无单A和单2 2 有时候可以破开地主的对A和对2,这对后续在对子上对地主进行攻击是很有利的 3 如果地主出A,地主下家就可以出2取得出牌权。

攻少—如果地主单牌比较弱或者比较少,而己方(自己与盟友)比较强,可以采取连续出单牌的战术,来打乱地主的牌型,建议不要放跑地主小于10的单牌(大多数情况这都是成败的关键)。地主出牌建议借力打力,后发制人,在这个阶段就是要做到压下家放上家,利用上家出小牌把自己的牌走顺。END 斗地主技巧第二层心法: 1 记牌——再记K、Q、10、7。记住出过的10与7的张数,如果10和7出光,就可以断定别人手里没有顺子。 2 算牌——通过几轮的出牌,迅速推算出各人剩余牌的大致牌型,确定主攻手与主攻方向。 3 出牌——如果自己不是主攻手,就要全力配合盟友进行防守与反击,无论自己是地主的上家还是下家,如果形势需要就要对地主进行疯狂的压制(就算自己剩余的牌型七零八落也在所不惜),关键时刻还要给盟友绝妙的喂牌,比如出一串致命的顺子或者葫芦。如果自己是主攻手,就要对地主进行冷静、无情的打击,这个时候切不可因自己的牌比较强而得意忘形,要善于借力打力,后发制人,有时候让地主或者盟友多大一把牌也是很有必要的。地主出牌口诀还是借力打力,后发制人这八个字。怎样借力打力,后发制人,这里技巧性非常强。首先出牌要具有迷惑性,让别人错估你的牌型。如果

《欢乐斗地主》四人斗地主攻略

《欢乐斗地主》四人斗地主攻略 自从去年开始接触四人斗地主之后,现在基本上没怎么接触三人斗地主了,感觉没什么意思了。之前都是一早醒来就弄5万豆去四人斗地主的精英场玩,然后到晚上就输光,明早又是5万,最高的时候赢到30多万。而且还有4个小号轮番上阵。玩的时间也不短了,现在谈谈我对四人斗地主的看法:四人斗地主要求农民玩家之间配合度要足够高,而且技术都要在同一水平线上!2个厉害的高手+1个超级菜鸟去对抗技术好的地主一样是输。特别是当那个菜鸟是地主上家的时候,经常会出现这种情况:你出3,他接4,地主过5。 另外,我个人感觉四人斗地主白手起家要比三人的容易,基本流程是这样的。 1.在新手场把欢乐豆混到8000+,这个过程是最艰难的,因为新手场的人欢乐豆基本上都是1千多,你炸的再多,到最后也是赢几百的豆。而且这里的人大部分技术都不怎么样,所以要尽量多抢地主,这样积累的才快。 2.等攒够8000豆到进阶场,到了这个阶段,攒豆就很容易了,因为90%以上的人欢乐豆都比你多,有时候一把就能把欢乐豆翻倍。而且队友的水平也有所提高了。 3.攒够5万到精英场,到了这个地方,我没三个炸都不敢叫地主。这里的人大部分都是**。很多人手里拿着两三个炸不叫,你一当地主,TMD就三个人一起加倍,然后就是一顿乱炸。一局下来十几万就没了。。。但是这个地方,也是欢乐豆提升最快的地方,玩家基本上都是中等偏上水准了,很少出现坑队友的情况 玩四人斗地主,农民出3带2是大忌,因为地主手上有三带二的几率很大,过一手就是5张牌,出完两三手就全剩炸了。实在没牌出,就出三个,或者一对。就算被地主接上,他还剩下三个或者一对,多出了一手牌。很多时候,一手牌就能决定一局的输赢。 玩四人斗地主的时候千万别当独比,别以为就你一个人牌好炸多,把队友都当成空气。玩农民,就要有统筹全局的眼光,把其余农民手上的牌和你的牌都当成一个整体看。脑海中想象:你是一个人拿着三副牌在跟地主打,充分利用队友手中的牌去对kang地主 地主上家的农民往往对一局牌的输赢起着决定性的作用。这个位置我认为是最容易,同时也是最难玩的。容易的理由是,你只要尽量堵住地主就行,不需要承担很大的赢牌任务。难就难在,你堵地主的同时,还要让队友能轻松地接上。而且你还要试探地主的死穴,转换牌路。举个例子:地主出单张的时候,先看看地主拿到的底牌,如果底牌是3456QQKK,最好的选择是堵J或者A。具体原因就不用多说了,大家应该都懂。 说说骗炸的技巧吧。如果手里只剩4张炸,地主牌又很多的时候,别急着说合作愉快,尽量多骗地主的炸。当上家出小单给你过的时候,别急着pass,要假装手里剩下2个对不想拆,然后很艰难的按pass。另外,在进阶场或者精英场的时候,玩家发语音是不会显示的。我刚玩的时候就被这个坑过,农民剩下4张,然后我听到有人发合作愉快,我想都不想就炸了,后来才发现是地主发的语音,那个农民就剩4张单牌。我现在当地主的时候也经常用这个方法骗农民炸。其实在高倍场想提示队友炸也很容易,按一下右上角的那个×,这时候有一个发送离开游戏请求的对话框,在那里输入“炸”然后发送,就ok了,万无一失

四人斗地主(两副牌)技巧分析(精)

盛年不重来,一日难再晨。及时宜自勉,岁月不待人。 一.叫牌。 什么样的牌值得叫呢,这个一般是根据个人的经验的。下面给出一些条件,至少要满足其中之二才可以叫牌。 1,手上有大王 2,至少有一手炸弹 3,有很多较大的三个(如222,AAA,KKK等) 4,有一副6个的(可以尝试叫2分,都是这么叫的,呵呵) 5,有3分之2的牌都是人头牌 **还有一种比较特殊的情况,比如说你的前面三家都不叫,那就是说很有可能外面没炸弹,这时只要你的牌还过的去就叫,赢的概率还是蛮大的。(不过在高手场这个规律不太成立,因为很多人故意不叫的,其实牌好着呢,所以在那里不用参考这一条) 下面几种情况最好不要叫牌: 1,人头牌很少,就是说什么大牌 2,单牌很多且较小,有时超过了8张,那么你叫牌后肯定有很多单,划不来3,手上牌很顺,尤其是有一把天然的顺子,最好别叫,牌顺就打地主贝,叫了顺子也就乱了(嘿嘿,这个属于比较缺德的,很多人碰到这种牌就会叫个2分,目的就是不想浪费这么好的牌,最好是有个傻瓜地主叫三分,他就哈哈哈哈了) 二.斗地主。 在斗的过程中,以下几点是大家都要注意的: 1,要记牌,对于一般的人只要求你记住司令和2的张数就可以了,有余力的话也记一下A,至于那些记忆力超强的人(能记住所有牌的)不做考虑(让他们来打实在是太轻松了)。 2,一拿到牌就要审牌,就是看清自己的牌是什么样的结构,有哪些优点和哪些缺点,即适合打什么牌型。然后理顺出牌顺序(这个很重要的哦) 3,在打斗中要仔细留意每家出的牌型和他们都已出了什么牌(大致了解,主要

是有没有出过3,出了哪几种人头牌等,记3是为了放牌服务的,有时候你发现他没出3,那就是很有可能被关住了,这个时候就可以很明智的不用去放他,为什么?。。。放不进啊!!汗~~很多时候都是自己人没放出把地主给放活了,所以要谨记!) 下面还是具体的讲讲每个角色的职责和打法吧: 先讲地主,地主的打法绝对是由自己的牌所决定的,有绝对优势的就不讲了,扔炸弹就完了,那就讲一般的。做地主要学会忍,观察,误导,欲擒故纵,巧拆炸弹等高级技术。 何为忍, 那就是不要每一次压了你的牌就仍炸弹,要看对象和自己的情况而言。一般的说你上家压你的时候你基本上是不反抗的,因为他可以直接放你牌,而你对面的则是着重防御对象。如果你上家打了什么顺子啊,大的三个啊,你就忍,你可以忍到他大牌打完了,出小牌的时候,就是你受益的时候了,不过忍也是有条件的,第一,你家最好有首大炸弹,可以防止某人跳牌。 第二,让某个人连续出牌最多不能超过三首,一般你看着情况实在不对了就要主动炸了,除非你跟了一首牌后能稳赢(有大炸弹做保证)。忍的还有一个要义就是炸弹要用到口子上,很多时候某一家只是在骗你的炸弹的,如果他们之间互相接牌,符合某人没有连续出三首牌的条件,你完全可以不炸,越到后来你也就越能看出他们三人谁的危险最大,把炸弹用到他身上就行了。忍的最高境界就是在最后的几首牌,比如农民中有的剩下的牌的张数为10,5,3,2时是最危险的,这个时候你还真的要好好判断了,多多回忆,比如说你现在炸了也死,不炸也死,但是能跟一手就活那就不炸,这种忍只是小忍;但是有时你炸了以后只要外面没炸弹你就活,而你要炸的又是6个什么的,我的意见是绝对要炸,分数并不是最重要的,你就把他当做普通的炸弹好了,死也就死,至少不会冤死。还有的时候呢某个农民的牌特别顺,能够一口气出完的,而出的牌又都是地主不要的,我的意思是马上炸他,千万不要忍,忍到后来他突然剩了一张牌你就完了,这个经常出现的,根据我的经验他们都是主动接牌,碰到这种情况的最好马上炸,不要给他机会。尤其是你的上家。(是否主动接牌是能看出来的,比如打三个的时候他

斗地主经典牌例

斗地主经典牌例 (红色是底牌) 1、大王,小王,2,2,K,K,K,K,Q,Q,Q,Q,J,J,10,9,8,8,8,4 2,A,A,A,A,J,10,9,9,9,7,7,7,6,6,6,5 2,J,10,10,8,7,6,5,5,5 ,4,4,4,3,3,3,3 过程: 地主9,下家2; 下家7,7,7,6,6,6,5,10,地主K,K,K,K,下家A,A,A,A,地主大王,小王; 地主J,J; 地主10,上家J,地主2; 地主2;Q,Q,Q,Q; 地主8,8,8,4 结果:地主胜,4炸 探讨1:这付牌当地主出10时,上家上2,再打4,4,4,6,则地主输至少3炸。 探讨2:地主开始就应该打J,J,如果没人打,就打K,K,K,K,4,9!2、大王,小王,2,2,2,A,Q,10,10,10,10,9,9,6,5,5,4,4,3,3 2,A,A,K,K,K,K,Q,J,J,6,6,6,5,4,4,3 A,Q,Q,J,J,9,9,8,8,8,8,7,7,7,7,5,3 过程: 地主6,下家Q,上家A,地主2; 地主Q,下家2;

下家6,6,6,3; 下家4,4,上家9,9,地主2,2,上家7,7,7,7; 上家J,J; 上家Q,Q,地主10,10,10,10; 地主5,5,4,4,3,3; 地主A,下家K,K,K,K,地主大王,小王; 地主9,9 结果:地主胜,4炸 3、大王,小王,2,2,Q,Q,J,10,10,9,9,8,8,6,4,4,3,3,3,3 2,2,A,A,A,A,K,K,K,K,Q,7,7,7,7,9,9 Q,J,J,J,10,10,8,8,6,6,6,5,5,5,5,4,4 过程: 地主4,4,下家2,2,地主3,3,3,3,下家7,7,7,7,地主大王,小王; 地主6,下家Q,地主2,下家K,K,K,K; 下家9,9,上家10,10,下家A,A,A,A 结果:地主输,5炸 探讨:地主太心急,应先忍一手,让下家2,2大。这样有可能只输3炸。 4、大王,小王,2,2,2,A,A,J,J,10,9,8,7,6,6,6,5,5,4,3 2,A,A,K,K,K,9,9,9,8,7,6,5,5,4,4,3 K,Q,Q,Q,Q,J,J,10,10,10,8,8,7,7,4,3,3 过程: 地主6,6,下家A,A,地主2,2; 地主5,下家2;

斗地主记牌技巧大全

斗地主记牌技巧大全 初级 众所周知,斗地主是最受大家的喜爱的棋牌游戏之一,如果不会斗地主,在生活当中与亲友们一定会少了许多共同语言,那么各位想不想提高自己斗地主的水平呢?要知道会玩斗地主水平不够是要输牌的哦,有的人会认为这个是单纯靠牌运的,没有什么技巧可言,那你就大错特错了。靠牌运你也许会赢几次牌,但好牌运不会永远伴着你的,实力与技巧才是硬道理。 那么倒底该如何记牌呢?首先抓完牌时一定要按顺序排列(若是分牌,在出之前,一定要将手中的牌按顺序排列),然后找到一张都没有的牌,并牢记之,因为这很有可能是炸弹,即记住自己没有的牌。其次是记住六张大主牌,双鬼和4个小2,应记住出过的大牌,剩余的大牌,以及是谁出的大牌都要记清楚,因为通过自己手中有的大牌和已经出过的牌就可以分析出剩余牌的信息,这对打到下半程里很有用。然后是A,K,Q,J,也就是10以上的牌,能记住多少就记多少,最好能记住是谁出的,因为斗地主不光要记牌还要算牌,而这恰恰是算牌的基础。 以上所讲总结起来就三点。 1、记住自己所缺的牌。 2、记住大牌,双鬼也叫双王,还有4个小2,有的地方将这6张牌称为头子。 3、尽可能的记住10以上的牌。 其实光做到以上3点是远远不够的,但是做为新手能做到这3点就很不错了,因为新手不可能一上来就把所有牌记得清清楚楚,如果这么做反而会让你失去信心,得不偿失。毕竟这对你的记忆、思维和推测能力都有很高的要求。能做到这几点对一个新手来说已经是一大进步,已经可以大大提高你在打牌过程中的胜利率了。 中级 学习记牌的技巧的目的是什么呢?很简单,就是为了做到知己知彼,要做到知己知彼光做到前初级篇中讲到的3点是远远不够的,这次淮水安澜给自己加大的难度。 一、不仅要记住自己缺的牌,还要牢牢记住自己手上的牌,记自己的牌这里有个小窍门,一副牌从3-2加上大小王,我们可以分段记忆,分3-7,10-A,8-9,小2,大小王,为什么这么记呢?3-7,10-A分别都是五张连牌,8-9刚好是一个连接点,对连牌进行了延伸,而小2和大小王是除夜牌,在初级篇里就讲过牢记。分段后只要记住自己有没有连牌,有没有连接牌,有没有除夜牌,就要以完全的记住自己手里的牌了。 二、尽量记住桌面上的牌,也就是已打出的牌,这就对记忆力要求较高了,有这样的人,把每一手出过的牌都记得清清楚楚,甚至花色都记得住。这样的人要么天赋很高,要么打牌经验丰富,这两种人都不是我们一般人能轻易可以

四人斗地主 80% 赢的技巧

四人斗地主80% 赢的技巧 一.叫牌。 什么样的牌值得叫呢,这个一般是根据个人的经验的。下面给出一些条件,至少要满足其中之二才可以叫牌。 1,手上有大王 2,至少有一手炸弹 3,有很多较大的三个(如222,AAA,KKK等) 4,有一副6个的(可以尝试叫2分,都是这么叫的,呵呵) 5,有3分之2的牌都是人头牌 **还有一种比较特殊的情况,比如说你的前面三家都不叫,那就是说很有可能外面没炸弹,这时只要你的牌还过的去就叫,赢的概率还是蛮大的。(不过在高手场这个规律不太成立,因为很多人故意不叫的,其实牌好着呢,所以在那里不用参考这一条) 下面几种情况最好不要叫牌: 1,人头牌很少,就是说什么大牌 2,单牌很多且较小,有时超过了8张,那么你叫牌后肯定有很多单,划不来 3,手上牌很顺,尤其是有一把天然的顺子,最好别叫,牌顺就打地主贝,叫了顺子也就乱了(嘿嘿,这个属于比较缺德的,很多人碰到这种牌就会叫个2分,目的就是不想浪费这么好的牌,最好是有个傻瓜地主叫三分,他就哈哈哈哈了) 二.斗地主。 在斗的过程中,以下几点是大家都要注意的: 1,要记牌,对于一般的人只要求你记住司令和2的张数就可以了,有余力的话也记一下A,至于那些记忆力超强的人(能记住所有牌的)不做考虑(让他们来打实在是太轻松了)。2,一拿到牌就要审牌,就是看清自己的牌是什么样的结构,有哪些优点和哪些缺点,即适合打什么牌型。然后理顺出牌顺序(这个很重要的哦) 3,在打斗中要仔细留意每家出的牌型和他们都已出了什么牌(大致了解,主要是有没有出过3,出了哪几种人头牌等,记3是为了放牌服务的,有时候你发现他没出3,那就是很有可能被关住了,这个时候就可以很明智的不用去放他,为什么?。。。放不进啊!!汗~~很多时候都是自己人没放出把地主给放活了,所以要谨记!) 下面还是具体的讲讲每个角色的职责和打法吧: 先讲地主,地主的打法绝对是由自己的牌所决定的,有绝对优势的就不讲了,扔炸弹就完了,那就讲一般的。做地主要学会忍,观察,误导,欲擒故纵,巧拆炸弹等高级技术。 何为忍, 那就是不要每一次压了你的牌就仍炸弹,要看对象和自己的情况而言。一般的说你上家压你的时候你基本上是不反抗的,因为他可以直接放你牌,而你对面的则是着重防御对象。如果你上家打了什么顺子啊,大的三个啊,你就忍,你可以忍到他大牌打完了,出小牌的时候,就是你受益的时候了,不过忍也是有条件的, 第一,你家最好有首大炸弹,可以防止某人跳牌。 第二,让某个人连续出牌最多不能超过三首,一般你看着情况实在不对了就要主动炸了,除非你跟了一首牌后能稳赢(有大炸弹做保证)。忍的还有一个要义就是炸弹要用到口子上,很多时候某一家只是在骗你的炸弹的,如果他们之间互相接牌,符合某人没有连续出三首牌

斗地主技巧口决

斗地主技巧口决: . 1 . 敌人打单我打双意为不要跟对手穿同一条裤子。菜鸟常犯的错误之一就是敌人打啥我打啥。地主打个3带,自己接住以后也打个3带,极有可能把牌权又送回去了。单双连同理。 . . 2 . 打对,破顺自己有连又有对时,如果不能确定连牌是不是大,可先打对,拿到牌权后再出连牌,这样PASS的几率会高一些。 . 例:34555678KK22,678910JJAA2大。这时先打55,对方过JJ的话就无法再管你的6连,22收回牌权后就可打完。 . . 3 . 远传对子近传单如果是地主上家,自己快速打完希望渺茫,想把牌权交到同伴那去的话,最好打对子。但是不能打太小,以防地主过小对。同理,地主下家应首选打单牌传给同伴。但是应留下最小一张,以备同伴报单。

. 4 . 先死就是跑得快菜鸟常犯的错误之一。无论地主还是农民,除非有回手,或可能打报牌,否则应尽量先将手中的杂牌打掉。道理很简单,先出多牌被对方拦住无法回手的话,对方的牌整齐可直接打报牌,这时手上的杂牌就出不去了。而先把杂牌打掉,等对手牌打差不多了自己手上的牌就是大的了。 . . 5 . 情况不明对先行在不知道打什么的情况下应首先考虑打对,因为打对最容易起到拆牌和见牌的作用。当然这是建立在记牌的前提下,分析对手可能不吃对,或者自己和同伴有能力收回牌权的情况下可遵循本口诀。出牌:如果地主单牌多,就要坚决顶住,甚至不惜破开对A 或对K来压制地主,建议按 K、A、Q、2、 J的顺序顶牌。出 K是很有学问的, . END . 斗地主技巧第一层心法: . 1 . 可以试探地主有无单A和单2

. 2 . 有时候可以破开地主的对A和对2,这对后续在对子上对地主进行攻击是很有利的 . . 3 . 如果地主出A,地主下家就可以出2取得出牌权。 . 攻少—如果地主单牌比较弱或者比较少,而己方(自己与盟友)比较强,可以采取连续出单牌的战术,来打乱地主的牌型,建议不要放跑地主小于 10的单牌(大多数情况这都是成败的关键)。地主出牌建议借力打力,后发制人,在这个阶段就是要做到压下家放上家,利用上家出小牌把自己的牌走顺。 . END . 斗地主技巧第二层心法: . 1 .

四人斗地主技巧

四人斗地主技巧 斗地主大多数以一副牌至两副牌为基准,玩法多变,不亦乐乎。 A: 一种一副牌,三个人玩地主为一方,其余两家为另一方,双方对战,先出完牌的一方获胜。 B:一种则是用两副牌,四个人玩,地主为一方,其余三家为另一方,游戏规则和三个人一副牌的打法类似。 斗地主牌型一般按这样分大小:大王、小王、2 、A 、K 、Q 、J 、10 、9 、8 、7 、6 、5 、4 、3 轮流喊牌(每人限一次) 根据出牌顺序每人轮流开始喊牌,可喊“1分”、“2分”、“3分”或不喊,所叫的分数为“喊牌的底分”,分数喊的高赢的多,输的也多。叫完后叫的最大分的为地主,如果都选择不叫牌,重新发牌,然后重新开始叫牌。 一般在玩牌之前,可以商约出应有的规则 单张:可以是手中的任意一张牌(如◆ 8 ) 一对:两张牌点相同的牌,两张牌的花色可以不同(如88 ) 三同张:三张牌点相同的牌,三张牌的花色可以不同(如888 ) 三带一:三张牌点相同的牌和另外一张牌一起出。( 如888+9) 三带二:三张牌点相同的牌和另外两张牌点相同的牌一起出。( 如888+99) 四带二单:必须带两张单牌,不能带大王,小王( 如8888+79) 四带二对:必须带两个对牌,对子可以不用相连。如8888+7799) 单顺:必须 5 张或5 张以上连续的单牌,且其中不能有2 或大小王( 如45678 或10JQKA) 对顺( 连对) :必须 3 对或 3 对以上连续的对牌,且其中不能有2 或大小王( 如667788 或3344556677) 三顺(连三条):必须2 个或 2 个以上连续的三张牌,且其中不能有2 或大小王:如:333444 、555666777888 ) 三顺带一:必须2 个或2 个以上连续的三张牌,加上相同牌数的任意单牌,且任意单牌中不能含有大小王(如:444555+79 ) 三顺带对:类似三顺带一,区别是带牌必须为对牌(如:444555+77 或333444555+7799JJ ) 炸弹:四张一样牌点的牌(如8888 ) 火箭:大王跟小王一起为火箭 斗地主牌型大小的对比 第一:最大的牌是火箭,它可以大过任意的牌形或牌形组合。 第二:炸弹。炸弹是除火箭之外的任意牌形。 第三:其它的牌型都要比火箭和炸弹小。 如何判断输赢:任意一家出完牌后结束游戏,若是地主先出完牌则地主胜,否则另外两家胜。

斗地主技巧口决

斗地主技巧口决 Company number:【0089WT-8898YT-W8CCB-BUUT-202108】

斗地主技巧口决: 1 敌人打单我打双意为不要跟对手穿同一条裤子。菜鸟常犯的错误之一就是敌人打啥我打啥。地主打个3带,自己接住以后也打个3带,极有可能把牌权又送回去了。单双连同理。 2 打对,破顺自己有连又有对时,如果不能确定连牌是不是大,可先打对,拿到牌权后再出连牌,这样PASS的几率会高一些。 这时先打55,对方过JJ的话就无法再管你的6连,22收回牌权后就可打完。 3 远传对子近传单如果是地主上家,自己快速打完希望渺茫,想把牌权交到同伴那去的话,最好打对子。但是不能打太小,以防地主过小对。同理,地主下家应首选打单牌传给同伴。但是应留下最小一张,以备同伴报单。 4

先死就是跑得快菜鸟常犯的错误之一。无论地主还是农民,除非有回手,或可能打报牌,否则应尽量先将手中的杂牌打掉。道理很简单,先出多牌被对方拦住无法回手的话,对方的牌整齐可直接打报牌,这时手上的杂牌就出不去了。而先把杂牌打掉,等对手牌打差不多了自己手上的牌就是大的了。 5 情况不明对先行在不知道打什么的情况下应首先考虑打对,因为打对最容易起到拆牌和见牌的作用。当然这是建立在记牌的前提下,分析对手可能不吃对,或者自己和同伴有能力收回牌权的情况下可遵循本口诀。出牌:如果地主单牌多,就要坚决顶住,甚至不惜破开对A或对K来压制地主,建议按 K、A、Q、2、 J的顺序顶牌。出 K是很有学问的, END 斗地主技巧第一层心法: 1 可以试探地主有无单A和单2 2 有时候可以破开地主的对A和对2,这对后续在对子上对地主进行攻击是很有利的 3

QQ游戏大厅需求规格说明书

1 QQ游戏大厅需求规格说 明书 作者:○无○名○氏 2014年12月

1.概述 2 1.1 编写目的 本次word文档是基于QQ游戏大厅的基本需求制定的。本次word文档的编写为下阶段 的设计、开发提供依据,为项目组成员对需求的详尽理解,以及在开发开发过程中的协同工 作提供强有力的保证。同时本文档也作为项目评审验收的依据之一。 1.2 软件目标 本项目为游戏爱好者在工作学习之余提供娱乐平台,放松身心。 该软件能够实现所有在线玩家的正常游戏,聊天交友等功能。企业依托此软件开展综合 性的网络营销活动,推广游戏,树立品牌。 游戏是24小时永不关门的游戏平台,文字、多媒体、在线游戏等。 游戏添加:打开该款游戏软件可以随意添加游戏库内已有的游戏软件,并且再次使用 时,可以在快捷栏内直接打开。 游戏特权:该游戏软件开设会员费会员两种用户身份,会员用户可在游戏内开通,续费 会员身份,并享有非会员用户没有的游戏特权 该软件能够实现所有在线玩家的正常游戏,聊天交友等功能。企业依托此软件开展综合 性的网络营销活动,推广游戏,树立品牌。 游戏是24小时永不关门的游戏平台,文字、多媒体、在线游戏等。 游戏添加:打开该款游戏软件可以随意添加游戏库内已有的游戏软件,并且再次使用时, 可以在快捷栏内直接打开。 游戏特权:该游戏软件开设会员费会员两种用户身份,会员用户可在游戏内开通,续费 会员身份,并享有非会员用户没有的游戏特权

2需求说明 3 2.1 会员 2.1.1 会员注册 访问QQ游戏大厅册成为会员。注册方式有两种: 1、通过点击软件登录页注册]: 输入注册信息:、昵称、密码、确认密码、是必填项;昵称是显示在页面上的名称,若 此处留空,将默认以用户名作为昵称;密码与确认密码长度至少为6位,并且两个密码必须 一致。 在下面几种情况下系统会提示出错,并要求用户重新填写信息: 用户名为空或用户名不是有效的; 2、使用现有已登录QQ登录

qq游戏有哪些

qq游戏有哪些 标签Tags: 百度首页 | 百度知道 | 登录新闻网页贴吧知道 MP3 图 片视频百科文库 ,. 帮助 | 设置 if(!g_f_js){var g_f_js=true;document.write(' 百度知道 > 游戏 > 腾讯游戏 > QQ游戏添加到搜藏已解决 qq游戏有哪些悬赏分:5 - 解决时间:2009-8-13 11:24 提问者:莎拉妮娜 - 一级最佳答案 多呢!你自己下把!牌类游戏斗地主 | 欢乐斗地主 | 视频斗地主 | 斗牛 | 火拼双扣 | 干瞪眼 | 桥牌 | 双扣打滚子 | 火拼斗地主 | 四人斗地主 | 跑得快 | 锄大地 | 三打一 | 原子 | 拱猪五十K | 五人斗地主 | 红五三打一| 吃火锅 | 打大A | 升级 | 够级 | 保皇挖坑 | 淮安跑得快 | 欢乐升级 | 跑胡子 | 四冲 | 红十 | 四团 | 憋七癞子斗地主麻将类游戏火拼麻将 | 长沙麻将 | 四川麻将 | 武汉麻将 | 杭州麻将 | 广东麻将 | QQ麻将上海麻将 | 陕西麻将 | 欢乐麻将 | 二人麻将(我要自摸) 休闲竞技类火拼泡泡龙 | 火拼俄罗斯 | 连连看 | 对对碰 | 零用钱大作战 | 新QQ桌球 | QQ龙珠大家来找茬 | 欢乐嘉年华 | 拼拼看 | 挖金子 | QQ游戏家园 | 桌Q(2D桌球) 美女找茬 | 火拼QQ堂 | QQ秀聊天室棋类游戏四国军旗 | 中国象棋 | 新中国象棋 | 飞行棋 | QQ跳棋国际象棋 | 五子棋 | 围棋手机游戏斗地主 | 升级 | 麻将 | 中国象棋 | 五子棋 | 拱猪 | 锄大地 参考资料:https://www.doczj.com/doc/c22343416.html,/download.html 80 回答者: 460514939 - 二级 2009-8-13 10:59 我来评论>> 相关内容? QQ游戏中哪些是用欢乐豆的 1 2010-5-24 ? 手机qq 游戏有哪些 2010-5-19 ? 就目前为止可以登陆就可以点亮的QQ游戏有哪 些 2010-3-28 ? qq游戏中哪些是可以用欢乐豆来玩的?? 2010-3-3 ? 在qq 游戏中哪些图标亮之后还会灭? 2010-2-7 更多相关问题>> 查看同主题问题:游戏其他回答共 1 条 你玩过的 qq游戏都有没有的也总会有的 回答者:随星♂所欲 - 四级 2009-8-13 11:19 我来转发分享到i贴吧

相关主题
文本预览
相关文档 最新文档