📄 ddzdesk.cs
字号:
// tmpPaiArray[ind]++;
// i += 3;
// if (i < 12)
// i++;
// }
// int tmpcount = 0;
// for (int i = 1; i < tmpPaiArray.Length - 2; i++)
// {
// if (tmpPaiArray[i] == 4)
// tmpcount++;
// }
// if(tmpcount < 3) //小于三炸继续洗牌
// goto xipai;
// else
// orgalCard[orgalCard.Length - 1] = 11 + tmpSpecilOrder;
//}
#endregion
#region 洗牌2
if (specilusername != "" && DdzOnline.IsThreeBomb)
{
int tmpSpecilOrder = deskTopUserList[specilusername].order;
int tmpzhadan = 3;// rd.Next(2, 4);
int[] tmpzhadanArray = new int[] { 0, 0, 0, 0 };
for (int i = 0; i < tmpzhadan; i++)
{
tmpzhadanArray[i] = rd.Next(13) + 1;
for (int j = i; j > 0; j--)
{
if (tmpzhadanArray[i] == tmpzhadanArray[j - 1])
{
tmpzhadanArray[i] = rd.Next(13) + 1;
j = i;
}
}
for(int j = 0; j < 4;j++)
{
int tmpposition = 11 + i * 12 + j * 3 + tmpSpecilOrder;
int tmpcurpai = 1000 + tmpzhadanArray[i] * 10 + j + 1;
int search_p = 0;
for (int p = 0; p < orgalCard.Length - 1; ++p)
{
if (orgalCard[p] == tmpcurpai)
{
search_p = p;
break;
}
}
if (search_p != 0 && tmpposition != search_p)
{
int _l3 = orgalCard[search_p];
orgalCard[search_p] = orgalCard[tmpposition];
orgalCard[tmpposition] = _l3;
}
}
}
for (int i = 0; i < 3; i++)
{
int tmpposition = i * 4 + tmpSpecilOrder - 1;
int tmpcurpai = 1000 + 13 * 10 + i + 1;
if (i == 0) {
tmpcurpai = 5025;
}
int search_p = 0;
for (int p = 0; p < orgalCard.Length - 1; ++p)
{
if (orgalCard[p] == tmpcurpai)
{
search_p = p;
break;
}
}
if (search_p != 0 && tmpposition != search_p)
{
int _l3 = orgalCard[search_p];
orgalCard[search_p] = orgalCard[tmpposition];
orgalCard[tmpposition] = _l3;
}
}
orgalCard[orgalCard.Length - 1] = 11 + tmpSpecilOrder;
}
#endregion
}
private void PaiOrder() //给每家的牌排序(由小到大)
{
foreach (DdzPoke obj in deskTopUserList.Values)
{
ArrayListCompare compare = new ArrayListCompare();
obj.OrgalCard.Sort(compare);
}
}
private void GameOver()
{
isEnded = true;
string deskFlag = deskTopUserList[FindUserByOrder(dizhuPlayer)].userinfo.DeskFlag;
Thread.Sleep(1000);
string[] arrDeskFlag = deskFlag.Split('_');
for (int i = 0; i < arrDeskFlag.Length; i++)
{
deskTopUserList[arrDeskFlag[i]].userinfo.DeskFlag = "";
DdzOnline.DdzUserList.Remove(arrDeskFlag[i]);
}
DdzOnline.DdzStartList.Remove(deskFlag);
System.GC.Collect();
}
private void CheckTimeOut()
{
if (isEnded) return;
thread1Count = 40;
if (thread1 == null)
{
thread1 = new Thread(new ThreadStart(CheckTimeOutDeal));
thread1.Start();
}
}
private void CheckTimeOutDeal()
{
while (thread1Count > 0 && !isEnded)
{
if (thread1Count == 9 || thread1Count == 4)
{
SendToAll((int)MessageEnum.TimeLag, curPlayer);
}
thread1Count--;
Thread.Sleep(1000);
}
thread1 = null;
if (isEnded) return;
if (!isStarted)
{
DdzPoke curDP = deskTopUserList[FindUserByOrder(curPlayer)];
JiaoPaiNext(curDP.userinfo, 0);
}
else
{
DdzPoke curDP = deskTopUserList[FindUserByOrder(curPlayer)];
curDP.states = "tuoguan";
TuoGuanChuPai(curDP.userinfo);
}
}
//测试用
private void WritePaiToText(string content)
{
using(FileStream paiFile = new FileStream("D:/paitext.dat", FileMode.Append, FileAccess.Write, FileShare.Write))
{
byte[] data = new UTF8Encoding(true).GetBytes(content);
paiFile.Write(data , 0 , data.Length);
paiFile.Close();
paiFile.Dispose();
}
}
private string ReadPaiToText()
{
using (FileStream paiFile = new FileStream("D:/paitext.dat", FileMode.Open))
{
byte[] buf = new byte[120];
paiFile.Read(buf, 0, 120);
paiFile.Close();
paiFile.Dispose();
return new UTF8Encoding(true).GetString(buf);
//return Encoding.UTF8.GetString(buf);
}
}
#region 牌型判断
// = 2 判断是否是一对牌;
private int IsTwo(string paistrlist)
{
ArrayList paiArrayList = new ArrayList(paistrlist.Split(','));
int counter = 0;
counter = paiArrayList.Count;
if (counter != 2 || int.Parse(paiArrayList[0].ToString()) / 10 != int.Parse(paiArrayList[1].ToString()) / 10)
return 0;
return int.Parse(paiArrayList[0].ToString());
}
// = 2 判断是否是火箭;
private int IsRocket(string paistrlist)
{
ArrayList paiArrayList = new ArrayList(paistrlist.Split(','));
int counter = 0;
counter = paiArrayList.Count;
if (counter != 2 || int.Parse(paiArrayList[0].ToString()) / 10 + int.Parse(paiArrayList[1].ToString()) / 10 != 1003)
return 0;
return 5015;
}
// = 3 判断是否是三张;
private int Is3(string paistrlist)
{
ArrayList paiArrayList = new ArrayList(paistrlist.Split(','));
int counter = 0;
counter = paiArrayList.Count;
if (counter != 3 || int.Parse(paiArrayList[0].ToString()) / 10 != int.Parse(paiArrayList[1].ToString()) / 10 || int.Parse(paiArrayList[0].ToString()) / 10 != int.Parse(paiArrayList[2].ToString()) / 10)
return 0;
return int.Parse(paiArrayList[0].ToString());
}
// = 4 判断是否是三带一单;
private int Is3_1(string paistrlist)
{
ArrayList paiArrayList = new ArrayList(paistrlist.Split(','));
paiArrayList.Sort();
int counter = 0; //总牌张数;
counter = paiArrayList.Count;
if (counter != 4)
return 0;
int[] tmpPaiArray = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; //保存对应大小牌的张数
for (int i = 0; i < paiArrayList.Count; i++)
{
int pai = int.Parse(paiArrayList[i].ToString());
int index = (pai > 5000) ? (pai / 10) % 100 + 13 : (pai / 10) % 100; //判断大小鬼
tmpPaiArray[index]++;
}
for (int i = 1; i < tmpPaiArray.Length; i++)
{
if (tmpPaiArray[i] == 3)
{
for (int k = 0; k < paiArrayList.Count; k++)
{
int pai = int.Parse(paiArrayList[k].ToString());
if (i == (pai / 10) % 100)
{
return pai;
}
}
}
}
return 0;
}
// = 5 判断是否是三带一对;
private int Is3_2(string paistrlist)
{
ArrayList paiArrayList = new ArrayList(paistrlist.Split(','));
paiArrayList.Sort();
int counter = 0; //总牌张数;
counter = paiArrayList.Count;
if (counter != 5)
return 0;
int[] tmpPaiArray = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; //保存对应大小牌的张数
for (int i = 0; i < paiArrayList.Count; i++)
{
int pai = int.Parse(paiArrayList[i].ToString());
int index = (pai > 5000) ? (pai / 10) % 100 + 13 : (pai / 10) % 100; //判断大小鬼
tmpPaiArray[index]++;
}
int m3 = 0, m2 = 0;
for (int i = 1; i < tmpPaiArray.Length; i++)
{
if (tmpPaiArray[i] == 3)
{
m3 = i;
}
if (tmpPaiArray[i] == 2)
{
m2++;
}
}
if (m2 > 0 && m3 > 0)
{
for (int k = 0; k < paiArrayList.Count; k++)
{
int pai = int.Parse(paiArrayList[k].ToString());
if (m3 == (pai / 10) % 100)
{
return pai;
}
}
}
return 0;
}
// = 4 判断是否是四张(炸弹);
private int IsBomb(string paistrlist)
{
ArrayList paiArrayList = new ArrayList(paistrlist.Split(','));
int counter = 0;
counter = paiArrayList.Count;
if (counter != 4 ||
int.Parse(paiArrayList[0].ToString()) / 10 != int.Parse(paiArrayList[1].ToString()) / 10 ||
int.Parse(paiArrayList[0].ToString()) / 10 != int.Parse(paiArrayList[2].ToString()) / 10 ||
int.Parse(paiArrayList[0].ToString()) / 10 != int.Parse(paiArrayList[3].ToString()) / 10)
return 0;
return int.Parse(paiArrayList[0].ToString());
}
// = 6 判断是否是四带两单(或单独一对);
private int Is4_11(string paistrlist)
{
ArrayList paiArrayList = new ArrayList(paistrlist.Split(','));
paiArrayList.Sort();
int counter = 0; //总牌张数;
counter = paiArrayList.Count;
if (counter != 6)
return 0;
int[] tmpPaiArray = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; //保存对应大小牌的张数
for (int i = 0; i < paiArrayList.Count; i++)
{
int pai = int.Parse(paiArrayList[i].ToString());
int index = (pai > 5000) ? (pai / 10) % 100 + 13 : (pai / 10) % 100; //判断大小鬼
tmpPaiArray[index]++;
}
int m4 = 0, m2 = 0, m1 = 0;
for (int i = 1; i < tmpPaiArray.Length; i++)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -