C#或ASP.net如何写"判断自己手上的麻麻将的碰、杠、吃"算法?

作者&投稿:苍梧货 (若有异议请与网页底部的电邮联系)
麻将,我已经知道吃碰杠了,但是不理解它们的作用,于是乱吃乱喝,最~

吃:上家打出的牌可以与自己的牌组合成顺子,可以选择吃。但和时的吃可以是任何一家而不限于上家。
8、碰:他家打出的牌与自己手中对子相同时,可以选择碰,称为真碰;用一张财神替代一张大料或座风的碰称为花碰。如有真碰,则真碰优先,若两家要花碰,则从打此牌这家算起,按逆时针方向先轮到者优先。
9、杠:杠分明杠和暗杠。自家有暗刻,他家打出这张牌,此时开杠,称明杠;自家摸到已碰出的牌而开杠,也是明杠。自家有相同的四张牌而开杠称暗杠。
10、吊头:所和的牌是构成对子的其中一张。
11、抢杠当自摸:当有一家杠碰出的牌时,自家刚好要和这张牌,这叫抢杠当自摸,和数按自摸算。
12、对对胡:由碰、暗刻、杠组成的和牌类型,即下列的和牌类型⑤。
13、凑一台:和牌时除风牌、大料外,其余牌同一花色,算一台,称“凑一台”。
14、清三台:和牌时只有万、筒、条其中一种类型的牌,算三台,称“清三台。”
15、清四台:同时符合上述12和14所述的,称“清四台。”
16、杠开:开杠时摸牌而和。
17、荒和:抓完所有牌仍没有一家和牌。
18、边张:自家有一二或八九,自摸或者吃三及七,此时的三或七称边张。
19、嵌张:顺子中的中间一张。
三、行牌规则
1、第一盘由任意一家掷骰子,由这一家开始逆时针数掷出的骰子点数和即为庄家。从第二盘开始和牌者为庄家。荒和,则由前一盘庄家继续当庄家。
2、庄家掷出骰子后,从庄家开始逆时针数掷出的骰子总点数,即从那家按顺时针方向数出骰子总点数的墩数,开始拿牌。
3、各家拿完跳牌的下一张牌为确定财神之牌,财神为所翻之牌点加一,共4张。如翻一万,则财神为二万;翻九万,则财神为一万。其他花色类推。若翻风牌,则按“东南西北东”的顺序确定,若翻大料牌,则按“中发白中”的顺序确定。
4、杠牌时,从牌墙的末端依次抓牌。
5、优先原则,和优先于碰(杠)和吃,碰(杠)优先于吃;真碰优先于花碰;如一张牌有两家以上要和,此时按逆时针方向最接近冲家的优先。
6、不限制从一家吃或碰的张数,也没有承包关系。
7、和牌类型,包括以下5种:
①123/123/123/123/11
②123/123/123/111/11
③123/123/111/111/11
④123/111/111/111/11
⑤111/111/111/111/11,111可以是1111,上同。
8、和牌条件,自摸100和及以上或放冲200和及以上。
9、每盘牌只有一个和家,即不存在一炮多响。
四、和数算法
(一)基本和数
1、数字为二到八的牌,碰2和,暗刻4和,明杠8和,暗杠16和。
2、风牌、大料及数字为一、九的牌,碰4和,暗刻8和,明杠16和,暗杠32和。
3、大料及座风对子2和。
4、自摸和牌时的特殊算法:数字为二到八的牌,暗刻6和,称为“自摸六”,吊头4和,称为“自摸四”;风牌、大料及数字为一九的牌,暗刻10和,称为“自摸十”,吊头6和,也称“自摸六”;边张、嵌张4和,也称“自摸四”。
5、放冲和牌时的特殊算法:吊头二到八的牌,2和;其余4和;边张、嵌张2和。
以上和数相加即为基本和数。
(二)底和
和牌时底和统一为10胡。
(三)台数算法
1、大料及座风碰、暗刻、杠各计一台。
2、对对胡计一台。
3、凑一台计一台。
4、杠开计一台。
5、清三台计三台。
6、清四台计四台。
以上台数相加即为总台数。
(四)和牌和数
和牌和数等于基本和数加底和再乘以2的总台数次方(取整十数)。即若算出的和数个位数不是零,则十位数进一,使其变为10的倍数。如算出的和数为122,就按130计,依此类推。
(五)和牌和数的特殊规定
符合上述和牌类型①,且和的牌不是吊头、边张、嵌张,称“平和”,算30胡;符合此条件,且为清三台,称“清三台平和”,则算240和。

你的sql命信字符串是"select"

而ExecuteNonQuery();这个返回的行数如果执行select类型的串,永远是0

ExecuteNonQuery();只能返回update啦,delete啦这类的改变数据库的语句,

所以,你比较是否有用户时,应该用datareader

string sql = "select * from U.T_YUANGONG where LOGINNAME = '"+loginName+"'and PWORD='"+pass+"'";
conn.Open();
OracleCommand cmd = new OracleCommand(sql, conn);
OracleDataReader myrd = cmd.ExcuteReader();
if(myrd.Read())
{
myrd.close();
Response.Redirect("~/mian.htm");
}
else
{
myrd.close();
Response.Write("登录失败!");
}

当然用exscraler,这个怎么写的我有点忘了,这个也可以的

基本的原理:将所有的牌都做程序性编码,如果这些编码组合符合条件,即成立。例如:345万编码成3W 4W 5W 当有3W 4W 时可以将上家编码出的 5W吃,当有2个3W时,可以将任意(非自身)编码所出的 3W 碰,具体的语言不同,程序就不同,有些写起来就很简单,但基本方法不太有变化。(不要忘了给4个方向也编码,同时可以将摸到的牌进行编码,可以省些行数)

接上面,采用随机+次数限制来确定下一张被摸取的牌,要比开始就将所有的牌编码更简单(就是下一张根据已经出现的次数,随机的出现具体的牌,不同于开始所有的牌都是固定的位置,后者在程序写成后容易产生破解性作弊,并且程序本身复杂一点)


莲湖区19657785385: 关于ASP.NET用C#语言编写程序,如何编写?
汉新雅施: 就是把C#语言的编写放在.NET平台上.

莲湖区19657785385: C# ASP.NET SQL语句怎么写? -
汉新雅施: select A.姓名,A.学号,B.成绩 from 表1 as A left join 表2 as B on A.ID=B.ID 执行上面的查询得到一个datatable 为dt this.gridview1.datasource=dt 就行了

莲湖区19657785385: C#中编写asp.net代码 -
汉新雅施: onmousedown里面的是js函数吧 在页面上放一个Button <asp:Button runat="server" ID="Button1" OnClick="Btn_Click" style="display:none" /> 然后写: <script type="text/javascript"> function OnMouseEvents() { document....

莲湖区19657785385: 企业客户管理系统ASP.net C#公共类实现 应该怎么写? -
汉新雅施: 这个类包装了对数据库的普通操作,写这个类的主要目的我猜是为了转接不同类型的数据库容易一点,比如在Access,MS SQL和Oracle之间切换.而且代码非常潦草,像是草稿或是写了一半没有完成.类中几个方法实现的功能public static ...

莲湖区19657785385: c#开发和asp.net开发 -
汉新雅施: ASP.net是基于通用语言的编译运行的程序,所以它的强大性和适应性,可以使它运行在Web应用软件开发者的几乎全部的平台上.通用语言的基本库,消息机制,数据接口的处理都能无缝的整合到ASP.net的Web应用中.ASP.net同时也是...

莲湖区19657785385: 基于C#语言的asp.net的年月日代码怎么写啊? -
汉新雅施: //汗,这还不叫详细啊?这里面是两组(每组5个DropDownList)来确定用户选//择的时间段.try { //初始化日期的日部分为当日 for (int i = 0; i < 32; i++) { // if (int.Parse(DateTime.Today.Day.ToString()) == i) { DropDownList4.SelectedIndex = i - 1; ...

莲湖区19657785385: C# 怎么使用visual Studio 编写程序 -
汉新雅施: 那你这就是不会使用vs,上网找教程是最好的 我可以告诉你最基础的 打开vs,左上,文件 - 新建 然后选择你想要建立的项目,windows还是web 我一般是选windows form应用程序,asp.net web应用程序 创建之后左边,或者右边的工具栏里,就会显示你的工作文件夹及所有文件 之后就是在cs文件里写代码,运行是f5,f9是加断点debug再详细就看教程吧

莲湖区19657785385: 如何使用C#写.net编译器 -
汉新雅施: 理论上是可行的,但有几个问题:1. 词法和语法分析器要自己写,不像c/c++有yacc和lex工具,很麻烦2. 需要注意的是,.net并不是一个编译器,而是一个运行字节码(或说中间代码)的虚拟机再加一堆库,你的说法本身就有问题3. 若要生成目标代码,需要大量汇编知识,目标代码的选择还要取决于你选择的平台4. C#的语法灵活度很高,而且汇集了各种最新的编译技术,光凭一己之力很难完成5. 最后,你所选择的C#效率肯定要比c/c++等语言低,写出来的编译器肯定也效率不高 可以借鉴mono的codeparser项目,记得那个貌似是用c#写的

莲湖区19657785385: asp.net C#怎么写翻页类?
汉新雅施: sqlserver的? 可以写存储过程 写类 传入 pagesize(页面大小) pageindex(页索引) ,再加一个输出参数sum(数据中条数) create proc page @pageindex int, @pagesize int, @sum int output as select top(@pagesieze) from table where id not...

莲湖区19657785385: asp.net 与c#
汉新雅施: C#只是一门语言,与C一样,而asp.net是.NET的分支技术,也是当前,.NET应用最广的技术,你想学网站肯定得涉及前台与后台的数据库,前台的界面之类的,你肯定要用asp.net,而asp.net最常用的语言就是C#,至于数据库,你可以选择MS...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网