Ejemplo n.º 1
0
// Funções globais principais
void init()
{
	running = true;
	// O canto superior da tela agora ficará
	// em (0, 0).
	glMatrixMode(GL_PROJECTION);
		glOrtho(0, WIN_WIDTH, WIN_HEIGHT, 0, -1, 1);
	glMatrixMode(GL_MODELVIEW);

	// Defina a cor de tela vazia
	glClearColor(0, 0, 0, 1);

	// Carregue a fase
	loadlevel("leveldef.lvl", &lvl);

	// Carregue o personagem
	loadcharacter("brbr.chr", &chr);
	initcharacter(&chr, &lvl);

	// Caso haja um joystick, carregue-o.
	if(SDL_NumJoysticks() >= 1)
		joystick = SDL_JoystickOpen(0);

	// Inicie os direcionais
	directionals[0] = false;
	directionals[1] = false;
}
Ejemplo n.º 2
0
unsigned int receivehz(int bs,char*pinyin,int mode)//two modes,0:getch() mode,1:receive pinyin mode,used to debug//if mode 1,pinyin needs to be initialized
{
	char c,rank=0,pyvalid;
	unsigned int innercode=0,innercodeend=0,preinnercode=0,offseterji=0,i;
	unsigned int dif,tempdif;
	void*buf;
	unsigned int tempx,currentx=getx(),currenty=gety();//record current place of painting brush
	if(currentx+9*32>getmaxx())		//in case the input method move out of the screen scale
	{
		currentx=getmaxx()-9*32;
	}
	initcharacter(offsetshuju,character);
	buf=malloc(imagesize(0,0,32*9*3,32));// input method will cover the text,save in advance
	getimage(currentx,currenty,currentx+32*9,currenty+32*3,buf);
	tempx=currentx;
	if(mode==0)
		{
		for(i=0;i<7;i++)
			pinyin[i]=0;
		}
	while(1)
	{
		if(bs==0&&mode==1&&rank+1==strlen(pinyin))
			bs=1;
		if(mode==0||(mode==1&&(pinyin[rank]<'a'||pinyin[rank]>'z')))
			c=bioskey(0)%256;
		else
			c=pinyin[rank];
		if(c<'z'+1&&c>'a'-1)//if(c!='='&&c!='-')
		{
			pinyin[rank]=c;
			displayen(1,c,0,tempx,currenty+16,1,15);
			pyvalid=checkpy(pinyin);/*新加*/
		}
		if(c==8)
		{
			pinyin[rank-1]=0;
			putimage(currentx,currenty,buf,0);
			free(buf);
			return 8;
		}
		tempx+=8;
		if(c<'z'+1&&c>'a'-1)
		{
			dif=0;
			offseterji=receivepy(c,rank,&innercode,&innercodeend,preinnercode);
			for(i=0;i<9;i++)
			{
				if(pyvalid==0)/*新加*/
					break;
				tempdif=receivenum(i,innercode,innercodeend,offseterji);
				if(tempdif==0xffff)//拼音到结尾不再显示
				{
					displayhz(bs,0xa1a1,2,currentx+32*i,currenty+32,1,15);
					displayhz(bs,0xa1a1,2,currentx+32*i+16,currenty+32,1,15);
					continue;				
				}
				if((innercode+tempdif)%256>0xfe||(innercode+tempdif)%256<0xa1)
					tempdif+=0xa3;
				displayen(bs,i+'1',0,currentx+32*i,currenty+32,1,15);
				displayen(bs,'.',0,currentx+32*i+8,currenty+32,1,15);
				displayhz(bs,tempdif+innercode,2,currentx+32*i+16,currenty+32,1,15);
			}
			preinnercode=innercode;
			pinyin[rank]=c;
			rank++;
			continue;//如果c一直都是拼音
		}
		///////rank=0;
		if(c<='9'&&c>='1'||c==' ')
		{
			if(c==' ')
				c='1';
			dif=receivenum(dif+c-'1',innercode,innercodeend,offseterji);
			if((innercode+dif)%256>0xfe||(innercode+dif)%256<0xa1)
				dif+=0xa3;
			putimage(currentx,currenty,buf,0);
			free(buf);
			if(dif==0xffff)
				return 0xa1a1;////////////////如果超过就返回0xa1a1出错处理不显示
			return (innercode+dif);
		}
		else if(c=='='||c=='-')
		{
			if(c=='=')
				dif+=9;
			else if(c=='-'&&dif>=9)
				dif-=9;
			else if(c=='-'&&dif<9)
				dif=0;
			tempdif=receivenum(dif,innercode,innercodeend,offseterji);
			if(tempdif==0xffff)
			{
				dif-=9;
			}
			for(i=0;i<9;i++)
			{

				tempdif=receivenum(dif+i,innercode,innercodeend,offseterji);
				if(tempdif==0xffff)
				{
					displayhz(bs,0xa1a1,2,currentx+32*i+16,currenty+32,1,15);
					displayhz(bs,0xa1a1,2,currentx+32*i,currenty+32,1,15);
					continue;
				}
				if((innercode+tempdif)%256>0xfe||(innercode+tempdif)%256<0xa1)
					tempdif+=0xa3;
				displayen(bs,i+'1',0,currentx+32*i,currenty+32,1,15);
				displayen(bs,'.',0,currentx+32*i+8,currenty+32,1,15);
				displayhz(bs,tempdif+innercode,2,currentx+32*i+16,currenty+32,1,15);
			}
		}
		else 
		{
			putimage(currentx,currenty,buf,0);
			free(buf);
			return 0xa1a1;////////////////////////////////////////////////////此处要改
		}
	}
}