91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 152KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2022-06-21
  • 語言: 其他
  • 標簽: 51單片機??

資源簡介

一個簡單的貪吃蛇用51單片機8*8點陣和矩陣鍵盤操作,內容很小白,大佬請繞路
內有仿真(僅供學習交流)

資源截圖

代碼片段和文件信息

#include
#include
#include
#define?max?20//最大蛇長
#define?delay?300//delay越小越快
sbit?DIO=P3^4;//串行數據口
sbit?SHCP=P3^5;//移位寄存器時鐘
sbit?STCP=P3^6;//輸出鎖存器時鐘
sbit?up=P1^0;//獨立鍵盤上
sbit?down=P1^1;//獨立鍵盤下
sbit?left=P1^2;//左
sbit?right=P1^3;//右
unsigned?char?nijifdiebuttonret;//依次為當前蛇長通用循環變量(i和j)是否死亡上下左右命令儲存果子eating的返回值
unsigned?char?snake[max][2]={1000};//蛇的每一個點的坐標數組蛇頭(10)第二段為(00)
unsigned?char?tabel[8]?={0};//這個相當于一個8*8矩陣用于裝坐標轉換成的的74HC595需要的8個16進制碼
unsigned?char?apple[2]={33};//初始果子位置隨機數有點麻煩
void?direction(void);//判斷上下左右函數
void?eating(void);//判斷吃果子函數
void?die(void);//判斷死亡函數?????????????????????????
void?send_byte(unsigned?char?byte);//74HC595串入并出要用到的函數
void?show(void);//以上都是處理蛇的坐標這個函數就是將要顯示的坐標轉換成74HC595能識別的16進制碼
void?main()
{
ifdie=1;//先賜死
while(ifdie)
{
ifdie=0;//然后重生
n=2;//初始蛇長為2
snake[0][0]=1;?snake[0][1]=0;//蛇每次重生在左上角
snake[1][0]=0;?snake[1][1]=0;//蛇每次重生在左上角
apple[0]=3;?apple[1]=3;//果子回到初始位置
button=0;//重生后要把按鍵賦零
while(ifdie!=1)//蛇沒死我們就循環執行
{
ret=0;//每一輪開始都設沒吃到果子
direction();//判斷方向改變坐標
eating();//判斷如果吃到果子身長+1
die();//判斷死沒死
show();//將蛇身的坐標轉碼展示到點陣屏上
if(n==max)?
ifdie=1;//蛇長最大了賜死吧
}
}
}
void?direction(void)//判斷方向
{
if(button==1&&snake[0][1]!=snake[1][1]+1)//向上
{
for(i=n-1;i>0;i--)//后一個蛇身坐標等于前一個蛇身坐標
{
for(j=0;j<2;j++)
snake[i][j]=snake[i-1][j];
}
snake[0][1]--;//蛇頭縱坐標減一
}
if(button==2&&snake[0][1]!=snake[1][1]-1)//向下
{
for(i=n-1;i>0;i--)
{
for(j=0;j<2;j++)
snake[i][j]=snake[i-1][j];
}
snake[0][1]++;
}
if(button==3&&snake[0][0]!=snake[1][0]+1)//向左
{
for(i=n-1;i>0;i--)
{
for(j=0;j<2;j++)
snake[i][j]=snake[i-1][j];
}
snake[0][0]--;
}
if(button==4&&snake[0][0]!=snake[1][0]-1)//向右
{
for(i=n-1;i>0;i--)
{
for(j=0;j<2;j++)
snake[i][j]=snake[i-1][j];
}
snake[0][0]++;
}
}
void?eating(void)
{
if(snake[0][0]==apple[0]&&snake[0][1]==apple[1])//當蛇頭坐標與果子坐標相同時
{
for(j=0;j<2;j++)
{
????snake[n][j]=snake[n-1][j];//吃到果子后蛇的下一節長出來
apple[j]=snake[n-1][j];//不會隨機數所以下一個果子出現在蛇尾
}
n++;//蛇長加一
ret?=?1;//告訴下面的步驟:吃到了果子
}
}
void?die(void)
{
if(snake[0][0]==8||snake[0][0]==255||snake[0][1]==8||snake[0][1]==255)//蛇頭出界
ifdie=1;//死掉
for(i=4;i {
if(snake[0][0]==snake[i][0]&&snake[0][1]==snake[i][1])
ifdie=1;//如果蛇頭和蛇身坐標重合死掉
}
}
void?send_byte(unsigned?char?byte)//這是清翔講的8*8點陣屏+74HC595的標配函數
{
unsigned?char?dat;
dat=byte;
for(j=0;j<8;j++)
{
SHCP=0;
STCP=0;
if(dat?&?0X01)
DIO=1;
else
DIO=0;
SHCP=1;
dat>>=1;
}
}
void?show(void)//這個比較關鍵把坐標轉化成8個16進制數
{
unsigned?char?lie=0x80;
unsigned?int?z;
unsigned?char?t;
for(?i=0;i<8;i++)
tabel[i]=0xff;//先重置tabel全都賦值0xff
if(ret)?t=n-1;//如果這一輪吃到了果子那么蛇長加了一而實
else?t=n;//???際上這一輪需要顯示的是沒加一的蛇(因為蛇頭和果子重合)
for(i=0;i tabel[snake[i][1]]=tabel[snake[i][1]]^

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????84480??2019-02-09?14:02??貪吃蛇小仙峰版\如何將坐標轉換成點陣屏需要的碼表.doc
?????目錄???????????0??2019-01-24?22:23??貪吃蛇小仙峰版\
?????目錄???????????0??2019-01-24?22:22??貪吃蛇小仙峰版\C代碼\
?????目錄???????????0??2019-01-24?22:22??貪吃蛇小仙峰版\C代碼\Listings\
?????文件???????14149??2019-01-21?21:41??貪吃蛇小仙峰版\C代碼\Listings\STARTUP.lst
?????文件????????7859??2019-01-23?13:45??貪吃蛇小仙峰版\C代碼\Listings\mysnake.lst
?????文件???????14873??2019-01-23?13:49??貪吃蛇小仙峰版\C代碼\Listings\mysnake.m51
?????目錄???????????0??2019-01-24?22:22??貪吃蛇小仙峰版\C代碼\objects\
?????文件??????????19??2019-01-23?13:31??貪吃蛇小仙峰版\C代碼\objects\ExtDll.iex
?????文件?????????819??2019-01-21?21:41??貪吃蛇小仙峰版\C代碼\objects\STARTUP.obj
?????文件???????11467??2019-01-23?13:49??貪吃蛇小仙峰版\C代碼\objects\mysnake
?????文件?????????125??2019-01-23?13:45??貪吃蛇小仙峰版\C代碼\objects\mysnake.__i
?????文件????????1072??2019-01-23?13:49??貪吃蛇小仙峰版\C代碼\objects\mysnake.build_log.htm
?????文件????????8436??2019-01-23?13:49??貪吃蛇小仙峰版\C代碼\objects\mysnake.hex
?????文件?????????108??2019-01-23?13:49??貪吃蛇小仙峰版\C代碼\objects\mysnake.lnp
?????文件???????10000??2019-01-23?13:45??貪吃蛇小仙峰版\C代碼\objects\mysnake.obj
?????文件????????6376??2015-07-08?16:02??貪吃蛇小仙峰版\C代碼\STARTUP.A51
?????文件????????4176??2019-01-23?16:08??貪吃蛇小仙峰版\C代碼\mysnake.c
?????文件??????176734??2019-01-24?22:10??貪吃蛇小仙峰版\C代碼\mysnake.uvgui.Administrator
?????文件????????6666??2019-01-24?20:10??貪吃蛇小仙峰版\C代碼\mysnake.uvopt
?????文件???????14466??2019-01-22?22:27??貪吃蛇小仙峰版\C代碼\mysnake.uvproj
?????目錄???????????0??2019-01-24?22:22??貪吃蛇小仙峰版\貪吃蛇仿真\
?????文件??????105150??2019-01-23?13:49??貪吃蛇小仙峰版\貪吃蛇仿真\8x8dianzhen.DSN
?????文件?????????768??2019-01-23?16:08??貪吃蛇小仙峰版\貪吃蛇仿真\8x8dianzhen.PWI
?????文件??????105142??2019-01-22?22:30??貪吃蛇小仙峰版\貪吃蛇仿真\Backup?Of?8x8dianzhen.DBK
?????文件??????105142??2019-01-21?22:39??貪吃蛇小仙峰版\貪吃蛇仿真\Last?Loaded?8x8dianzhen.DBK

評論

共有 條評論