⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 text1.c

📁 此程序是用来实行贪吃蛇小游戏功能的
💻 C
📖 第 1 页 / 共 2 页
字号:
		if ((P2&0xf0)!=0xf0)
		{
			scancode = 0xfe;
			while((scancode&0x10)!=0)
			{
				P2 = scancode;
				if ((P2&0xf0)!=0xf0)
				{
					tmpcode = (P2&0xf0)|0x0f;
					return((~scancode)+(~tmpcode));
				}
				else scancode = (scancode<<1)|0x01;	
			}
		}
	}
	return(0);
}

void refresh(void)
{
   uchar i;
   row=row_12864;
   col=col_12864;
   write_command_12864(row);
   write_command_12864(col);
   for(i=0;i<64;i++)
   {
      if(a[i]==0)
	     out(kong);
	  else if(a[i]==1)
	     out(she);
   }
}


void ding(void)
{
   if(col>col_12864+55)
   {
     col=col_12864;
	 row++;
   }
   else
     col+=8;
}

void out(uchar *pz)
{
   uchar i;
   for(i=0;i<8;i++)
     write_data_12864(pz[i]);
   ding();
   write_command_12864(row);
   write_command_12864(col);
}


void outh(uchar *pz,uchar n)
{
   uchar i,j,k;
   j=0;
   for(k=0;k<n;k++)
   {
     write_command_12864(row);
     write_command_12864(col);
     for(i=0;i<16;i++)
       write_data_12864(pz[j++]);
     row++;
     write_command_12864(row);
     write_command_12864(col);
     for(i=0;i<16;i++)
       write_data_12864(pz[j++]);
     col+=16;
     row--;
   }
}

void init(void)
{
  uchar i;
  for(i=0;i<64;i++)
     a[i]=0;
  if(guan==0)
  {
     longe=2;
	 towads=0;
	 b[0]=36;
	 b[1]=35;
	 b[2]=34;
	 for(i=0;i<longe+1;i++)
	   a[b[i]]=1;
  }
  v=8-3*hard;
  TR0=1;
}

void lxy(void)
{
   if(guan>din)
     din=guan;
   else if(guan<din-3)
     din=guan+3;
}

void caidan(void)
{
  uchar i;
  init_lcd_12864();
  lxy();
  for(i=din-3;i<=din;i++)
  {
      col=col_12864;
      row=row_12864+2*(i-(din-3));
	  if(i==guan)
         outhf(diyiguan+i*96,3);
      else
         outh(diyiguan+i*96,3);
  }
}

void outhf(uchar *pz,uchar n)
{
   uchar i,j,k;
   j=0;
   for(k=0;k<n;k++)
   {
     write_command_12864(row);
     write_command_12864(col);
     for(i=0;i<16;i++)
       write_data_12864(~pz[j++]);
     row++;
     write_command_12864(row);
     write_command_12864(col);
     for(i=0;i<16;i++)
       write_data_12864(~pz[j++]);
     col+=16;
     row--;
   }
}

void caidana(void)
{
  uchar i;
  init_lcd_12864();
  for(i=0;i<=2;i++)
  {
      col=col_12864;
      row=row_12864+2*i;
	  if(i==hard)
         outhf(nandu+i*64,2);
      else
         outh(nandu+i*64,2);
  }
}   	    

main()
{
   state=0;
   din=3;
   guan=0;
   hard=0;
   x=0;
   row=row_12864;
   col=col_12864;
   init_lcd_12864();
   cs1_12864=0;
   cs2_12864=1;
   TMOD=0x01;
   IE=0x82;
   TH0=0;
   TL0=0;
   TR0=0;
   caidan();
   while(1)
   {
      key=0;
      while(key==0)
	    key=keyscan();
	  while(P2!=0xf0)
	    P2=0xf0;
	  if(state==0)
	  {
	    if(key==0x14)
		{
		   if(guan>0)
		   {
		     guan--;
			 caidan(); 
		   }
		}
		else if(key==0x44)
		{
		   if(guan<9)
		   {
		     guan++;
			 caidan();
		   }
		}
		else if(key==0x24)
		{
		   state=1;
		   caidana();
		}
	  }
	  else if(state==1)
	  {
	    if(key==0x14)
		{
		   if(hard>0)
		   {
		     hard--;
			 caidana(); 
		   }
		}
		else if(key==0x44)
		{
		   if(hard<2)
		   {
		     hard++;
			 caidana();
		   }
		}
		else if(key==0x24)
		{
		   state=2;
		   init();
		   refresh();
		}
	  }
	  else if(state==2)
	  {
	    if(key==0x14)
	    {
	      if(towads!=3)
		    towads=1;
	    }
	    else if(key==0x44)
	    {
	      if(towads!=1)
		    towads=3;
	    }
	    else if(key==0x22)
	    {
	      if(towads!=0)
	  	    towads=2;
	    }
	    else if(key==0x28)
	    {
	      if(towads!=2)
	    	towads=0;
	    }
		else if(key==0x24)
		{
		   state=3;
		   TR0=0;
		   init_lcd_12864();
		   yn=0;
		   col=col_12864;
		   row=row_12864+2;
		   outh(shifoutuichu,4);
		   col=col_12864;
		   row=row_12864+4;
		   outhf(shi,1);
		   col=col_12864+48;
		   row=row_12864+4;
		   outh(fou,1);
		}
	  }
	  else if(state==3)
	 {
	   if(key==0x28)
	   {
	     if(yn==0)
		 {
		   yn=1;
		   row=row_12864+4;
           col=col_12864;
	       outh(shi,1);
	       row=row_12864+4;
           col=col_12864+48;
	       outhf(fou,1); 
		 }
	   }
	   else if(key==0x22)
	   {
	     if(yn==1)
		 {
		   yn=0;
		   row=row_12864+4;
           col=col_12864;
	       outhf(shi,1);
	       row=row_12864+4;
           col=col_12864+48;
	       outh(fou,1); 
		 }
	   }
	   else if(key==0x24)
	   {
	      if(yn==0)
		  {
		     state=0;
			 init_lcd_12864();
			 caidan();
		  }
		  else if(yn==1)
		  {
		     state=2;
			 init_lcd_12864();
			 refresh();
			 TR0=1;
		  }
	   }
     }
   }
}

void  job() interrupt 1 using 1
{
   uchar i;
   x++;
   if(x==v)
   {
	 a[b[longe]]=0;
	 for(i=longe;i>0;i--)
	   b[i]=b[i-1];
	 if(towads==0)
	 {
	   b[0]++;
	   if((b[0]%8)==0)
	      b[0]-=8;
	 }
	 else if(towads==1)
	 {
	   if(b[0]<8)
	      b[0]+=56;
	   else 
	      b[0]-=8;
	 }
	 else if(towads==2)
	 {
	   if(b[0]%8==0)
	      b[0]+=7;
	   else 
	      b[0]--;
	 }
	 else if(towads==3)
	 {
	   b[0]+=8;
	   if(b[0]>63)
	     b[0]-=64;
	 }
	 a[b[0]]=1;
	 x=0;
	 refresh();
   }
}
	 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -