久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機打地鼠游戲源程序與Proteus仿真電路
[打印本頁]
作者:
njjm
時間:
2020-10-20 22:06
標題:
單片機打地鼠游戲源程序與Proteus仿真電路
最近新接觸的一個小游戲,打地鼠,已經用開發板驗證
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png
(23.61 KB, 下載次數: 76)
下載附件
2020-10-20 23:02 上傳
單片機源程序如下:
#include<reg52.h>
#include<stdlib.h>
sbit RS=P2^0;
sbit EN=P2^1;
sbit Speak=P2^2;
sbit button1=P2^3; //選擇模式鍵
sbit button2=P2^4; //確認鍵、返回鍵、暫停鍵、下一關開始鍵
sbit Buzzer=P2^6;
sbit hole1=P2^7; //1號洞
sbit SDA=P1^1; //24c02數據線
sbit SCL=P1^0; //24c02時鐘線
unsigned char Count; //Play_Song使用
unsigned char i,j;
unsigned char temp; //隨機數種子
unsigned char result; //隨機數臨時變量
unsigned char score; //保存臨時分數
unsigned char tempname[2];//保存臨時分數的名字
unsigned char time; //保存時間(30秒倒計時)
unsigned char num; //1秒鐘判斷變量
unsigned char flag1; //1標識得分,led全滅,不進行scankey操作
unsigned char flag2; //1標識得分Buzzer響方式1
unsigned char flag3; //1標識地鼠出洞時間到,開始下一輪地鼠出洞
unsigned char flag4; //1標識關卡時間到
unsigned char flag5; //1標志暫停
unsigned char level; //關卡等級
unsigned char holenum; //保存隨機生成的洞號
unsigned char topscore[3]={0}; //保存3個最高分
unsigned char name[3][2]={"AA","BB","CC"}; //保存3個最高分名字
unsigned char code hole[]={0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//P3口控制的洞
unsigned char code str1[]={"Welcome!"}; //歡迎標語
unsigned char code str2[]={"1.start 2.score"};
unsigned char code str3[]={"3.exit"};
unsigned char code str4[]={"See You! "}; //exit界面
unsigned char code str5[]={"Ready?"};
unsigned char code str6[]={"GO!"};
unsigned char code str7[]={"Your Soccer: "}; //查看分數
unsigned char code str8[]={"Time: Score: "};
unsigned char code str9[]={" Team: SONGE "}; //隊名
unsigned char code str10[]={"Game Over!"};
unsigned char code str11[]={"You Win! GO?"};
unsigned char code str12[]={"You Lose!"};
unsigned char code str13[]={"top1:"};
unsigned char code str14[]={"Congratulations"};
unsigned char code str15[]={"hole: level:"};
unsigned char code str16[]={"top2:"};
unsigned char code str17[]={"top3:"};
unsigned char code str18[]={"Your Name:"}; //記錄姓名
//*************************1602函數聲明*******************************//
void displayWelcome(); //顯示歡迎界面
void displayPrepare(); //顯示選項
void Game(); //游戲真正進行
void displayGame(); //開始游戲
void displayExit(); //顯示退出界面
void displaytime();
void displayChoose(); //顯示選擇界面
void displayover();
void scankey();
void pause();
void displayScoreNext();
//***************************基礎函數*****************************//
void delayms(unsigned int xms) //延時xms 毫秒
{
unsigned int i,j;
for(i=xms; i>0; i--)
for(j=110; j>0; j--);
}
void delayus(unsigned int ums) //延時ums 個3微秒
{
unsigned int i,j;
for(i=0; i<ums; i++)
for(j=0; j<3; j++);
}
void Time_init() //定時器初始化,11.0592MZ晶振 初始選擇:定時器0用于播放音樂,定時器1關閉
{ //進入游戲:定時器1用于LCD顯示分數
TMOD = 0x11; //16位定時器 退出游戲:定時器0播放音樂,定時器1關閉
TH0 = 0xDC;
TL0 = 0x00;
TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
EA=1; //開總中斷
ET0=1; //開定時器0中斷
ET1=1; //開定時器1中斷
}
void Time0() interrupt 1 //定時器0中斷 播放音樂
{
TH0 = 0xDC;
TL0 = 0x00;
Count++; //長度加1
}
void Time1() interrupt 3 //定時器1中斷 游戲中顯示分數
{
TH1=(65536-45872)/256;
TL1=(65536-45872)%256; //每50ms中斷一次
num++;
if(num%20==0) //近似1秒鐘
{
time--;
}
if(num==(60-20*level)) //出洞結束,level1:3s; level2:2s; level3:1s
{
num=0;
flag3=1;
}
if(time==0) //一關結束
{
time=30;
flag4=1;
}
}
//***********************播放音樂*********************************//
unsigned char code SONG[] ={ //祝你平安
0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,
0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x00, //27個數字
//0x20,0x20,0x20,0x20,0x1c,0x20,0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,
//0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,
//0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,
//0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,
//0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,
//0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,
//0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,
//0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,
//0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,
//0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,
//0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,
//0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,
//0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,//第217個數字
//路邊的野花不要采
// 0x30,0x1C,0x10,0x20,0x40,0x1C,0x10,0x18,0x10,0x20,0x10,0x1C,0x10,0x18,0x40,0x1C,
// 0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,
0x20,0x30,0x1C,0x10,0x18,0x20,
0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,
0x30,0x80,0xFF,0x20,0x20,0x00,
//0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,
//0x20,0x2B,0x40,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,
//0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,
//0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0x20,0x30,0x1C,0x10,0x20,
//0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x15,0x1F,
//0x05,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,
//0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,
//0x20,0x26,0x20,0x20,0x20,0x30,0x30,0x20,0x30,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,
//0x20,0x26,0x40,0x13,0x60,0x18,0x20,0x15,0x40,0x13,0x40,0x18,0x80,
};
void Play_Song(unsigned char i) //i=1 播放 路邊的野花不要采
{ //i=0 播放 祝你平安
unsigned char Temp1,Temp2;
unsigned int Addr;
Count = 0; //中斷計數器清0
Addr = i * 27; //音樂地址
TR0=1; //開啟定時器0
while(1)
{
Temp1 = SONG[Addr++];
if (Temp1 == 0xFF) //休止符
{
TR0 = 0; //關閉定時器0
delayus(100);
}
else if (Temp1 == 0x00) //歌曲結束符
{
TR0=0; //關閉定時器0
return;
}
else //正常播放歌曲
{
Temp2 = SONG[Addr++];
TR0 = 1;
while(1)
{
Speak = ~Speak;
delayus(Temp1);
if(Temp2 == Count)
{
Count = 0;
break;
}
}
}
}
}
void playBuzzer()
{
if(flag2==1) //得分響
{
for(i=0;i<20;i++)
{ Speak=1;
delayms(1);
Speak=0;
delayms(1);
}
Speak=0;Buzzer=0;delayms(500);Buzzer=1;delayms(100);
}
else
{
}
}
//******************************24C02環節*************************************//
void init()
{
SDA=1;
delayms(5);
SCL=1;
delayms(5);
}
void start() //開始信號
{
SDA=1;
delayms(5);
SCL=1;
delayms(5);
SDA=0;
delayms(5);
}
void stop() //停止信號
{
SDA=0;
delayms(5);
SCL=1;
delayms(5);
SDA=1;
delayms(5);
}
void respons() //應答
{
unsigned char i;
SCL=1;
delayms(5);
while((SDA==1)&&(i<250))
i++;
SCL=0;
delayms(5);
}
void write_byte(unsigned char date)//寫字節
{
unsigned char i,temp,j;
temp=date;
for(i=0; i<8; i++)
{
j=0x80&temp;
temp=temp<<1;
SCL=0;
delayms(5);
SDA=(bit)j;
delayms(5);
SCL=1;
delayms(5);
}
SCL=0;
delayms(5);
SDA=1;
delayms(5);
}
unsigned char read_byte()//讀字節
{
unsigned char i,k;
SCL=0;
delayms(2);
SDA=1;
for(i=0; i<8; i++)
{
SCL=1;
delayms(5);
k=(k<<1)|SDA;
SCL=0;
delayms(5);
}
return k;
}
void write_add(unsigned char address,unsigned char date)//往地址寫數據
{
start();
write_byte(0xa0); //控制字寫1010 000 0(寫操作)
respons();
write_byte(address);//存儲單元地址
respons();
write_byte(date);
respons();
stop();
}
unsigned char read_add(unsigned char address) //往地址中讀數據
{
unsigned char date;
start();
write_byte(0xa0); //控制字 寫
respons();
write_byte(address); //單元地址
respons();
start();
write_byte(0xa1); //控制字讀1010 000 1(讀操作)
respons();
date=read_byte(); //數據
SDA=1; //非應答
delayus(5);
SCL=1;
delayus(5);
stop();
return date;
}
void getRecord() //讀取前三名分數
{
topscore[0]=read_add(0);//第一名
name[0][0]=read_add(1);
name[0][1]=read_add(2);
topscore[1]=read_add(3);//第二名
name[1][0]=read_add(4);
name[1][1]=read_add(5);
topscore[2]=read_add(6);//第三名
name[2][0]=read_add(7);
name[2][1]=read_add(8);
}
void Record() //更新前三并記錄分數
{
write_add(0,topscore[0]);//第一名
write_add(1,name[0][0]);
write_add(2,name[0][1]);
write_add(3,topscore[1]);//第二名
write_add(4,name[1][0]);
write_add(5,name[1][1]);
write_add(6,topscore[2]);//第三名
write_add(7,name[2][0]);
write_add(8,name[2][1]);
}
void Judge() //判斷分數高低
{
if(score>topscore[0])
{
topscore[2]=topscore[1];//第二名賦給第三名
name[2][0]=name[1][0];
name[2][1]=name[1][1];
topscore[1]=topscore[0];//第一名賦給第二名
name[1][0]=name[0][0];
name[1][1]=name[0][1];
topscore[0]=score; //臨時變量賦給第一名
name[0][0]=tempname[0];
name[0][1]=tempname[1];
}else if(score>topscore[1])
{
topscore[2]=topscore[1];//第二名賦給第三名
name[2][0]=name[1][0];
name[2][1]=name[1][1];
topscore[1]=score; //臨時變量賦給第二名
name[1][0]=tempname[0];
name[1][1]=tempname[1];
}else if(score>topscore[2])
{
topscore[2]=score; //臨時變量賦給第三名
name[2][0]=tempname[0];
name[2][1]=tempname[1];
}
}
//*******************************1602環節*************************************//
void wr_com(unsigned char com) //寫指令
{
delayms(5);
RS=0;
EN=0;
P0=com;
delayms(5);
EN=1;
delayms(5);
EN=0;
}
void wr_dat(unsigned char dat) //寫數據
{
delayms(5);
RS=1;
EN=0;
P0=dat;
delayms(5);
EN=1;
delayms(5);
EN=0;
}
void lcd_init() //1602初始化設置//
{
delayms(1);
wr_com(0x38); //設置16*2顯示,5*7點陣,8位數據接口
wr_com(0x01); //顯示清0,數據指針清0
wr_com(0x06); //寫一個字符后地址加一
wr_com(0x0c); //設置開顯示,不顯示光標
getRecord();
}
void displayWelcome() //顯示歡迎界面
{
wr_com(0x80+0x03);
delayms(1);
for(i=0; i<9; i++)
{
wr_dat(str1[i]);
delayus(1);
}
wr_com(0xc0+0x01);
delayms(1);
for(i=0; i<13; i++)
{
wr_dat(str9[i]);
delayus(1);
}
for(i=0; i<10; i++) //開關顯示完成閃爍
{
if(j==0)
{
wr_com(0x08); //關顯示
delayms(100);
}else
{
wr_com(0x0c); //開顯示
delayms(100);
}
j=~j;
}
Play_Song(0);
delayms(100);
}
void displayPrepare() //顯示選項
{
wr_com(0x01); //清屏
delayms(5);
wr_com(0x80);
delayms(5);
for(i=0; i<15; i++)
{
wr_dat(str2[i]);
delayus(5);
}
wr_com(0x80+0x40);
delayms(5);
for(i=0; i<6; i++)
{
wr_dat(str3[i]);
delayus(5);
}
for(i=0; i<9; i++)
{
switch(i%3)
{
case 0:hole1=0;P3=0x00;delayms(100);
case 1:hole1=0;P3=0x55;delayms(100);
case 2:hole1=1;P3=0xaa;delayms(100);
}
}
hole1=0;
P3=0x00;
}
void displaytime() //游戲過程中刷新顯示時間、分數
{
wr_com(0x80+0x05); //顯示倒計時
delayus(5);
wr_dat(0x30+time/10);
delayus(5);
wr_dat(0x30+time%10);
delayus(5);
wr_com(0x80+0x0e); //顯示分數
delayus(5);
wr_dat(0x30+score/10);
delayus(5);
wr_dat(0x30+score%10);
delayus(5);
wr_com(0xc0+0x0e); //顯示關卡
delayus(5);
wr_dat(0x30+(level+1));
delayus(5);
}
void recordName() //記錄姓名
{
wr_com(0x01);
delayus(5);
wr_com(0x80);
delayus(5);
for(i=0; i<10; i++) //Your Name:
{
wr_dat(str18[i]);
delayus(5);
}
i='A';
wr_dat(i);
delayus(5);
wr_com(0x10); //光標左移
delayus(5);
wr_com(0x0f); //光標閃爍
delayus(5);
while(1) //輸入第一個字母
{
wr_com(0x80+0x0a);
delayus(5);
wr_dat(i);
delayus(5);
if(button1==0)
{
delayms(10);
if(button1==0)
{
while(!button1);
i++;
if(i>'Z')
i='A';
}
}
if(button2==0)//確認,開始輸入第二個字母
{
tempname[0]=i;
break;
}
}
i='A'; //輸入第二個字母
wr_dat(i);
delayus(5);
while(1)
{
wr_com(0x80+0x0b);
delayus(5);
wr_dat(i);
delayus(5);
if(button1==0)
{
delayms(10);
if(button1==0)
{
while(!button1);
i++;
if(i>'Z')
i='A';
}
}
if(button2==0)//確認,輸入完畢
{
tempname[1]=i;
break;
}
}
wr_com(0x0c); //關閉光標
delayus(5);
displayChoose();
}
void displayover() //顯示一輪游戲結束畫面
{
TR1=0; //關閉定時器1
wr_com(0x01);
delayms(5);
wr_com(0x80);
delayms(5);
for(i=0; i<10; i++) //Game Over
{
wr_dat(str10[i]);
delayus(5);
}
wr_com(0xc0);
delayus(5);
if(score>=(10*(1+level))) //不同level分數要求不同,win了
{
if(level==3) //通關了
{
level=0;
wr_com(0x80);
delayus(5);
for(i=0; i<15; i++)
{
wr_dat(str14[i]);
delayus(5);
}
wr_com(0xc0);
delayus(5);
for(i=0; i<8; i++)
{
wr_dat(str11[i]);
delayus(5);
}
while(1)
{
if(button2==0)
{
delayms(10);
if(button2==0)
{
while(!button2);
recordName();
}
}
}
}
else //升級了
{
for(i=0; i<12; i++) //You Win!
{
wr_dat(str11[i]);
delayus(5);
}
while(1)
{
if(button2==0)
{
delayms(10);
if(button2==0)
{
while(!button2);
level++;
displayGame();
}
}
}
}
}
else //You Lose!
{
for(i=0; i<9; i++)
{
wr_dat(str12[i]);
delayus(5);
}
}
while(1) //失敗了
{
if(button2==0)
{
delayms(10);
if(button2==0)
{
while(!button2);
if(score!=0) //0分不記錄
recordName();
displayChoose();
}
}
}
}
void scankey() //掃描按鍵,判斷是否得分
{
if((hole1==0) && (P3==0x00))//打中地鼠
{
delayms(5);
flag1=1; //標志得分不進行scankey
flag2=1; //標識得分buzzer
score++;
playBuzzer();
hole1=0;
P3=0x00;
}
}
unsigned char random() //隨機數
{
temp++;
result=rand()%9+1;
return result;
}
void displayhole() //hole地鼠顯示
{
holenum=random();
if(holenum==0)
holenum++;
wr_com(0xc0+0x06);
delayus(5);
wr_dat(0x30+holenum);
delayus(5);
switch(holenum)
{
case 0: break;
case 1: //1號洞亮
hole1=1;
P3=hole[1];
break;
case 2: //2號洞亮
hole1=0;
P3=hole[2];
break;
case 3: //3號洞亮
hole1=0;
P3=hole[3];
break;
case 4: //4號洞亮
hole1=0;
P3=hole[4];
break;
case 5: //5號洞亮
hole1=0;
P3=hole[5];
break;
case 6: //6號洞亮
hole1=0;
P3=hole[6];
break;
case 7: //7號洞亮
hole1=0;
P3=hole[7];
break;
case 8: //8號洞亮
hole1=0;
P3=hole[8];
break;
case 9: //9號洞亮
hole1=0;
P3=hole[9];
break;
}
}
void pause() //暫停/恢復游戲
{
if(button2==0) //暫停鍵
{
delayms(5); //去抖動
if(button2==0)
{
while(!button2);
TR1=~TR1;
flag5=~flag5;
return;
}
}
}
void Gameinit() //游戲開始時數據初始化
{
flag1=0;//scankey標識
flag2=0;//蜂鳴器標志位
flag3=0;//出洞結束標識
flag4=0;//timeover標識
time=30;
if(level==0) //重新開始闖關,則清零得分
score=0;
wr_com(0x01); //清屏
delayus(5);
wr_com(0x80);
delayus(5);
for(i=0; i<15; i++) //固定內容顯示
{
wr_dat(str8[i]);
delayus(5);
}
wr_com(0xc0);
delayus(5);
for(i=0; i<14; i++)
{
wr_dat(str15[i]);
delayus(5);
}
}
void Game() //游戲真正進行!!!!!!!!!!
{
Gameinit();
displaytime(); //顯示時間、分數、洞、關卡
TR1=1; //開啟定時器1
while(1)
{
displayhole(); //地鼠出洞
while(!flag3)//地鼠出洞時間 level:3s; level2:2s; level3:1s
{
if(flag5==0)
{
if(flag1==0)
scankey();
displaytime();
}
pause(); //暫停鍵判斷
};
if(flag2==0)//沒有打中地鼠
{
playBuzzer();
}
if(flag4==1)//時間到,結束game
{
displayover();
}
flag1=0;//scankey標識
flag2=0;//蜂鳴器標志位
flag3=0;//出洞結束標識
flag4=0;//timeover標識
}
}
void displayGame() //開始游戲
{
wr_com(0x01); //清屏
delayms(5);
wr_com(0x80+0x04);
delayms(5);
for(i=0; i<6; i++) //顯示Ready
{
wr_dat(str5[i]);
delayus(5);
}
wr_com(0xc0+0x06);
delayms(5);
for(i=5; i>0; i--) //顯示倒數5秒
{
wr_dat(0x30+i);
for(j=0; j<10; j++)
delayms(100);
wr_com(0xc0+0x06);
delayms(5);
}
wr_com(0xc0+0x06);
delayms(5);
for(i=0; i<3; i++) //顯示GO
{
wr_dat(str6[i]);
delayus(5);
}
delayms(200);
Game(); //開始游戲!
}
void displayScore() //顯示得分記錄
{
getRecord();//從24C02中獲取數據
wr_com(0x01);
delayms(5);
wr_com(0x80);
delayms(5);
for(i=0; i<12; i++) //顯示當前得分
{
wr_dat(str7[i]);
delayus(5);
}
wr_dat(0x30+score/10);
delayms(5);
wr_dat(0x30+score%10);
delayms(5);
wr_com(0xc0);
delayus(5);
for(i=0; i<5; i++) //第二行顯示top1
{
wr_dat(str13[i]);
delayus(5);
}
wr_com(0xc0+0x06); //top1
delayus(5);
wr_dat('4');
delayus(5);
wr_dat('0');
delayus(5);
wr_com(0xc0+0x09);
delayus(5);
wr_dat('A');
delayus(5);
wr_dat('Q');
delayus(5);
while(1) //進入第二頁鍵
{
if(button2==0)
{
delayms(10); //去抖動
if(button2==0)
{
while(!button2);
displayScoreNext();
break;
}
}
}
}
void displayScoreNext() //顯示分數第二頁
{
wr_com(0x01);
delayms(5);
wr_com(0x80);
delayus(5);
for(i=0; i<5; i++) //第一行顯示top2
{
wr_dat(str16[i]);
delayus(5);
}
wr_com(0x80+0x06);
delayus(5);
wr_dat('3');
delayus(5);
wr_dat('9');
delayus(5);
wr_com(0x80+0x09);
delayus(5);
wr_dat('A');
delayus(5);
wr_dat('W');
delayus(5);
wr_com(0xc0);
delayus(5);
for(i=0; i<5; i++) //第二行顯示top3
{
wr_dat(str17[i]);
delayus(5);
}
wr_com(0xc0+0x06);
delayus(5);
wr_dat('3');
delayus(5);
wr_dat('8');
delayus(5);
wr_com(0xc0+0x09);
delayus(5);
wr_dat('A');
delayus(5);
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
打地鼠游戲設計.zip
(160.12 KB, 下載次數: 93)
2020-10-20 22:06 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
雨雨好
時間:
2020-12-6 13:40
有.hex文件嗎
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
伊人久久免费视频
|
色偷偷888欧美精品久久久
|
久久久噜噜噜www成人网
|
日本成人片在线观看
|
国产精品日韩高清伦字幕搜索
|
亚洲天堂二区
|
国产区精品视频
|
性色的免费视频
|
永久网站
|
a视频在线观看
|
天天拍天天操
|
成人午夜性成交
|
久草视频在线播放
|
中文字幕乱码一区二区三区
|
一区二区三区欧美
|
精品在线一区二区三区
|
色婷婷综合久久久久中文一区二区
|
日韩精品二区
|
国产精品无码永久免费888
|
欧美三级电影在线播放
|
国产精品精品久久久
|
国产精品国产a级
|
亚洲一区在线观看视频
|
伊人一区
|
欧美成人免费在线视频
|
午夜成人免费视频
|
亚欧精品一区
|
欧美一级久久久猛烈a大片 日韩av免费在线观看
|
亚洲日本乱码在线观看
|
一区二区三
|
xxx国产精品视频
|
亚洲激情在线观看
|
日韩欧美一区二区三区四区
|
影音先锋中文字幕在线观看
|
久久99精品久久久久久国产越南
|
亚洲国产欧美在线
|
久久久www成人免费精品张筱雨
|
久久久成人精品
|
黄色免费看
|
成人在线一级片
|
亚洲一区在线日韩在线深爱
|