鬥地主 比較牌大小演算法

2021-08-01 00:21:39 字數 2285 閱讀 2751

先將牌轉化字串,牌和字元的對照如下

//牌和**中字元的對應

//3:3, 4:4, 5:5, 6:6, 7:7, 8:8, 9:9, a:10, b:j, c:q, d:k, e:a, f:2, g:王

看**:

//.h標頭檔案

#ifndef checkpoker_h

#define checkpoker_h

#pragma once

#include

#include

#include

#include

using

namespace

std;

//需要連續多少才合法

const

int neednum[5] = ;

//最多能帶多少牌

const

int mosttake[5] = ;

//牌和**中字元的對應

//3:3, 4:4,5:5,6:6,7:7,8:8,9:9,a:10,b:j, c:q, d:k, e:a, f:2, g:王

//牌的型別

enum pokertype ;

//檢測牌型別函式返回的結果

class checkresult

};class checkpoker ;

#endif

//.cpp原始檔

#include "checkpoker.h"

checkpoker::checkpoker()

checkpoker::~checkpoker()

//從有序的字串中查詢數量為num的字元

void checkpoker::findcharbynumber(char *retstr, std::string &srcstr, int num) else

if (maxnumber == num)

}retstr[retnum] = 0;

}//檢測字串中的字元是否連續

bool checkpoker::checkcharisconnect(const

char *str)

if (str[i - 1] != (str[i] - 1))

}return

true;

}//檢測牌的型別

checkresult checkpoker::checktype(std::string &pokerlist)

//判斷王炸

if (2 == pokernum && strcmp("gg", pokerlist.c_str()) == 0)

//將字串排序

sort(pokerlist.begin(), pokerlist.end());

//依次判斷是否是包含相同的4個,3個,2個, 1個牌

char retstr[15];

for (int i = 4; i > 0; i--)

if (false == checkcharisconnect(retstr))

if (connectnum * mosttake[i] < pokernum - connectnum * i)

/下面判讀細節

if (4 == i) else

if (3 == i) else

if (0 == lastpokernum || lastpokernum == connectnum) else

//有單牌,不合法

continue;

}} else

if (2 == i)

} else

if (1 == i) }}

ret = checkresult(pokertype::illegal);

return ret;

}//判斷牌的大小

bool checkpoker::pokercmp(std::string &a, std::string &b) else

if (pokertype::bomb == aret.ptype && pokertype::bomb == bret.ptype) else

if (pokertype::bomb == aret.ptype || pokertype::bomb == bret.ptype)

if (0 == b.length())

if (alen != blen)

if (aret.ptype == bret.ptype)

return

false;

}

鬥地主演算法1判斷牌型

using unityengine using system.collections.generic 牌型 3 4 5 6 7 8 9 10 11 j 12 q 13 k 14 a 15 2 16 小王 17 大王 public class ddz cardtype 是否是單張 public sta...

鬥地主手牌的統計

手牌統計指統計手裡的牌,單張牌,對子牌,三條,四條牌的乙個整體統計。具體講返回乙個list的字典物件。1.首先對牌的資料進行有效排序 2.遍歷手牌 2.1.1 牌型一致,將牌push進臨時牌組 2.1.2 牌型不一樣,將快取牌組加入牌組字典,重置牌組,將新牌push進臨時牌組 2.2.1 最後一張牌...

鬥地主中跟牌邏輯分析

qlistmethod playbeathand hand hand 壓雙排 else if hand.gethandtype hand pair 如果壓雙牌,盡量從雙牌中挑 player nextplayer m player getnextplayer 從手牌中查詢相同牌型 qlist beat...