• 大小: 60KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-18
  • 语言: 其他
  • 标签: 单片  

资源简介

基于C51单片机实现简单点阵五子棋Keil程序与protues电路仿真图

资源截图

代码片段和文件信息

 #include 
#include 
sbit SD=P2^4;
sbit STCK=P2^5;
sbit SHCK=P2^6;
sbit K2=P1^0;     //左移
sbit K1=P1^1;     //右移
sbit K3=P1^2;     //上移
sbit K4=P1^3;      //下移
sbit K5=P1^4;  //确定
unsigned char player;
  unsigned char x=0y=0k=0;
unsigned char player1lie[8]={ 0 };
unsigned char player2lie[8]={ 0 };
unsigned char code lie[]={0x800x400x200x100x080x040x020x01};
unsigned char code hang[]={0x7f0xbf0xdf0xef0xf70xfb0xfd0xfe};
unsigned char code  zimoP1[]={0xE10x410x410x4F0x490x490x690x4F};
unsigned char code zimoP2[]={0xE10x210x210xE10x8F0x890x890xEF};
unsigned char code zimo[]={0x810x420x240x180x180x240x420x81};
unsigned char nowplayer;
unsigned char player1=1;
unsigned char player2=2;
void delay1ms(unsigned int i)
{
unsigned char j;
while(i--)
for(j=0;j<115;j++)
;
}
  void shuru(unsigned char dat)
{
unsigned char i;
for(i=0;i<8;i++)
{
SHCK=0;
SD=dat&0x80;
dat<<=1;
SHCK=1;
}
}
void shuchu()
{
STCK=0;
STCK=1;
}

void player2win()
{
unsigned char i;
while(1)
{
for(i=0;i<8;i++)
{
shuru(zimoP2[i]);
shuru(hang[i]);
shuchu();
}
}
}
//2胜显示
void player1win()
{
unsigned char i;
while(1)
{

for(i=0;i<8;i++)
{
                 shuru(zimoP1[i]);
shuru(hang[i]);
shuchu();
}
}
}
//1胜显示

void pinju()
{
unsigned char i;
while(1)
{
for(i=0;i<8;i++)
{
    shuru(zimo[i]);
shuru(hang[i]);
shuchu();
}
}
}
//平局显示
void pingju()
{
if(k>=32)
pinju();

}





void checkplayer1()
{
unsigned char imn=0k1=0;
for(i=0;i<8;i++)
{
 player=0x1f;
for(m=0;m<4;m++)
{
   if((player&player1lie[i])==player)
   player1win();
   else
   player=player<<1;
}

 }
                //左右判断
 
 
 
 
 for(i=0;i<8;i++)
 {
    for(m=0;m<8;m++)
 {
if(player1lie[m]&lie[i])
{
k1++;
  if(k1>=5)
player1win();
}
else k1=0;

}
 }        //上下判断


for(i=0;i<4;i++)
{
for(m=0;m<8;m++)
{
if((player1lie[0+m]>>(m+i))&0x01)
k1++;
else
{   
if(k1>=5)
player1win();
  k1=0;
continue;
}
}

}
for(i=1;i<4;i++)
{
for(m=0;m<8;m++)
{
if((player1lie[7-m]>>(7-i-m))&0x01)
k1++;
else
{  if(k1>=5)
player1win();
  k1=0;
continue;
}
}

}
 
   //斜向判断


}

 




//判断2胜


void checkplayer2()
{
unsigned char imn=0k1=0;
for(i=0;i<8;i++)
{
 player=0x1f;
for(m=0;m<4;m++)
{
   if((player&player2lie[i])==player)
   player2win();
 else
   player=player<<1;
}

 }
                         //左右判断
 
 
 
 
 for(i=0;i<8;i++)
 {
    for(m=0;m<8;m++)
 {
if(player2lie[m]&lie[i])
{
k1++;
  if(k1>=5)
player2win();
}
else k1=0;

}
 }        //上下判断



for(i=0;i<4;i++)
{
for(m=0;m<8;m++)
{
if((player2lie[0+m]>>(m+i))&0x01)
k1++;
else
{   

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-06-18 19:55  仿真程序\
     文件       11803  2017-06-18 19:54  仿真程序\main
     文件       14703  2017-06-18 19:54  仿真程序\main.LST
     文件       19343  2017-06-18 19:54  仿真程序\main.M51
     文件       14011  2017-06-18 19:54  仿真程序\main.OBJ
     文件        4701  2017-06-18 19:54  仿真程序\main.c
     文件        3188  2017-06-18 19:54  仿真程序\main.hex
     文件          25  2017-06-18 19:54  仿真程序\main.lnp
     文件         176  2017-06-18 19:55  仿真程序\main.plg
     文件       55204  2017-06-18 19:55  仿真程序\main.uvopt
     文件       13224  2017-06-18 19:54  仿真程序\main.uvproj
     文件       55204  2017-06-18 19:54  仿真程序\main_uvopt.bak
     文件           0  2017-06-18 19:53  仿真程序\新建文本文档.txt
     目录           0  2017-06-19 10:16  点阵五子棋电路图\
     文件       87271  2017-06-18 19:58  点阵五子棋电路图\Last Loaded dianlu.DBK
     文件       91475  2017-06-18 19:58  点阵五子棋电路图\dianlu.DSN
     文件         742  2017-06-19 10:16  点阵五子棋电路图\dianlu.PWI

评论

共有 条评论