📄 rusian.c
字号:
save_InitM=cube_InitM+1;
break;
}
}
cube_M=0;
if(cube[1]==save_cubexmax)
{
save_cube=cube[1];
break;
}
if(cube[3]==save_cubexmax)
{
save_cube=cube[3];
break;
}
}
// Uart_Printf("save_cube=%d\n",save_cube);
// Uart_Printf("cube1,2,3,4=%d,%d,%d,%d,%d,%d\n",cube[1],cube[2],cube[3],cube[4],save_cubexmax,save_cubeymin);
save_InitM=0;
for(j=0;j<4;j++)
{
for(cube_InitM=save_InitM;cube_InitM<16;cube_InitM++)
{
cube_M++;
cube[cube_M]=cube_Init[tuch][cube_InitM];
if(cube_M==4)
{
save_InitM=cube_InitM+1;
break;
}
}
cube_M=0;
save_cubeymin=0;
// Uart_Printf("save_cubexmax!!!!!!!!!!!!!=%d\n",save_cubexmax);
// Uart_Printf("save_cubexmax=%d, %d, %d\n",save_cubexmax,save_cubeymax,save_cubeymin);
for(;save_cubeymin<save_cubeymax;save_cubeymin+=10)
{
if((((cube[1]==save_cubexmax)|(cube[3]==save_cubexmax))&((cube[1]==(save_cubexmax-10))|(cube[3]==(save_cubexmax-10))))&(((cube[2]==save_cubeymin)|(cube[4]==save_cubeymin))&((cube[2]==(save_cubeymin+10))|(cube[4]==(save_cubeymin+10)))))
{
// NO_count[(save_cubexmaxagn-save_cubexmax)/10]++;
// Uart_Printf("save_cubexmax!!!!!=%d %d\n",save_cubexmax,i);
// Uart_Printf("save_cubexmax=%d, %d, %d\n",save_cubexmax,save_cubeymax,save_cubeymin);
Y_count[(save_cubexmax-10)/10]+=10;
X_count[(drupcount+save_cubeymin)/10]+=10;
// Uart_Printf("Y_count[%d]=%d\n",(i-10)/10,Y_count[(i-10)/10]);
}
// Uart_Printf("save_cubexmax=%d\n",save_cubexmax);
}
}
// Uart_Printf("!!NO_count=%d\n",NO_count[(save_cubexmaxagn-save_cubexmax)/10]);
// Uart_Printf("!!Y_countsaved=%d\n",Y_countsaved[7]);
// Uart_Printf("!!X_countsaved=%d\n",X_countsaved[30]);
//
}
// while(1);
// for(j=0;j<16;j++)
// Uart_Printf("Y_count[%d]=%d\n",j,Y_count[j]);
}
/******************************To find out the drup-point at which the block have to be stoped,according to the "Screem_map" Array***************/
void Cube_stop(void)
{
cube_M=0;
cube_stopMark=1;
stop=0;
Getsave_cubexmax();
cube_InitM=0;
save_InitM=0;
for(j=0;j<4;j++) //分别扫描方块的每个立方体
{
for(cube_InitM=save_InitM;cube_InitM<16;cube_InitM++)
{
cube_M++;
cube[cube_M]=cube_Init[tuch][cube_InitM];
if(cube_M==4)
{
save_InitM=cube_InitM+1;
break;
}
}
cube_M=0;
// Uart_Printf("!!!!!!!!!!!!!!\n");
// Uart_Printf("Y_countsaved[cube[1]/10]=%d,%d,%d,%d, %d\n",320-Y_countsaved[cube[1]/10],320-Y_countsaved[cube[3]/10],(cube[2]+drupcount),(cube[4]+drupcount),drupcount);
if((((cube[1]+cube[3])/2)>cube[1])&((drupcount%10)==0)) //比较得立方体X轴的最大值
{
if((((cube[2]+cube[4])/2)>cube[2])&(Screem_map[(cube[3]-10)/10][(cube[4]+drupcount)/10]>0)) //与Screem_map数组中的二维数据对比
{
cube_stopMark=0;
break;
}
if((((cube[2]+cube[4])/2)<cube[2])&(Screem_map[(cube[3]-10)/10][(cube[2]+drupcount)/10]>0))
{
cube_stopMark=0;
break;
}
}
if((((cube[1]+cube[3])/2)<cube[1])&((drupcount%10)==0))
{
if((((cube[2]+cube[4])/2)>cube[2])&(Screem_map[(cube[1]-10)/10][(cube[4]+drupcount)/10]>0))
{
cube_stopMark=0;
break;
}
if((((cube[2]+cube[4])/2)>cube[2])&(Screem_map[(cube[1]-10)/10][(cube[4]+drupcount)/10]>0))
{
cube_stopMark=0;
break;
}
}
// if(j==3)stop=1;
// if((drupcount>=260)&(Y_countsaved[7]>0))
// { Uart_Printf("cube[1][2][3][4]cube_InitM=%d,%d,%d,%d,%d,%d,%d\n",cube[1],cube[2],cube[3],cube[4],320-Y_countsaved[(cube[3]-10)/10],320-Y_countsaved[(cube[1]-10)/10],cube_InitM);
// while(stop);}
}
// Uart_Printf("cube_stopMark=%d\n",cube_stopMark);
// Uart_Printf("drupcount=%d\n",drupcount);
// Uart_Printf("Y_countsaved[cube[1]/10]=%d,%d,%d,%d\n",320-Y_countsaved[cube[1]/10],320-Y_countsaved[cube[3]/10],(cube[2]+drupcount),(cube[4]+drupcount));
// while(1);
Getsave_cubexmax();
Scan_cube();
if(((drupcount+save_cubeymax)<320)&cube_stopMark)
for(j=0;j<32;j++)
X_count[j]=0;
else if(((drupcount+save_cubeymax)>=320)|(!cube_stopMark))
for(j=0;j<32;j++)
X_countsaved[j]+=X_count[j];
if(((drupcount+save_cubeymax)>=320)|(!cube_stopMark))
{
save_InitM=0;
cube_M=0;
for(j=0;j<4;j++)
{
for(cube_InitM=save_InitM;cube_InitM<16;cube_InitM++)
{
cube_M++;
cube[cube_M]=cube_Init[tuch][cube_InitM];
if(cube_M==4)
{
save_InitM=cube_InitM+1;
break;
}
}
cube_M=0;
if(((cube[1]+cube[3])/2)>cube[1])
{
if(((cube[2]+cube[4])/2)>cube[2])
{Screem_map[(cube[3]-10)/10][(cube[4]+drupcount-10)/10]=1;
// Uart_Printf("Screem_map[%d][%d]=%d\n",(cube[3]-10)/10,(cube[4]+drupcount-10)/10,Screem_map[(cube[3]-10)/10][(cube[4]+drupcount-10)/10]);
}
if(((cube[2]+cube[4])/2)<cube[2])
{Screem_map[(cube[3]-10)/10][(cube[2]+drupcount-10)/10]=1;
// Uart_Printf("Screem_map[%d][%d]=%d\n",(cube[3]-10)/10,(cube[2]+drupcount-10)/10,Screem_map[(cube[3]-10)/10][(cube[2]+drupcount-10)/10]);
}
}
if(((cube[1]+cube[3])/2)<cube[1])
{
if(((cube[2]+cube[4])/2)>cube[2])
{Screem_map[(cube[1]-10)/10][(cube[4]+drupcount-10)/10]=1;
// Uart_Printf("Screem_map[%d][%d]=%d\n",(cube[1]-10)/10,(cube[4]+drupcount-10)/10,Screem_map[(cube[1]-10)/10][(cube[4]+drupcount-10)/10]);
}
if(((cube[2]+cube[4])/2)<cube[2])
{Screem_map[(cube[1]-10)/10][(cube[2]+drupcount-10)/10]=1;
// Uart_Printf("Screem_map[%d][%d]=%d\n",(cube[1]-10)/10,(cube[2]+drupcount-10)/10,Screem_map[(cube[1]-10)/10][(cube[2]+drupcount-10)/10]);
}
}
}
// Uart_Printf("Screem_map[7][31]=%d,%d,%d,%d,%d,%d,%d\n",Screem_map[7][31],Screem_map[7][30],Screem_map[8][31],Screem_map[8][30],Screem_map[9][31],Screem_map[9][30],drupcount);
}
}
/*******************************Delet the line which has 16 cubes according to the "Screem_map" Array**************************/
void Cube_delet(void)
{
for(i=0;i<32;i++)
{
if(X_countsaved[i]>=160)
{
for(j=0;j<16;j++)
for(cube_down=i;cube_down>0;cube_down--)
Screem_map[j][cube_down]=Screem_map[j][cube_down-1];
for(cube_down=i;cube_down>0;cube_down--)
X_countsaved[cube_down]=X_countsaved[cube_down-1];
cube_delet++;
if((cube_delet==3)|(cube_delet==4))
Lcd_printf(162,152,0xf800,RGB( 0xFF,0xFF,0xFF),0,"Nice Work!\n");
for(j=0;j<16;j++)
Glib_FilledRectangle(j*10,i*10,j*10+10,i*10+10,0x001f);
delay2();
for(j=0;j<16;j++)
Glib_FilledRectangle(j*10,i*10,j*10+10,i*10+10,0x07e0);
delay2();
for(j=0;j<16;j++)
Glib_FilledRectangle(j*10,i*10,j*10+10,i*10+10,0xf800);
delay2();
for(j=0;j<16;j++)
Glib_FilledRectangle(j*10,i*10,j*10+10,i*10+10,(0x1f<<11) | (0x3f<<5) | (0x1f));
Uart_Printf("I'm out now!\n I=%d\n",i);
Uart_Printf("X_countsaved[%d]=%d\n",i,X_countsaved[i]);
}
}
if(cube_delet==1)
score+=100;
if(cube_delet==2)
score+=200;
if(cube_delet==3)
score+=500;
if(cube_delet==4)
score+=700;
cube_delet=0;
// Lcd_printf(162,152,0xf800,RGB( 0xFF,0xFF,0xFF),0,"Nice work!\n");
for(j=0;j<16;j++)
for(cube_down=0;cube_down<32;cube_down++)
if(Screem_map[j][cube_down]==1)
{
clr=randomnumber()%5;
if(clr<0)
clr=-clr;
Glib_FilledRectangle(j*10,cube_down*10,j*10+10,cube_down*10+10,cube_color[clr]);
}
else if(Screem_map[j][cube_down]==0)
Glib_FilledRectangle(j*10,cube_down*10,j*10+10,cube_down*10+10,(0x1f<<11) | (0x3f<<5) | (0x1f));
// Uart_Printf("X_countsaved[31]=%d,%d\n",X_countsaved[31],X_countsaved[30]);
}
/*********************************Init of the "cube_Init" Array,according to the randomnumber "init"****************/
void Cube_Inition(void)
{
switch(init)
{
case 0:
for(i=0;i<4;i++)
{
for(j=0;j<16;j++)
{
if(window)
{
cube_Initsaved[i][j]=cube_Init1[i][j];
turn_mark_window[i][j]=turn_mark1[i][j];
}
else
{
cube_Init[i][j]=cube_Init1[i][j];
turn_mark_eag[i][j]=turn_mark1[i][j];
}
}
}
window=0;
break;
case 1:
for(i=0;i<4;i++)
{
for(j=0;j<16;j++)
{
if(window)
{
cube_Initsaved[i][j]=cube_Init2[i][j];
turn_mark_window[i][j]=turn_mark2[i][j];
}
else
{
cube_Init[i][j]=cube_Init2[i][j];
turn_mark_eag[i][j]=turn_mark2[i][j];
}
}
}
window=0;
break;
case 2:
for(i=0;i<4;i++)
{
for(j=0;j<16;j++)
{
if(window)
{
cube_Initsaved[i][j]=cube_Init3[i][j];
turn_mark_window[i][j]=turn_mark3[i][j];
}
else
{
cube_Init[i][j]=cube_Init3[i][j];
turn_mark_eag[i][j]=turn_mark3[i][j];
}
}
}
window=0;
break;
case 3:
for(i=0;i<4;i++)
{
for(j=0;j<16;j++)
{
if(window)
{
cube_Initsaved[i][j]=cube_Init4[i][j];
turn_mark_window[i][j]=turn_mark4[i][j];
}
else
{
cube_Init[i][j]=cube_Init4[i][j];
turn_mark_eag[i][j]=turn_mark4[i][j];
}
}
}
window=0;
break;
case 4:
for(i=0;i<4;i++)
{
for(j=0;j<16;j++)
{
if(window)
{
cube_Initsaved[i][j]=cube_Init5[i][j];
turn_mark_window[i][j]=turn_mark5[i][j];
}
else
{
cube_Init[i][j]=cube_Init5[i][j];
turn_mark_eag[i][j]=turn_mark5[i][j];
}
}
}
window=0;
break;
case 5:
for(i=0;i<4;i++)
{
for(j=0;j<16;j++)
{
if(window)
{
cube_Initsaved[i][j]=cube_Init6[i][j];
turn_mark_window[i][j]=turn_mark6[i][j];
}
else
{
cube_Init[i][j]=cube_Init6[i][j];
turn_mark_eag[i][j]=turn_mark6[i][j];
}
}
}
window=0;
break;
case 6:
for(i=0;i<4;i++)
{
for(j=0;j<16;j++)
{
if(window)
{
cube_Initsaved[i][j]=cube_Init7[i][j];
turn_mark_window[i][j]=turn_mark7[i][j];
}
else
{
cube_Init[i][j]=cube_Init7[i][j];
turn_mark_eag[i][j]=turn_mark7[i][j];
}
}
}
window=0;
break;
default : break;
}
}
/***************************************************Clear the pre-view window*******************************/
void Clear_window(void)
{
cube_M=0;
save_InitM=0;
windowcenterx=(105+turn_mark_window[2][tuchag]);
windowcentery=turn_mark_window[3][tuchag];
for(j=0;j<4;j++)
{
for(cube_InitM=save_InitM;cube_InitM<16;cube_InitM++)
{
cube_M++;
cube[cube_M]=cube_Initsaved[tuchag][cube_InitM];
if(cube_M==4)
{
save_InitM=cube_InitM+1;
break;
}
}
cube_M=0;
Glib_FilledRectangle(cube[1]+windowcenterx,cube[2]+windowcentery,cube[3]+windowcenterx,cube[4]+windowcentery,(0x1f<<11) | (0x3f<<5) | (0x1f));
// Uart_Printf("clearing_window!\n");
}
// Uart_Printf("window_cleared!\n");
}
/****************************************************Paint the pre-view window*******************************/
void Paint_window(void)
{
cube_M=0;
save_InitM=0;
windowcenterx=(105+turn_mark_window[2][tuchag]);
windowcentery=turn_mark_window[3][tuchag];
for(j=0;j<4;j++)
{
for(cube_InitM=save_InitM;cube_InitM<16;cube_InitM++)
{
cube_M++;
cube[cube_M]=cube_Initsaved[tuchag][cube_InitM];
if(cube_M==4)
{
save_InitM=cube_InitM+1;
break;
}
}
cube_M=0;
Glib_FilledRectangle(cube[1]+windowcenterx,cube[2]+windowcentery,cube[3]+windowcenterx,cube[4]+windowcentery,cube_color[j]);
// Uart_Printf("painting_window!\n");
}
// Uart_Printf("window_painted!\n");
}
/////////////////////////
/*****************************************************Main Progeram of drawing block*************************/
/////////////////////////
void BlockGame(void)
{
/*****************************************************Game start*********************************************/
Glib_FilledRectangle(161,0,161,320,0x001f); /********Paint the bound line**************/
Glib_FilledRectangle(210,260,233,270,0xf800); //Right-Move button.
Lcd_printf(215,271,0xf800,RGB( 0xFF,0xFF,0xFF),0,"右\n");
Glib_FilledRectangle(193,258,198,272,0xf800); //start/pause button
Glib_FilledRectangle(202,258,207,272,0xf800); //start/pause button
Glib_FilledRectangle(167,260,190,270,0xf800); //Left-Move button.
Lcd_printf(167,271,0xf800,RGB( 0xFF,0xFF,0xFF),0,"左\n");
Glib_FilledRectangle(195,232,205,255,0xf800); //turn right button
Lcd_printf(188,215,0xf800,RGB( 0xFF,0xFF,0xFF),0,"旋转\n");
Glib_FilledRectangle(195,275,205,298,0xf800); //durpspeed up button
Lcd_printf(194,300,0xf800,RGB( 0xFF,0xFF,0xFF),0,"下\n");
Glib_Rectangle(175,10,225,60,cube_color[clr]); //Paint the Per-view window.
// Glib_Rectangle(174,9,226,61,0x001f);
clr=randomnumber()%5;
if(clr<0)
color1[j]=-clr;
Glib_Rectangle(174,9,226,61,cube_color[clr]);
clr=randomnumber()%5;
if(clr<0)
color1[j]=-clr;
Glib_Rectangle(173,8,227,62,cube_color[clr]);
// Lcd_printf(100,0,RGB( 0xFF,0xFF,0xFF),RGB( 0x00,0x00,0x00),0,"%02d:%02d:%02d\n", rHour, rMinute, rSecond);
/*****************************************************Draw the first block,being followed by others*************/
for(j=0;j<8;j++)
{
save_cubey[j]=0; //The Data Array which saves the cube Y-poseasion.
}
sc=0;
cube_InitM=0;
cube_M=0;
save_InitM=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -