javascript实现地主游戏的思想

javascript实现地主游戏的思想
这篇文章要与大家分享,用js写的一个斗地主的想法,代码不好,也请见谅。

这是地主们的主要功能:洗牌、发牌、打牌、玩扑克牌、验证牌的规则、判断赢与输、实现这些主要功能。接下来,我将讨论几个函数的实现。
1。洗牌:

VaR呕吐= this.manage.pukes; / /阵列存储卡
洗牌
对于(var i =;i < pukes.length;i++){
var tmp =呕吐{我};
VaR指标= util.random(我呕吐。长度); / /随机交换两卡
呕吐{我} = { }呕吐指数;
呕吐{指数} = TMP;
}
2。许可(短版是他们的房东,玩家默认计算机的农民,因为前面已经改组)王牌序列,所以许可只是放在呕吐物元素循环添加到每个玩家的实例呕吐物场。

许可证
var启动=;
对于(var i =;i < this.manage.pukes.length-;i++){
如果(开始= =。管理。播放器。长度){
开始=;
}
这个管理。呕吐{我}状态=真;
这个管理。玩家{开始}。pukeslen + +;
这个管理。玩家{开始} + +。pukes.push(本。管理。呕吐{我});
}
对于(var i = this.manage.pukes.length-;i < this.manage.pukes.length;i++){
三张/张
这个管理。呕吐{我}状态=真;
这个管理。玩家{。管理。curplayerindex }。pukeslen + +;
这个管理。玩家{。管理。curplayerindex }。pukes.push(本。管理。呕吐{我});
}
三.玩家出牌后,玩家出牌分为电脑和玩家自己的两个步骤,电脑出的牌是非常愚蠢的出牌方式(有一张牌出来):
如果(这个选项。playerindex = =这。管理。curplayerindex){
var SPKS = {},GZ = false;
如果(this.manage.curmaxplayerindex = =这个选项。playerindex){
this.manage.deskpukes = { };
}
如果(这属于计算){
计算机自动卡
var启动=;
VaR len =本。管理。deskpukes长度| |;
而(启动<<本。呕吐。长度){
SPKS = { };
对于(var i =,=开始;我lenj < < this.pukes.length;i++){
选择一张卡就行了。
如果(这家伙{ }。J。状态){
Spks.push(这个家伙{ J++ });
}
}
如果(SPKS。长度){
如果(rules.valids(SPKS,这个管理。deskpukes)){
真的;
打破;
}
}
开始+ +;
}
}
{其他
选择纸牌/游戏玩家
对于(var i =;i < this.pukes.length;i++){
如果(这。呕吐{我}。选择这个。呕吐{我},{状态)
Spks.push(这个家伙{我});
}
}
如果(rules.valids(SPKS,这个管理。deskpukes)){
真的;
}
别的{
警告牌不符合规则!;
}
}
如果(广州){
这curmaxplayerindex = this.options.playerindex。管理;
this.manage.deskpukes = { };
对于(var i =;i < spks.length;i++){
this.pukeslen--;
This.manage.deskPukes.push(SPKS {我});
SPKS {我}。状态=假;
}
}
This.manage.renderPukes();
this.manage.rendercurdiscard();
如果(这属于计算| | GZ){
This.manage.nextPlayer();
}
}
别的{
警惕(不是轮到你)!;
}
4。投标规则的验证是,许多功能被合并,然后调用,如果他们回到真实的,他们是不规则的:

下面的/许可证规则
var规则= {
_rules:{
新的danzrule(),
新的duirule(),
新的sandrule(),
新的zandrule(),
新的shunzrule(),
新的liandrule()
},
Valids:功能(_pukes,_curpukes){
对于(var i =;<这我。_rules.length;i++){
如果(这。_rules {我}。有效(_pukes,_curpukes)){
返回true;
}
}
返回false;
}
};
功能danzrule(){
单一规则
}
DanzRule。原型。有效期=功能(_pukes,_curpukes){
检查
VaR呕吐= _pukes; / /游戏卡
无功curpukes = _curpukes; / /左手
如果(pukespukes。长度= =){
品牌价值/比较
如果(!curpukes | |!CurPukes。长){
返回true;
}
如果(curpukes { }。印度人= =呕吐{ }。印度人<){
特殊处理
返回false;
}
如果(呕吐{ }。印度人= = curpukes { }。印度人<){
特殊处理
返回true;
}
返回呕吐{ }。印度人> curpukes {}。印度人;
}
返回false;
}
功能duirule(_pukes,_curpukes){
两张/张规则
}
DuiRule。原型。有效期=功能(_pukes,_curpukes){
检查
VaR呕吐= _pukes; / /游戏卡
无功curpukes = _curpukes; / /左手
如果(pukespukes。长度= =){
品牌价值/比较
如果(呕吐{ } { }。印度人>呕吐。印度人>){
返回true;
}
如果(呕吐{ }。印度人!=呕吐{ } {印第安人)。
返回false;
}
如果(!curpukes | |!CurPukes。长){
返回true;
{ }人
如果(curpukes.length!=){
返回false;
}
如果(curpukes { }。印度人> curpukes {}。印度人>){
返回false;
}
如果(curpukes { }。印度人!= curpukes { } {印第安人)。
返回false;
}
(curpukes { }。印度人= =如果){
返回false;
}
}
如果(呕吐{ }。印度人= =){
返回true;
}
返回呕吐{ }。印度人> curpukes {}。印度人;
}
返回false;
}
功能sandrule(){

}
SandRule。原型。有效期=功能(_pukes,_curpukes){
检查
VaR呕吐= _pukes; / /游戏卡
无功curpukes = _curpukes; / /左手
如果(呕吐(呕吐。长度> =)){
品牌价值/比较
VAR的书= getbooks(呕吐);
如果(!有效(书籍))返回false;
如果(!curpukes | |!CurPukes长度)返回true;
如果(curpukes.length!=书籍。长度)返回false;
VAR的书= getbooks(curpukes);
如果(!有效(书籍))返回false;
返回getsum(书)> getsum(书);
}
返回false;
功能getsum(书){
var和;
对于(var i =;i < books.length;i++){
如果(图书{我} =){
如果(i =)返回;
总和= i;
}
}
收起回复;
}
函数有效(图书){
三具有验证的有效性
VaR计算countsd =,=,a真的开始=假,指数=—;
对于(var i =;i < books.length;i++){
如果(startbooks {我} = =指数!=(i)){
返回false;
其他{ }
startIndex =我;
}
如果(图书{我} =){
如果(!开始){
启动=真;
startIndex =我;
}
计数+;
}
如果(图书{我} =){
d =假;
}
}
对于(var i =;i < books.length;i++){
如果(dbooks {我} = =){
countsd + +;
}
否则如果(!我dbooks { } = =){
countsd + +;
}
}
返回计数>数= = countsd;
}
功能getbooks(呕吐){
返回三个点的数字。
var图书{ };
对于(var i =;i < pukes.length;i++){
如果(!书{吐{我}。印度人}){
书{吐{我}。印度人} =;
其他{ }
书{吐{我}。印度人} + +;
}
}
还书;
}
}
功能zandrule(){
炸弹
}
zandrule。原型。有效期=功能(_pukes,_curpukes){
VaR呕吐= _pukes; / /游戏卡
无功curpukes = _curpukes; / /左手
如果(pukespukes。长度= =){
如果(!AllEqual(呕吐)){
返回false;
}
如果(!curpukes | |(curpukes长度> curpukes.length!| | =)!AllEqual(curpukes)){
返回true;
}
别的{
如果(呕吐{ }。印度人= =){
返回true;
}
如果(curpukes { }。印度人= =){
返回false;
}
返回呕吐{ }。印度人> curpukes {}。印度人;
}
}
返回false;
功能allequal(呕吐){
如果(!呕吐| |!呕吐。长度)返回false;
VAR方法=呕吐{ }。印度人;
对于(var i =;i < pukes.length;i++){
如果(基地)!=呕吐{我} {印第安人)。
返回false;
}
}
返回true;
}
}
功能liandrule(){
即使在/
}
LiandRule。原型。有效期=功能(_pukes,_curpukes){
VaR呕吐= _pukes; / /游戏卡
无功curpukes = _curpukes; / /左手
如果(pukespukes。长度> =){
如果(!VerificationCoherence(呕吐)){
返回false;
}
如果(!curpukes | | curpukes。长度<=){
返回true;
}
如果(!VerificationCoherence(curpukes)){
返回false;
}
如果(pukes.length!= curpukes。长度){
返回false;
}
返回getsumdians(呕吐)> getsumdians(curpukes);
}
返回false;
功能getsumdians(呕吐){
var和;
对于(var i =;i < pukes.length;i++){
总和+ =呕吐{我}。印度人;
}
收起回复;
}
功能verificationcoherence(呕吐){
验证/一致性
如果(!呕吐| |!呕吐。长度)返回false;
var图书{ };
对于(var i =;i < pukes.length;i++){
如果(呕吐{我}。印度人= = | |呕吐{我}。印度人>){
返回false;
}
如果(!书{吐{我}。印度人}){
书{吐{我}。印度人} =;
其他{ }
书{吐{我}。印度人} + +;
}
如果(书{吐{我}。印度人} >){
返回false;
}
}
var启动= false;
对于(var i =;i < books.length;i++){
如果(书){书}我}!=){
返回false;
}
如果(图书{我= =)!开始){
启动=真;
}
如果(startbooks {我}!=){
返回false;
}
}
返回true;
}
}
功能shunzrule(){
/顺子
}
ShunzRule。原型。有效期=功能(_pukes,_curpukes){
VaR呕吐= _pukes; / /游戏卡
无功curpukes = _curpukes; / /左手
如果(pukespukes。长度> =){
如果(!VerificationCoherence(呕吐)){
返回false;
}
如果(!curpukes | | curpukes。长度<=){
返回true;
}
如果(!VerificationCoherence(curpukes)){
返回false;
}
如果(pukes.length!= curpukes。长度){
返回false;
}
返回getsumdians(呕吐)> getsumdians(curpukes);
}
返回false;
功能getsumdians(呕吐){
var和;
对于(var i =;i < pukes.length;i++){
总和+ =呕吐{我}。印度人;
}
收起回复;
}
功能verificationcoherence(呕吐){
验证/一致性
如果(!呕吐| |!呕吐。长度)返回false;
var图书{ };
对于(var i =;i < pukes.length;i++){
如果(呕吐{我}。印度人= = | |呕吐{我}。印度人>){
返回false;
}
如果(!书{吐{我}。印度人}){
书{吐{我}。印度人} =;
其他{ }
返回false;
}
}
var启动= false;
对于(var i =;i < books.length;i++){
如果(图书{我= =)!开始){
启动=真;
}
如果(开始)!图书{ }){
返回false;
}
}
返回true;
}
}
以上4个步骤是我认为的4个主要功能。其他功能,如初始化、事件注册等,已经注释过,在源代码中写得不好。
javascript实现斗地主游戏的想法,是给你介绍这么多,希望能帮到你!
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部