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

📄 ch_4u.cpp

📁 C++ Builder程序员学习数据结构第7章
💻 CPP
📖 第 1 页 / 共 2 页
字号:
      {
         g[0][2]=1;
         i=0;
         j=2;
      }
      if(g[1][1]==0)
      {
         g[1][1]=1;
         i=1;
         j=1;
      }
      if(g[2][0]==0)
      {
         g[2][j]=1;
         i=2;
         j=0;
      }
   }
}
//------------------------------------------------------------------------------------------------------
void ctn()                                    //判定胜败的收官函数
{
   if(g[0][0]+g[0][1]+g[0][2]==15 || g[1][0]+g[1][1]+g[1][2]==15||  //挑战者败
      g[2][0]+g[2][1]+g[2][2]==15 || g[0][0]+g[1][0]+g[2][0]==15||
      g[0][1]+g[1][1]+g[2][1]==15 || g[0][2]+g[1][2]+g[2][2]==15||
      g[0][0]+g[1][1]+g[2][2]==15 || g[0][2]+g[1][1]+g[2][0]==15 )
      {
         sg->g00->Enabled=false;		//将所有九宫按键功能关闭
         sg->g01->Enabled=false;
         sg->g02->Enabled=false;
         sg->g10->Enabled=false;
         sg->g11->Enabled=false;
         sg->g12->Enabled=false;
         sg->g20->Enabled=false;
         sg->g21->Enabled=false;
         sg->g22->Enabled=false;
         sg->to2->Enabled=true;;		//启动挑战者战胜画面
         h=0;
         return;
      }
   if(g[0][0]+g[0][1]+g[0][2]==3 || g[1][0]+g[1][1]+g[1][2]==3||   //电脑胜
      g[2][0]+g[2][1]+g[2][2]==3 || g[0][0]+g[1][0]+g[2][0]==3||
      g[0][1]+g[1][1]+g[2][1]==3 || g[0][2]+g[1][2]+g[2][2]==3||
      g[0][0]+g[1][1]+g[2][2]==3 || g[0][2]+g[1][1]+g[2][0]==3 )
      {
          sg->g00->Enabled=false;		//将所有九宫按键功能关闭
          sg->g01->Enabled=false;
          sg->g02->Enabled=false;
          sg->g10->Enabled=false;
          sg->g11->Enabled=false;
          sg->g12->Enabled=false;
          sg->g20->Enabled=false;
          sg->g21->Enabled=false;
          sg->g22->Enabled=false;
          sg->to1->Enabled=true;;			//启动挑战者战败画面
          h=0;
      }
}
//------------------------------------------------------------------------------------------------------
void hmy()                        //合局
{
   sg->g00->Glyph->LoadFromFile("\graph\\dogfall.bmp");
   sg->g01->Glyph->LoadFromFile("\graph\\dogfall.bmp");
   sg->g02->Glyph->LoadFromFile("\graph\\dogfall.bmp");
   sg->g10->Glyph->LoadFromFile("\graph\\dogfall.bmp");
   sg->g11->Glyph->LoadFromFile("\graph\\dogfall.bmp");
   sg->g12->Glyph->LoadFromFile("\graph\\dogfall.bmp");
   sg->g20->Glyph->LoadFromFile("\graph\\dogfall.bmp");
   sg->g21->Glyph->LoadFromFile("\graph\\dogfall.bmp");
   sg->g22->Glyph->LoadFromFile("\graph\\dogfall.bmp");

   sg->g00->Enabled=false;			//关闭九宫按键的功能
   sg->g01->Enabled=false;
   sg->g02->Enabled=false;
   sg->g10->Enabled=false;
   sg->g11->Enabled=false;
   sg->g12->Enabled=false;
   sg->g20->Enabled=false;
   sg->g21->Enabled=false;
   sg->g22->Enabled=false;
   sg->start->Enabled=true;
   ok=true;
   h=0;
}
//------------------------------------------------------------------------------------------------------
void go()                                //执行策略,落子
{						//i为九宫棋x座标,j为y座标;两者皆为窗体变量
   if(i==0 && j==0)						//左上角点
   {
      sg->g00->Glyph->LoadFromFile("\graph\\computer.BMP");//设定电脑下棋图案
      sg->g00->Enabled=false;				//关闭该件功能
      g[0][0]=1;							//存储相对位置于数组
      i=-1;j=-1;
      ctn();								//调用决胜函数
      ok=true;
      return;
   }
   if(i==0 && j==1)						//上角点
   {
      sg->g01->Glyph->LoadFromFile("\graph\\computer.BMP");
      sg->g01->Enabled=false;
      g[0][1]=1;
      i=-1;j=-1;
      ctn();
      ok=true;
      return;
   }
   if(i==0 && j==2)						//右上角点
   {
      sg->g02->Glyph->LoadFromFile("\graph\\computer.BMP");
      sg->g02->Enabled=false;
      g[0][2]=1;
      i=-1;j=-1;
      ctn();
      ok=true;
      return;
   }
   if(i==1 && j==0)						//左角点
   {
      sg->g10->Glyph->LoadFromFile("\graph\\computer.BMP");
      sg->g10->Enabled=false;
      g[1][0]=1;
      i=-1;j=-1;
      ctn();
      ok=true;
      return;
   }
   if(i==1 && j==2)						//右角点
   {
      sg->g12->Glyph->LoadFromFile("\graph\\computer.BMP");
      sg->g12->Enabled=false;
      g[1][2]=1;
      i=-1;j=-1;
      ctn();
      ok=true;
      return;
   }
   if(i==2 && j==0)						//左下角点
   {
      sg->g20->Glyph->LoadFromFile("\graph\\computer.BMP");
      sg->g20->Enabled=false;
      g[2][0]=1;
      i=-1;j=-1;
      ctn();
      ok=true;
      return;
   }
   if(i==2 && j==1)						//下角点
   {
      sg->g21->Glyph->LoadFromFile("\graph\\computer.BMP");
      sg->g21->Enabled=false;
      g[2][1]=1;
      i=-1;j=-1;
      ctn();
      ok=true;
      return;
   }
   if(i==2 && j==2)						//右下角点
   {
      sg->g22->Glyph->LoadFromFile("\graph\\computer.BMP");
      sg->g22->Enabled=false;
      g[2][2]=1;
      i=-1;j=-1;
      ctn();
      ok=true;
      return;
   }
}
//------------------------------------------------------------------------------------------------------
void __fastcall Tsg::g02Click(TObject *Sender)
{
   h++;						//用户落手数加1
   ok=false;					//设置电脑未下
   g[0][2]=5;					//用户数组值为5
   g02->Glyph->LoadFromFile("\graph\\person.bmp"); //挑战者代表图案
   g02->Default;

   g02->Enabled=false;		     //关闭该键功能
   atk(); pvt(); ctn();              //调用判断函数与收官

   if(h==1)
      fsh(3);                        //第一手应棋
   go();                             //执行判断函数
   if(ok==false && h<4)
      any();                         //调用随机函数
   if(h==4)
      hmy();                         //调用和棋函数

}
//---------------------------------------------------------------------------
void __fastcall Tsg::g01Click(TObject *Sender)
{
   h++;
   ok=false;
   g[0][1]=5;
   g01->Glyph->LoadFromFile("\graph\\person.bmp");
   g01->Enabled=false;

   atk();  pvt(); ctn();

   if(h==1)
      fsh(2);
   go();						 //运行判断函数
   if(h==2 && ok==false)
      sch(2);
   if(ok==false && h<4)
      any();
   if(h==4)
      hmy();

}
//---------------------------------------------------------------------------
void __fastcall Tsg::g00Click(TObject *Sender)
{
   h++;
   ok=false;
   g[0][0]=5;
   g00->Glyph->LoadFromFile("\graph\\person.bmp");
   g00->Enabled=false;

   atk(); pvt(); ctn();

   if(h==1)
      fsh(1);
   go();							//运行判断函数
   if(ok==false && h<4)
      any();
   if(h==4)
      hmy();

}
//---------------------------------------------------------------------------
void __fastcall Tsg::g22Click(TObject *Sender)
{
   h++;
   ok=false;
   g[2][2]=5;
   g22->Glyph->LoadFromFile("\graph\\person.bmp");
   g22->Enabled=false;

   atk(); pvt() ;ctn();

   if(h==1)
      fsh(9);
   go();							//运行判断函数
   if(ok==false && h<4)
      any();
   if(h==4)
      hmy();

}
//---------------------------------------------------------------------------
void __fastcall Tsg::g20Click(TObject *Sender)
{
   h++;
   ok=false;
   g[2][0]=5;
   g20->Glyph->LoadFromFile("\graph\\person.bmp");
   g20->Enabled=false;
   atk(); pvt(); ctn();
   if(h==1)
      fsh(7);
   go();				 	//运行判断函数
   if(ok==false && h<4)
      any();
   if(h==4)
      hmy();

}
//---------------------------------------------------------------------------
void __fastcall Tsg::g12Click(TObject *Sender)
{
   h++;
   ok=false;
   g[1][2]=5;
   g12->Glyph->LoadFromFile("\graph\\person.bmp");
   g12->Enabled=false;
   atk(); pvt(); ctn();
   if(h==1)
      fsh(6);
   go();					 //运行判断函数
   if(h==2 && ok==false)
      sch(6);
   if(ok==false && h<4)
      any();
   if(h==4)
      hmy();

}
//---------------------------------------------------------------------------
void __fastcall Tsg::g10Click(TObject *Sender)
{
   h++;
   ok=false;
   g[1][0]=5;
   g10->Glyph->LoadFromFile("\graph\\person.bmp");
   g10->Enabled=false;
   atk();  pvt();  ctn();
    if(h==1)
      fsh(4);
    go();					//运行判断函数
    if(h==2 && ok==false)
      sch(4);
    if(ok==false && h<4)
      any();
    if(h==4)
      hmy();

}
//---------------------------------------------------------------------------
void __fastcall Tsg::g21Click(TObject *Sender)
{
   h++;
   ok=false;
   g[2][1]=5;
   g21->Glyph->LoadFromFile("\graph\\person.bmp");
   g21->Enabled=false;
   atk(); pvt(); ctn();
   if(h==1)
      fsh(8);
   go();					//运行判断函数
   if(h==2 && ok==false)
      sch(8);
   if(ok==false && h<4)
      any();
   if(h==4)
      hmy();

}
//---------------------------------------------------------------------------
void __fastcall Tsg::to1Timer(TObject *Sender)
{
   switch(n)
   {
      case 0:			//由外而内逐一变成战败画面
             g00->Glyph->LoadFromFile("\graph\\defeat.bmp");
             break;
      case 1:
             g01->Glyph->LoadFromFile("\graph\\defeat.bmp");
             break;
      case 2:
             g02->Glyph->LoadFromFile("\graph\\defeat.bmp");
             break;
      case 3:
             g12->Glyph->LoadFromFile("\graph\\defeat.bmp");
             break;
      case 4:
             g22->Glyph->LoadFromFile("\graph\\defeat.bmp");
             break;
      case 5:
             g21->Glyph->LoadFromFile("\graph\\defeat.bmp");
             break;
      case 6:
             g20->Glyph->LoadFromFile("\graph\\defeat.bmp");
             break;
      case 7:
             g10->Glyph->LoadFromFile("\graph\\defeat.bmp");
             break;
      case 8:
             g11->Glyph->LoadFromFile("\graph\\defeat.bmp");
             to1->Enabled=false;				//关闭战败画面功能
             sg->start->Enabled=true;			//游戏开始钮功能开启
             n=-1;							//计数器设为初值
             break;
   }
   n++;							//计数器加1

}
//---------------------------------------------------------------------------
void __fastcall Tsg::to2Timer(TObject *Sender)
{
    switch(n)
   {
      case 0:                       //由外而内逐一变成战胜画面
             g00->Glyph->LoadFromFile("\graph\\success.bmp");
             break;
      case 1:
             g01->Glyph->LoadFromFile("\graph\\success.bmp");
             break;
      case 2:
             g02->Glyph->LoadFromFile("\graph\\success.bmp");
             break;
      case 3:
             g12->Glyph->LoadFromFile("\graph\\success.bmp");
             break;
      case 4:
             g22->Glyph->LoadFromFile("\graph\\success.bmp");
             break;
      case 5:
             g21->Glyph->LoadFromFile("\graph\\success.bmp");
             break;
      case 6:
             g20->Glyph->LoadFromFile("\graph\\success.bmp");
             break;
      case 7:
             g10->Glyph->LoadFromFile("\graph\\success.bmp");
             break;
      case 8:
             g11->Glyph->LoadFromFile("\graph\\success.bmp");
             to2->Enabled=false;					//关闭战胜动画
             sg->start->Enabled=true;
             n=-1;
             v++;								//战胜计数器加1
             break;
   }
   n++;

}
//---------------------------------------------------------------------------
void __fastcall Tsg::g11Click(TObject *Sender)
{
   h++;
   ok=false;
   g[1][1]=5;

   g11->Glyph->LoadFromFile("\graph\\person.bmp");
   g11->Enabled=false;
   atk(); pvt(); ctn();
   if(h==1)
      fsh(5);
   go();					//运行判断函数
   if(h==2 && ok==false)
      sch(5);
   if(ok==false && h<4)
      any();
   if(h==4)
      hmy();

}
//---------------------------------------------------------------------------


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -