Exemplo n.º 1
0
	int AddIn_main(int isAppli, unsigned short OptionNum)
	{
    	unsigned int key;

    	Bdisp_AllClr_DDVRAM();

    	Map(1);

    	while(1){
        	GetKey(&key);
    	}

    	return 1;
	}
Exemplo n.º 2
0
Arquivo: set.c Projeto: justid/Zoolu
int Input_Regcode()
{
	unsigned int key ;
	
	BYTE pos = 0 ; 
	BYTE str_flag = FALSE ;
	int x = 58 ;
	int y = 26 ;
	int ptr = -1 ;

	PopUpWin(3) ;
	locatestr(15,22);
	printf("机器码%s",(unsigned char*)m_id) ;

	GetKey(&key) ;
	Bdisp_AllClr_DDVRAM() ;
	PopUpWin(3) ;
	printf("注册码 ") ;
	DrawRect(56,23,12,53) ;
	while(str_flag != TRUE)
	{
		GetKey(&key) ;
		switch (key) {
		case KEY_CTRL_EXE: 
			regstr[pos] = '\0' ;
			str_flag =TRUE ;
			break ;
		case  KEY_CTRL_ALPHA:
			break ;
		case KEY_CTRL_DEL:
			if (pos)  regstr[--pos] = '\0' ; 
			PrintXY(x, y, (unsigned char *)"        ", 0) ;
			break ;
		default: break ;
		}
		/* Numbers and characters */
		if ( (pos < 8) &&
		     ((key >= KEY_CHAR_0 && key <= KEY_CHAR_9) || 
		      (key >= KEY_CHAR_A && key <= KEY_CHAR_Z)) ) {
			regstr[pos] = (char)key ;
			++pos ;
		}
		PrintXY(x, y, (unsigned char *)regstr, 0) ;
	}
	

	return ;
}
Exemplo n.º 3
0
int AddIn_main(int isAppli, unsigned short OptionNum)
{
    int collided = 0;
    unsigned char answer;

    Bdisp_AllClr_DDVRAM();

    Init_SerialPort();
    Start_SerialPort();

    if(connect() == 0) {
        isHost = 1;
    }

    while(1) {
        startScreen();

        memset(videoBuffer, 0, 1024);
        DrawBox(0, 0, 127, 63, videoBuffer, BLACK);
        DrawBox(48, 27, 79, 37, videoBuffer, BLACK);
        CoolText(51, 29, FONT_FIVE, "Ready?", videoBuffer);
        DrawAll(videoBuffer);

        Sleep(1000);

        SerialTransmit(READY);
        while(SerialReceive() != READY) {
            ;
        }

        reset();

        while(1) {
            answer = SerialReceive();

            if(answer == CRASH) {
                score++;
                wonLast = ME;
                break;
            }
            if(answer == EXIT) {
                Reset_Calc();
            }
            if(answer == COORDS) {
                receivedX = SerialReceive();
                receivedY = SerialReceive();

                setBit(videoBuffer, 128, receivedX, receivedY, 1);
            }

            checkKeys();
            move();

            collided = getBit(videoBuffer, 128, playerX, playerY);
            if(collided) {
                otherScore++;
                wonLast = OTHER;
                SerialTransmit(CRASH);
                break;
            }

            setBit(videoBuffer, 128, playerX, playerY, 1);

            SerialTransmit(COORDS);
            SerialTransmit(playerX);
            SerialTransmit(playerY);

            DrawAll(videoBuffer);

            Sleep(delays[speed]);
        }
    }

    return 1;
}
Exemplo n.º 4
0
int Suidao_DM(void)
{
	int display = 0;
	double sd_pj = 0.0 ;	/*	测点与中线的距离	*/
	double sd_gc = 0.0 ;	/*	测点与设计线的高差	*/
	unsigned int key = 0 ;
	unsigned int back_key ;
	BYTE exit_flag = FALSE;
	BYTE xyrow = 0 ;
	int shuaxin = TRUE;		/*	刷新	*/

	while (exit_flag != TRUE)  {
		
		switch(key) {
 		case KEY_CTRL_F1:	default: 
 			if (key == KEY_CTRL_F1)	shuaxin == TRUE;
			if (shuaxin){
				Bdisp_AllClr_DDVRAM() ; 
				Print_zh("隧道断面 ", 0, 1, VERT_REV) ;
				PrintIcon (0,"Home",0);
				PrintIcon (1,"Set",0);
				PrintIcon (2,"SQX",0);
				PrintIcon (3,"DM",0);
				(R_L > 0) ? PrintIcon (4,"YOU",0) : PrintIcon (4,"ZUO",1);
				PrintIcon (5,"Help",0);
				shuaxin = FALSE;
			}
			back_key = key ;
			Bdisp_AreaClr_DDVRAM(&clear_area) ;
			Print_zh("X坐标 ", 20, 6, 0) ;
			Print_zh("Y坐标 ", 20, 22, 0) ;
			Print_zh("Z坐标 ", 20, 38, 0) ;
			
			
			 if (xyrow > 2) {
			 		if (!sd_flag)	{
						Warning("未载入断面 ",2);
						//exit_flag = TRUE ;	//强制退出以解决卡在载入数据界面的问题 fix by 龙之冰点
						xyrow = 0; /*	把焦点设置在TOP		*/
						key = KEY_CTRL_F4;
					break ;
				}
 				xyrow = 0 ;
 				x = sd_x ;
 				y = sd_y ;
 				SaveDisp(SAVEDISP_PAGE2) ;
 				if (InputStake(FS_NOPOPUP) == FSOK){
 					number = fs_zh ;
 					if (!GC_JS(number)) break ;
 					RestoreDisp(SAVEDISP_PAGE2) ;
				 	Bdisp_AreaClr_DDVRAM(&clear_area) ;
				 	
				 	sd_gc = sd_z -  DesignGC;
					 				 	
				 	if (!yanxin(fs_pj, sd_gc)){
				 		Warning("断面计算失败 ",2);
				 		key == KEY_CTRL_F1; 
	 					break ;
	 				}
					Print_zh("桩号K ", 20, 0, 0) ;
					Print_zh("偏距D ", 20, 13, 0) ;
					Print_zh("高差H ", 20, 26, 0) ;
					if (sd_cqw < 0)	Print_zh("欠挖W ", 20, 39, 0) ;
					else			Print_zh("超挖T ", 20, 39, 0) ;
					Print_C(120, 4, CA = fs_zh, 3) ;
					Print_C(120, 17, CA = fs_pj, 3) ;
					Print_C(120, 30, CA = sd_gc, 3) ;
					Print_C(120, 43, CA = sd_cqw, 3) ;
					key = 0 ;
					while(key != KEY_CTRL_EXE && key != KEY_CTRL_EXIT)	GetKey(&key) ;
					key = KEY_CTRL_F1 ;
					break ;
				 }
 				RestoreDisp(SAVEDISP_PAGE2) ;
 			}
			Print_C(112, 10, CA = sd_x, 3) ;
			Print_C(112, 26, CA = sd_y, 3) ;
			Print_C(112, 42, CA = sd_z, 3) ;
			key = InputVal(59, 8+xyrow*16) ;
			switch (xyrow) {	
				case 0:   sd_x = number ? number : sd_x ; break ; 
				case 1:   sd_y = number ? number : sd_y; break ; 
				case 2:   sd_z = number ? number : sd_z; break ; 
				default:  break ;
			}
			if (key >= KEY_CTRL_F1 && key <= KEY_CTRL_F6) xyrow = 0 ;
			break ;
		case KEY_CTRL_F2:
			back_key = key ;
			Bdisp_AreaClr_DDVRAM(&clear_area) ;
			Print_zh("修正H ", 20, 6, 0) ;
			Print_zh("修正D ", 20, 22, 0) ;
			Print_zh("修正R ", 20, 38, 0) ;
			if (xyrow > 2) { 	/* 返回上一个菜单  */
				key = KEY_CTRL_F1 ; 
				xyrow = 0 ; 
				break ;
			 }
			Print_C(112, 10, CA = sd_h, 3) ;
			Print_C(112, 26, CA = sd_d, 3) ;
			Print_C(112, 42, CA = sd_r, 3) ;
			key = InputValP(59, 8+xyrow*16) ;
			switch (xyrow) {	
				case 0:   sd_h = number ? number : sd_h ; break ; 
				case 1:   sd_d = number ? number : sd_d ;break ; 
				case 2:   sd_r = number ? number : sd_r ; break ; 
				default:  break ;
			}
			if (key >= KEY_CTRL_F1 && key <= KEY_CTRL_F6) xyrow = 0 ;
			break ;

		case KEY_CTRL_F3:
			SaveDisp(SAVEDISP_PAGE2) ;

			if (sqx_flag == TRUE)	 {
				if ( InputSQstake() == TRUE) {
					if (InputSQpj() == TRUE) {	/* 输入偏距	*/
						DesignGC = Cut_3(DesignGC) ;
						PopUpWin(3);
						locatestr(12,22) ;
						printf("高程:%.3f",DesignGC ) ;
						GetKey(&key);
					}
				}		
			}
			else  DebugS("未载入竖曲线 ") ;
			key =  back_key ;
			RestoreDisp(SAVEDISP_PAGE2) ;
			break ;
			
		case KEY_CTRL_F4:
			sd_flag = load_SD_data(sd_flag) ;
			key =  KEY_CTRL_F1 ;
			shuaxin = TRUE;
			break ;
			
		case KEY_CTRL_F5:
			if (R_L == -1){
				R_L = 1; 
				Warning("应用在右幅 ",2);
			}	
			else{
				R_L = -1;
				Warning("应用在左幅 ",2);
			}
			key =  KEY_CTRL_F1 ;
			shuaxin = TRUE;
			break ;
			
			case KEY_CTRL_F6:
			Bdisp_AllClr_DDVRAM() ;
			Print_zh("Home=刷新页面 ", 1, 2, 0) ;
			Print_zh("Set =断面数据修正 ", 1, 16, 0) ;
			Print_zh("SQX =竖曲线高程 ", 1, 30, 0) ;
			Print_zh("DM  =选择断面文件 ", 1, 44, 0) ;
			GetKey(&key);
			Bdisp_AllClr_DDVRAM() ;
			Print_zh("ZUO =应用在左幅 ", 1, 2, 0) ;
			Print_zh("YOU =应用在右幅 ", 1, 16, 0) ;
			Print_zh("修正H=改变圆心高差 ", 1, 30, 0) ;
			Print_zh("     (+上移 -下移)", 1, 44, 0) ;
			GetKey(&key);
			Bdisp_AllClr_DDVRAM() ;
			Print_zh("修正D=改变圆心偏距 ", 1, 2, 0) ;
			Print_zh("     (+右移 -左移) ", 1, 16, 0) ;
			Print_zh("修正R=改变设计半径 ", 1, 30, 0) ;
			Print_zh("     (+变长 -变短)", 1, 44, 0) ;
			GetKey(&key);
			key =  KEY_CTRL_F1 ;
			shuaxin = TRUE;
			break ;

		case KEY_CTRL_UP:  
			if (xyrow > 0)  --xyrow ;  
			key = back_key ;
			break ;
		case KEY_CTRL_DOWN: 
		case KEY_CTRL_EXE:
			++xyrow ; 
			key = back_key ;
			break ;
		case KEY_CTRL_DEL:
			key = back_key ;
			break ;
		case KEY_CTRL_EXIT :
			exit_flag = TRUE ;	
			break ;
		}
	}
	return ;
}
Exemplo n.º 5
0
Arquivo: set.c Projeto: justid/Zoolu
int ProjSet()
{
	unsigned int key = 0 ;
	unsigned int back_key = 0 ;
	BYTE row = 0 ;
	BYTE exit_flag = FALSE ;

	Bdisp_AllClr_DDVRAM() ; 	/* clear screen */
	Print_zh(" 设置 ", 2, 0, VERT_REV) ;
	PrintMini(2, 58, (unsigned char*)" F1 ", MINI_REV) ; 
	PrintMini(21, 58, (unsigned char*)" F2 ", MINI_REV) ; 
	//PrintMini(40, 58, (unsigned char*)" F3 ", MINI_REV) ; 
	PrintMini(105, 58, (unsigned char*)" EXIT ", MINI_REV) ; 

	while (exit_flag != TRUE) {	
		switch (key) {
		case KEY_CTRL_F1: default: 
			back_key = key ;
			Bdisp_AreaClr_DDVRAM(&clear_area) ;
			locatestr(27,2) ;printf("放样:增减桩距 ") ;
			locatestr(67,16) ;printf("%.3f", allset.stake_d) ;	
			locatestr(27,29) ;printf("反算:最大路宽 ") ;
			locatestr(67,43) ;printf("%.3f", allset.width_max) ;
			PrintXY(120, 6, (unsigned char*)"\xE6\x9C ", 0) ;
			PrintXY(120, 49, (unsigned char*)"\xE6\x9D ", 0) ;
			if (row > 1) { 	/* 判断是否进入下一个菜单 */
				key = KEY_CTRL_F2 ; 
				row = 0 ; 
				break ;
			 }
			
			key = InputVal(53, 17+row*27) ;
			switch (row) {
			case 0: allset.stake_d = number ? number : allset.stake_d ;break ;
			case 1: allset.width_max = number ? number : allset.width_max ;break ;
			default:  break ;
			}
			break ;
		case KEY_CTRL_F2:
			back_key = key ;
			Bdisp_AreaClr_DDVRAM(&clear_area) ;
			locatestr(27,2) ;printf("1=交点 2=线元 ") ;
			locatestr(77,16) ;printf("%.3f", allset.xl_type) ;	
			locatestr(27,29) ;printf("1=正交 2=任意 ") ;
			locatestr(77,43) ;printf("%.3f", allset.pj_mode) ;
			PrintXY(120, 6, (unsigned char*)"\xE6\x9C ", 0) ;
			PrintXY(120, 46, (unsigned char*)"\xE6\x9D ", 0) ;
			if (row > 1) { 	/* 判断是否进入下一个菜单 */
				if ( SaveProj()  != -1 )	Warning("设置成功 ", 2) ; 
				else  Warning("设置失败 ", 2) ;
				exit_flag = TRUE ;
				break;
			 }
			key = InputVal(53, 17+row*27) ;
			switch (row) {
			case 0:   allset.xl_type = (number==1 || number==2) ? number : allset.xl_type ;break ;
			case 1:   allset.pj_mode = (number==1 || number==2) ? number : allset.pj_mode ;break ;
			default:  break ;
			}
			break ;
		case KEY_CTRL_UP:  
			if (row > 0)  --row ;  
			key = back_key ;
			break ;
		case KEY_CTRL_DOWN: 
		case KEY_CTRL_EXE:
			++row ; 
			key = back_key ;
			break ;
		case KEY_CTRL_DEL:
			key = back_key ;
			break ;
		case KEY_CTRL_EXIT :
			exit_flag = TRUE ;
			break ;
		}
	}
}
Exemplo n.º 6
0
void calcul_mole()
{
char *str = NULL, *p=str;
char characts[20]={'\0'};
char i=0;
float result=0, masse;
const char buffer[50]={0};
char cap;

while(1)
{
Bdisp_AllClr_DDVRAM();

PrintMini(1,1,"Entrez votre formule : ",0);

Mini("A  a",0);

EI_init();

EI_manage_config(EI_SET_COLUMN, 1);
EI_manage_config(EI_SET_ROW, 2);
EI_manage_config(EI_SET_START_MODE, EI_NORMAL);

str=EI_input_string(25,(const char*)"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");

Bdisp_AllClr_DDVRAM();

sprintf(buffer,"%s",str);
PrintXY(64-3*strlen(str),10,buffer,36);

while(*str) // on va jusqu'a la fin de la chaine
	{
	i=0;

	while(isalpha(*str)) // on prends seulement les lettres
			{
			characts[i]=tolower(*str); // on copie la lettre en minuscule directement dans characts 
			++i;
			++str;
			}

	characts[0]=toupper(characts[0]); // on met le 1er caractère en majuscule

	for(i=0;i<118;i++) // on se déplace dans les éléments de la structure
		{
		if(!strcmp(characts,elements[i].symbol))
			{
			masse=elements[i].masse_mol; // on a la masse molaire
			break;
			}
		}
		
		for(i=0;i<20;++i) // on remet tout à zéro : évite les erreurs
			characts[i]='\0';

	i=0;

	while(isdigit(*str)) // on prends seulement les chiffres
		{
		characts[i]=*str; // on copie la lettre dans characts
		++i;
		++str;
		}

		result += atoi(characts)*masse;
		
		for(i=0;i<4;++i) // on remet tout à zéro : évite les erreurs
			characts[i]='\0';
	}

free(p);

PrintMini(1,30,"la masse molaire est de",0);

sprintf(buffer,"%.3f g/mol",result);
PrintMini(1,40,buffer,0);

Mini("calc",0);
Mini("ret",5);

GetKey(&key);

switch(key)
	{
	case 29 : return;
	}
}
}
Exemplo n.º 7
0
int find(chang)
{
char *numero=NULL;

char i=0,j;

const char buffer[50];

Bdisp_AllClr_DDVRAM();
PrintXY(10,1,"Vous cherchez :",0);
PrintMini(10,15,"1. numero de l'element",0);
PrintMini(10,25,"2. masse molaire",0);
PrintMini(10,35,"3. Symbole de l'element",0);
PrintMini(10,45,"4. Nom de l'element",0);

while (1)
	{
	
	EI_init();

	EI_manage_config(EI_SET_COLUMN, 1);
	EI_manage_config(EI_SET_ROW, 3);
	EI_manage_config(EI_SET_START_MODE, EI_NORMAL);

	GetKey(&key);

		switch(key)
		{
		case 72 : 
			{
			while(1)
				{
				Bdisp_AllClr_DDVRAM();
				PrintMini(1,1,"Vous cherchez l'element n :",0);

				numero=EI_input_string(3,(const char*)"0123456789");
				// ça coupe ici
				if (atoi(numero)>0 && atoi(numero)<119) // ça arrête le curseur
					{
					return atoi(numero)-1;
					}
				}
			}

		case 62 :
			{
			while(1)
				{
				Bdisp_AllClr_DDVRAM();
				PrintMini(1,1,"Vous cherchez une masse",0);
				PrintMini(1,7,"molaire de :",0);

				numero=EI_input_string(3,(const char*)"0123456789");

				for (i=0;i<118;i++)
					{
					if (atoi(numero)==floor(elements[i].masse_mol+0.5))
						{
						return i;
						}
					}
				}
			}

		case 52 :
			{
			while(1)
				{
				Bdisp_AllClr_DDVRAM();
				PrintMini(1,1,"Vous cherchez le symbole ?",0);

				EI_manage_config(EI_SET_START_MODE, EI_ALPHA_LOCKED);

				numero=EI_input_string(3,(const char*)"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
				numero[0]=toupper (numero[0]); // on met le 1er caractère en majuscule
				for (i=0;i<118;i++)
					{
					for (j = 1 ; numero[j] != '\0' ; j++)
						{
						numero[j] = tolower(numero[j]); // on met certains caractères en minuscule pour la recherche
						}

					if (!strcmp(numero,elements[i].symbol))
						{
						return i;
						}
					}
				}
			}

		case 73 :
			{
			while(1)
				{
				Bdisp_AllClr_DDVRAM();
				PrintMini(1,1,"Vous cherchez le nom ?",0);

				EI_manage_config(EI_SET_START_MODE, EI_ALPHA_LOCKED);

				numero=EI_input_string(13,(const char*)"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
				numero[0]=toupper(numero[0]); // on met le 1er caractère en majuscule
			for (i=0;i<118;i++)
					{
					for (j = 1 ; numero[j] != '\0' ; j++)
						{
						numero[j] = tolower(numero[j]);// on met certains caractères en minuscule pour la recherche
						}

					if (!strcmp(numero,elements[i].nom))
						{
						return i;
						}
					}
				}
			}

		case 47 : return chang;

		}
	}
}
Exemplo n.º 8
0
int detailsElement(a)
{
	const char buffer[50];
	char descente=-9;

while (1)
	{

	Bdisp_AllClr_DDVRAM();

	PrintXY(20,descente+13,elements[a].symbol,0);
	sprintf(buffer,"%s",elements[a].nom);
	PrintMini(40,descente+13,buffer,0);

	sprintf(buffer,"%d",a+1); // détail des éléments
	PrintMini((10-a/25),descente+15,buffer,0);

	sprintf(buffer,"masse molaire %.3f g/mol",elements[a].masse_mol);
	PrintMini(1,descente+23,buffer,0);

	PrintMini(20,descente+40,"propriete  de base :",0); //

	if (elements[a].groupe>=1)
		{
		sprintf(buffer,"groupe : %d ",elements[a].groupe);
		PrintMini(1,descente+50,buffer,0);
		}

	if ((a>55 && a<71) || (a>87 && a<103))
	PrintMini(1,descente+50,"pas de groupe",0);

	sprintf(buffer,"periode : %d ",elements[a].periode);
	PrintMini(1,descente+60,buffer,0);

	sprintf(buffer,"couch electro %s",elements[a].config_electro);
	PrintMini(1,descente+70,buffer,0);

	sprintf(buffer,"famille %s",family[ajout[a].famille]);
	PrintMini(1,descente+80,buffer,0);

	sprintf(buffer,"decouvert en %d",ajout[a].annee);
	PrintMini(1,descente+90,buffer,0);
	
	sprintf(buffer,"etat a 293.15 K : %s",etat[ajout[a].etat]);
	PrintMini(1,descente+100,buffer,0);

	PrintMini(20,descente+120,"reactivite :",0); //

	if (elements[a].electro_neg==0)
		{
		PrintMini(1,descente+130,"electro neg inconnue",0);
		}
	else
		{
		sprintf(buffer,"electro neg : %f ",elements[a].electro_neg);
		PrintMini(1,descente+130,buffer,0);
		}

	if (elements[a].valence>=0)
		{
		sprintf(buffer,"valence : %d ",elements[a].valence);
		PrintMini(1,descente+140,buffer,0);
		}
	else
		{
	PrintMini(1,descente+140,"valence inconnue",0);
		}

	Mini("ret",5);

	GetKey(&key);

	switch (key)
		{
		case 38 : a-=1,descente=-9; break;
		case 27 : a+=1,descente=-9; break;
		case 37 : descente-=4; break;
		case 28 : descente+=4; break;
		case 29 : case 31 : case 47 : return a;
		}

	a=(a<0 ? 117 : a>117 ? 0 : a);
	descente=(descente>-9 ? -9 : descente<-85 ? -85 : descente); // on fixe les limites de la page
	}
}
Exemplo n.º 9
0
int tableauEleMini(chang)
{
char buffer[50];
char y;
char menu=0;
char choix=-1;

while(1)
	{
	Bdisp_AllClr_DDVRAM();

	ML_bmp_or(TABLEAU_MINI,0,0,91,48);
	choix_famille(choix); // on met en place le choix sur les familles
	
	chang=(chang>=118 ? 0 : chang<=-1 ? 117 : chang);

	y=(chang>55 && chang<71 ? 9 : chang>87 && chang<103 ? 10 : elements[chang].periode);

	if (chang>55 && chang<71 || chang>87 && chang<103)
		{
		ML_rectangle(5*elements[chang].groupe-4,5*y-7,5*elements[chang].groupe-1,5*y-4,0,1,2);
		}
		else
		{
		ML_rectangle(5*elements[chang].groupe-4,5*y-4,5*elements[chang].groupe-1,5*y-1,0,1,2);
		}


	PrintXY(110-3*strlen(elements[chang].symbol),13,elements[chang].symbol,0);

	sprintf(buffer,"%d",chang+1); // détail des éléments sur la droite
	PrintMini(110-2*strlen(buffer),5,buffer,0);

	sprintf(buffer,"%.3f",elements[chang].masse_mol);
	PrintMini(110-2*strlen(buffer),23,buffer,0);

	

	if(menu==0)
		{

		Mini("maxi",0);
		Mini("find",1);
		Mini("mol",2);
		
		Mini("fami",4);
		Mini("det",5);

		GetKey(&key);

		switch(key)
			{
			case 79 : case 47 : return chang;
			case 69 : chang=find(chang); break;
			case 59 : calcul_mole(); break;
			
			case 39 : menu=1; break;
			case 29 : chang=detailsElement(chang); break;
			}
		}
	else if (menu==1)
		{
		Mini("n-me",0);
		Mini("halo",1);
		Mini("g-ra",2);
		Mini("m-ti",3);
		Mini("m-al",4);
		Mini(" -->",5);

		GetKey(&key);

		switch(key)
			{
			case 47 :  menu=0; choix=-1; break;

			case 79 : choix=0; break;
			case 69 : choix=1; break;
			case 59 : choix=2; break;
			case 49 : choix=3; break;
			case 39 : choix=4; break;
			case 29 : menu=2; break; // on change dans les 2 menus
			}
		}
	else if (menu==2)
		{
		Mini("m-at",0);
		Mini("lant",1);
		Mini("acta",2);
		Mini("m-tr",3);
		Mini("p-tr",4);
		Mini(" -->",5);

		GetKey(&key);

		switch(key)
			{
			case 47 : menu=0; choix=-1;break;

			case 79 : choix=5; break;
			case 69 : choix=6; break;
			case 59 : choix=7; break;
			case 49 : choix=8; break;
			case 39 : choix=9; break;
			case 29 : menu=1; break; // on change dans les 2 menus

			}
		}

	switch(key) // pour les touches principales à chaque fois
		{
		case 27 : chang+=1;  break;
		case 38 : chang-=1; break;
		case 37 : chang=elements[chang].dessous; break;
		case 28 : chang=elements[chang].dessus; break;

		case 31 : case 78 : chang=detailsElement(chang); break;

		}
	}
}
Exemplo n.º 10
0
int tableauElement(chang)
{

short decalx=0,decaly=0;
short x,y;
short i;

while(1)
	{
	Bdisp_AllClr_DDVRAM();

	chang=(chang>=118 ? 0 : chang<=-1 ? 117 : chang);

	decalx=-(((12*elements[chang].groupe)-13)*108)/240; // on fait un decalage lorsque l'on bouge
	decaly=(elements[chang].periode==5 ? -7 : elements[chang].periode>5 ? -14 : 0);

	for(i=0;i<118;i++)
			{
			x=elements[i].groupe;
			y=(i>55 && i<71 ? 9 : i>87 && i<103 ? 10 : elements[i].periode);


			PrintMini(12*x+decalx-12,7*y+decaly-6,elements[i].symbol,0);

			PrintMini(12*3-11+decalx,7*6-7+decaly,"1",0);
			PrintMini(12*3-11+decalx,7*7-7+decaly,"2",0);

			PrintMini(12*3-11+decalx,7*9+decaly-5,"1",0);
			PrintMini(12*3-11+decalx,7*10+decaly-5,"2",0);
			}

	if (chang>55 && chang<71)
		{
		ML_rectangle(12*elements[chang].groupe-13+decalx,7*9-7+decaly,12*elements[chang].groupe-1+decalx,7*9+decaly,1,1,2);
		}
	else if (chang>87 && chang<103)
		{
		ML_rectangle(12*elements[chang].groupe-13+decalx,7*10-7+decaly,12*elements[chang].groupe-1+decalx,7*10+decaly,1,1,2);
		}
	else
		{
		ML_rectangle(12*elements[chang].groupe-13+decalx,7*elements[chang].periode-7+decaly,12*elements[chang].groupe+decalx,7*elements[chang].periode+decaly,1,1,2);
		}

	ML_rectangle(0,56,128,64,0,0,0); // on fait un rectangle blanc pour qu'il n'y ait rien

	Mini("mini",0);
	Mini("find",1);
	Mini("mol",2);
	Mini("sign",3);

	Mini("det",5);

	GetKey(&key);

	switch(key)
		{
		case 27 : chang+=1;  break;
		case 38 : chang-=1; break;
		case 37 : chang=elements[chang].dessous; break;
		case 28 : chang=elements[chang].dessus; break;

		case 79 : chang=tableauEleMini(chang); break;
		case 69 : chang=find(chang); break;
		case 59 : calcul_mole(); break;
		case KEY_CTRL_F4 : nb_sign(); break;

		case 29 : case 31 : case 78 : chang=detailsElement(chang); break;

		case 47 : return;
		}
	}
}
Exemplo n.º 11
0
int AddIn_main(int isAppli, unsigned short OptionNum)
{
	int xMap, yMap, newXMap, newYMap;
	unsigned char *light_buffer, *dark_buffer, *light_swap, *dark_swap, *tmp_swap;
	Map mapTest;

	//On initialise les buffer par calloc (plus propre que par allocation automatique!) : 
	light_buffer = calloc(1024, sizeof(unsigned char)); 
	dark_buffer = calloc(1024, sizeof(unsigned char));
	//Les deux buffers ci-dessous sont les "sawp" qui permettent de faire du double buffering
	// afin d'obtenir une meilleure fluiditée.
	light_swap = calloc(1024, sizeof(unsigned char));
	dark_swap = calloc(1024, sizeof(unsigned char));
	tmp_swap = 0;
	
    Bdisp_AllClr_DDVRAM();
	Change_Contrast (166);
	
	//On initialise le grayscale de revolution-fx :
	GrayLinkBuffers(light_buffer, dark_buffer);
	GrayInit(6987, 3269);
	
	//Allocation de la map :
	mapTest = aMap(m_votre_map);

	//Boucle principale d'execution :
    while(IsKeyUp (KEY_CTRL_EXIT)){
		if (IsKeyDown (KEY_CTRL_LEFT)) xMap-=2;
		if (IsKeyDown (KEY_CTRL_RIGHT)) xMap+=2;
		if (IsKeyDown (KEY_CTRL_UP)) yMap-=2;
		if (IsKeyDown (KEY_CTRL_DOWN)) yMap+=2;
		
		//On vérifie si on ne sort pas de la map :
		if (xMap<0) xMap=0;
		else if (xMap > (mapTest.width-128/mapTest.tileset.tileWidth)*mapTest.tileset.tileWidth) 
			xMap = (mapTest.width-128/mapTest.tileset.tileWidth)*mapTest.tileset.tileWidth;
			
		if (yMap<0) yMap=0;
		else if (yMap > (mapTest.height-64/mapTest.tileset.tileHeight)*mapTest.tileset.tileHeight) 
			yMap = (mapTest.height-64/mapTest.tileset.tileHeight)*mapTest.tileset.tileHeight;
		
		//On dessine la map sur les buffer de swap :
		drawMap (mapTest,
			xMap/mapTest.tileset.tileWidth,
			yMap/mapTest.tileset.tileHeight, 
			128/mapTest.tileset.tileWidth +1, 
			64/mapTest.tileset.tileWidth +1, 
			-(xMap % mapTest.tileset.tileWidth),
			-(yMap % mapTest.tileset.tileHeight),
			light_swap,
			dark_swap);
		
		//On inverse les buffer de swap avec les buffer principaux :
		GrayLinkBuffers(light_swap, dark_swap);
		tmp_swap = light_swap;
		light_swap = light_buffer;
		light_buffer = tmp_swap;
		tmp_swap = dark_swap;
		dark_swap = dark_buffer;
		dark_buffer = tmp_swap;
		//On efface les nouveaux buffer de swap :
		memset(light_swap, 0, 1024);
		memset(dark_swap, 0, 1024);
    }
	
	CPUSpeedNormal();
    Reset_Calc();
	return 1;
}