[发明专利]一种用于桥牌计算机博弈的叫牌数据库构建方法在审
申请号: | 201611034072.3 | 申请日: | 2016-11-23 |
公开(公告)号: | CN106776758A | 公开(公告)日: | 2017-05-31 |
发明(设计)人: | 段琢华 | 申请(专利权)人: | 电子科技大学中山学院 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 528400 *** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 一种用于桥牌计算机博弈的叫牌数据库构建方法,用于桥牌计算机博弈初始阶段叫牌。首先设计关系型叫牌数据库表结构并建立可以扩展的叫牌数据库。其次公布了一种基于叫牌数据库的精确匹配叫牌方法,该方法根据叫牌信息和本人的牌型及点力从叫牌数据库中搜索合适的叫品。在没有找到匹配的叫品时,系统通过人机交互的方式输入人类专家的叫品并根据人类专家的叫品扩展叫牌数据库。 | ||
搜索关键词: | 一种 用于 桥牌 计算机 博弈 叫牌 数据库 构建 方法 | ||
【主权项】:
一种用于桥牌计算机博弈的叫牌数据库构建方法,用于桥牌计算机博弈初始阶段叫牌;首先设计关系型叫牌数据库表结构并建立可以扩展的叫牌数据库,叫牌数据库表中除内置了标准的自然叫牌体系和精确叫牌体系外,还可以扩展到任意一种叫牌体系;其次公布了一种基于叫牌数据库的精确匹配叫牌方法,该方法根据叫牌信息和本人的牌型及点力从叫牌数据库中搜索合适的叫品;在没有找到匹配的叫品时,系统通过人机交互的方式输入人类专家的叫品并根据人类专家的叫品扩展叫牌数据库;(1)关系型叫牌数据库表结构如表1:表1 叫牌数据库bidsystem其中,“C”表示草花,“D”表示方块,“H”表示红心,“S”表示黑桃,“NT”表示无将;注1:“ZR”表示自然叫牌体系,“JQ”表示精确叫牌体系,此外,还可以定义其它叫牌体系;注2:Bid 、POpenBid 、PResponseBid 、POpenBid2、OppBid 、PCompetiveBid 等字段的取值范围为集合{0, 11, 12, 13, 14, 15, 21, 22, 23, 24, 25, 31, 32, 33, 34, 35, 41, 42, 43, 44, 45, 51, 52, 53, 54, 55, 61, 62, 63, 64, 65, 71, 72, 73, 74, 75, 80, 90},其中0表示“Pass”,80表示“Double”,90表示“ReDouble”,11表示“1C”,12表示“1D”,13表示“1H”,14表示“1S”,15表示“1NT”,21表示“2C”,22表示“2D”,23表示“2H”,24表示“2S”,25表示“2NT”,31表示“3C”,32表示“3D”,33表示“3H”,34表示“3S”,35表示“3NT”,41表示“4C”,42表示“4D”,43表示“4H”,44表示“4S”,45表示“4NT”,51表示“5C”,52表示“5D”,53表示“5H”,54表示“5S”,55表示“5NT”,61表示“6C”,62表示“6D”,63表示“6H”,64表示“6S”,65表示“6NT”,71表示“7C”,72表示“7D”,73表示“7H”,74表示“7S”,75表示“7NT”;注3:1表示“开叫”,2表示“应叫”,3表示“开叫方再叫”,4表示“争叫”,5表示“应叫方再叫”,6表示“争叫应叫”;注4:当BidType=2时,该字段表示同伴开叫叫品;当BidType=3时,该字段表示本人开叫的叫品;注5:当BidType=3时,该字段表示同伴应叫叫品;当BidType=5时,该字段表示本人应叫叫品;注6:当BidType=5时,该字段表示开叫方再叫的叫品;注7:当BidType=4时,该字段表示对方不是Pass的最新叫品;注8:当BidType=6时,该字段表示同伴争叫叫品;注9:当两种及以上叫品都满足条件时,选择优先级大的叫品;注10: 0表示不确定;注11:0表示没有限制,1表示方块张数小于草花张数,2表示方块张数大于或者等于草花张数;注12:0表示没有限制,1表示黑桃张数小于红心张数,2表示黑桃张数大于或者等于红心张数;(2)叫牌数据库精确匹配及动态扩展方法:输入:OurSystem表示我方叫牌体系,OppSystem表示对方叫牌体系, MyCard表示本人的牌的集合,HistoryBid表示历史叫品队列,HumanBid表示人类专家叫品;输出:MyBid表示本人即将开出的叫品;步骤1、初始化:根据MyCard计算本人的大牌点力pt、草花张数club、方块张数diamond、红心张数heart、黑桃张数spade;如果diamond>=club,则dvc设置为2;如果diamond<club,则dvc设置为1;如果spade>=heart,则svh设置为2;如果spade<heart,则svh设置为1;设HistoryBidND为HistoryBid队列中小于80的元素集合,设置maxbid为集合HistoryBidND中元素的最大值;步骤2、根据HistoryBid确定叫牌类型BidType;步骤3、叫牌数据库精确比配:如果BidType=1,转步骤3.1;如果BidType=2,转步骤3.2;BidType=3,转步骤3.3;BidType=4,转步骤3.4;BidType=5,转步骤3.5;BidType=6,转步骤3.6;如果BidType的值不在集合{1,2,3,4,5,6}中,则转步骤3.7;步骤3.1、根据以下语句生成SQL查询语句searchstr:sprintf_s(searchstr,sizeof(searchstr),select * from bidsystem where system=’%s’ and BidType=1 and %d*PMin>=PMin*PMin and %d*PMax<=PMax*PMax and %d*CMin>=CMin*CMin and %d*CMax<=CMax*CMax and %d*DMin>=DMin*DMin and %d*DMax<=DMax*DMax and %d*HMin>=HMin*HMin and %d*HMax<=HMax*HMax and %d*SMin>=SMin*SMin and %d*SMax<=SMax*SMax and %d*DvsC=DvsC*DvsC and %d*SvsH=SvsH*SvsH order by Priority desc,OurSystem,pt,pt,club,club,diamond,diamond,heart,heart,spade,spade,dvc,svh);根据searchstr表示的SQL语句对叫牌数据库bidsystem进行查询;如果存在满足条件的记录,则将MyBid的值设置为第一条记录的Bid字段值并返回;如果没有满足条件的记录,则转步骤4;步骤3.2、从HistoryBid中获得同伴开叫叫品bid1,根据以下语句生成SQL查询语句searchstr:sprintf_s(searchstr,sizeof(searchstr),select * from bidsystem where system=’%s’ and BidType=2 and POpenBid='%s' and %d*PMin>=PMin*PMin and %d*PMax<=PMax*PMax and %d*CMin>=CMin*CMin and %d*CMax<=CMax*CMax and %d*DMin>=DMin*DMin and %d*DMax<=DMax*DMax and %d*HMin>=HMin*HMin and %d*HMax<=HMax*HMax and %d*SMin>=SMin*SMin and %d*SMax<=SMax*SMax and %d*DvsC=DvsC*DvsC and %d*SvsH=SvsH*SvsH order by Priority desc, OurSystem , bid1,pt,pt,club,club,diamond,diamond,heart,heart,spade,spade,dvc,svh);根据searchstr表示的SQL语句对叫牌数据库bidsystem进行查询;如果没有满足条件的记录,则转步骤4;如果存在满足条件的记录,则将bid设置为第一条记录的Bid字段值;如果bid<=maxbid,则设置Mybid为0并返回;如果bid>maxbid,则设置Mybid的值为bid并返回;步骤3.3、从HistoryBid中获得本人开叫叫品bid2和同伴应叫叫品bid3,根据以下语句生成SQL查询语句searchstr:sprintf_s(searchstr,sizeof(searchstr),select * from bidsystem where system=’%s’ and BidType=3 and POpenBid=%d and PResponseBid=%d and %d*PMin>=PMin*PMin and %d*PMax<=PMax*PMax and %d*CMin>=CMin*CMin and %d*CMax<=CMax*CMax and %d*DMin>=DMin*DMin and %d*DMax<=DMax*DMax and %d*HMin>=HMin*HMin and %d*HMax<=HMax*HMax and %d*SMin>=SMin*SMin and %d*SMax<=SMax*SMax and %d*DvsC=DvsC*DvsC and %d*SvsH=SvsH*SvsH order by Priority desc, OurSystem ,bid2,bid3,pt,pt,club,club,diamond,diamond,heart,heart,spade,spade,dvc,svh);根据searchstr表示的SQL语句对叫牌数据库bidsystem进行查询;如果没有满足条件的记录,则转步骤4;如果存在满足条件的记录,则将bid设置为第一条记录的Bid字段值;如果bid<=maxbid,则设置Mybid为0并返回;如果bid>maxbid,则设置Mybid的值为bid并返回;步骤3.4、从HistoryBid中获得对方最新的非Pass叫品bid4,根据以下语句生成SQL查询语句searchstr:sprintf_s(searchstr,sizeof(searchstr),select * from bidsystem where system='%s' and BidType=4 and OppBid=%d and %d*PMin>=PMin*PMin and %d*PMax<=PMax*PMax and %d*CMin>=CMin*CMin and %d*CMax<=CMax*CMax and %d*DMin>=DMin*DMin and %d*DMax<=DMax*DMax and %d*HMin>=HMin*HMin and %d*HMax<=HMax*HMax and %d*SMin>=SMin*SMin and %d*SMax<=SMax*SMax and %d*DvsC=DvsC*DvsC and %d*SvsH=SvsH*SvsH order by Priority desc, OurSystem ,bid4,pt,pt,club,club,diamond,diamond,heart,heart,spade,spade,dvc,svh);根据searchstr表示的SQL语句对叫牌数据库bidsystem进行查询;如果存在满足条件的记录,则将MyBid的值设置为第一条记录的Bid字段值并返回;如果没有满足条件的记录,则转步骤4;步骤3.5、从HistoryBid中获得同伴开叫叫品bid1、本人应叫叫牌bid5、开叫方再叫叫品bid6,根据以下语句生成SQL查询语句searchstr:sprintf_s(searchstr,sizeof(searchstr),select * from bidsystem where system='%s' and BidType=5 and POpenBid=%d and PResponseBid=%d and POpenBid2=%d and %d*PMin>=PMin*PMin and %d*PMax<=PMax*PMax and %d*CMin>=CMin*CMin and %d*CMax<=CMax*CMax and %d*DMin>=DMin*DMin and %d*DMax<=DMax*DMax and %d*HMin>=HMin*HMin and %d*HMax<=HMax*HMax and %d*SMin>=SMin*SMin and %d*SMax<=SMax*SMax and %d*DvsC=DvsC*DvsC and %d*SvsH=SvsH*SvsH order by Priority desc,OurSystem, bid1, bid5, bid6, pt, pt, club, club, diamond, diamond, heart, heart, spade, spade,dvc,svh);根据searchstr表示的SQL语句对叫牌数据库bidsystem进行查询;如果没有满足条件的记录,则转步骤4;如果存在满足条件的记录,则将bid设置为第一条记录的Bid字段值;如果bid<=maxbid,则设置Mybid为0并返回;如果bid>maxbid,则设置Mybid的值为bid并返回;步骤3.6、从HistoryBid中获得同伴争叫叫品bid7,根据以下语句生成SQL查询语句searchstr:sprintf_s(searchstr,sizeof(searchstr),select * from bidsystem where system='%s' and BidType=6 and PCompetiveBid=%d and %d*PMin>=PMin*PMin and %d*PMax<=PMax*PMax and %d*CMin>=CMin*CMin and %d*CMax<=CMax*CMax and %d*DMin>=DMin*DMin and %d*DMax<=DMax*DMax and %d*HMin>=HMin*HMin and %d*HMax<=HMax*HMax and %d*SMin>=SMin*SMin and %d*SMax<=SMax*SMax and %d*DvsC=DvsC*DvsC and %d*SvsH=SvsH*SvsH order by Priority desc, OurSystem, bid7,pt,pt,club,club,diamond,diamond,heart,heart,spade,spade,dvc,svh);根据searchstr表示的SQL语句对叫牌数据库bidsystem进行查询;如果没有满足条件的记录,则转步骤4;如果存在满足条件的记录,则将bid设置为第一条记录的Bid字段值;如果bid<=maxbid,则设置Mybid为0并返回;如果bid>maxbid,则设置Mybid的值为bid并返回;步骤3.7、设置Mybid的值为HumanBid并返回;步骤4、叫牌数据库动态扩展:如果BidType=1,转步骤4.1;如果BidType=2,转步骤4.2;BidType=3,转步骤4.3;BidType=4,转步骤4.4;BidType=5,转步骤4.5;BidType=6,转步骤4.6;步骤4.1、根据以下语句生成SQL语句insertstr:sprintf_s(insertstr,sizeof(insertstr), INSERT INTO bidsystem (system, BidType, PMin, PMax, CMin, CMax, DMin, DMax, HMin, HMax, SMin, SMax, DvsC, SvsH, Bid) VALUES (’%s’, 1, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, 0, 0, HumanBid), OurSystem, pt,pt,club,club,diamond,diamond,heart,heart,spade,spade);根据insertstr表示的SQL语句对叫牌数据库bidsystem进行更新,设置Mybid的值为HumanBid并返回;步骤4.2、根据以下语句生成SQL语句insertstr:sprintf_s(insertstr,sizeof(insertstr), INSERT INTO bidsystem (system, BidType, POpenBid, PMin, PMax, CMin, CMax, DMin, DMax, HMin, HMax, SMin, SMax, DvsC, SvsH, Bid) VALUES (’%s’, 2, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, 0, 0, HumanBid), OurSystem, bid1,pt,pt,club,club,diamond,diamond,heart,heart,spade,spade);根据insertstr表示的SQL语句对叫牌数据库bidsystem进行更新,设置Mybid的值为HumanBid并返回;步骤4.3、根据以下语句生成SQL语句insertstr:sprintf_s(insertstr,sizeof(insertstr), INSERT INTO bidsystem (system, BidType, POpenBid, PResponseBid, PMin, PMax, CMin, CMax, DMin, DMax, HMin, HMax, SMin, SMax, DvsC, SvsH, Bid) VALUES (’%s’, 3, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, 0, 0, HumanBid), OurSystem, bid2, bid3,pt,pt,club,club,diamond,diamond,heart,heart,spade,spade);根据insertstr表示的SQL语句对叫牌数据库bidsystem进行更新,设置Mybid的值为HumanBid并返回;步骤4.4、根据以下语句生成SQL语句insertstr:sprintf_s(insertstr,sizeof(insertstr), INSERT INTO bidsystem (system, BidType, OppBid, PMin, PMax, CMin, CMax, DMin, DMax, HMin, HMax, SMin, SMax, DvsC, SvsH, Bid) VALUES (’%s’, 4, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, 0, 0, HumanBid), OurSystem, bid4,pt,pt,club,club,diamond,diamond,heart,heart,spade,spade);根据insertstr表示的SQL语句对叫牌数据库bidsystem进行更新,设置Mybid的值为HumanBid并返回;步骤4.5、根据以下语句生成SQL语句insertstr:sprintf_s(insertstr,sizeof(insertstr), INSERT INTO bidsystem (system, BidType, POpenBid, PResponseBid, POpenBid2,PMin, PMax, CMin, CMax, DMin, DMax, HMin, HMax, SMin, SMax, DvsC, SvsH, Bid) VALUES (’%s’, 5, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, 0, 0, HumanBid), OurSystem, bid1, bid5, bid6, pt, pt, club, club, diamond, diamond, heart, heart, spade, spade);根据insertstr表示的SQL语句对叫牌数据库bidsystem进行更新,设置Mybid的值为HumanBid并返回;步骤4.6、根据以下语句生成SQL语句insertstr:sprintf_s(insertstr,sizeof(insertstr), INSERT INTO bidsystem (system, BidType, PCompetiveBid, PMin, PMax, CMin, CMax, DMin, DMax, HMin, HMax, SMin, SMax, DvsC, SvsH, Bid) VALUES (’%s’, 6, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, 0, 0, HumanBid), OurSystem, bid7,pt,pt,club,club,diamond,diamond,heart,heart,spade,spade);根据insertstr表示的SQL语句对叫牌数据库bidsystem进行更新,设置Mybid的值为HumanBid并返回。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学中山学院,未经电子科技大学中山学院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201611034072.3/,转载请声明来源钻瓜专利网。