我在写抢地主的部分
但是这个逻辑好像有些问题,每次进入界面之后会一直刷新
int dealCards::dealLord(ExMessage msg) {
settextstyle(25, 0, "楷体");
srand((int)time(0));
//先从一个随机的人开始,如果是玩家就问要不要叫地主,如果是bot就随机一个数得到叫与不叫
//然后逆时针依次询问,没有人当地主时重新进入界面发牌,只有一人叫时直接成为地主,两人及以上叫时进入第二轮
//第二轮开始时叫地主的那个如果继续抢地主那么直接成为地主,否则后一个抢地主的人成为地主
int turn = 1;
bool isLord[3] = { false };
int player[3] = { 0,1,2 }; //0是玩家,1是右bot,2是左bot
int curPlayer = rand() % 3;
int isBot[2] = { rand() % 2 };
int numLord = 0;//抢地主的人数
int firstPlayer = curPlayer;
for (int i = 0; i < 3 && turn == 1; i++, curPlayer++) {
if (curPlayer == 0) {//如果第一个是玩家
if (button(msg, 452, 418, 100, 38, NULL, NULL, WHITE, NULL, "叫地主")) {
isLord[0] = true;
numLord++;
//叫地主.mp3
}
if (button(msg, 729, 418, 100, 38, NULL, NULL, WHITE, NULL, "不叫")) {
//不叫.mp3
isLord[0] = false;
}
}
else {//如果不是玩家
if (curPlayer == 1 && isBot[0]) {
isLord[1] = true;
numLord++;
}
if (curPlayer == 2 && isBot[1]) {
isLord[2] = true;
numLord++;
}
}
}
if (numLord == 0) {
return -1;
}
if (numLord == 1) {
for (int i = 0; i < 3; i++)
{
if (isLord[i] == true)
{
return i;
}
}
}
if (numLord == 2) {
turn = 2;
for (int i = 0; i < 3; i++)isLord[i] = false;
if (firstPlayer == 0) {
if (button(msg, 452, 418, 100, 38, NULL, NULL, WHITE, NULL, "抢地主")) {
return 0;
//抢地主.mp3
}
if (button(msg, 729, 418, 100, 38, NULL, NULL, WHITE, NULL, "不抢")) {
//不抢.mp3
}
}
else {
if (firstPlayer == 1 && isBot[0]) {
return 1;
}
if (firstPlayer == 2 && isBot[1]) {
return 2;
}
}
}
}
void dealCards::addCard(int i) {
//传入的i:0是玩家,1是右bot,2是左bot
if (!lordFinish) {
if (i == -1) {
curView = new gameingView;
}
if (i == 0) {
player1[17] = landlord[0];
player1[18] = landlord[1];
player1[19] = landlord[2];
}
if (i == 1) {
player2[17] = landlord[0];
player2[18] = landlord[1];
player2[19] = landlord[2];
}
if (i == 2) {
player3[17] = landlord[0];
player3[18] = landlord[1];
player3[19] = landlord[2];
}
}
lordFinish = true;
}
//gamingView.cpp中的调用,lordFinish为全局变量初始为false
static dealCards a;
a.addCard(a.dealLord(msg));