funcproduceMahjong(){for j :=0; j <3; j++{for i :=0; i <36; i++{
mahjongStore[j*36+i]=(i /4)+1}}}
9 逻辑实现
func(ms *mainStruct)moPai(n int){if count ==108{
fmt.Println("流局")return}//从53张开始打牌,0号位(庄家)初始多一张牌//1 判断胡牌了吗
ok :=AnalyzeCardsSimple(ms.paiClass[n])if ok ==true{
fmt.Println(n,":我自摸了")
os.Exit(0)}//else {// fmt.Println(n, "与我无瓜!")//}//2 庄家出牌 得到出牌信息:svar(
s int
vDelete int)
fmt.Printf("%d号打牌 :(第几张):", n)_,_= fmt.Scan(&s)// 2:9条//2.1 获得对应字符串 ["条"][9]var sMap =make(map[string]int)
sMap, vDelete = ms.getDeleteData(n, s, sMap)//2.2 删除打出去的那张//2.2.1 在手牌库里删除了
ms.shouPai[n]=append(ms.shouPai[n][0:s-1], ms.shouPai[n][s:]...)//在手牌库里删除了//2.2.2 清空当前的map并重新统计
ms.qingKongData(n)
fmt.Printf("%d号当前的手牌:%v\n", n, ms.paiDis[n])//打印显示的手牌//3 判断是否有人碰,或者胡牌//3.1 是否有人胡牌for i :=0; i <4; i++{if i == n {continue}//fmt.Println("**********", i, "**************")var a intSlice
for_, v :=range ms.shouPai[i]{
a =append(a, v)}
ok =piHu(vDelete, a)if ok ==true{
fmt.Println(i,":我胡了")
os.Exit(0)}}//3.2 是否有人碰牌//3.1.1 判断是否有人有两个或以上的此牌,若有,则选择碰不碰for i :=0; i <4; i++{if i == n {continue}
ms.paiTypeCount(i)//这里出现的错误!!!!!!!!!!!!!//fmt.Println("-----------------", i, "------------------------")for k, v :=range sMap {//fmt.Println(k, v)if ms.cardsNum[i][k][v]>=2{
fmt.Println(i,":碰?\n 请选择:\n 1:碰\n 2:不碰")var t int_,_= fmt.Scan(&t)switch t {case1://加上这张牌
ms.shouPai[i]=append(ms.shouPai[i], vDelete)//理牌
ms.liPai(i)//fmt.Printf("%d号当前的手牌:%v\n",i, ms.shouPai[i])//更新牌分类 paiClass、牌显示showPai
ms.qingKongData(i)//显示手牌
fmt.Printf("%d号当前的手牌:%v\n", i, ms.paiDis[i])//判断是否胡了,继续向下,出牌,是否碰,谁碰谁负责
ms.moPai(i)case2://不碰就下一个人摸牌 (n+1)%4
ms.nextMoPai(n)}}}}//4 没人碰的了就直接下一个人摸牌
ms.nextMoPai(n)}
10 运行
// RunDemo 运行funcRunDemo()(err error){produceMahjong()//fmt.Println(mahjongStore)var ms mainStruct
for i :=0; i <4; i++{
ms.paiClass[i]=make(Map)}
ms.xiPai()//fmt.Println(ms.paiList)
ms.faPai()for i :=0; i <4; i++{
fmt.Printf("---------------%d号位置----------------\n", i)
ms.liPai(i)//fmt.Println(ms.shouPai[i])for_, v :=range ms.shouPai[i]{
ms.showPai(i, v)}//fmt.Println(ms.paiClass[i])
fmt.Println(ms.paiDis[i])}//sMap := map[string]int{"条": mahjongStore[35]}//ms.piHu(0, 35, sMap)
ms.moPai(0)//fmt.Println(ms.shouPai[0])return err
}