📄 mainc.c
字号:
#include <d:\Keil\C51\INC\Cygnal\c8051F020.h>
#define uchar unsigned char
#define uint unsigned int
uchar m ,key ,keyflag=0 ,*qarray,*rampointer,*qcon;
uchar code wordstart[]={""};
uchar code word[]={""};
uchar ram[800]={0};
sbit P2_3=P2^3;
sbit Z=P2^2;
sbit P2_4=P2^4;
sbit P2_5=P2^5;
sbit P2_6=P2^6;
sbit P2_7=P2^7;
sbit P3_0=P3^0;
bit flagbit0,flagbitzhang;
//sbit P1_7=P1^7;
void drawline(uchar x,uchar y,uchar xy,uchar flagbit);
void drawbox(uchar x1,uchar y1,uchar x2,uchar y2);
void writeword(uchar x,uchar y);
void writeword16(uchar x, uchar y);
void config (void);
delaymin(uchar x)
{uchar i ,j;
for(i=0;i<x;x++)
for(j=0;j<255;j++);
}
void screen()
{uchar ii ,ji ,flag;
bit q;
uchar add,addmid;
uint jiii;
for(ji=240;ji>0;ji-=3)
{DAC1H=ji;
jiii=(80-ji/3)*10;
for(ii=0;ii<240;ii+=3)
{DAC0H=ii;
if(ii%24==0)flag=ram[ii/24+jiii];
if(ii%3==0)
{//z=~(bit)((flag>>(7-(ii%24)/3)&0x01))^1;
add=7-(ii%24)/3;
addmid=flag>>add;
q=(bit)(addmid&0x01);
Z=~q;
}
}
}
}
keypress()
{
uchar x;
P4 = 0x3f;
x = P4&0x3f;
if(x==0x3f){key=0;return;}
P4 = 0x3f;
delaymin(5);
x = P4&0x3f;
if (x==0x3f){key=0;return;}
switch(x)
{case 0x3e:key=1;break;
case 0x3d:key=2;break;
case 0x3b:key=3;break;
case 0x37:key=4;break;
case 0x2f:key=5;break;
case 0x1f:key=6;break;
default:key=0;
}
}
void keyfine()
{
keypress();
}
//void keyint() interrupt 2 using 1
//{
//keyfine();
//}
void initime1() interrupt 1 using 2
{TF0=0;
TR0=0;
TH0=0;
TL0=0;
TR0=1;
//screenflag=screenflag^1;
}
//////////////////
void main()
{uchar i ,j ,huaflagpre=1,huaflagcon=1;
uchar code nondiscovery[8] ={0x00,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x00};
uchar code bomb[8] ={0x08,0x1c,0x70,0x7e,0x7e,0x7a,0x78,0x00};
uchar code finger[8] ={0x0c,0x1e,0x1e,0x3e,0x7f,0x7f,0x3e,0x1c};
uchar code biaoji[8] ={0x20,0x30,0x38,0x3c,0x3e,0x20,0x20,0x20};
uchar code shuzi[10][8]={{0x18,0x24,0x42,0x42,0x42,0x42,0x24,0x18},{0x08,0x18,0x28,0x08,0x08,0x08,0x08,0x3c},
{0x18,0x24,0x24,0x08,0x10,0x20,0x20,0x3c},{0x18,0x24,0x04,0x18,0x18,0x04,0x24,0x18},
{0x04,0x04,0x14,0x24,0x44,0x7e,0x04,0x0e},{0x3c,0x20,0x20,0x38,0x04,0x04,0x24,0x18},
{0x18,0x24,0x20,0x38,0x24,0x24,0x24,0x18},{0x3c,0x24,0x04,0x08,0x08,0x10,0x10,0x10},
{0x18,0x24,0x24,0x18,0x24,0x24,0x24,0x18},{0x18,0x24,0x24,0x24,0x1c,0x04,0x24,0x18}};
uchar code gameover[8][8]={{0x3c,0x62,0x42,0x40,0x5e,0x4c,0x54,0x34},{0x18,0x24,0x42,0x42,0x7e,0x42,0x42,0x42},
{0x42,0x66,0x66,0x5a,0x99,0x99,0x81,0x81},{0x7f,0x40,0x40,0x7e,0x40,0x40,0x40,0x7e},
{0x3c,0x42,0x81,0x81,0x81,0x81,0x42,0x3c},
{0x42,0x42,0x42,0x42,0x24,0x24,0x24,0x18},{0x7f,0x40,0x40,0x7e,0x40,0x40,0x40,0x7e},
{0x78,0x44,0x44,0x78,0x70,0x48,0x44,0x42}},
/* youwin[9][8]={{0},{0x42,0x42,0x42,0x24,0x3c,0x18,0x18,0x18},
{0x3c,0x42,0x81,0x81,0x81,0x81,0x42,0x3c},{0x42,0x42,0x42,0x42,0x42,0x42,0x66,0x18},
{0},{0x81,0x81,0x81,0x99,0x5a,0x5a,0x24,0x24},
{0x3c,0x18,0x18,0x18,0x18,0x18,0x18,0x3c},{0x58,0x24,0x42,0x42,0x42,0x42,0x42,0x42},
{0}};*/
welldone[8][8]={{0x81,0x81,0x81,0x99,0x5a,0x5a,0x24,0x24},{0x7f,0x40,0x40,0x7e,0x40,0x40,0x40,0x7e},
{0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3e},{0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3e},
{0xf8,0x84,0x82,0x82,0x82,0x82,0x84,0xf8},{0x3c,0x42,0x81,0x81,0x81,0x81,0x42,0x3c},
{0x58,0x24,0x42,0x42,0x42,0x42,0x42,0x42},{0x7f,0x40,0x40,0x7e,0x40,0x40,0x40,0x7e}};
uchar air[32]={0};
uchar qing[32]={0x00,0x40,0x47,0xFC,0x30,0x40,0x23,0xF8,0x00,0x40,0x07,0xFE,0xF0,0x00,0x13,0xF8,
0x12,0x08,0x13,0xF8,0x12,0x08,0x13,0xF8,0x16,0x08,0x1A,0x08,0x12,0x28,0x02,0x10};
uchar deng[32]={0x20,0x80,0x3E,0xFC,0x28,0xA0,0x45,0x10,0x85,0x10,0x3F,0xF8,0x01,0x00,0xFF,0xFE,
0x00,0x20,0x00,0x20,0x7F,0xFC,0x04,0x20,0x02,0x20,0x02,0x20,0x00,0xA0,0x00,0x40};
uchar dai[32]={0x10,0x40,0x18,0x40,0x13,0xFC,0x28,0x40,0x4C,0x40,0x88,0x40,0x17,0xFE,0x10,0x10,
0x30,0x10,0x57,0xFE,0x10,0x10,0x11,0x10,0x11,0x10,0x10,0x10,0x10,0x50,0x10,0x20};
uchar yi[32]={0x00,0x00,0x0F,0xF0,0x08,0x10,0x0F,0xF0,0x08,0x10,0x0F,0xF0,0x04,0x00,0x0F,0xFC,
0x11,0x24,0x62,0x24,0x04,0x44,0x18,0x84,0x63,0x04,0x0C,0x04,0x70,0x14,0x00,0x08};
uchar nan[32]={0x00,0xA0,0x00,0x90,0xF9,0x10,0x09,0xFE,0x8B,0x20,0x4B,0x20,0x2D,0xFC,0x11,0x20,
0x19,0x20,0x29,0xFC,0x25,0x20,0x45,0x20,0x81,0x20,0x01,0xFE,0x01,0x00,0x01,0x00};
uchar zhong[32]={0x01,0x00,0x01,0x00,0x21,0x08,0x3F,0xFC,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,
0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00};
uchar zhang[32]={0x10,0x80,0x10,0x60,0x10,0x20,0xFF,0xFE,0x12,0x04,0x10,0x90,0x19,0x0C,0x12,0x04,
0x31,0xF0,0xD0,0x20,0x10,0x40,0x10,0x82,0x11,0x02,0x11,0x02,0x50,0xFE,0x20,0x00,},
cai[32]={0x00,0x20,0x11,0x20,0x11,0x20,0x11,0x24,0xFD,0x3E,0x11,0xE4,0x17,0x24,0x11,0x24,
0x11,0x24,0x11,0x34,0x11,0x28,0x1D,0x20,0x31,0x02,0xC1,0x02,0x00,0xFE,0x00,0x00,},
xia[32]={0x1F,0xF8,0x01,0x00,0x7F,0xFE,0x41,0x04,0x1D,0x70,0x01,0x00,0x1D,0x70,0x01,0x00,
0x3F,0xF8,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x21,0x08,0x3F,0xF8,0x20,0x08,};
bit updown=0;
uchar nandu=15;
uchar tiaoshi;
uchar xdata array[8][10]={0};//雷 标记 已显示 周围是否已显示 周围雷数
uchar random,randper,randshu;
uchar bombflagcont,bombflagcontfan,i1,j1,j2,i2;
uchar k;//k是时间v是速度
uchar outflag=0;
uint randsize;
bit screenflag,scanflag;//.
EA = 1;
EX1 = 0;
CKCON = 0X04;
TMOD = 0x01;
TH0 = 0x00;
TL0 = 0X00;
TR0 = 1;
ET0 = 1;
rampointer = ram;
config();
start:
flagbit0= 0;
drawbox(0,0,79,79);
for(i1=0;i1<5;i1++){
for(i=1;i<=4;i++)//1
{ qarray=zhang;
writeword16(4-i,10);
qarray=cai;
writeword16(4+i,30);
qarray=xia;
writeword16(4-i,50);
for(j=0;j<4;j++)screen();
qarray=air;
writeword16(4-i,10);
qarray=air;
writeword16(4+i,30);
qarray=air;
writeword16(4-i,50);
}
for(i=1;i<=4;i++)//2
{ qarray=zhang;
writeword16(i,10);
qarray=cai;
writeword16(8-i,30);
qarray=xia;
writeword16(i,50);
for(j=0;j<4;j++)screen();
qarray=air;
writeword16(i,10);
qarray=air;
writeword16(8-i,30);
qarray=air;
writeword16(i,50);
}
for(i=1;i<=4;i++)//3
{ qarray=zhang;
writeword16(4+i,10);
qarray=cai;
writeword16(4-i,30);
qarray=xia;
writeword16(4+i,50);
for(j=0;j<5;j++)screen();
qarray=air;
writeword16(4+i,10);
qarray=air;
writeword16(4-i,30);
qarray=air;
writeword16(4+i,50);
}
for(i=1;i<=4;i++)//4
{ qarray=zhang;
writeword16(8-i,10);
qarray=cai;
writeword16(i,30);
qarray=xia;
writeword16(8-i,50);
for(j=0;j<5;j++)screen();
qarray=air;
writeword16(8-i,10);
qarray=air;
writeword16(i,30);
qarray=air;
writeword16(8-i,50);
}
}
/* flagbit0= 1;
drawline(0,00,79,1);
drawline(4,00,79,0);
drawline(6,00,79,0);
drawline(9,00,79,0);
drawline(13,00,79,0);
drawline(17,00,70,0);
drawline(40,00,60,0);
drawline(78,30,50,0);
//////////////////////
//flagbit0= 1;
drawline(00,00,79,1);
drawline(20,10,79,1);
drawline(00,20,79,1);
drawline(00,00,79,1);
// drawline(13,40,79,1);
// drawline(14,50,79,1);
// drawline(16,60,79,1);
// drawline(0,00,79,1);
for(i=0;i<20;i++)screen();
flagbit0= 0;
//for(i=0;i<20;i++)screen();
drawbox(0,0,79,79);
//for(j1=0;j1<250;j1++)screen();
*/
for(i1=0;i1<3;i1++)
for(i=40;i<80;i++)
{flagbit0=1;
drawline(79-i,79-i,i,1);
drawline(79-i,i,i,1);
drawline(79-i,79-i,i,0);
drawline(i,79-i,i,0);
screen();
flagbit0=0;
drawline(79-i,79-i,i,1);
drawline(79-i,i,i,1);
drawline(79-i,79-i,i,0);
drawline(i,79-i,i,0);
}
flagbit0=0;
drawbox(0,0,79,79);
flagbit0=1;
//writeword(4,30,zhang);
drawline(13,40,66,1);
drawline(13,60,66,1);
drawline(13,40,60,0);
drawline(66,40,60,0);
drawbox (16,45,31,55);
key=0;
for(i=0;i<5;i++)screen();
qarray=yi;
writeword16(1,10);
qarray=zhong;
writeword16(4,10);
qarray=nan;
writeword16(7,10);
huaflagpre=1;
huaflagcon=1;
while(1)//界面游戏开始并等待按键得到模式信息跳出,
{for(i=0;i<5;i++)screen();
keyfine();
///////
/* switch(key)
{case 0x01 : P2_3=~P2_3; break;
case 0x02 : P2_4=~P2_4; break;
case 0x03 : P2_5=~P2_5; break;
case 0x04 : P2_6=~P2_6; break;
case 0x05 : P2_7=~P2_7; break;
case 0x06 : P3_0=~P3_0; break;
}*/
////////
if(key!=0){if(key==1||key==3){if(huaflagpre!=1)huaflagcon-=1;}
else if(key==2||key==4){if(huaflagpre!=3)huaflagcon+=1;}
else if(key!=0)break;
/////
if(huaflagpre!=huaflagcon){flagbit0=0;
switch(huaflagpre)
{
case 1:drawbox(16,45,31,55);break;
case 2:drawbox(32,45,47,55);break;
case 3:drawbox(48,45,63,55);break;
}
flagbit0=1;
switch(huaflagcon)
{
case 1:drawbox(16,45,31,55);nandu=10;break;
case 2:drawbox(32,45,47,55);nandu=15;break;
case 3:drawbox(48,45,63,55);nandu=20;break;
}
}
huaflagpre=huaflagcon;
key=0;
}
}//界面结束
////////////
flagbit0=0;
drawbox(0,0,79,79);
flagbit0=1;
drawbox(7,40,72,60);
flagbit0=0;
drawbox(9,43,70,56);
qarray=qing;
writeword16(1,10);
qarray=deng;
writeword16(4,10);
qarray=dai;
writeword16(7,10);
//drawword()//进度的百分比
key=0;
///////////////////加入界面按键产生
// while(key){screen();keyfine();}//按b键产生随机数
randper=0;//an pai ge shu yi gong 60 ge
randshu=0;//lei shu
flagbit0=1;
for(i=0;i<10;i++)
{for(j=0;j<8;j++)
{screen();
randsize=(uint)(nandu-randshu)*15/(80-randper);//产生为十五个
random =TL0&0x0f;
if(randsize>(uint)random)
{ array[i][j]=0x80;
randshu+=1;
}
randper+=1;
drawbox(10,46,10+(uchar)randper*3/4,54);
screen();
}
}
screen();
screen();
/////
EA=0;
for(i=0;i<10;i++)
{for(j=0;j<8;j++)
{if(array[i][j]==0){ bombflagcont=0;
for(i1=i-1;i1<=i+1;i1++)
{if(i1>=10)continue;//判断是否出格
for(j1=j-1;j1<=j+1;j1++)
{if(j1>=8)continue;//
if((array[i1][j1]&0x80)==0x80)bombflagcont++;
}
}
array[i][j]=array[i][j]|bombflagcont;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -