資源簡介
基于C51單片機實現(xiàn)簡單點陣五子棋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
- 上一篇:TA操作介紹
- 下一篇:中南財經(jīng)政法大學校園網(wǎng)客戶端
評論
共有 條評論