📄 tanshishe.c
字号:
#include "reg52.h"
#include <stdlib.h>
//11111111111111111111111111111111111111111111111111111111
sbit p10=P1^0;
sbit p11=P1^1;
sbit p12=P1^2;
sbit p13=P1^3;
sbit p14=P1^4;
sbit p15=P1^5;
sbit p16=P1^6;
sbit p17=P1^7;
sbit p20=P2^0;
sbit p21=P2^1;
sbit p22=P2^2;
sbit p23=P2^3;
sbit p24=P2^4;
sbit p25=P2^5;
sbit p26=P2^6;
sbit p27=P2^7;
sbit p30=P3^0;
sbit p31=P3^1;
sbit p32=P3^2;
sbit p33=P3^3;
sbit p34=P3^4;
sbit p35=P3^5;
//2222222222222222222222222222222222222222222222222222222222
unsigned int i;
int count=3;
unsigned char currentline=3,currentcol=3,currentoffset=3,temp2=0,timewatcher=1,objectl,objectc,offset=3,speed=5,j,k,tempspeed,tempmusic=1,high=0,low=0;//,pan,temp=0;
idata unsigned char b[128];
void play(int i,int j);
void playarray(int count,unsigned char b[]);
void move(int count,unsigned char b[]);
int exist(unsigned char line,unsigned char col,int counter, unsigned char b[]);
void display(unsigned char score);
//void timer1 (void) interrupt 3{
//temp++;
//if(temp>=4){pan=0;TR1=0;temp=0;}}
void music(unsigned char rhythm);
void timer0 (void) interrupt 1{
temp2++;
if(temp2>=speed){timewatcher=0;TR0=0;temp2=0;}}
void timer1 (void) interrupt 3
{
p35=~p35;
TH1=high;TL1=low;
tempmusic++;
if(tempmusic>=500)
tempmusic=0;
}
//33333333333333333333333333333333333333333333333333333333333
void main()
{
TMOD=0X11;
TH0=0;
TL0=0;
ET0=1;
ET1=1;
EA=1;
for(i=0;i<15000;i++) {P1=0X01;P2=0X00;}
for(i=0;i<15000;i++) {P1=0X03;P2=0X00;}
for(i=0;i<15000;i++) {P1=0X07;P2=0X00;}
for(i=0;i<15000;i++) {P1=0X0f;P2=0X00;}
for(i=0;i<15000;i++) {P1=0X1f;P2=0X00;}
for(i=0;i<15000;i++) {P1=0X3f;P2=0X00;}
for(i=0;i<15000;i++) {P1=0X7f;P2=0X00;}
for(i=0;i<15000;i++) {P1=0Xff;P2=0X00;}
///////////////
b[0]=1;b[1]=0;
b[2]=1;b[3]=1;
b[4]=1;b[5]=2;
b[6]=1;b[7]=3;
b[8]=1;b[9]=7;
b[10]=1;b[11]=5;
b[12]=1;b[13]=6;
b[14]=2;b[15]=0;
b[16]=2;b[17]=5;
b[18]=2;b[19]=7;
b[20]=3;b[21]=0;
b[22]=3;b[23]=2;
b[24]=3;b[25]=3;
b[26]=3;b[27]=5;
b[28]=3;b[29]=7;
b[30]=4;b[31]=0;
b[32]=4;b[33]=3;
b[34]=4;b[35]=5;
b[36]=4;b[37]=7;
b[38]=5;b[39]=1;
b[40]=5;b[41]=2;
b[42]=5;b[43]=3;
b[44]=5;b[45]=7;
b[46]=5;b[47]=5;
b[48]=5;b[49]=6;
b[50]=5;b[51]=0;
count=26;
while(p31) playarray(count,b);
music(3);music(0);music(0);music(0);
music(3);music(0);
music(3);
music(1);
music(3);music(0);music(0);
music(5);music(5);music(0);music(0);
music(15);
while(p30)
{
display(speed-2);
if(!p33) speed++;
if(!p32) speed--;
if(speed<=0) speed=1;
if(speed>13) speed=13;
}
tempspeed=speed;
b[0]=3;b[1]=1;b[2]=3;b[3]=2;b[4]=3;b[5]=3;count=3;//currentline=3;currentcol=3;currentoffset=3;count=3;
while(1){
objectl=(rand()/(currentoffset+1+speed)+1)%8;
objectc=((rand()%(count*count-1)+currentoffset+speed)/currentcol*count)%8;//*count*currentoffset*currentoffset*currentcol%8;
while(exist(objectl,objectc,count,b)==1)
{
;;
objectl=(rand()/(currentoffset+2)+count+1+speed)%8;
;;
objectc=(((rand()+1)%(count*count-1)+currentoffset+speed)/currentcol*count+3)%8;
}
while(1){
while(!p34) {b[2*count]=objectl;b[2*count+1]=objectc;count++;playarray(count,b);count--;}
TR0=1;
timewatcher=1;
// while(p30&&p31&&p32&&p33)
while(timewatcher)
{b[2*count]=objectl;b[2*count+1]=objectc;count++;playarray(count,b);count--;//for(i=0;i<100;i++)play(objectl,objectc);
if(!p30){offset=0;if(currentoffset==1)offset=1;}
else if(!p31){offset=1;if(currentoffset==0)offset=0;}
else if(!p32){offset=2;if(currentoffset==3)offset=3;}
else if(!p33){offset=3;if(currentoffset==2)offset=2;}
else offset=currentoffset;}
currentoffset=offset;
switch(offset)
{
case 0:currentline-=1;b[2*count]=currentline;b[2*count+1]=currentcol;break;
case 1:currentline+=1;b[2*count]=currentline;b[2*count+1]=currentcol;break;
case 2:currentcol-=1;b[2*count]=currentline;b[2*count+1]=currentcol;break;
case 3:currentcol+=1;b[2*count]=currentline;b[2*count+1]=currentcol;break;
}
if(currentcol<0||currentcol>7||currentline<0||currentline>7)
{
k=count;
for(j=0;j<4;j++) playarray(k,b);
music(3);music(0);music(0);music(0);music(0);music(0);music(0);
music(3);music(0);
music(3);music(0);music(0);music(0);
music(3);music(0);
music(2);
music(1);
timewatcher=1;speed=30;TR0=1;
while(timewatcher) display(k-3);speed=tempspeed;
return ;
}
else if(exist(currentline,currentcol,count-1,b)==1)
{
k=count;
for(j=0;j<4;j++) playarray(k,b);
music(3);music(0);music(0);music(0);music(0);music(0);music(0);
music(3);music(0);
music(3);music(0);music(0);music(0);
music(3);music(0);
music(2);
music(1);
timewatcher=1;speed=30;TR0=1;
while(timewatcher) display(k-3);speed=tempspeed;
return ;
}
if(currentline==objectl&¤tcol==objectc){ b[2*count]=objectl;b[2*count+1]=objectc;count++;break;}
move(count,b);
}}}
//4444444444444444444444444444444444444444444444444444
void play(int i,int j)
{
P1=0x00;
P2=0xff;
switch(i)
{
case 0: {p10=1;
switch(j)
{
case 0:p20=0;break;
case 1:p21=0;break;
case 2:p22=0;break;
case 3:p23=0;break;
case 4:p24=0;break;
case 5:p25=0;break;
case 6:p26=0;break;
case 7:p27=0;break;
default: P2=0xff;
}break;
}
case 1: {p11=1;
switch(j)
{
case 0:p20=0;break;
case 1:p21=0;break;
case 2:p22=0;break;
case 3:p23=0;break;
case 4:p24=0;break;
case 5:p25=0;break;
case 6:p26=0;break;
case 7:p27=0;break;
default: P2=0xff;
}break;
}
case 2: {p12=1;
switch(j)
{
case 0:p20=0;break;
case 1:p21=0;break;
case 2:p22=0;break;
case 3:p23=0;break;
case 4:p24=0;break;
case 5:p25=0;break;
case 6:p26=0;break;
case 7:p27=0;break;
default: P2=0xff;
}break;
}
case 3: {p13=1;
switch(j)
{
case 0:p20=0;break;
case 1:p21=0;break;
case 2:p22=0;break;
case 3:p23=0;break;
case 4:p24=0;break;
case 5:p25=0;break;
case 6:p26=0;break;
case 7:p27=0;break;
default: P2=0xff;
}break;
}
case 4: {p14=1;
switch(j)
{
case 0:p20=0;break;
case 1:p21=0;break;
case 2:p22=0;break;
case 3:p23=0;break;
case 4:p24=0;break;
case 5:p25=0;break;
case 6:p26=0;break;
case 7:p27=0;break;
default: P2=0xff;
}break;
}
case 5: {p15=1;
switch(j)
{
case 0:p20=0;break;
case 1:p21=0;break;
case 2:p22=0;break;
case 3:p23=0;break;
case 4:p24=0;break;
case 5:p25=0;break;
case 6:p26=0;break;
case 7:p27=0;break;
default: P2=0xff;
}break;
}
case 6: {p16=1;
switch(j)
{
case 0:p20=0;break;
case 1:p21=0;break;
case 2:p22=0;break;
case 3:p23=0;break;
case 4:p24=0;break;
case 5:p25=0;break;
case 6:p26=0;break;
case 7:p27=0;break;
default: P2=0xff;
}break;
}
case 7: {p17=1;
switch(j)
{
case 0:p20=0;break;
case 1:p21=0;break;
case 2:p22=0;break;
case 3:p23=0;break;
case 4:p24=0;break;
case 5:p25=0;break;
case 6:p26=0;break;
case 7:p27=0;break;
default: P2=0xff;
}break;
}
default:P1=0x00;
}
}
/////////////////////////////////////////////////
void playarray(int count,unsigned char b[])
{
/* TMOD=0X11;
TH0=0;
TL0=0;
ET0=1;
EA=1;*/
TR0=1;
// pan=1;
// while(pan==1)
timewatcher=1;
while(timewatcher)
for(i=0;i<=count-1;i++)
play(b[2*i],b[2*i+1]);
}
///////////////////////////////////////////////////////
void move(int count, unsigned char b[])
{
for(i=0;i<=2*count-1;i++)
{
b[i]=b[i+2];
}
}
///////////////////////////////////////////////////////
int exist(unsigned char line,unsigned char col,int counter, unsigned char b[])
{
for(i=1;i<=counter;i++)
{if(line==b[2*i-2]&&col==b[2*i-1])
return 1;
else return 0;}
}
/////////////////////////////////////////////////////
void display(unsigned char score)
{
switch(score)
{
case 0:
count=14;
b[0]=1;b[1]=2;
b[2]=1;b[3]=4;
b[4]=1;b[5]=3;
b[6]=1;b[7]=5;
b[8]=2;b[9]=2;
b[10]=3;b[11]=5;
b[12]=4;b[13]=2;
b[14]=3;b[15]=2;
b[16]=2;b[17]=5;
b[18]=4;b[19]=5;
b[20]=5;b[21]=5;
b[22]=5;b[23]=2;
b[24]=5;b[25]=3;
b[26]=5;b[27]=4;
break;
case 1:
count=16;
b[0]=0;b[1]=4;
b[2]=1;b[3]=4;
b[4]=6;b[5]=2;
b[6]=1;b[7]=3;
b[8]=6;b[9]=3;
b[10]=6;b[11]=4;
b[12]=6;b[13]=5;
b[14]=2;b[15]=2;
b[16]=2;b[17]=3;
b[18]=2;b[19]=4;
b[20]=3;b[21]=3;
b[22]=3;b[23]=4;
b[24]=4;b[25]=3;
b[26]=4;b[27]=4;
b[28]=5;b[29]=3;
b[30]=5;b[31]=4;
break;
case 2:
count=15;
b[0]=1;b[1]=2;
b[2]=1;b[3]=4;
b[4]=1;b[5]=3;
b[6]=1;b[7]=5;
b[8]=2;b[9]=5;
b[10]=3;b[11]=5;
b[12]=4;b[13]=2;
b[14]=4;b[15]=5;
b[16]=4;b[17]=3;
b[18]=4;b[19]=4;
b[20]=5;b[21]=2;
b[22]=6;b[23]=2;
b[24]=6;b[25]=3;
b[26]=6;b[27]=4;
b[28]=6;b[29]=5;
break;
case 3:
count=15;
b[0]=1;b[1]=2;
b[2]=1;b[3]=4;
b[4]=1;b[5]=3;
b[6]=1;b[7]=5;
b[8]=2;b[9]=5;
b[10]=3;b[11]=5;
b[12]=3;b[13]=4;
b[14]=3;b[15]=2;
b[16]=3;b[17]=3;
b[18]=4;b[19]=5;
b[20]=5;b[21]=5;
b[22]=6;b[23]=2;
b[24]=6;b[25]=3;
b[26]=6;b[27]=4;
b[28]=6;b[29]=5;
break;
case 4:
count=12;
b[0]=1;b[1]=2;
b[2]=1;b[3]=4;
b[4]=2;b[5]=2;
b[6]=2;b[7]=4;
b[8]=3;b[9]=2;
b[10]=3;b[11]=4;
b[12]=4;b[13]=2;
b[14]=4;b[15]=4;
b[16]=4;b[17]=3;
b[18]=4;b[19]=5;
b[20]=5;b[21]=4;
b[22]=6;b[23]=4;
break;
case 5:
count=14;
b[0]=1;b[1]=2;
b[2]=1;b[3]=4;
b[4]=1;b[5]=3;
b[6]=1;b[7]=5;
b[8]=2;b[9]=2;
b[10]=3;b[11]=5;
b[12]=3;b[13]=4;
b[14]=3;b[15]=2;
b[16]=3;b[17]=3;
b[18]=4;b[19]=5;
b[20]=5;b[21]=5;
b[22]=5;b[23]=2;
b[24]=5;b[25]=3;
b[26]=5;b[27]=4;
break;
case 6:
count=15;
b[0]=1;b[1]=2;
b[2]=1;b[3]=4;
b[4]=1;b[5]=3;
b[6]=1;b[7]=5;
b[8]=2;b[9]=2;
b[10]=3;b[11]=5;
b[12]=3;b[13]=4;
b[14]=3;b[15]=2;
b[16]=3;b[17]=3;
b[18]=4;b[19]=5;
b[20]=5;b[21]=5;
b[22]=5;b[23]=2;
b[24]=5;b[25]=3;
b[26]=5;b[27]=4;
b[28]=4;b[29]=2;
break;
case 7:
count=8;
b[0]=1;b[1]=2;
b[2]=1;b[3]=4;
b[4]=1;b[5]=3;
b[6]=1;b[7]=5;
b[8]=2;b[9]=5;
b[10]=3;b[11]=5;
b[12]=4;b[13]=5;
b[14]=5;b[15]=5;
break;
case 8:
count=16;
b[0]=1;b[1]=2;
b[2]=1;b[3]=4;
b[4]=1;b[5]=3;
b[6]=1;b[7]=5;
b[8]=2;b[9]=2;
b[10]=3;b[11]=5;
b[12]=3;b[13]=4;
b[14]=3;b[15]=2;
b[16]=3;b[17]=3;
b[18]=4;b[19]=5;
b[20]=5;b[21]=5;
b[22]=5;b[23]=2;
b[24]=5;b[25]=3;
b[26]=5;b[27]=4;
b[28]=4;b[29]=2;
b[30]=2;b[31]=5;
break;
case 9:
count=15;
b[0]=1;b[1]=2;
b[2]=1;b[3]=4;
b[4]=1;b[5]=3;
b[6]=1;b[7]=5;
b[8]=2;b[9]=2;
b[10]=3;b[11]=5;
b[12]=3;b[13]=4;
b[14]=3;b[15]=2;
b[16]=3;b[17]=3;
b[18]=4;b[19]=5;
b[20]=5;b[21]=5;
b[22]=5;b[23]=2;
b[24]=5;b[25]=3;
b[26]=5;b[27]=4;
b[28]=2;b[29]=5;
break;
case 10:
count=17;
b[0]=1;b[1]=5;
b[2]=1;b[3]=4;
b[4]=1;b[5]=2;
b[6]=1;b[7]=6;
b[8]=2;b[9]=2;
b[10]=2;b[11]=4;
b[12]=2;b[13]=6;
b[14]=3;b[15]=2;
b[16]=3;b[17]=6;
b[18]=3;b[19]=4;
b[20]=4;b[21]=2;
b[22]=4;b[23]=4;
b[24]=4;b[25]=6;
b[26]=5;b[27]=2;
b[28]=5;b[29]=5;
b[30]=5;b[31]=4;
b[32]=5;b[33]=6;
break;
case 11:
count=10;
b[0]=1;b[1]=5;
b[2]=1;b[3]=2;
b[4]=2;b[5]=2;
b[6]=2;b[7]=5;
b[8]=3;b[9]=2;
b[10]=3;b[11]=5;
b[12]=4;b[13]=5;
b[14]=4;b[15]=2;
b[16]=5;b[17]=2;
b[18]=5;b[19]=5;
break;
default:
count=17;
b[0]=1;b[1]=4;
b[2]=2;b[3]=4;
b[4]=2;b[5]=2;
b[6]=3;b[7]=1;
b[8]=3;b[9]=2;
b[10]=3;b[11]=4;
b[12]=3;b[13]=5;
b[14]=3;b[15]=3;
b[16]=4;b[17]=4;
b[18]=5;b[19]=4;
b[20]=5;b[21]=3;
b[22]=5;b[23]=1;
b[24]=5;b[25]=2;
b[26]=5;b[27]=5;
b[28]=6;b[29]=4;
b[30]=7;b[31]=4;
b[32]=5;b[33]=6;
}
playarray(count,b);
}
void music(char rhythm)
{
tempmusic=1;
switch(rhythm)
{
case 1:high=0xf8,low=0x87;TR1=1;break;
case 2:high=0xf9,low=0x5b;TR1=1;break;
case 3:high=0xfa,low=0x12;TR1=1;break;
case 5:high=0xfb,low=0x04;TR1=1;break;
case 15:high=0xf6,low=0x08;TR1=1;break;
case 0:TR1=0;for(i=0;i<2200;i++);break;
}
while(1){
if(rhythm==0) {TR1=0;break;}
if(tempmusic==0){TR1=0;break;}}
}
////////////////////////////////////////////////////////////////
/*
void move(in count,unsigned offset, unsigned char b[])
{
switch(offset)
{
case 0:currentline-=1;b[2*count]=currentline;b[2*count+1]=currentcol;break;
case 1:currentline+=1;count++;b[2*(count-1)]=currentline;b[2*count-1]=currentcol;break;
case 2:currentcol-=1;count++;b[2*(count-1)]=currentline;b[2*count-1]=currentcol;break;
case 3:currentcol+=1;count++;b[2*(count-1)]=currentline;b[2*count-1]=currentcol;break;
}
}
/*
b[0]=7;b[1]=7;
for(i=0;i<=100;i++)
for(j=0;j<=count-1;j++)
play(b[j],b[2*j+1]);
b[2]=6;b[3]=6;count++;
for(i=0;i<=100;i++)
for(j=0;j<=count-1;j++)
play(b[j],b[2*j+1]);
for(i=0;i<=5;i++){
count++;
b[2*(count-1)]=i+2; b[2*count-1]=i+2;
for(i=0;i<=10;i++)
for(j=0;j<=count-1;j++)
play(b[j],b[2*j+1]);}*/
/* for(i=1;i<=8;i++){
count++;
b[2*(count-1)]=i-1; b[2*count-1]=i-1;}
while(1){
playarray(count,b);
}*/
/*count=4;b[0]=0;b[1]=0;b[2]=1;b[3]=1;b[4]=2;b[5]=2;b[6]=3;b[7]=3;
while(1)
playarray(count,b);}*/
//play(0,0);play(1,1);play(2,2);play(3,3);play(4,4);play(4,5);play(6,7);}
/*
switch(offset)
{
case 0:currentline-=1;count++;b[2*(count-1)]=currentline;b[2*count-1]=currentcol;break;
case 1:currentline+=1;count++;b[2*(count-1)]=currentline;b[2*count-1]=currentcol;break;
case 2:currentcol-=1;count++;b[2*(count-1)]=currentline;b[2*count-1]=currentcol;break;
case 3:currentcol+=1;count++;b[2*(count-1)]=currentline;b[2*count-1]=currentcol;break;
}
*/
// playarray(count,b);
// if(count>=64) return;
// {for(i=0;i<128;i++)
// b[i]=9;count=0;}
// objectl=((rand()*currentline)*currentoffset-count)*currentoffset%8;
// objectc=((rand()*currentline)*currentoffset+count)*currentoffset%8*objectl*((rand()-currentline)*currentoffset+count)*currentcol*currentoffset%8;
// objectc=((rand()*count)*currentoffset+currentline)*currentoffset*objectl%8;
// objectl=((rand()%(count*count+1)*currentoffset+count)/currentline)%8;
// objectl=TH0%8;objectc=TL1%8;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -