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

📄 rusian.c

📁 基于S3C2440开发板mini2440的俄罗斯方块程序
💻 C
📖 第 1 页 / 共 3 页
字号:
/*****************************************
  NAME: Touchpanel.c
  DESC: ADC & Touch screen test
  HISTORY:
  2003.09.23:Leon YH KIM: draft ver 1.0
 *****************************************/
#include "def.h"
#include "2440addr.h"
#include "2440lib.h"

#define REQCNT 30
#define ADCPRS 9	//YH 0627
#define LOOP 1
#define FROM_BCD(n)		((((n) >> 4) * 10) + ((n) & 0xf))
#define TO_BCD(n)		((((n) / 10) << 4) | ((n) % 10))
#define RGB(r,g,b)   (unsigned int)( (r << 16) + (g << 8) + b )

void __irq AdcTsAuto1(void);
extern int seed;
extern int randomnumber(void);
extern int Glib_FilledRectangle(int,int,int,int,int);
extern int Glib_Rectangle(int,int,int,int,int);
extern int Lcd_Tft_NEC35_Init1(void);
extern int Lcd_ClearScr(int);
extern void Lcd_printf(unsigned int x,unsigned int y,unsigned int c,unsigned int bk_c,unsigned int st,char *fmt,...);
extern int x;
extern int y;

int count1=0,j=0;
int x11=0,y11=0;
int x22=0,y22=0;
volatile int xdata1, ydata1;
int cube_M=0,cube_InitM=0;
int save_InitM=0,sc=0;
int cube_Mask=0;
int cube_Move=0;
int xx,yy;
signed int tuch=0;
signed int tuchag=0;
int tuchmask=0;
int tuch_masktest=0;
int MoveR=0;
int MoveL=0;
int Move_mark=0;
int Movecount=0;
int time_count=0;
int MoveADD=0;
int drupcount=0;
int move_count=0;
int cube_stopMark=1;
int cube_down=0;
int Blockcenter[7]={80,10};
signed int init=0;
int cube_Init[4][16]={0};
int cube_Initsaved[4][16]={{70,0,80,10,80,0,90,10,90,0,100,10,80,10,90,20},{80,0,90,10,80,10,90,20,90,10,100,20,80,20,90,30},{70,10,80,20,80,0,90,10,80,10,90,20,90,10,100,20},{70,10,80,20,80,0,90,10,80,10,90,20,80,20,90,30}};
int cube_Init1[4][16]={{70,0,80,10,80,0,90,10,90,0,100,10,80,10,90,20},{80,0,90,10,80,10,90,20,90,10,100,20,80,20,90,30},{70,10,80,20,80,0,90,10,80,10,90,20,90,10,100,20},{70,10,80,20,80,0,90,10,80,10,90,20,80,20,90,30}};
int cube_Init2[4][16]={{70,0,80,10,70,10,80,20,70,20,80,30,80,20,90,30},{70,10,80,20,80,10,90,20,90,10,100,20,90,0,100,10},{70,0,80,10,80,10,90,20,80,20,90,30,80,0,90,10},{70,0,80,10,70,10,80,20,80,0,90,10,90,0,100,10}};
int cube_Init3[4][16]={{70,20,80,30,80,20,90,30,80,10,90,20,80,0,90,10},{70,0,80,10,80,0,90,10,90,0,100,10,90,10,100,20},{70,0,80,10,80,0,90,10,70,10,80,20,70,20,80,30},{70,0,80,10,70,10,80,20,80,10,90,20,90,10,100,20}};
int cube_Init4[4][16]={{70,0,80,10,80,0,90,10,80,10,90,20,90,10,100,20},{80,0,90,10,80,10,90,20,70,10,80,20,70,20,80,30},{70,0,80,10,80,0,90,10,80,10,90,20,90,10,100,20},{80,0,90,10,80,10,90,20,70,10,80,20,70,20,80,30}};
int cube_Init5[4][16]={{70,10,80,20,80,10,90,20,80,0,90,10,90,0,100,10},{70,0,80,10,70,10,80,20,80,10,90,20,80,20,90,30},{70,10,80,20,80,10,90,20,80,0,90,10,90,0,100,10},{70,0,80,10,70,10,80,20,80,10,90,20,80,20,90,30}};
int cube_Init6[4][16]={{70,0,80,10,80,0,90,10,70,10,80,20,80,10,90,20},{70,0,80,10,80,0,90,10,70,10,80,20,80,10,90,20},{70,0,80,10,80,0,90,10,70,10,80,20,80,10,90,20},{70,0,80,10,80,0,90,10,70,10,80,20,80,10,90,20}};
int cube_Init7[4][16]={{70,0,80,10,70,10,80,20,70,20,80,30,70,30,80,40},{70,0,80,10,80,0,90,10,90,0,100,10,100,0,110,10},{70,0,80,10,70,10,80,20,70,20,80,30,70,30,80,40},{70,0,80,10,80,0,90,10,90,0,100,10,100,0,110,10}};
int turn_mark_window[4][16]={0};
int turn_mark_eag[4][16]={0};
int turn_mark1[4][16]={{160,150,160,150},{0,10,0,10},{10,5,10,15},{25,20,25,20}};
int turn_mark2[4][16]={{150,160,150,160},{10,0,10,0},{15,10,15,10},{20,25,20,25}};
int turn_mark3[4][16]={{150,160,150,160},{10,0,10,0},{15,10,15,10},{20,25,20,25}};
int turn_mark4[4][16]={{160,150,160,150},{0,10,0,10},{10,15,10,15},{25,20,25,20}};
int turn_mark5[4][16]={{160,150,160,150},{0,10,0,10},{10,15,10,15},{25,20,25,20}};
int turn_mark6[4][16]={{160,160,160,160},{0,0,0,0},{15,15,15,15},{25,25,25,25}};
int turn_mark7[4][16]={{130,160,130,160},{30,0,30,0},{20,5,20,5},{15,30,15,30}};
int Screem_map[16][32]={0};
signed int clr=0;
int color1[4]={0};
int time_color=0;
int cube_color[]={0x001f,0x07e0,0xf800,0xf81f,0x07ff};
int cube[]={0,0,0,0,0}; 
int save_cubey[]={0,0,0,0,0,0,0,0};
int save_cubex[]={0,0,0,0,0,0,0,0};
int save_cubexmax=0;
int save_cubexmin=130;
int save_cubeymax=0;
int save_cubeymaxagn=0;
int save_cubexminagn=0;
int save_cubeymin=0;
int save_cube=0;
int save_cubeyminagn=0;
int save_InitMagn=0;
int Y_count[16]={0};
int Y_countsaved[16]={0};
int X_count[32]={0};
int X_countsaved[32]={0};
int save_cubexmaxagn=0;
int	pause=0;
int pause_tuch=1;
int begin=0;
int stop=0;
int game_offmark=0;
int window=0;
int windowcenterx=0;
int windowcentery=0;
int i=0;
int second=0;
int ti=0;
int time=0;
int times=0;
int hard=0;
int drup_mark=1;
int cube_delet=0;
int score=0;
int rYear, rMonth,rDay,rDayOfWeek,rHour,rMinute,rSecond;

void Get_randseed(void)
{
	rRTCCON = 1 ;
	while(second==0)
		second=rBCDSEC;
	rRTCCON &= ~1 ;
	seed=second;	
	Uart_Printf("seed=%d\n",seed);
	second=0;
}
 
void Rtc_Init(void)
{
	int wYear, wMonth,wDay,wDayOfWeek,wHour,wMinute,wSecond;

    wYear = 2008;
    wMonth = 9;
    wDay = 5;
    wDayOfWeek = 5;
    wHour= 9;
    wMinute = 41;
    wSecond = 30;
	
	rRTCCON = 1 ;		//RTC read and write enable

	rBCDYEAR = (unsigned char)TO_BCD(wYear%100);	//年
    rBCDMON  = (unsigned char)TO_BCD(wMonth);		//月
    rBCDDAY	 = (unsigned char)TO_BCD(wDay);			//日	
	rBCDDATE = wDayOfWeek+1;						//星期
	rBCDHOUR = (unsigned char)TO_BCD(wHour);		//小时
	rBCDMIN  = (unsigned char)TO_BCD(wMinute);		//分
	rBCDSEC  = (unsigned char)TO_BCD(wSecond);		//秒
	
	rRTCCON &= ~1 ;		//RTC read and write disable
} 
 
void Get_Rtc(void)
{	
	
	rRTCCON = 1 ;
	
	if(rBCDYEAR==0x99)
		rYear = 1999;
	else
		rYear    = (2000 + rBCDYEAR);
		rMonth   = FROM_BCD(rBCDMON & 0x1f);
		rDay		= FROM_BCD(rBCDDAY & 0x03f);
		rDayOfWeek = rBCDDATE-1;
		rHour    = FROM_BCD(rBCDHOUR & 0x3f);
		rMinute     = FROM_BCD(rBCDMIN & 0x7f);
		rSecond     = FROM_BCD(rBCDSEC & 0x7f);
		
	rRTCCON &= ~1 ;	
} 
 
void Total_Init(void)
{
		time_count=0;
		count1=0,j=0;
     	x11=0,y11=0;
		x22=0,y22=0;
		save_cubeymax=0;
  		save_cubeymin=320;
		cube_M=0,cube_InitM=0;
		save_InitM=0,sc=0;
		cube_Mask=0;
		cube_Move=0;
		xx=0;
		yy=0;
		tuch=0;
		MoveR=0;
		MoveL=0;
		tuchmask=0;
		tuch_masktest=0;
		drupcount=0;
		tuch=tuchag;
//		Uart_Printf("init=%d\n",init);
//		Uart_Printf("tuch=%d\n",tuch);
		window=0;
				    for(j=0;j<8;j++)
				{
					save_cubey[j]=0;
				}
			for(j=0;j<8;j++)
				{
					save_cubex[j]=0;
				}
			save_cubexmax=0;
			tuchmask=0;

		 save_cubexmax=0;
		 save_cubexmin=240;
		 pause=0;
		 begin=0;
		 stop=0;
} 
    
void delay1(void)
{
	int ii;
	for(;ti>0;ti--)
	{
		for(ii=0;ii<10000;ii++){}
	}
	time_count++;
}    

void delay2(void)
{
	int tii,tti=500;
	for(;tti>0;tti--)
	{
		for(tii=0;tii<10000;tii++){}
	}
}

void Move_Mask(void)
{
	Uart_Printf("MoveL=%d\n",MoveL);
	Uart_Printf("MoveR=%d\n",MoveR);
	Uart_Printf("tuch=%d\n",tuch);
	if(MoveR>MoveL)
		Movecount=(MoveR-MoveL);
	else if (MoveR<MoveL)
		Movecount=(MoveL-MoveR);
	for(;Movecount>0;Movecount--)
		MoveADD+=10;
	cube_Move=0;
	if(MoveR>MoveL)
	{	

		for(j=0;j<4;j++)
		{
			if(j!=tuch)
				for(i=0;i<8;i++)
				{
					cube_Init[j][cube_Move]+=MoveADD;
					cube_Move+=2;
//					if(j==2)
//					Uart_Printf("cube_Init[3]=%d\n",cube_Init[j][cube_Move-2]);
//										if(j==1)
//					Uart_Printf("cube_Init[0]=%d\n",cube_Init[j][cube_Move-2]);
					
				}
		}
		cube_Move=0;
		if(tuch!=2)
			for(i=0;i<8;i++)
			{
				cube_Init[2][cube_Move]+=MoveADD;
				cube_Move+=2;
//				Uart_Printf("cube_Init[2]=%d\n",cube_Init[2][cube_Move-2]);

					
			}
		else if(tuch==2)
			for(i=0;i<8;i++)
			{
				cube_Init[3][cube_Move]+=MoveADD;
				cube_Init[1][cube_Move]+=MoveADD;
				cube_Init[2][cube_Move]-=MoveADD;
				cube_Move+=2;
//				Uart_Printf("cube_Init[2]=%d\n",cube_Init[2][cube_Move-2]);

					
			}
		cube_Move=0;	
		if(tuch==3)
			for(i=0;i<8;i++)
			{
				cube_Init[2][cube_Move]-=MoveADD;
				cube_Init[1][cube_Move]+=MoveADD;
				cube_Move+=2;
//				Uart_Printf("cube_Init[2]=%d\n",cube_Init[2][cube_Move-2]);

					
			}
				
		MoveADD=0;
		Uart_Printf("MoveADD=%d\n",MoveADD);
//		MoveADD=0;
	}
	if(MoveL>MoveR)
	{	
		for(j=0;j<4;j++)
		{
			if(j!=tuch)
				for(i=0;i<8;i++)
				{
					cube_Init[j][cube_Move]-=MoveADD;
					cube_Move+=2;
	//				if(j==4)
//					Uart_Printf("cube_Init[3]=%d\n",cube_Init[j][cube_Move]);
				}
		}
		cube_Move=0;
		if(tuch!=2)
			for(i=0;i<8;i++)
			{
				cube_Init[2][cube_Move]-=MoveADD;
				cube_Move+=2;
//				Uart_Printf("cube_Init[2]=%d\n",cube_Init[2][cube_Move-2]);

					
			}
		else if(tuch==2)
			for(i=0;i<8;i++)
			{
				cube_Init[3][cube_Move]+=MoveADD;
				cube_Init[1][cube_Move]+=MoveADD;
				cube_Init[2][cube_Move]-=MoveADD;
				cube_Move+=2;
//				Uart_Printf("cube_Init[2]=%d\n",cube_Init[2][cube_Move-2]);

					
			}
		cube_Move=0;	
		if(tuch==3)
			for(i=0;i<8;i++)
			{
				cube_Init[2][cube_Move]+=MoveADD;
				cube_Init[1][cube_Move]-=MoveADD;
				cube_Move+=2;
//				Uart_Printf("cube_Init[2]=%d\n",cube_Init[2][cube_Move-2]);

					
			}
		MoveADD=0;
		Uart_Printf("MoveADD=%d\n",MoveADD);
//		MoveADD=0;
	}
}
void Clearn_Block(void)
{
	sc=0;
	cube_InitM=0;
	cube_M=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];
//			Uart_Printf("cubeinit=%d\n",cube_Init[cube_InitM]);
			if(cube_M==4)
			{
				save_InitM=cube_InitM+1;
				break;
			}
		}
		cube_M=0;
//		cube[1]+=MoveADD;
		sc++;
		cube[2]=save_cubey[sc];
//		Uart_Printf("save_cubey=%d\n",save_cubey[sc]);
//		cube[3]+=MoveADD;
		sc++;
		cube[4]=save_cubey[sc];
//		Uart_Printf("save_cubey=%d\n",save_cubey[sc]);
		Glib_FilledRectangle(cube[1],cube[2],cube[3],cube[4],(0x1f<<11) | (0x3f<<5) | (0x1f));
//		Uart_Printf("cube1=%d cube2=%d cube3=%d cube4=%d\n",cube[1],cube[2],cube[3],cube[4]);
			
	}

}

void Getsave_cubey(void)
{
	save_InitM=0;
	save_cubeymax=0;
  	save_cubeymin=320;
	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;
		sc++;
		save_cubey[sc]=(cube[2]+drupcount);
		sc++;
		save_cubey[sc]=(cube[4]+drupcount);
			if(save_cubeymin>cube[2])
				save_cubeymin=cube[2];
			if(save_cubeymin>cube[4])
				save_cubeymin=cube[4];
			if(save_cubeymax<cube[2])
				save_cubeymax=cube[2];
			if(save_cubeymax<cube[4])
				save_cubeymax=cube[4];

	}
}


void Getsave_cubexmax(void)
{
	save_InitM=0;
	sc=0;
	save_cubexmax=0;
	save_cubexmin=160;
	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;
		sc++;
		save_cubex[sc]=cube[1];
//		Uart_Printf("save_cubex=%d\n",save_cubex[sc]);
		if(save_cubexmax<save_cubex[sc])
		save_cubexmax=save_cubex[sc];
		sc++;
		save_cubex[sc]=cube[3];
//		Uart_Printf("save_cubex=%d\n",save_cubex[sc]);
			if(save_cubexmin>cube[1])
				save_cubexmin=cube[1];
			if(save_cubexmin>cube[3])
				save_cubexmin=cube[3];
			if(save_cubexmax<cube[1])
				save_cubexmax=cube[1];
			if(save_cubexmax<cube[3])
				save_cubexmax=cube[3];

	}
}

void Getsave_cubeymax(void)
{
	sc=0;
	cube_InitM=0;
	cube_M=0;
	save_InitM=0;
	save_cubeymax=0;
  	save_cubeymin=320;
		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(save_cubeymin>cube[2])
				save_cubeymin=cube[2];
			if(save_cubeymin>cube[4])
				save_cubeymin=cube[4];
			if(save_cubeymax<cube[2])
				save_cubeymax=cube[2];
			if(save_cubeymax<cube[4])
				save_cubeymax=cube[4];
		}
}


/*******************************************************To scan the number of cubes for each block******************************/
void Scan_cube(void)
{
	cube_InitM=0;
	cube_M=0;
	save_InitM=0;
	save_cubexmaxagn=save_cubexmax;
	for(;save_cubexmax>save_cubexmin;save_cubexmax-=10)
	{
		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)
				{

⌨️ 快捷键说明

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