⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 suoha_main.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:



****************************************************************************/
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 + -