📄 suoha_main.c
字号:
****************************************************************************/
void XiaZhu()
{
ULONG m1, m2, m3;
USHORT i;
//4 将mainwin_states设置成为下注状态程序中只有在这个地方会设置成下注状态
mainwin_states = SUOHA_ISSTAKING;
//
if (curr_CardTh==5)
playeractions[4].isenabled = 1; //set quansuo to be enabled
if (turnPlayerorComputer==PLAYER) //4 如果是轮到玩家下注
{
//in fact, the switch statement can also be realized by an static two dimensions arrays and more compact statement!!
switch (curr_CardTh)
{
case 2:
m1 = TWOCARDS10;
m2 = TWOCARDS50;
m3 = TWOCARDS100;
break;
case 3:
m1 = THREECARDS10;
m2 = THREECARDS200;
m3 = THREECARDS300;
break;
case 4:
m1 = FOURCARDS10;
m2 = FOURCARDS300;
m3 = FOURCARDS500;
break;
case 5:
m1 = FIVECARDS10;
m2 = FIVECARDS500;
m3 = FIVECARDS1000;
break;
default:
break;
}
} else
{ //4 如果是电脑下注
// p_jiazhu = c_CurrStake;//if the player is going to chip in, the minimum stake must be
//the c_Currstake;
m1 = c_CurrStake*2;
m2 = c_CurrStake*3;
m3 = c_CurrStake*4;
}
//display all the stakes!!
Display_Stakes(m1, m2, m3);
// draw focus!!
//some stakes cant be focused !!
//4 根据玩家手上现有的钱,决定他可以下那些注
if (p_M>=m1)
playeractions[1].isenabled = 1;
else
playeractions[1].isenabled = 0;
if (p_M>=m2)
playeractions[2].isenabled = 1;
else
playeractions[2].isenabled = 0;
if (p_M>=m3)
playeractions[3].isenabled = 1;
else
playeractions[3].isenabled = 0;
//things type must be changed!!
for (i=1; i<=3; i++)
playeractions[i].thingtype = STAKES;
}
void GenJin()
{
//zhangzg 08/23/2002
if (turnPlayerorComputer==PLAYER)
{
p_M = p_M-(c_CurrStake-p_CurrStake);
desk_CurrStake +=c_CurrStake-p_CurrStake;
} else
{
p_M = p_M-c_CurrStake;
desk_CurrStake +=c_CurrStake;
}
p_CurrStake = c_CurrStake;
if (curr_CardTh<=5) // && !isEnd) //not end
{
RedrawPreActionFocus((T_SUOHA_MAINWIN_FOCUSTHINGS *)&playeractions[2]);
mainwin_focus = &playeractions[1];
Display_Focus();
}
//Display the action in the main window!!
Display_InteractiveStr((char *)wanjiagenle, 0,0);
if (curr_CardTh>=5)
{
Compare(); //compare cards of both, and decide who wins
mainwin_states = SUOHA_ISENDING;//zhangzg 08/05/2002
isInteracting = 0;
} else
{
time_state = TIMER_INTERACTIVE;
if (data)
{
isInteracting = 1; //cannot respond to player's input
timStart(data->tim);
}
}
}
void FangQi()
{
c_M +=desk_CurrStake;
desk_CurrStake = 0;
Display_InteractiveStr((char *)wanjiafangqi,0, 0);
time_state = TIMER_FANGQI;
if (data)
{
isInteracting = 1; //cannot respond to player's input
timStart(data->tim);
}
}
void QuanSuo()
{
desk_CurrStake +=p_M;
p_CurrStake = p_M;
p_M = 0;
turnPlayerorComputer = PLAYER;//该张牌下,玩家下注
Display_InteractiveStr((char *)wanjiaquanbu, (char *)wanjiayashangle, 0);
time_state = TIMER_QUANSUO;
if (data)
{
isInteracting = 1;
timStart(data->tim);
}
}
//4 查看当前的下注的情况
void CheckCurr()
{
TRACE_EVENT("CheckCurr()");
//4 设置mainwinstates 是查看状态
mainwin_states = SUOHA_ISCHECKING;
Display_checkwin();
}
/*************************************************************************
**************************************************************************/
void Money123(UBYTE num)
{
ULONG m, money[4];
//hide some actions
switch (turnPlayerorComputer)
{
case COMPUTER: //player doesn't follow, but put more stake than computer
//So must update the stake and interface. In addition, computer must then take action
playermorestake = 1; //player put more stake!! //zhangzg 08/22/2002
//assign values
p_M = p_M-c_CurrStake*(num+1);
desk_CurrStake +=c_CurrStake*(num+1);
p_CurrStake = c_CurrStake*(num+1);
turnPlayerorComputer = PLAYER; //4 该张牌下,玩家下注
//display the stake player is chipping in
Display_InteractiveStr((char *)wanjiamoney, 0, p_CurrStake);
time_state = TIMER_TCOMPUTER;
if (data)
{
isInteracting = 1; //cannot respond to player's input
timStart(data->tim);
}
break;
case PLAYER:
playermorestake = 0; //card of player is more greater //zhangzg 08/22/2002
switch (num)
{
case 1:
money[0] = TWOCARDS10;
money[1] = THREECARDS10;
money[2] = FOURCARDS10;
money[3] = FIVECARDS10;
break;
case 2:
money[0] = TWOCARDS50;
money[1] = THREECARDS200;
money[2] = FOURCARDS300;
money[3] = FIVECARDS500;
break;
case 3:
money[0] = TWOCARDS100;
money[1] = THREECARDS300;
money[2] = FOURCARDS500;
money[3] = FIVECARDS1000;
break;
default:
break;
}
switch (curr_CardTh)
{
case 2:
case 3:
case 4:
case 5:
m = money[curr_CardTh-2];
p_M = p_M-m;//The money left in the player
desk_CurrStake += m;//the money accumulated in desk
p_CurrStake = m; //the current stake by player
Display_InteractiveStr((char *)wanjiamoney, 0, p_CurrStake);
time_state = TIMER_TCOMPUTER;
if (data)
{
isInteracting = 1; //cannot respond to player's input
timStart(data->tim);
}
break;
}
break;
}
}
//4 在玩家跟进和电脑跟进的时候会设置TIMER_INTERACTIVE状态
void Interactive()
{
USHORT creturn;
if (p_M<=10)
{
PlayerNoMoney(curr_CardTh);
return;
}
curr_CardTh += 1;
DisplayOneCard(COMPUTER, curr_CardTh, c_Cards[curr_CardTh-1]);
DisplayOneCard(PLAYER, curr_CardTh, p_Cards[curr_CardTh-1]);
playercards[curr_CardTh-1].isenabled = 1;
computercards[curr_CardTh-2].isenabled = 1;
if (c_Cards[curr_CardTh-1]==Cp_Stake())
{
turnPlayerorComputer = COMPUTER; //computer is greater than player
time_state = TIMER_TCOMPUTER;
if (data)
{
isInteracting = 1; //cannot respond to player's input
timStart(data->tim);
}
} else
{
turnPlayerorComputer = PLAYER;
time_state = TIMER_TPLAYER;
if (data)
{
isInteracting = 1; //cannot respond to player's input
timStart(data->tim);
}
Display_InteractiveStr((char *)wanjiada, 0, 0);
playeractions[2].isenabled = 0;
mainwin_states = SUOHA_ISACTING;
if (curr_CardTh==5)
playeractions[4].isenabled = 1; //set quansuo to be enabled
}
}
void PlayerNoMoney(USHORT cardnum)
{
USHORT i;
cardnum++;
for (i=cardnum; i<=5; i++)
{
DisplayOneCard(COMPUTER, i, c_Cards[i-1]);
DisplayOneCard(PLAYER, i, p_Cards[i-1]);
}
GetCardType();
mainwin_states = SUOHA_ISENDING;//zhangzg 08/05/2002
isInteracting=0;
}
/**************************************************************************
****************************************************************************/
void PublishResults()
{
char m[20];
MfwRect rect = {0,0,120,160};
LONG winM = c_M-c_PreviousM;
//opponent money
oppmoney[focus_opp-1] = c_M;
win_states = SUOHA_MON_PUB;
PaintBackground(rect, 0x80ffff); //浅蓝色
Display_Left();
//zhangzg 08/20/2002
if (winM>=0)
{
dspl_TextOut(2, 75+over_c*17+over_p*17, DSPL_TXTATTR_UNICODE | DSPL_TXTATTR_TRANSPARENT, (char *)duishouyinle);
sprintf(m, "$%d", winM);
dspl_TextOut(70, 75+over_c*17+over_p*17, DSPL_TXTATTR_NORMAL| DSPL_TXTATTR_TRANSPARENT, (char *)m);
} else
{
winM = abs(winM);
dspl_TextOut(2, 75+over_c*17+over_p*17, DSPL_TXTATTR_UNICODE | DSPL_TXTATTR_TRANSPARENT, (char *)wanjiayinle);
sprintf(m, "$%d", winM);
dspl_TextOut(70, 75+over_c*17+over_p*17, DSPL_TXTATTR_NORMAL| DSPL_TXTATTR_TRANSPARENT, (char *)m);
}
//zhangzg 08/20/2002
dspl_TextOut(10, 92+over_c*17+over_p*17, DSPL_TXTATTR_UNICODE | DSPL_TXTATTR_TRANSPARENT, (char *)dangqianju);
sprintf(m, "%d", casenum);
dspl_TextOut(76, 92+over_c*17+over_p*17, DSPL_TXTATTR_NORMAL| DSPL_TXTATTR_TRANSPARENT, (char *)m);
dspl_TextOut(90, 92+over_c*17+over_p*17, DSPL_TXTATTR_UNICODE | DSPL_TXTATTR_TRANSPARENT, (char *) ju);
//display continue or quit, zhangzg 08/05/2002
DrawButton(LEFT_B1, TOP_B1, 0);
DrawButton(LEFT_B2, TOP_B2, 0);
dspl_TextOut(LEFT_B1, TOP_B1+POSITON_TXT, DSPL_TXTATTR_UNICODE | DSPL_TXTATTR_TRANSPARENT, (char *)jixu);
dspl_TextOut(LEFT_B2, TOP_B2+POSITON_TXT, DSPL_TXTATTR_UNICODE | DSPL_TXTATTR_TRANSPARENT, (char *)fanhui);
}
/*********************************************************************
***********************************************************************/
void RedrawMainWin()
{
UBYTE uMode;
MfwRect rect = {0,0,120,160};
uMode = dspl_Enable(0);
dspl_ClearAll();
PaintBackground(rect, BKCOLOR);
if (mainwin_states & SUOHA_ISENDING)
{
UBYTE i;
DisplayMainWinTxtZone();
if (!zone1_curr_str.isEmpty)
{
DisplayZone(1, (char *)zone1_curr_str.curr_str, zone1_curr_str.attr);
}
if (!zone2_curr_str.isEmpty)
{
DisplayZone(2, (char *)zone2_curr_str.curr_str, zone2_curr_str.attr);
}
for (i=0;i<=4;i++)
{
DisplayOneCard(COMPUTER, i+1, c_Cards[i]);
}
Display_Actions();
for (i=0;i<=4;i++)
{
DisplayOneCard(PLAYER, i+1, p_Cards[i]);
}
dspl_Enable(uMode);
return;
}
if (mainwin_states & SUOHA_ISACTING)
{
Display_Actions();
}
RedrawCards(PLAYER);
RedrawCards(COMPUTER);
DisplayMainWinTxtZone();
if (!zone1_curr_str.isEmpty)
{
DisplayZone(1, (char *)zone1_curr_str.curr_str, zone1_curr_str.attr);
}
if (!zone2_curr_str.isEmpty)
{
DisplayZone(2, (char *)zone2_curr_str.curr_str, zone2_curr_str.attr);
}
if (mainwin_states & SUOHA_ISSTAKING)
{
Display_Actions();
XiaZhu();
}
Display_Focus();
dspl_Enable(uMode);
}
/***************************************************************************
*************************************************************************/
void RedrawCards(USHORT who)
{
USHORT i;
UBYTE uMode;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -