亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.c

?? 用單片機實現推箱子游戲
?? C
?? 第 1 頁 / 共 2 頁
字號:
/**********************************************************
*名稱:推箱子游戲V0.1 Beta 1 (以占用3515字節 EPROM空間)
*編程:飛揚
*說明:采用YM12864R液晶(ST7920)+62256+PT6122遙控+AT89S51
*下一個版本增加音效,地圖編輯功能,界面顯示美化,撤銷上一步!
*主要是學習外擴展RAM才搞這個東東! 我使用的是24MHz晶振
*關卡增加到20關
**********************************************************/
#include <at89x52.h>
#include "MAIN.H"
/******    引腳定義   ******/
sbit Beep = P3^3; //音頻輸出腳

/****** 變量/數組定義 ******/
uchar code logotab[4][17]={
{"                "},
{"  V0.1 Beta 1   "},
{"  推箱子游戲    "},
{"  編程  飛揚    "}};
//存放遙控接收數據
uchar xdata KeyCoding[4]={0,0,0,0};
//關卡設置
uchar guanka = 0;
//用1024個字節存放動態繪圖數據,我叫它顯存數據
uchar xdata GamePic[1024] _at_ 0x0100; //這里使用了絕對地址
//空(用于清空圖形移動后的痕跡)編號0
uchar code kong[8]={0,0,0,0,0,0,0,0};
//墻壁(用來標識移動的范圍)編號1
uchar code qiang[8]={0x00,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x00};
//圓形(箱子要推到的地方)編號2
uchar code yuan[8]={0x3c,0x66,0xc3,0x81,0x81,0xc3,0x66,0x3c};
//箱子(推動的就是他)編號3
uchar code xiangzi[8]={0xff,0x81,0xbd,0xbd,0xbd,0xbd,0x81,0xff};
//娃娃臉(用于推動箱子)編號4
uchar code lian[8]={0x7e,0xff,0xdb,0xff,0xff,0xc3,0xe7,0x7e};
//十字形(箱子推到圓形位置后變為十字形)編號5
uchar code shizi[8]={0x3c,0x3c,0xff,0xff,0xff,0xff,0x3c,0x3c};
//用于計算圖形移動和放置的坐標
//實際存放的是GamePic數組的相應下標
uint code MoveData[64]={
0,1,2,3,4,5,6,7,
128,129,130,131,132,133,134,135,
256,257,258,259,260,261,262,263,
384,385,386,387,388,389,390,391,
512,513,514,515,516,517,518,519,
640,641,642,643,644,645,646,647,
768,769,770,771,772,773,774,775,
896,897,898,899,900,901,902,903
};
/*8X8的游戲地圖數據,同時根據圖形數據判斷娃娃臉是否可以移動,
*箱子是否可以推動,箱子推動的方向是否是墻和箱子,是則不
*能推動!箱子推到的地方是圓形則用十字形替換(將該位置數據換成5),
*推動十字形,則再恢復到箱子的形狀(在換成3).
*空(什么都不顯示)=0,墻=1,圓=2,箱子=3,臉=4,十字=5 */
uchar code GameMap[20][64]={
//第一關
{1,1,1,1,1,1,1,1,
1,0,0,0,1,2,0,1,
1,2,0,0,3,0,0,1,
1,1,3,1,1,0,0,1,
1,0,0,1,1,3,1,1,
1,0,0,4,0,0,0,1,
1,0,2,1,0,0,0,1,
1,1,1,1,1,1,1,1},
//第二關
{1,1,1,1,1,1,1,1,
1,0,0,0,1,0,0,1,
1,0,2,0,3,2,0,1,
1,1,3,1,1,0,0,1,
1,0,0,1,1,3,1,1,
1,0,0,4,0,2,0,1,
1,0,0,1,0,0,0,1,
1,1,1,1,1,1,1,1},
//第三關
{1,1,1,1,1,1,1,1,
1,0,0,0,1,0,0,1,
1,0,0,0,3,0,0,1,
1,0,3,1,1,0,0,1,
1,0,2,1,1,3,1,1,
1,0,2,4,0,0,0,1,
1,0,2,1,0,0,0,1,
1,1,1,1,1,1,1,1},
//第四關
{1,1,1,1,1,1,1,1,
1,0,0,0,1,0,0,1,
1,0,2,0,3,2,0,1,
1,1,3,1,1,0,0,1,
1,0,0,1,1,3,1,1,
1,0,2,4,0,0,0,1,
1,0,0,1,0,0,0,1,
1,1,1,1,1,1,1,1},
//第五關
{1,1,1,1,1,1,1,1,
1,0,0,0,1,0,0,1,
1,0,0,2,3,0,0,1,
1,1,3,1,1,0,0,1,
1,0,2,1,1,3,1,1,
1,0,0,4,2,0,0,1,
1,0,0,1,0,0,0,1,
1,1,1,1,1,1,1,1},
//6
{1,1,1,1,1,1,1,1,
1,0,0,0,1,0,0,1,
1,0,0,0,3,0,0,1,
1,1,5,1,1,0,0,1,
1,0,2,1,1,3,1,1,
1,0,2,4,0,0,0,1,
1,0,0,1,0,0,0,1,
1,1,1,1,1,1,1,1},
//7
{1,1,1,1,1,1,1,1,
1,1,0,1,1,0,2,1,
1,0,0,3,0,0,0,1,
1,4,3,3,0,0,0,1,
1,0,1,0,0,1,0,1,
1,0,1,1,1,1,0,1,
1,2,0,0,0,0,2,1,
1,1,1,1,1,1,1,1},
//8
{1,1,1,1,1,1,1,1,
1,0,0,1,0,0,0,1,
1,0,0,1,0,5,0,1,
1,0,0,1,0,2,1,1,
1,1,0,3,0,0,0,1,
1,0,3,0,0,2,0,1,
1,4,0,1,1,0,0,1,
1,1,1,1,1,1,1,1},
//9
{1,1,1,1,1,1,1,1,
1,1,4,0,1,1,1,1,
1,0,0,0,3,2,0,1,
1,0,0,1,0,0,0,1,
1,0,0,0,1,5,0,1,
1,1,0,3,0,0,0,1,
1,1,1,1,0,2,0,1,
1,1,1,1,1,1,1,1},
//10
{1,1,1,1,1,1,1,1,
1,2,0,1,1,1,1,1,
1,2,0,0,0,1,1,1,
1,0,1,3,0,0,0,1,
1,2,0,3,3,1,0,1,
1,1,0,0,0,0,0,1,
1,1,1,1,1,0,4,1,
1,1,1,1,1,1,1,1},
//11
{1,1,1,1,1,1,1,1,
1,1,0,0,0,1,1,1,
1,0,1,2,3,0,1,1,
1,0,2,4,0,0,1,1,
1,0,3,0,3,0,1,1,
1,1,0,0,0,1,1,1,
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1},
//12
{1,1,1,1,1,1,1,1,
1,1,0,1,1,0,2,1,
1,0,3,0,3,3,0,1,
1,4,0,0,0,0,0,1,
1,0,1,0,0,1,0,1,
1,0,1,1,1,1,0,1,
1,2,0,0,0,0,2,1,
1,1,1,1,1,1,1,1},
//13
{1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
1,1,0,0,0,0,1,1,
1,1,2,1,1,3,0,1,
1,0,2,2,3,0,0,1,
1,0,0,1,3,0,0,1,
1,0,0,4,0,1,1,1,
1,1,1,1,1,1,1,1},
//14
{1,1,1,1,1,1,1,1,
1,1,1,0,0,1,1,1,
1,1,0,0,0,0,1,1,
1,0,2,0,2,3,1,1,
1,0,0,3,4,0,0,1,
1,1,1,1,5,1,0,1,
1,1,1,1,0,0,0,1,
1,1,1,1,1,1,1,1},
//15
{1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
1,1,0,2,0,5,0,1,
1,1,0,0,1,0,0,1,
1,1,4,3,5,0,0,1,
1,1,1,0,0,0,1,1,
1,1,1,0,0,0,1,1,
1,1,1,1,1,1,1,1},
//16
{1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
1,0,2,2,1,1,1,1,
1,0,3,0,0,0,0,1,
1,0,0,1,3,1,0,1,
1,0,4,0,2,3,0,1,
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1},
//17
{1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
1,2,0,0,4,2,1,1,
1,0,0,3,1,0,1,1,
1,0,1,0,3,2,0,1,
1,0,0,0,3,1,0,1,
1,1,1,1,0,0,0,1,
1,1,1,1,1,1,1,1},
//18
{1,1,1,1,1,1,1,1,
1,2,0,2,1,1,1,1,
1,2,1,3,3,0,1,1,
1,0,0,0,4,0,1,1,
1,0,3,1,0,0,1,1,
1,1,0,0,0,1,1,1,
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1},
//19
{1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
1,2,0,0,0,2,0,1,
1,0,1,0,1,0,0,1,
1,4,3,0,0,3,2,1,
1,1,1,1,1,0,3,1,
1,1,1,1,1,0,0,1,
1,1,1,1,1,1,1,1},
//20
{1,1,1,1,1,1,1,1,
1,0,0,1,1,1,1,1,
1,0,0,1,1,1,1,1,
1,0,2,5,0,0,0,1,
1,1,3,0,0,0,0,1,
1,1,0,1,3,1,1,1,
1,1,2,0,4,1,1,1,
1,1,1,1,1,1,1,1}
};
/*程序存儲器中的數據是只讀的!根據這個地圖刷新顯示.
 用于復制程序存儲器中的當前地圖數據*/
uchar xdata Map[64];
/*用于存放圓形的坐標,最多5個圓.yuanPos[6]存放本關有幾個圓*/
uchar xdata yuanPos[6] = 0;
 
/**********************************************************
*函數名:CopyMap() 
*功  能:用于復制程序存儲器中的當前地圖數據
*輸  入:入口參數為當前地圖編號
**********************************************************/
void CopyMap(uchar num)
{
  uchar i;
  for (i=0;i<64;i++) Map[i] = GameMap[num][i];
}
/**********************************************************
*函數名:WriteMemorizer()
*功  能:將圖形數據寫入顯存 
*pos:要顯示圖形的位置,*p:指針指向要顯示的圖形
**********************************************************/
void WriteMemorizer(uchar pos,uchar *p)
{
   uchar i;
   uint zb;
   zb = MoveData[pos]; //取顯存地址(顯示坐標)
   for (i=0;i<8;i++)
   {
	GamePic[zb] = *p; //要顯示的圖形寫入顯存
	p++;   //下一個數據
	zb+=16;//顯存的下一個地址(每個地址之間的差是16)
   }	//或者說是間隔是16.
}
/**********************************************************
*函數名:MapCreate() 
*功  能:地圖生成程序
**********************************************************/
void MapCreate()
{
   uchar i;
   for (i=0;i<64;i++) //生成8X8的地圖
   {
		switch (Map[i])//獲得地圖上的圖形數據
	 	{	//將圖形編號對應的數據寫入顯存
			case 0:	
				WriteMemorizer(i,kong);//空
				break;
			case 1:
				WriteMemorizer(i,qiang);//墻
				break;
			case 2:
				WriteMemorizer(i,yuan);//圓
				break;
			case 3:
				WriteMemorizer(i,xiangzi);//箱子
				break;
			case 4:
				WriteMemorizer(i,lian);//臉
				break;
			case 5:
				WriteMemorizer(i,shizi);//十字
				break;
		}
   }
}
/**********************************************************
*函數名:GameDisplay() 
*功  能:游戲圖形顯示程序(從左到右,從上到下)
*  *point指向外部RAM存儲的128X64的圖片數據
**********************************************************/
void GameDisplay(uchar xdata *point)
{
  uchar i,j;
  LCDWriteCommand(0x34);//擴充指令集
  LCDWriteCommand(0x36);//繪圖顯示開
  for (i=0;i<32;i++)    //寫上半屏(32行)
  {
    LCDWriteCommand(0x80+i);//Y地址寄存器
	LCDWriteCommand(0x80);  //X地址(LCM自動加1)
	for (j=0;j<16;j++)//16x8列
	{						  //獲得GamePic的首地址
		LCDWriteData(*point);//寫入一個字節圖形數據
		point++; //指向下一個圖形字節
	}
  }
  for (i=0;i<32;i++) //寫下半屏
  {
    LCDWriteCommand(0x80+i);//Y地址寄存器
	LCDWriteCommand(0x88);  //X地址(LCM自動加1)
	for (j=0;j<16;j++)//
	{
	 	LCDWriteData(*point);//寫入一個字節圖形數據
		point++;
	}
  }
}
/**********************************************************
*函數名:ReadPosition()
*功  能:讀得娃娃臉的當前坐標位置
*返  回:ReadPos
**********************************************************/
uchar ReadPosition()
{
	uchar i;
	uchar ReadPos;    //定義變量存放娃娃臉的位置.
	for (i=0;i<64;i++)//地圖數據是64個字節
	{				  //逐個比較找出娃娃臉
		if(Map[i]==4) //娃娃臉的編號是4
		{ 
			ReadPos = i;//記錄娃娃臉的坐標
			break;      //找到娃娃臉就跳出循環
		}
	}
	return (ReadPos); //返回娃娃臉當前位置
}
/**********************************************************
*函數名:Readyuan()
*功  能:讀得圓形的坐標位置(箱子移動目的地)
*在初次讀入當前地圖數據是,5(十字)也認為是圓,不然就出錯,
*推動十字形后就少一個圓了.
**********************************************************/
void Readyuan()
{
   uchar i,j=0;
   for (i=0;i<64;i++)//地圖數據是64個字節
   {				 //圓形的編號是2
	  if (Map[i]==2||Map[i]==5) //找出圓形的位置
	  {//在編地圖的時候也用十字形.
	  	yuanPos[j] = i;//存放圓形的位置
	  	j++;           //計數圓形的個數
		yuanPos[6] = j;//存放圓形的個數
	  }
   }
}
/**********************************************************
*函數名:Refyuan()
*功  能:刷新顯示圓形(箱子移動目的地)
**********************************************************/
void Refyuan()
{
   uchar i;	 //yuanPos[6] 存放著圓形的個數(3--5個)
   for (i=0;i<yuanPos[6];i++)//根據圓的個數來判斷
   {   //判斷圓形的坐標位置是否為0(空),是就顯示圓形
	   if(Map[yuanPos[i]]==0) Map[yuanPos[i]]=2;
   }
}
/**********************************************************
*函數名:Next()
*功  能:進入下一關
**********************************************************/
void Next()
{  //圓形位置全變為十字形(5),說明推完了,過關
   if (Map[yuanPos[0]]==5&&Map[yuanPos[1]]==5&&Map[yuanPos[2]]==5)
   {//過關
	  		guanka++; //進入下一關
			if (guanka==20) guanka=0;//這里設置為20關
			CopyMap(guanka);//復制地圖數據
  			MapCreate();    //地圖生成程序
  			GameDisplay(GamePic);  //游戲界面顯示程序
			Readyuan();     //復制當前關卡圓形坐標和個數
   }
}
/**********************************************************
*函數名:UpMove()
*功  能:娃娃臉向上移動
*說  明:向上移動是-8 (8X8的數據間隔是8)
*空(什么都不顯示)=0,墻=1,圓=2,箱子=3,臉=4,十字=5

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合久久99| 国产偷国产偷亚洲高清人白洁 | 午夜精品福利一区二区三区蜜桃| 这里是久久伊人| 99精品视频在线免费观看| 欧美96一区二区免费视频| 亚洲天堂精品在线观看| 精品免费日韩av| 欧美日韩成人综合在线一区二区| 国产不卡在线播放| 久久国产精品色婷婷| 亚洲一二三区不卡| 国产精品久久久久久久久搜平片 | 精品成人在线观看| 欧美色大人视频| 久久精品亚洲一区二区三区浴池| 91麻豆精品国产91久久久更新时间| 不卡av电影在线播放| 国产在线精品不卡| 奇米一区二区三区| 视频精品一区二区| 亚洲影院在线观看| 亚洲免费观看高清完整| 最新高清无码专区| 亚洲欧美自拍偷拍| 国产精品久久午夜夜伦鲁鲁| 久久久综合视频| 久久综合99re88久久爱| 精品国一区二区三区| 精品女同一区二区| 日韩精品中午字幕| 精品999在线播放| 精品少妇一区二区三区免费观看| 欧美一区二区三区日韩| 91麻豆精品国产91久久久久久久久 | 男人的j进女人的j一区| 视频一区中文字幕国产| 亚洲香蕉伊在人在线观| 亚洲综合网站在线观看| 一区二区三区精品| 亚洲免费在线播放| 亚洲五码中文字幕| 日韩综合一区二区| 蜜臀av在线播放一区二区三区| 日韩成人dvd| 免费精品视频在线| 久久精品99国产精品| 韩国精品主播一区二区在线观看| 国产毛片精品国产一区二区三区| 国产美女在线精品| 成人av午夜影院| 色综合激情久久| 欧美日韩在线精品一区二区三区激情| 欧美中文字幕不卡| 日韩一区二区三免费高清| 精品蜜桃在线看| 欧美韩国日本一区| 亚洲卡通欧美制服中文| 午夜精品久久久久久久99樱桃| 日本少妇一区二区| 国产一区二区三区电影在线观看| 成人黄色a**站在线观看| 91久久一区二区| 欧美一区二区三区视频免费| 国产午夜精品福利| 一区二区三区免费观看| 日韩1区2区日韩1区2区| 国产成人自拍高清视频在线免费播放| 99久久精品国产毛片| 欧美日本免费一区二区三区| 欧美电影精品一区二区| 国产精品第13页| 婷婷六月综合亚洲| 国产精品亚洲午夜一区二区三区 | 欧美一区三区四区| 中文字幕免费不卡在线| 亚洲1区2区3区4区| 国产激情视频一区二区在线观看| 91国偷自产一区二区开放时间| 欧美一区二区三级| 国产精品久久久久久久久免费樱桃| 亚洲成人黄色小说| 高清视频一区二区| 欧美高清激情brazzers| 欧美国产日韩a欧美在线观看| 亚洲一线二线三线视频| 国产乱码精品一区二区三区五月婷| 91视频.com| 日韩欧美国产午夜精品| ●精品国产综合乱码久久久久| 日韩黄色一级片| 91猫先生在线| 国产日本一区二区| 蜜桃av一区二区三区| 色哟哟一区二区在线观看| 精品国产伦一区二区三区观看体验 | 91精品国产日韩91久久久久久| 国产精品国产精品国产专区不片| 免费在线看成人av| 91极品视觉盛宴| 欧美国产1区2区| 毛片av一区二区| 欧美少妇一区二区| 最新高清无码专区| 国产91精品在线观看| 日韩视频在线你懂得| 一区二区成人在线| 99国产麻豆精品| 国产亚洲午夜高清国产拍精品 | 美腿丝袜在线亚洲一区| 色综合久久久久综合体桃花网| 久久久久亚洲综合| 美女被吸乳得到大胸91| 欧美精品久久99久久在免费线 | 欧美午夜精品电影| 亚洲欧洲精品一区二区三区 | 青娱乐精品视频在线| 91高清视频免费看| 1024成人网| 92精品国产成人观看免费| 国产精品久久久久9999吃药| 国产麻豆精品theporn| 日韩欧美在线影院| 免费高清不卡av| 日韩精品一区二区在线观看| 奇米影视在线99精品| 7777精品伊人久久久大香线蕉完整版 | 亚洲电影视频在线| 欧美性大战久久久久久久| 亚洲精品中文在线观看| 97精品视频在线观看自产线路二| 国产精品嫩草99a| 成人av在线影院| 专区另类欧美日韩| 99re这里都是精品| 亚洲欧美经典视频| 在线日韩一区二区| 亚洲国产精品精华液网站| 欧美日韩你懂的| 日韩国产成人精品| 日韩一卡二卡三卡国产欧美| 麻豆成人av在线| 久久久久久久久久久久久女国产乱 | 精品少妇一区二区三区免费观看| 激情综合一区二区三区| 久久视频一区二区| zzijzzij亚洲日本少妇熟睡| 亚洲视频资源在线| 欧美色区777第一页| 日本va欧美va精品发布| 精品免费视频一区二区| 不卡在线视频中文字幕| 亚洲久草在线视频| 91精品国产入口| 国产99久久久国产精品潘金网站| 成人欧美一区二区三区视频网页| 在线免费观看视频一区| 午夜欧美电影在线观看| 欧美成人免费网站| 成人sese在线| 日韩中文字幕一区二区三区| 亚洲精品一线二线三线| www.视频一区| 婷婷中文字幕一区三区| 欧美精品一区二区三区蜜臀| 成人av电影在线播放| 亚洲国产日韩一区二区| 精品国产三级电影在线观看| 91女厕偷拍女厕偷拍高清| 日韩高清在线观看| 欧美高清在线视频| 欧美浪妇xxxx高跟鞋交| 国产精品99久久不卡二区| 一区二区激情小说| 精品精品国产高清a毛片牛牛| 一本色道久久综合亚洲91| 蜜桃av噜噜一区| 一区二区欧美精品| 久久久久亚洲蜜桃| 欧美日韩国产成人在线91| 国产成人午夜99999| 亚洲成av人片在线观看| 欧美国产在线观看| 91精品国产综合久久久久久漫画| 丁香六月久久综合狠狠色| 天堂久久一区二区三区| 国产精品丝袜久久久久久app| 欧美军同video69gay| 不卡欧美aaaaa| 另类的小说在线视频另类成人小视频在线| 国产精品伦一区| 日韩精品一区二区三区四区| 色综合久久天天| 成人午夜av影视| 麻豆久久一区二区| 亚洲制服丝袜一区| 国产精品女同互慰在线看| 欧美mv日韩mv| 91精品国产色综合久久久蜜香臀| 色婷婷久久久久swag精品|