久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1423|回復: 3
打印 上一主題 下一主題
收起左側

為什么我這個單片機五子棋C語言代碼判斷不了水平的五連子?

[復制鏈接]
跳轉到指定樓層
樓主
ID:905831 發表于 2022-11-7 19:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. unsigned  char idata qipan[8][8]={0}; //棋盤
  2. unsigned char x=0,y=0,z=7,y=7;
  3.         void anjian() //通過按鍵確定光標位置和下棋位置
  4.         {
  5.         
  6.         if(K1==0)flag1=1;
  7.    if(K1==1&&flag1==1)        //放手
  8. { flag1=0;
  9.          if(x>=1)//
  10.         x--;
  11.         if(z>=1)//棋盤能下的位置
  12.         z--;
  13. }
  14.                         
  15.         if(K2==0)flag2=1;
  16.    if(K2==1&&flag2==1)        //放手
  17. { flag2=0;
  18.                         if(x<7)
  19.                                 x++;
  20.                                         if(z<7)
  21.                                 z++;               
  22.         }
  23.         if(K3==0)flag3=1;
  24.    if(K3==1&&flag3==1)        //放手
  25. { flag3=0;
  26.                 if(y>=1)
  27.                         y--;
  28.                 if(k>=1)
  29.                         k--;
  30.                 }
  31. if(K4==0)flag4=1;
  32.    if(K4==1&&flag4==1)        //放手
  33. { flag4=0;
  34.         
  35.                         if(y<7)
  36.                                 y++;
  37.                                 if(k<7)
  38.                                 k++;
  39.                 }

  40. if(K5==0)flag5=1;
  41.    if(K5==1&&flag5==1)        //放手
  42. { flag5=0;

  43.                         switch(nowplayer)
  44.                         {
  45.                                 case 1:player1lie[y]=player1lie[y]|(0xc000>>2*x);nowplayer=player2;qipan[k][z]=1; break;//落棋
  46.                                 case 2: player2lie[y]=player2lie[y]|(0xc000>>2*x);nowplayer=player1;qipan[k][z]=2; break;
  47.                         }
  48.                 }
  49.         }[i]void checkplayer1()//用戶1勝
  50. {
  51. for(i=7;i>0;i--){        //判斷棋子是否水平方向五連;
  52.                           for(j=3;j>0;j--)
  53.                 {
  54.                 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的
  55.                         
  56.                   player1win();
  57. }
  58. }
  59.       void main()
  60.         {
  61.                 nowplayer=player1;
  62.                 while(1)
  63.                 {

  64.                         anjian();         //內有延遲函數         
  65.          checkplayer1();        //用戶1勝               
  66.                   display(1);   //若延遲時間很短,則快速刷新本函數
  67.                 }
  68.         }
復制代碼

大概函數就是這樣,判斷不出來五連子




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:905831 發表于 2022-11-7 21:01 | 只看該作者
這是完整的程序與仿真

40-基于51單片機的五子棋游戲設計.rar

400.06 KB, 下載次數: 11

回復

使用道具 舉報

板凳
ID:844772 發表于 2022-11-8 08:42 | 只看該作者
你只做了play1的水平判定,而且范圍只有(1,2)~(8,8),建議你用遞歸法,程序好寫也不容易漏位置。
回復

使用道具 舉報

地板
ID:123289 發表于 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連珠了)。
寫程序,先構思邏輯,邏輯通了,再動筆寫。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人国产网站 | 日韩 国产 在线 | 一区二区三区观看视频 | 久草在线在线精品观看 | 成人在线播放网站 | 黄色一级网 | 国产精品不卡 | 国产麻豆乱码精品一区二区三区 | 精品视频在线播放 | 亚洲欧洲成人 | 欧洲视频一区二区 | 999视频在线播放 | 欧美淫片 | 国产成人久久 | 国产精品二区三区 | 日本不卡一区二区三区在线观看 | 欧美中文字幕在线 | 精品美女在线观看视频在线观看 | 波霸ol一区二区 | 一区二区三区四区不卡视频 | 久久逼逼 | 美女视频h | 亚洲国产网址 | 久久av一区二区三区 | 免费高清av | 国产精品成人69xxx免费视频 | 国产在线视频三区 | 国产一区999 | 一级黄色片免费 | av在线天天| 精品av天堂毛片久久久借种 | 狠狠干在线 | 一级视频在线免费观看 | 97久久精品午夜一区二区 | 欧美日韩国产高清 | yiren22 亚洲综合 | 亚洲性视频网站 | 91麻豆精品国产91久久久更新资源速度超快 | 日本a网站 | 在线成人av | aaaaaa大片免费看最大的 |