置頂隨筆
人人對(duì)戰(zhàn):
#include<iostream>
using namespace std;
void wz()
{
cout<<"下面開(kāi)始五子棋比賽,一號(hào)選手用方塊符號(hào),二號(hào)用心型符號(hào):"<<endl<<endl;
for(int i=3;i>0;i--)
{
cout<<i<<" ";
}
cout<<"開(kāi)始-----------"<<endl<<endl;
}
int hs()
{
int x,y,i=0,j=1;
char d[80][80];
//初始化---
for(x=0;x<25;x+=3)
{
for(y=0;y<80;y+=3)
{
d[x][y]='+';
}
}
//第一行數(shù)字--
for(x=0;x<10;x++)
cout<<x<<" ";
for(x=10;x<27;x++)
cout<<x<<" ";
cout<<endl;
//輸出棋盤(pán)--
for(x=0;x<25;x+=3)
{
cout<<j<<" ";j++;
for(y=0;y<76;y+=3)
{
cout<<d[x][y]<<" ";
}
cout<<endl;
}
while(1)
{
int a,b;
if(i%2==0)
cout<<"由玩家一下棋:"<<endl;
else
cout<<"由玩家二下棋:"<<endl;
cin>>a>>b;
if(i%2==1)
{
if(d[(a-1)*3][(b-1)*3]=='+')
d[(a-1)*3][(b-1)*3]=3;
else
{
cout<<"-----------------------------不能覆蓋棋子:"<<endl;
continue;
}
}
else
{
if(d[(a-1)*3][(b-1)*3]=='+')
d[(a-1)*3][(b-1)*3]=1;
else
{
cout<<"-----------------------------不能覆蓋棋子:"<<endl;
continue;
}
}
i++;
j=1;
//第一行數(shù)字---
for(x=0;x<10;x++)
cout<<x<<" ";
for(x=10;x<27;x++)
cout<<x<<" ";
cout<<endl;
for(x=0;x<25;x+=3)
{
cout<<j<<" ";j++;
for(y=0;y<76;y+=3)
{
cout<<d[x][y]<<" ";
}
cout<<endl;
}
//判斷是否是五個(gè)
if(//橫著
d[(a-1)*3][(b-1)*3]==1&&d[(a-1)*3][(b)*3]==1&&d[(a-1)*3][(b+1)*3]==1&&d[(a-1)*3][(b+2)*3]==1&&d[(a-1)*3][(b+3)*3]==1
||d[(a-1)*3][(b-2)*3]==1&&d[(a-1)*3][(b-1)*3]==1&&d[(a-1)*3][(b)*3]==1&&d[(a-1)*3][(b+1)*3]==1&&d[(a-1)*3][(b+2)*3]==1
||d[(a-1)*3][(b-3)*3]==1&&d[(a-1)*3][(b-2)*3]==1&&d[(a-1)*3][(b-1)*3]==1&&d[(a-1)*3][(b)*3]==1&&d[(a-1)*3][(b+1)*3]==1
||d[(a-1)*3][(b-4)*3]==1&&d[(a-1)*3][(b-3)*3]==1&&d[(a-1)*3][(b-2)*3]==1&&d[(a-1)*3][(b-1)*3]==1&&d[(a-1)*3][(b)*3]==1
||d[(a-1)*3][(b-5)*3]==1&&d[(a-1)*3][(b-4)*3]==1&&d[(a-1)*3][(b-3)*3]==1&&d[(a-1)*3][(b-2)*3]==1&&d[(a-1)*3][(b-1)*3]==1
//從左上到右下
||d[(a-1)*3][(b-1)*3]==1&&d[a*3][b*3]==1&&d[(a+1)*3][(b+1)*3]==1&&d[(a+2)*3][(b+2)*3]==1&&d[(a+3)*3][(b+3)*3]==1
||d[(a-2)*3][(b-2)*3]==1&&d[(a-1)*3][(b-1)*3]==1&&d[a*3][b*3]==1&&d[(a+1)*3][(b+1)*3]==1&&d[(a+2)*3][(b+2)*3]==1
||d[(a-3)*3][(b-3)*3]==1&&d[(a-2)*3][(b-2)*3]==1&&d[(a-1)*3][(b-1)*3]==1&&d[a*3][b*3]==1&&d[(a+1)*3][(b+1)*3]==1
||d[(a-4)*3][(b-4)*3]==1&&d[(a-3)*3][(b-3)*3]==1&&d[(a-2)*3][(b-2)*3]==1&&d[(a-1)*3][(b-1)*3]==1&&d[a*3][b*3]==1
||d[(a-5)*3][(b-5)*3]==1&&d[(a-4)*3][(b-4)*3]==1&&d[(a-3)*3][(b-3)*3]==1&&d[(a-2)*3][(b-2)*3]==1&&d[(a-1)*3][(b-1)*3]==1
//從右上到左下
||d[(a-1)*3][(b-1)*3]==1&&d[(a-2)*3][b*3]==1&&d[a-3][b+1]==1&&d[a-4][b+2]==1&&d[a-5][b+3]==1
||d[a*3][(b-2)*3]==1&&d[(a-1)*3][(b-1)*3]==1&&d[(a-2)*3][b*3]==1&&d[(a-3)*3][(b+1)*3]==1&&d[(a-4)*3][(b+2)*3]==1
||d[(a+1)*3][(b-3)*3]==1&&d[a*3][(b-2)*3]==1&&d[(a-1)*3][(b-1)*3]==1&&d[(a-2)*3][b*3]==1&&d[(a-3)*3][(b+1)*3]==1
||d[(a+2)*3][(b-4)*3]==1&&d[(a+1)*3][(b-3)*3]==1&&d[a*3][(b-2)*3]==1&&d[(a-1)*3][(b-1)*3]==1&&d[(a-2)*3][b*3]==1
||d[(a+3)*3][(b-5)*3]==1&&d[(a+2)*3][(b-4)*3]==1&&d[(a+1)*3][(b-3)*3]==1&&d[a*3][(b-2)*3]==1&&d[(a-1)*3][(b-1)*3]==1
//豎著
||d[(a-1)*3][(b-1)*3]==1&&d[a*3][(b-1)*3]==1&&d[(a+1)*3][(b-1)*3]==1&&d[(a+2)*3][(b-1)*3]==1&&d[(a+3)*3][(b-1)*3]==1
||d[(a-2)*3][(b-1)*3]==1&&d[(a-1)*3][(b-1)*3]==1&&d[a*3][(b-1)*3]==1&&d[(a+1)*3][(b-1)*3]==1&&d[(a+2)*3][(b-1)*3]==1
||d[(a-3)*3][(b-1)*3]==1&&d[(a-2)*3][(b-1)*3]==1&&d[(a-1)*3][(b-1)*3]==1&&d[a*3][(b-1)*3]==1&&d[(a+1)*3][(b-1)*3]==1
||d[(a-4)*3][(b-1)*3]==1&&d[(a-3)*3][(b-1)*3]==1&&d[(a-2)*3][(b-1)*3]==1&&d[(a-1)*3][(b-1)*3]==1&&d[a*3][(b-1)*3]==1
||d[(a-5)*3][(b-1)*3]==1&&d[(a-4)*3][(b-1)*3]==1&&d[(a-3)*3][(b-1)*3]==1&&d[(a-2)*3][(b-1)*3]==1&&d[(a-1)*3][(b-1)*3]==1
)
{
cout<<endl<<"玩家一獲勝"<<endl;break;
}
if(//橫著
d[(a-1)*3][(b-1)*3]==3&&d[(a-1)*3][(b)*3]==3&&d[(a-1)*3][(b+1)*3]==3&&d[(a-1)*3][(b+2)*3]==3&&d[(a-1)*3][(b+3)*3]==3
||d[(a-1)*3][(b-2)*3]==3&&d[(a-1)*3][(b-1)*3]==3&&d[(a-1)*3][(b)*3]==3&&d[(a-1)*3][(b+1)*3]==3&&d[(a-1)*3][(b+2)*3]==3
||d[(a-1)*3][(b-3)*3]==3&&d[(a-1)*3][(b-2)*3]==3&&d[(a-1)*3][(b-1)*3]==3&&d[(a-1)*3][(b)*3]==3&&d[(a-1)*3][(b+1)*3]==3
||d[(a-1)*3][(b-4)*3]==3&&d[(a-1)*3][(b-3)*3]==3&&d[(a-1)*3][(b-2)*3]==3&&d[(a-1)*3][(b-1)*3]==3&&d[(a-1)*3][(b)*3]==3
||d[(a-1)*3][(b-5)*3]==3&&d[(a-1)*3][(b-4)*3]==3&&d[(a-1)*3][(b-3)*3]==3&&d[(a-1)*3][(b-2)*3]==3&&d[(a-1)*3][(b-1)*3]==3
//從左上到右下
||d[(a-1)*3][(b-1)*3]==3&&d[a*3][b*3]==3&&d[(a+1)*3][(b+1)*3]==3&&d[(a+2)*3][(b+2)*3]==3&&d[(a+3)*3][(b+3)*3]==3
||d[(a-2)*3][(b-2)*3]==3&&d[(a-1)*3][(b-1)*3]==3&&d[a*3][b*3]==3&&d[(a+1)*3][(b+1)*3]==3&&d[(a+2)*3][(b+2)*3]==3
||d[(a-3)*3][(b-3)*3]==3&&d[(a-2)*3][(b-2)*3]==3&&d[(a-1)*3][(b-1)*3]==3&&d[a*3][b*3]==3&&d[(a+1)*3][(b+1)*3]==3
||d[(a-4)*3][(b-4)*3]==3&&d[(a-3)*3][(b-3)*3]==3&&d[(a-2)*3][(b-2)*3]==3&&d[(a-1)*3][(b-1)*3]==3&&d[a*3][b*3]==3
||d[(a-5)*3][(b-5)*3]==3&&d[(a-4)*3][(b-4)*3]==3&&d[(a-3)*3][(b-3)*3]==3&&d[(a-2)*3][(b-2)*3]==3&&d[(a-1)*3][(b-1)*3]==3
//從右上到左下
||d[(a-1)*3][(b-1)*3]==3&&d[(a-2)*3][b*3]==3&&d[a-3][b+1]==3&&d[a-4][b+2]==3&&d[a-5][b+3]==3
||d[a*3][(b-2)*3]==3&&d[(a-1)*3][(b-1)*3]==3&&d[(a-2)*3][b*3]==3&&d[(a-3)*3][(b+1)*3]==3&&d[(a-4)*3][(b+2)*3]==3
||d[(a+1)*3][(b-3)*3]==3&&d[a*3][(b-2)*3]==3&&d[(a-1)*3][(b-1)*3]==3&&d[(a-2)*3][b*3]==3&&d[(a-3)*3][(b+1)*3]==3
||d[(a+2)*3][(b-4)*3]==3&&d[(a+1)*3][(b-3)*3]==3&&d[a*3][(b-2)*3]==3&&d[(a-1)*3][(b-1)*3]==3&&d[(a-2)*3][b*3]==3
||d[(a+3)*3][(b-5)*3]==3&&d[(a+2)*3][(b-4)*3]==3&&d[(a+1)*3][(b-3)*3]==3&&d[a*3][(b-2)*3]==3&&d[(a-1)*3][(b-1)*3]==3
//豎著
||d[(a-1)*3][(b-1)*3]==3&&d[a*3][(b-1)*3]==3&&d[(a+1)*3][(b-1)*3]==3&&d[(a+2)*3][(b-1)*3]==3&&d[(a+3)*3][(b-1)*3]==3
||d[(a-2)*3][(b-1)*3]==3&&d[(a-1)*3][(b-1)*3]==3&&d[a*3][(b-1)*3]==3&&d[(a+1)*3][(b-1)*3]==3&&d[(a+2)*3][(b-1)*3]==3
||d[(a-3)*3][(b-1)*3]==3&&d[(a-2)*3][(b-1)*3]==3&&d[(a-1)*3][(b-1)*3]==3&&d[a*3][(b-1)*3]==3&&d[(a+1)*3][(b-1)*3]==3
||d[(a-4)*3][(b-1)*3]==3&&d[(a-3)*3][(b-1)*3]==3&&d[(a-2)*3][(b-1)*3]==3&&d[(a-1)*3][(b-1)*3]==3&&d[a*3][(b-1)*3]==3
||d[(a-5)*3][(b-1)*3]==3&&d[(a-4)*3][(b-1)*3]==3&&d[(a-3)*3][(b-1)*3]==3&&d[(a-2)*3][(b-1)*3]==3&&d[(a-1)*3][(b-1)*3]==3
)
{
cout<<endl<<"玩家二獲勝"<<endl;break;
}
}
return 0;
}
int main()
{
char a;
wz();
hs();
while(1)
{
cout<<"按P重新開(kāi)始:";
cin>>a;
if(a=='p')
hs();
else
break;
}
return 0;
}
人機(jī)對(duì)戰(zhàn)暫時(shí)沒(méi)想出來(lái),有知道的希望指教一下!!感激----
今天在學(xué)習(xí)移位運(yùn)算符和取反運(yùn)算符的時(shí)候,發(fā)現(xiàn)一些問(wèn)題!現(xiàn)在呢在這里說(shuō)一下自己的感悟!
先看下面一道 取反和移位相結(jié)合的問(wèn)題
#include<stdio.h>
int main()
{
char a=0x11;
char b;
b=~a<<2;
printf("%d\n",b);
b=~(a<<2);
printf("%d\n",b);
b=~a>>2;
printf("%d\n",b);
b=~(a>>2);
printf("%d\n",b);
return 0;
}
輸出結(jié)果是:
-72
-69
-5
-5
剛開(kāi)始在想為什么相同的操作(只是移位方向不同),為什么上面兩個(gè)結(jié)果不一樣,而下面兩個(gè)結(jié)果卻是一樣的呢。有些人在疑問(wèn)是不是因?yàn)橄旅鎯蓚€(gè)表達(dá)式都是先移位后取反的呢?我可以肯定不是這樣的,但是不能解釋這個(gè)結(jié)果。這個(gè)問(wèn)題我糾結(jié)了半天! 不過(guò)對(duì)下面的知識(shí)了解之后便豁然開(kāi)朗了。
移位運(yùn)算符分為左移運(yùn)算符和右移運(yùn)算符。
當(dāng)對(duì)一個(gè)數(shù)執(zhí)行左移運(yùn)算的時(shí)候,右邊的空位是用0補(bǔ)齊。
而當(dāng)對(duì)一個(gè)數(shù)執(zhí)行右移運(yùn)算的時(shí)候,左邊的空位是用符號(hào)位補(bǔ)齊的(這是我之前沒(méi)注意的地方,慚愧)。
解體步驟如下:
a=0x11=0001 0001
~a=1110 1110
a<<2=0100 0100
a>>2=0000 0100
~a<<2=1011 1000
現(xiàn)在 1011 1000是補(bǔ)碼,轉(zhuǎn)化成原碼之后是
1100 1000=-72 -72是十進(jìn)制
~(a<<2)=0100 0100
轉(zhuǎn)化為原碼之后是 1100 0101=-69
~a>>2=1111 1011(注意現(xiàn)在是用1補(bǔ)齊的,因?yàn)閪a的符號(hào)位是1)
轉(zhuǎn)化為原碼之后是 1000 0101=-5
~(a>>2)=1111 1011
轉(zhuǎn)化為原碼之后是 1000 0101=-5
明白之后心情很好,所以在這里分享一下。呵呵
2012年4月12日
人人對(duì)戰(zhàn):
#include<iostream>
using namespace std;
void wz()
{
cout<<"下面開(kāi)始五子棋比賽,一號(hào)選手用方塊符號(hào),二號(hào)用心型符號(hào):"<<endl<<endl;
for(int i=3;i>0;i--)
{
cout<<i<<" ";
}
cout<<"開(kāi)始-----------"<<endl<<endl;
}
int hs()
{
int x,y,i=0,j=1;
char d[80][80];
//初始化---
for(x=0;x<25;x+=3)
{
for(y=0;y<80;y+=3)
{
d[x][y]='+';
}
}
//第一行數(shù)字--
for(x=0;x<10;x++)
cout<<x<<" ";
for(x=10;x<27;x++)
cout<<x<<" ";
cout<<endl;
//輸出棋盤(pán)--
for(x=0;x<25;x+=3)
{
cout<<j<<" ";j++;
for(y=0;y<76;y+=3)
{
cout<<d[x][y]<<" ";
}
cout<<endl;
}
while(1)
{
int a,b;
if(i%2==0)
cout<<"由玩家一下棋:"<<endl;
else
cout<<"由玩家二下棋:"<<endl;
cin>>a>>b;
if(i%2==1)
{
if(d[(a-1)*3][(b-1)*3]=='+')
d[(a-1)*3][(b-1)*3]=3;
else
{
cout<<"-----------------------------不能覆蓋棋子:"<<endl;
continue;
}
}
else
{
if(d[(a-1)*3][(b-1)*3]=='+')
d[(a-1)*3][(b-1)*3]=1;
else
{
cout<<"-----------------------------不能覆蓋棋子:"<<endl;
continue;
}
}
i++;
j=1;
//第一行數(shù)字---
for(x=0;x<10;x++)
cout<<x<<" ";
for(x=10;x<27;x++)
cout<<x<<" ";
cout<<endl;
for(x=0;x<25;x+=3)
{
cout<<j<<" ";j++;
for(y=0;y<76;y+=3)
{
cout<<d[x][y]<<" ";
}
cout<<endl;
}
//判斷是否是五個(gè)
if(//橫著
d[(a-1)*3][(b-1)*3]==1&&d[(a-1)*3][(b)*3]==1&&d[(a-1)*3][(b+1)*3]==1&&d[(a-1)*3][(b+2)*3]==1&&d[(a-1)*3][(b+3)*3]==1
||d[(a-1)*3][(b-2)*3]==1&&d[(a-1)*3][(b-1)*3]==1&&d[(a-1)*3][(b)*3]==1&&d[(a-1)*3][(b+1)*3]==1&&d[(a-1)*3][(b+2)*3]==1
||d[(a-1)*3][(b-3)*3]==1&&d[(a-1)*3][(b-2)*3]==1&&d[(a-1)*3][(b-1)*3]==1&&d[(a-1)*3][(b)*3]==1&&d[(a-1)*3][(b+1)*3]==1
||d[(a-1)*3][(b-4)*3]==1&&d[(a-1)*3][(b-3)*3]==1&&d[(a-1)*3][(b-2)*3]==1&&d[(a-1)*3][(b-1)*3]==1&&d[(a-1)*3][(b)*3]==1
||d[(a-1)*3][(b-5)*3]==1&&d[(a-1)*3][(b-4)*3]==1&&d[(a-1)*3][(b-3)*3]==1&&d[(a-1)*3][(b-2)*3]==1&&d[(a-1)*3][(b-1)*3]==1
//從左上到右下
||d[(a-1)*3][(b-1)*3]==1&&d[a*3][b*3]==1&&d[(a+1)*3][(b+1)*3]==1&&d[(a+2)*3][(b+2)*3]==1&&d[(a+3)*3][(b+3)*3]==1
||d[(a-2)*3][(b-2)*3]==1&&d[(a-1)*3][(b-1)*3]==1&&d[a*3][b*3]==1&&d[(a+1)*3][(b+1)*3]==1&&d[(a+2)*3][(b+2)*3]==1
||d[(a-3)*3][(b-3)*3]==1&&d[(a-2)*3][(b-2)*3]==1&&d[(a-1)*3][(b-1)*3]==1&&d[a*3][b*3]==1&&d[(a+1)*3][(b+1)*3]==1
||d[(a-4)*3][(b-4)*3]==1&&d[(a-3)*3][(b-3)*3]==1&&d[(a-2)*3][(b-2)*3]==1&&d[(a-1)*3][(b-1)*3]==1&&d[a*3][b*3]==1
||d[(a-5)*3][(b-5)*3]==1&&d[(a-4)*3][(b-4)*3]==1&&d[(a-3)*3][(b-3)*3]==1&&d[(a-2)*3][(b-2)*3]==1&&d[(a-1)*3][(b-1)*3]==1
//從右上到左下
||d[(a-1)*3][(b-1)*3]==1&&d[(a-2)*3][b*3]==1&&d[a-3][b+1]==1&&d[a-4][b+2]==1&&d[a-5][b+3]==1
||d[a*3][(b-2)*3]==1&&d[(a-1)*3][(b-1)*3]==1&&d[(a-2)*3][b*3]==1&&d[(a-3)*3][(b+1)*3]==1&&d[(a-4)*3][(b+2)*3]==1
||d[(a+1)*3][(b-3)*3]==1&&d[a*3][(b-2)*3]==1&&d[(a-1)*3][(b-1)*3]==1&&d[(a-2)*3][b*3]==1&&d[(a-3)*3][(b+1)*3]==1
||d[(a+2)*3][(b-4)*3]==1&&d[(a+1)*3][(b-3)*3]==1&&d[a*3][(b-2)*3]==1&&d[(a-1)*3][(b-1)*3]==1&&d[(a-2)*3][b*3]==1
||d[(a+3)*3][(b-5)*3]==1&&d[(a+2)*3][(b-4)*3]==1&&d[(a+1)*3][(b-3)*3]==1&&d[a*3][(b-2)*3]==1&&d[(a-1)*3][(b-1)*3]==1
//豎著
||d[(a-1)*3][(b-1)*3]==1&&d[a*3][(b-1)*3]==1&&d[(a+1)*3][(b-1)*3]==1&&d[(a+2)*3][(b-1)*3]==1&&d[(a+3)*3][(b-1)*3]==1
||d[(a-2)*3][(b-1)*3]==1&&d[(a-1)*3][(b-1)*3]==1&&d[a*3][(b-1)*3]==1&&d[(a+1)*3][(b-1)*3]==1&&d[(a+2)*3][(b-1)*3]==1
||d[(a-3)*3][(b-1)*3]==1&&d[(a-2)*3][(b-1)*3]==1&&d[(a-1)*3][(b-1)*3]==1&&d[a*3][(b-1)*3]==1&&d[(a+1)*3][(b-1)*3]==1
||d[(a-4)*3][(b-1)*3]==1&&d[(a-3)*3][(b-1)*3]==1&&d[(a-2)*3][(b-1)*3]==1&&d[(a-1)*3][(b-1)*3]==1&&d[a*3][(b-1)*3]==1
||d[(a-5)*3][(b-1)*3]==1&&d[(a-4)*3][(b-1)*3]==1&&d[(a-3)*3][(b-1)*3]==1&&d[(a-2)*3][(b-1)*3]==1&&d[(a-1)*3][(b-1)*3]==1
)
{
cout<<endl<<"玩家一獲勝"<<endl;break;
}
if(//橫著
d[(a-1)*3][(b-1)*3]==3&&d[(a-1)*3][(b)*3]==3&&d[(a-1)*3][(b+1)*3]==3&&d[(a-1)*3][(b+2)*3]==3&&d[(a-1)*3][(b+3)*3]==3
||d[(a-1)*3][(b-2)*3]==3&&d[(a-1)*3][(b-1)*3]==3&&d[(a-1)*3][(b)*3]==3&&d[(a-1)*3][(b+1)*3]==3&&d[(a-1)*3][(b+2)*3]==3
||d[(a-1)*3][(b-3)*3]==3&&d[(a-1)*3][(b-2)*3]==3&&d[(a-1)*3][(b-1)*3]==3&&d[(a-1)*3][(b)*3]==3&&d[(a-1)*3][(b+1)*3]==3
||d[(a-1)*3][(b-4)*3]==3&&d[(a-1)*3][(b-3)*3]==3&&d[(a-1)*3][(b-2)*3]==3&&d[(a-1)*3][(b-1)*3]==3&&d[(a-1)*3][(b)*3]==3
||d[(a-1)*3][(b-5)*3]==3&&d[(a-1)*3][(b-4)*3]==3&&d[(a-1)*3][(b-3)*3]==3&&d[(a-1)*3][(b-2)*3]==3&&d[(a-1)*3][(b-1)*3]==3
//從左上到右下
||d[(a-1)*3][(b-1)*3]==3&&d[a*3][b*3]==3&&d[(a+1)*3][(b+1)*3]==3&&d[(a+2)*3][(b+2)*3]==3&&d[(a+3)*3][(b+3)*3]==3
||d[(a-2)*3][(b-2)*3]==3&&d[(a-1)*3][(b-1)*3]==3&&d[a*3][b*3]==3&&d[(a+1)*3][(b+1)*3]==3&&d[(a+2)*3][(b+2)*3]==3
||d[(a-3)*3][(b-3)*3]==3&&d[(a-2)*3][(b-2)*3]==3&&d[(a-1)*3][(b-1)*3]==3&&d[a*3][b*3]==3&&d[(a+1)*3][(b+1)*3]==3
||d[(a-4)*3][(b-4)*3]==3&&d[(a-3)*3][(b-3)*3]==3&&d[(a-2)*3][(b-2)*3]==3&&d[(a-1)*3][(b-1)*3]==3&&d[a*3][b*3]==3
||d[(a-5)*3][(b-5)*3]==3&&d[(a-4)*3][(b-4)*3]==3&&d[(a-3)*3][(b-3)*3]==3&&d[(a-2)*3][(b-2)*3]==3&&d[(a-1)*3][(b-1)*3]==3
//從右上到左下
||d[(a-1)*3][(b-1)*3]==3&&d[(a-2)*3][b*3]==3&&d[a-3][b+1]==3&&d[a-4][b+2]==3&&d[a-5][b+3]==3
||d[a*3][(b-2)*3]==3&&d[(a-1)*3][(b-1)*3]==3&&d[(a-2)*3][b*3]==3&&d[(a-3)*3][(b+1)*3]==3&&d[(a-4)*3][(b+2)*3]==3
||d[(a+1)*3][(b-3)*3]==3&&d[a*3][(b-2)*3]==3&&d[(a-1)*3][(b-1)*3]==3&&d[(a-2)*3][b*3]==3&&d[(a-3)*3][(b+1)*3]==3
||d[(a+2)*3][(b-4)*3]==3&&d[(a+1)*3][(b-3)*3]==3&&d[a*3][(b-2)*3]==3&&d[(a-1)*3][(b-1)*3]==3&&d[(a-2)*3][b*3]==3
||d[(a+3)*3][(b-5)*3]==3&&d[(a+2)*3][(b-4)*3]==3&&d[(a+1)*3][(b-3)*3]==3&&d[a*3][(b-2)*3]==3&&d[(a-1)*3][(b-1)*3]==3
//豎著
||d[(a-1)*3][(b-1)*3]==3&&d[a*3][(b-1)*3]==3&&d[(a+1)*3][(b-1)*3]==3&&d[(a+2)*3][(b-1)*3]==3&&d[(a+3)*3][(b-1)*3]==3
||d[(a-2)*3][(b-1)*3]==3&&d[(a-1)*3][(b-1)*3]==3&&d[a*3][(b-1)*3]==3&&d[(a+1)*3][(b-1)*3]==3&&d[(a+2)*3][(b-1)*3]==3
||d[(a-3)*3][(b-1)*3]==3&&d[(a-2)*3][(b-1)*3]==3&&d[(a-1)*3][(b-1)*3]==3&&d[a*3][(b-1)*3]==3&&d[(a+1)*3][(b-1)*3]==3
||d[(a-4)*3][(b-1)*3]==3&&d[(a-3)*3][(b-1)*3]==3&&d[(a-2)*3][(b-1)*3]==3&&d[(a-1)*3][(b-1)*3]==3&&d[a*3][(b-1)*3]==3
||d[(a-5)*3][(b-1)*3]==3&&d[(a-4)*3][(b-1)*3]==3&&d[(a-3)*3][(b-1)*3]==3&&d[(a-2)*3][(b-1)*3]==3&&d[(a-1)*3][(b-1)*3]==3
)
{
cout<<endl<<"玩家二獲勝"<<endl;break;
}
}
return 0;
}
int main()
{
char a;
wz();
hs();
while(1)
{
cout<<"按P重新開(kāi)始:";
cin>>a;
if(a=='p')
hs();
else
break;
}
return 0;
}
人機(jī)對(duì)戰(zhàn)暫時(shí)沒(méi)想出來(lái),有知道的希望指教一下!!感激----
2012年4月8日
今天在學(xué)習(xí)移位運(yùn)算符和取反運(yùn)算符的時(shí)候,發(fā)現(xiàn)一些問(wèn)題!現(xiàn)在呢在這里說(shuō)一下自己的感悟!
先看下面一道 取反和移位相結(jié)合的問(wèn)題
#include<stdio.h>
int main()
{
char a=0x11;
char b;
b=~a<<2;
printf("%d\n",b);
b=~(a<<2);
printf("%d\n",b);
b=~a>>2;
printf("%d\n",b);
b=~(a>>2);
printf("%d\n",b);
return 0;
}
輸出結(jié)果是:
-72
-69
-5
-5
剛開(kāi)始在想為什么相同的操作(只是移位方向不同),為什么上面兩個(gè)結(jié)果不一樣,而下面兩個(gè)結(jié)果卻是一樣的呢。有些人在疑問(wèn)是不是因?yàn)橄旅鎯蓚€(gè)表達(dá)式都是先移位后取反的呢?我可以肯定不是這樣的,但是不能解釋這個(gè)結(jié)果。這個(gè)問(wèn)題我糾結(jié)了半天! 不過(guò)對(duì)下面的知識(shí)了解之后便豁然開(kāi)朗了。
移位運(yùn)算符分為左移運(yùn)算符和右移運(yùn)算符。
當(dāng)對(duì)一個(gè)數(shù)執(zhí)行左移運(yùn)算的時(shí)候,右邊的空位是用0補(bǔ)齊。
而當(dāng)對(duì)一個(gè)數(shù)執(zhí)行右移運(yùn)算的時(shí)候,左邊的空位是用符號(hào)位補(bǔ)齊的(這是我之前沒(méi)注意的地方,慚愧)。
解體步驟如下:
a=0x11=0001 0001
~a=1110 1110
a<<2=0100 0100
a>>2=0000 0100
~a<<2=1011 1000
現(xiàn)在 1011 1000是補(bǔ)碼,轉(zhuǎn)化成原碼之后是
1100 1000=-72 -72是十進(jìn)制
~(a<<2)=0100 0100
轉(zhuǎn)化為原碼之后是 1100 0101=-69
~a>>2=1111 1011(注意現(xiàn)在是用1補(bǔ)齊的,因?yàn)閪a的符號(hào)位是1)
轉(zhuǎn)化為原碼之后是 1000 0101=-5
~(a>>2)=1111 1011
轉(zhuǎn)化為原碼之后是 1000 0101=-5
明白之后心情很好,所以在這里分享一下。呵呵