用C++寫的三子棋代碼(基於DOS介面)

來源:互聯網
上載者:User

#include<iostream>
#include<stdlib.h>
using namespace std;
class Tictoc
{
public:
 Tictoc();//賦值數組t[3][3],初始化為空白字元,還有顯示棋盤
 void display();//核心代碼
private:
 char t[3][3];
 int y[8];//標記棋子
 int R;//輸出棋子的資料
 char win;//輸出勝利的一方

 bool Dwinplayer();//判斷勝負
 int  num(int i);//判斷是否有棋子
 void num1(int i);//下子時,標記棋子
 void Tcout1();//頭部輸出
 void Tcout2();//棋盤函數體的輸出
 void Tcout3();//尾部輸出

};
Tictoc::Tictoc()
{
 for(int a=0;a<3;a++)
  for(int b=0;b<3;b++)
  {
   t[a][b]=' ';
  }
 for(int c=0;c<8;c++)
  y[c]=0;
 Tcout2();
}
void Tictoc::display()
{
 int p2;
 int p1=1;
 char c1;
 while(1)
 {
  if(p1==1)
  {
loop1:  cout<<"A請輸入:";
   cin>>c1;
   p1-=1;
   switch(c1)
   {
   case 'q':
    {
     if(num(7)==1)
     { cout<<"你輸入的已有棋子";goto loop1;}
     else
     { num1(7);

     t[0][0]='A';
     p2=1;
     break;}
    }
   case 'w':
    { 
     if(num(8)==1)
     { cout<<"你輸入的已有棋子";goto loop1;}
     else
     { num1(8);
     t[0][1]='A';p2=1;break;}
      
    }
   case 'e':
    {
     if(num(9)==1)
     { cout<<"你輸入的已有棋子";goto loop1;}
     else
     { num1(9);
     t[0][2]='A';p2=1;break;}
    }
   case 'a':
    {
     if(num(4)==1)
     { cout<<"你輸入的已有棋子";goto loop1;}
     else
     { num1(4);
     t[1][0]='A';p2=1;break;}
    }
   case 's':
    {
     if(num(5)==1)
     { cout<<"你輸入的已有棋子";goto loop1;}
     else
     { num1(5);
     t[1][1]='A';p2=1;break;}
    }
   case 'd':
    {
     if(num(6)==1)
     { cout<<"你輸入的已有棋子";goto loop1;}
     else
     { num1(6);
     t[1][2]='A';p2=1;break;}
    }
   case 'z':
    {
     if(num(1)==1)
     { cout<<"你輸入的已有棋子";goto loop1;}
     else
     { num1(1);
     t[2][0]='A';p2=1;break;}
    }
   case 'x':
    {
     if(num(2)==1)
     { cout<<"你輸入的已有棋子";goto loop1;}
     else
     { num1(2);
     t[2][1]='A';p2=1;break;}
    }
   case 'c':
    {
     if(num(3)==1)
     { cout<<"你輸入的已有棋子";goto loop1;}
     else
     { num1(3);
     t[2][2]='A';p2=1;break;}
    }
   }
  }
  else
  {
loop2:  cout<<"B請輸入:";
   cin>>c1;
   p1=1;
   switch(c1)
   {
   case 'u':
    {
     if(num(7)==1)
     { cout<<"你輸入的已有棋子";goto loop2;}
     else
     { num1(7);
     t[0][0]='B';p2=1;break;}
    }
   case 'i':
    {
     if(num(8)==1)
     { cout<<"你輸入的已有棋子";goto loop2;}
     else
     { num1(8);
     t[0][1]='B';p2=1;break;}
    }
   case 'o':
    {
     if(num(9)==1)
     { cout<<"你輸入的已有棋子";goto loop2;}
     else
     { num1(9);
     t[0][2]='B';p2=1;break;}
    }
   case 'h':
    {
     if(num(4)==1)
     { cout<<"你輸入的已有棋子";goto loop2;}
     else
     { num1(4);
     t[1][0]='B';p2=1;break;}
    }
   case 'j':
    {
     if(num(5)==1)
     { cout<<"你輸入的已有棋子";goto loop2;}
     else
     { num1(5);
     t[1][1]='B';p2=1;break;}
    }
   case 'k':
    {
     if(num(6)==1)
     { cout<<"你輸入的已有棋子";goto loop2;}
     else
     { num1(6);
     t[1][2]='B';p2=1;break;}
    }
   case 'b':
    {
     if(num(1)==1)
     { cout<<"你輸入的已有棋子";goto loop2;}
     else
     { num1(1);
     t[2][0]='B';p2=1;break;}
    }
   case 'n':
    {
     if(num(2)==1)
     { cout<<"你輸入的已有棋子";goto loop2;}
     else
     { num1(2);
     t[2][1]='B';p2=1;break;}
    }
   case 'm':
    {
     if(num(3)==1)
     { cout<<"你輸入的已有棋子";goto loop2;}
     else
     { num1(3);
     t[2][2]='B';p2=1;break;}
    }
   }

  }
  
  if(p2==1)
  {
   Tcout2();
   if(Dwinplayer())
   {
    system("color 1a");
    system("cls");
    cout<<"恭喜"<<win<<"勝利"<<endl;goto loop3;
   }
   p2=2;
   
  }

 }
loop3: int op=1;

}
int Tictoc::num(int i)
{
 int i1;
 for(int i2=0;i2<8;i2++)
 {
  if(y[i2]==i)
  {
   return i1=1;
   break;
  }
  
 }
 return i1=2;
}
void Tictoc::num1(int i)
{
 for(int i1=0;i1<8;i1++)
 {
  if(y[i1]==0)
  {
   y[i1]=i;
   R=i;
   break;
  }
 }
}

bool Tictoc::Dwinplayer()
{
 if(t[0][0] == t[0][1] && t[0][1] == t[0][2] && t[0][0] != ' ' && t[0][1] != ' ' && t[0][2] != ' ')
 {
  win = t[0][0];
  return true;
 }
 if(t[1][0] == t[1][1] && t[1][1] == t[1][2] && t[1][0] != ' ' && t[1][1] != ' ' && t[1][2] != ' ')
 {
  win = t[1][0];
  return true;
 }
 if(t[2][0] == t[2][1] && t[2][1] == t[2][2] && t[2][0] != ' ' && t[2][1] != ' ' && t[2][2] != ' ')
 {
  win = t[2][0];
  return true;
 }

 if(t[0][0] == t[1][0] && t[1][0] == t[2][0] && t[0][0] != ' ' && t[1][0] != ' ' && t[2][0] != ' ')
 {
  win = t[0][0];
  return true;
 }
 if(t[0][1] == t[1][1] && t[1][1] == t[2][1] && t[0][1] != ' ' && t[1][1] != ' ' && t[2][1] != ' ')
 {
  win = t[0][1];
  return true;
 }
 if(t[0][2] == t[1][2] && t[1][2] == t[2][2] && t[0][2] != ' ' && t[1][2] != ' ' && t[2][2] != ' ')
 {
  win = t[0][2];
  return true;
 }

 if(t[0][0] == t[1][1] && t[1][1] == t[2][2] && t[0][0] != ' ' && t[1][1] != ' ' && t[2][2] != ' ')
 {
  win = t[0][0];
  return true;
 }
 if(t[0][2] == t[1][1] && t[1][1] == t[2][0] && t[0][2] != ' ' && t[1][1] != ' ' && t[2][0] != ' ')
 {
  win = t[0][2];
  return true;
 }
 return false;
}

void Tictoc::Tcout1()
{
 cout<<"┏━"<<"━┳━"<<"━┳━"<<"━┓"<<endl;

}
void Tictoc::Tcout2()
{
 system("cls");
 Tcout1();
 switch(R)
 {
  case 7:cout<<"┃ "<<t[0][0]<<"  ┃ "<<t[0][1]<<"  ┃  "<<t[0][2]<<" ┃"<<endl;break;
  case 8:cout<<"┃ "<<t[0][0]<<"  ┃ "<<t[0][1]<<"  ┃  "<<t[0][2]<<" ┃"<<endl;break;
  case 9:cout<<"┃ "<<t[0][0]<<"  ┃ "<<t[0][1]<<"  ┃  "<<t[0][2]<<" ┃"<<endl;break;
  default:cout<<"┃  "<<t[0][0]<<" ┃  "<<t[0][1]<<" ┃  "<<t[0][2]<<" ┃"<<endl;break;
 }
 cout<<"┣━"<<"━╋━"<<"━╋━"<<"━┫"<<endl;
 switch(R)
 {
  case 4:cout<<"┃ "<<t[1][0]<<"  ┃ "<<t[1][1]<<"  ┃  "<<t[1][2]<<" ┃"<<endl;break;
  case 5:cout<<"┃ "<<t[1][0]<<"  ┃ "<<t[1][1]<<"  ┃  "<<t[1][2]<<" ┃"<<endl;break;
  case 6:cout<<"┃ "<<t[1][0]<<"  ┃ "<<t[1][1]<<"  ┃  "<<t[1][2]<<" ┃"<<endl;break;
  default:cout<<"┃  "<<t[1][0]<<" ┃  "<<t[1][1]<<" ┃  "<<t[1][2]<<" ┃"<<endl;break;
 }
 cout<<"┣━"<<"━╋━"<<"━╋━"<<"━┫"<<endl;
 switch(R)
 {
  case 1:cout<<"┃ "<<t[2][0]<<"  ┃ "<<t[2][1]<<"  ┃  "<<t[2][2]<<" ┃"<<endl;break;
  case 2:cout<<"┃ "<<t[2][0]<<"  ┃ "<<t[2][1]<<"  ┃  "<<t[2][2]<<" ┃"<<endl;break;
  case 3:cout<<"┃ "<<t[2][0]<<"  ┃ "<<t[2][1]<<"  ┃  "<<t[2][2]<<" ┃"<<endl;break;
  default:cout<<"┃  "<<t[2][0]<<" ┃  "<<t[2][1]<<" ┃  "<<t[2][2]<<" ┃"<<endl;break;
 }
 Tcout3();

}
void Tictoc::Tcout3()
{
 cout<<"┗━"<<"━┻━"<<"━┻━"<<"━┛"<<endl;
}
int main()
{
 Tictoc t1;
 t1.display();
 system("pause");
 return 0;
}

 

 

因為我在其他地方都有發表這篇文章,亦遇到別人說的My Code有BUG,所以我也去看看,問題別人也直接說了,現在改好了請大家鑒賞!

#include<iostream>
 #include<stdlib.h>
 #include<iomanip>
 
using namespace std;
 
void years_and_month(int y,int m);//將日曆顯示出來的無傳回值函數
 int year_leap(int n);//判斷閏年的函數,所以是有傳回值
 
int main()
 {
  int year,month;
 
 while(1)
  {
  system("color a");//改變字型顏色
  cout<<"請輸入年和月:";
  cin>>year>>month;
  if (cin.fail())
 break;
  else
   if(month>1&&month<12)
  years_and_month(year,month);
   else
    cout<<"error"<<endl;
  system("pause");
  system("cls");
 
  }
  return 0;
 }
 void years_and_month(int y,int m)
 {
  long int year_days=0;//從公元第一年開始
  int  year_starts=1,per_year_starts;
  int months[]={31,28,31,30,31,30,31,31,30,31,30,31,29};
  while(year_starts<y)//從這裡開始統計
  {
   if(year_leap(year_starts))//調用函數years_leap,判斷years_starts是否為閏年
    per_year_starts=366;
   else
    per_year_starts=365;
   year_starts++;
   year_days=year_days+per_year_starts;
  }
  for(int i=0;i<m-1;i++)
   year_days=months[i]+year_days;
  
   switch(m)
  {
   case 1:
    cout<<"January\n";break;
   case 2:
    cout<<"February\n";break;
   case 3:
    cout<<"March\n";break;
   case 4:
    cout<<"April\n";break;
   case 5:
    cout<<"May\n";break;
   case 6:
    cout<<"June\n";break;
   case 7:
    cout<<"July\n";break;
   case 8:
    cout<<"August\n";break;
   case 9:
    cout<<"September\n";break;
   case 10:
    cout<<"October\n";break;
   case 11:
    cout<<"November\n";break;
   case 12:
    cout<<"December\n";break;
  }
  cout<<" Mon Tue Wed Thu Fri Sat Sun\n";
  int t,day;
  t=year_days%7;//從公元開始統計下來的天數除以7,用來控制每一個星期空幾天
  if(t!=0)
   for(int i=0;i<t;i++)
    cout<<"    ";//先空4個格
   day=1;//每個月的第一天的號數
   if(year_leap(y)&&m==2)//當到2月份的時候,要判斷輸入的年是否為閏年
    while(day<months[12])
    {
     if(day>1)
      if(year_days%7==0)//控制一個星期為7天的時候,自動換行
       cout<<endl;
     cout<<setw(4)<<day;//製造日曆的間隔
     year_days++;//保持上面換行能夠成功
     day++;
    }
   else
    while(day<=months[m-1])//用事先temp在for語句裡面的值控制每個月的天數
    {
     if(day>1)
      if(year_days%7==0)
       cout<<endl;
     cout<<setw(4)<<day;
     year_days++;
     day++;
    }cout<<endl;
 
 
}
 
int year_leap(int n)
 {
  if((n%4==0&&n%100!=0)||n%400==0)
   return 1;
  else
   return 0;
 
}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.