欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
為什么我這個單片機五子棋C語言代碼判斷不了水平的五連子?
[打印本頁]
作者:
木子人杰
時間:
2022-11-7 19:35
標題:
為什么我這個單片機五子棋C語言代碼判斷不了水平的五連子?
unsigned char idata qipan[8][8]={0}; //棋盤
unsigned char x=0,y=0,z=7,y=7;
void anjian() //通過按鍵確定光標位置和下棋位置
{
if(K1==0)flag1=1;
if(K1==1&&flag1==1) //放手
{ flag1=0;
if(x>=1)//
x--;
if(z>=1)//棋盤能下的位置
z--;
}
if(K2==0)flag2=1;
if(K2==1&&flag2==1) //放手
{ flag2=0;
if(x<7)
x++;
if(z<7)
z++;
}
if(K3==0)flag3=1;
if(K3==1&&flag3==1) //放手
{ flag3=0;
if(y>=1)
y--;
if(k>=1)
k--;
}
if(K4==0)flag4=1;
if(K4==1&&flag4==1) //放手
{ flag4=0;
if(y<7)
y++;
if(k<7)
k++;
}
if(K5==0)flag5=1;
if(K5==1&&flag5==1) //放手
{ flag5=0;
switch(nowplayer)
{
case 1:player1lie[y]=player1lie[y]|(0xc000>>2*x);nowplayer=player2;qipan[k][z]=1; break;//落棋
case 2: player2lie[y]=player2lie[y]|(0xc000>>2*x);nowplayer=player1;qipan[k][z]=2; break;
}
}
}[i]void checkplayer1()//用戶1勝
{
for(i=7;i>0;i--){ //判斷棋子是否水平方向五連;
for(j=3;j>0;j--)
{
if(qipan[i][j]==1&&qipan[i][j+1]==1&&qipan[i][j+2]==1&&qipan[i][j+3]==1&&qipan[i][j+4]==1){ //判斷棋子是否是用戶1的
player1win();
}
}
void main()
{
nowplayer=player1;
while(1)
{
anjian(); //內有延遲函數
checkplayer1(); //用戶1勝
display(1); //若延遲時間很短,則快速刷新本函數
}
}
復制代碼
大概函數就是這樣,判斷不出來五連子
作者:
木子人杰
時間:
2022-11-7 21:01
這是完整的程序與仿真
40-基于51單片機的五子棋游戲設計.rar
2022-11-7 21:00 上傳
點擊文件名下載附件
400.06 KB, 下載次數: 11
作者:
glinfei
時間:
2022-11-8 08:42
你只做了play1的水平判定,而且范圍只有(1,2)~(8,8),建議你用遞歸法,程序好寫也不容易漏位置。
作者:
yzwzfyz
時間:
2022-11-8 10:30
以行判斷為例(列判斷略);
1、寫1個行判斷函數,從第1行,到第8行調用之。
行判斷函數規則:
1、做兩個連子計數器,一個計黑棋:JH;一個計白棋:JB。
2、用一個變量N計列號,從1列起依序取子(此時設置N=1):無子,JH=JB=0,黑子,JH+1,JB=0;白子,JH=0,JB+1。1列判完后N+1。
3、當JH或JB有一個>=5時就成了5連珠。1行判斷函數也就結束了。
4、當列號N+JH或N+JB>=8時,1行判斷函數結束(不成能5連珠了)。
寫程序,先構思邏輯,邏輯通了,再動筆寫。
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1