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

📄 basic3.c

📁 用C语言写的YABasic解释器
💻 C
📖 第 1 页 / 共 3 页
字号:
        	case '2' :    /***反显***/
        	case '0' :    /***清除所画圆***/
        	              GraphSetBKMode((MDC*)hEditWin,BKMODE_NOT);
        	              break;
        	case '1' :    /***画圆***/
        	              break;
        	case '3' :    /***或***/
        	              GraphSetBKMode((MDC*)hEditWin,BKMODE_OR);
        	              break;
        	case '4' :    /***与***/
        	              GraphSetBKMode((MDC*)hEditWin,BKMODE_AND);
        	              break;
        	case '5' :    /***异或***/
        	              GraphSetBKMode((MDC*)hEditWin,BKMODE_XOR);
         	              break;
                default :     
                              serror(0);
        }        
        if (*(option1+1)=='0')      /***不填充***/
             GraphDrawCircle((MDC *)hEditWin,atoi(value1+1)-atoi(value3+1),atoi(value2+1)-atoi(value3+1),atoi(value1+1)+atoi(value3+1),atoi(value2+1)+atoi(value3+1));
        else if (*(option1+1)=='1') /***填充***/                          
             GraphFillCircle((MDC *)hEditWin,atoi(value1+1)-atoi(value3+1),atoi(value2+1)-atoi(value3+1),atoi(value1+1)+atoi(value3+1),atoi(value2+1)+atoi(value3+1));
        else
             serror(0);              
        GraphSetBKMode((MDC*)hEditWin,saveBKMode);
        if (save!=(char *)Null) *save = ')';
}

FAR void exec_ellipse()
{
	UInt8 *hEditWin, saveBKMode;
	char *value1, *value2, *value3, *value4,  *option1, *option2, pCurBuf_s, *save;
	
	if (!GTflag) serror(0);
	save = (char *)Null;
	hEditWin = GuiScrnEditGetEdit(hBasicWnd);

        while (*prog==0x20) prog++;
        if (*prog=='(') 
        {
	          option1 = prog;
	          while (*option1!=')'&&*option1!=0x0D&&*option1!=':') option1++;
	          if (*option1!=')') serror(0);
	          save = option1; 
	          *option1 = 0x0D;
	          prog++;
        }     
        value1 = GetAllocBuf();
        pCurBuf_s = pCurBuf;
        get_exp(value1); 
        pCurBuf = pCurBuf_s;
        value2 = GetAllocBuf();
        pCurBuf_s = pCurBuf;
        if (*prog!=',') serror(0);
        prog++; 
        token_type = COMMAND;
        get_exp(value2); 
        pCurBuf = pCurBuf_s;
        value3 = GetAllocBuf();
        pCurBuf_s = pCurBuf;
        if (*prog!=',') serror(0);
        prog++; 
        token_type = COMMAND;
        get_exp(value3);
        if (*value3!=INTEGER_TYPE&&*value3!=REAL_TYPE||Strchr(value3,'-')) serror(0);      /***椭圆二径只可以为正数***/
        pCurBuf = pCurBuf_s;
        value4 = GetAllocBuf();
        pCurBuf_s = pCurBuf;
        if (*prog!=',') serror(0);
        prog++;
        token_type = COMMAND;
        get_exp(value4);
        if (*value4!=INTEGER_TYPE&&*value4!=REAL_TYPE||Strchr(value4,'-')) serror(0);      /***椭圆二径只可以为正数***/
        pCurBuf = pCurBuf_s;
        option1 = GetAllocBuf();
        option2 = option1 + 25;                        
        while (*prog==0x20) prog++;
        if (*prog!=','&&*prog!=0x0D&&*prog!=':') serror(0);
        if (*prog!=',') {
        	Strcpy(option1,"11");        	 	
        	Strcpy(option2,"11");
        } else {
                prog++;
                token_type = COMMAND;
                get_exp(option1);
                if (*(option1+2)!=0) serror(0);
                while (*prog==0x20) prog++;
                if (*prog!=','&&*prog!=0x0D&&*prog!=':') serror(0);
                if (*prog!=',') Strcpy(option2,"11");
                else {
                     prog++;
                     token_type = COMMAND;
                     get_exp(option2);
                     if (*(option2+2)!=0) serror(0);
                }
        }
        while (*prog==0x20) prog++;
        if (*prog!=0x0D&&*prog!=':') serror(0);
        
        saveBKMode = GraphGetBKMode((MDC*)hEditWin);
        switch (*(option2+1)) {
        	case '2' :    /***反显***/
        	case '0' :    /***清除所画椭圆***/        	              
        	              GraphSetBKMode((MDC*)hEditWin,BKMODE_NOT);   
        	              break;
        	case '1' :    /***画椭圆***/         	              
        	              break;        	
        	case '3' :    /***或***/        	              
        	              GraphSetBKMode((MDC*)hEditWin,BKMODE_OR);         	                      	              
        	              break;
        	case '4' :    /***与***/
        	              GraphSetBKMode((MDC*)hEditWin,BKMODE_AND);        	              
        	              break;
        	case '5' :    /***异或***/
        	              GraphSetBKMode((MDC*)hEditWin,BKMODE_XOR);        	              
         	              break;
                default :     
                              serror(0);
        }
        
        if (*(option1+1)=='0')       /***不填充***/        	                                   	              
               GraphDrawCircle((MDC *)hEditWin,atoi(value1+1)-atoi(value3+1),atoi(value2+1)-atoi(value4+1),atoi(value1+1)+atoi(value3+1),atoi(value2+1)+atoi(value4+1));
        else if (*(option1+1)=='1')  /***填充***/        	                                   	              
               GraphFillCircle((MDC *)hEditWin,atoi(value1+1)-atoi(value3+1),atoi(value2+1)-atoi(value4+1),atoi(value1+1)+atoi(value3+1),atoi(value2+1)+atoi(value4+1));
        else
               serror(0);
        GraphSetBKMode((MDC*)hEditWin,saveBKMode);         	              	                                     
        if (save!=(char *)Null) *save = ')';  	
}

FAR void exec_line()
{
	UInt8 *hEditWin, saveBKMode;
	char *value1, *value2, *value3, *value4, *option, pCurBuf_s, *save;
	
	if (!GTflag) serror(0);
	save = (char *)Null;	
	hEditWin = GuiScrnEditGetEdit(hBasicWnd);	
        while (*prog==32) prog++;
        if (*prog=='(') {
	       option=prog;
	       while (*option!=')'&&*option!=0x0D&&*option!=':') option++;
	       if (*option!=')') serror(0);
	       save = option; 
	       *option = 0x0D;
	       prog++;
        }       
        value1 = GetAllocBuf();
        pCurBuf_s = pCurBuf;
        get_exp(value1);
        pCurBuf = pCurBuf_s; 
        value2=GetAllocBuf();
        pCurBuf_s = pCurBuf;
        if (*prog!=',') serror(0);
        prog++; 
        token_type = COMMAND;
        get_exp(value2); 
        pCurBuf = pCurBuf_s;
        value3 = GetAllocBuf();
        pCurBuf_s = pCurBuf;
        if (*prog!=',') serror(0);
        prog++; 
        token_type = COMMAND;
        get_exp(value3); 
        pCurBuf = pCurBuf_s;
        value4 = GetAllocBuf();
        pCurBuf_s = pCurBuf;
        if (*prog!=',') serror(0);
        prog++; 
        token_type = COMMAND;
        get_exp(value4); 
        pCurBuf = pCurBuf_s;
        option = GetAllocBuf();
        while (*prog==0x20) prog++;
        if (*prog!=','&&*prog!=0x0D&&*prog!=':') serror(0);
        if (*prog!=',') Strcpy(option,"11");
        else {
                prog++;
                token_type = COMMAND;
                get_exp(option);
                if (*(option+2)!=0) serror(0);
        }
        while (*prog==0x20) prog++;
        if (*prog!=0x0D&&*prog!=':') serror(0);
        
        saveBKMode = GraphGetBKMode((MDC*)hEditWin);
        switch (*(option+1)) {
        	case '2' :    /***反显***/
        	case '0' :    /***清除所画线***/        	              
        	              GraphSetBKMode((MDC*)hEditWin,BKMODE_NOT);   
        	              break;
        	case '1' :    /***画线***/         	              
        	              break;        	
        	case '3' :    /***或***/        	              
        	              GraphSetBKMode((MDC*)hEditWin,BKMODE_OR);         	                      	              
        	              break;
        	case '4' :    /***与***/
        	              GraphSetBKMode((MDC*)hEditWin,BKMODE_AND);        	              
        	              break;
        	case '5' :    /***异或***/
        	              GraphSetBKMode((MDC*)hEditWin,BKMODE_XOR);        	              
         	              break;
                default :    
                              serror(0);                               
        }                                                              
        GraphDrawLine((MDC *)hEditWin,atoi(value1+1),atoi(value2+1),atoi(value3+1),atoi(value4+1));
        GraphSetBKMode((MDC*)hEditWin,saveBKMode);                
        if (save!=(char *)Null) *save = ')';  

}

FAR void exec_box()
{
	UInt8 *hEditWin, saveBKMode;
	char *value1, *value2, *value3, *value4, *option1, *option2, pCurBuf_s, *save;

        if (!GTflag) serror(0);	
	save = (char *)Null;		
	hEditWin = GuiScrnEditGetEdit(hBasicWnd);
        while (*prog==32) prog++;
        if (*prog=='(') 
        {
	          option1 = prog;
	          while (*option1!=')'&&*option1!=0x0D&&*option1!=':') option1++;
	          if (*option1!=')') serror(0);
	          save = option1; 
	          *option1 = 0x0D;
	          prog++;
        }
        value1 = GetAllocBuf();
        pCurBuf_s = pCurBuf;
        get_exp(value1);    
        pCurBuf = pCurBuf_s;     
        value2 = GetAllocBuf();
        pCurBuf_s = pCurBuf;
        if (*prog!=',') serror(0);
        prog++; 
        token_type = COMMAND;
        get_exp(value2); 
        pCurBuf = pCurBuf_s;
        value3 = GetAllocBuf();
        pCurBuf_s = pCurBuf;
        if (*prog!=',') serror(0);
        prog++; 
        token_type = COMMAND;
        get_exp(value3); 
        pCurBuf = pCurBuf_s;
        value4 = GetAllocBuf();
        pCurBuf_s = pCurBuf;
        if (*prog!=',') serror(0);
        prog++; 
        token_type = COMMAND;
        get_exp(value4);
        pCurBuf = pCurBuf_s;
        option1 = GetAllocBuf();
        option2 = option1 + 25;
        while (*prog==0x20) prog++;
        if (*prog!=','&&*prog!=0x0D&&*prog!=':') serror(0);
        if (*prog!=',') {
        	Strcpy(option1,"11");        	 	
        	Strcpy(option2,"11");
        } 
        else 
        {        
                prog++;
                token_type = COMMAND;
                get_exp(option1);
                while (*prog==0x20) prog++;
                if (*prog!=','&&*prog!=0x0D&&*prog!=':') serror(0);
                if (*prog!=',') Strcpy(option2,"11");
                else 
                {
                     prog++;
                     token_type = COMMAND;
                     get_exp(option2);
                }
        }
        if (*prog!=0x0D&&*prog!=':') serror(0);
        
        saveBKMode = GraphGetBKMode((MDC*)hEditWin);
        switch (*(option2+1)) 
        {
        	case '2' :    /***反显***/
        	              GraphSetBKMode((MDC*)hEditWin,BKMODE_NOT);
        	              break; 
        	case '0' :    /***清除所画矩形***/
        	              GraphClearRect((MDC *)hEditWin,atoi(value1+1),atoi(value2+1),atoi(value3+1),atoi(value4+1));
        	              break;
        	case '1' :    /***画矩形***/
        	              break;        	
        	case '3' :    /***或***/
        	              GraphSetBKMode((MDC*)hEditWin,BKMODE_OR);         	                      	              
        	              break;
        	case '4' :    /***与***/
        	              GraphSetBKMode((MDC*)hEditWin,BKMODE_AND);        	              
        	              break;
        	case '5' :    /***异或***/
        	              GraphSetBKMode((MDC*)hEditWin,BKMODE_XOR);        	              
         	              break;
                default :     
                              break;
        }
        if (*(option2+1)!='0') {
              if (*(option1+1)=='0')   /***不填充***/
                   GraphDrawRect((MDC *)hEditWin,atoi(value1+1),atoi(value2+1),atoi(value3+1),atoi(value4+1));
              else                     /***填充***/
                   GraphFillRect((MDC *)hEditWin,atoi(value1+1),atoi(value2+1),atoi(value3+1),atoi(value4+1));        
        }
        GraphSetBKMode((MDC*)hEditWin,saveBKMode);
        if (save!=(char *)Null) *save = ')';
        
}

FAR void exec_draw()
{
	UInt8 *hEditWin, saveBKMode;
	char *value1, *value2, *option, pCurBuf_s, *save;

        if (!GTflag) serror(0);	
	save = (char *)Null;	
	hEditWin = GuiScrnEditGetEdit(hBasicWnd);        
        while (*prog==32) prog++;
        if (*prog=='(') 
        {
	       option = prog;
	       while (*option!=')'&&*option!=0x0D&&*option!=':') option++;
	       if (*option!=')') serror(0);
	       save = option; 
	       *option = 0x0D;
	       prog++;
        }
        value1 = GetAllocBuf();
        pCurBuf_s = pCurBuf;        
        get_exp(value1);
        pCurBuf = pCurBuf_s;
        value2 = GetAllocBuf();
        pCurBuf_s = pCurBuf;
        if (*prog!=',') serror(0);
        prog++;
        token_type = COMMAND;
        get_exp(value2);
        pCurBuf = pCurBuf_s;
        option = GetAllocBuf();
        if (*prog!=',') Strcpy(option,"11");
        else
        {
              prog++;
              token_type = COMMAND;
              get_exp(option);
        }
        while (*prog==0x20) prog++;
        if (*prog!=0x0D&&*prog!=':') serror(0);        
        
        saveBKMode = GraphGetBKMode((MDC*)hEditWin);
        switch (*(option+1)) {
        	case '2' :    /***反显***/
        	case '0' :    /***清除所画点***/
        	              GraphSetBKMode((MDC*)hEditWin,BKMODE_NOT);   
        	              break;
        	case '1' :    /***画点***/
        	              break;        	
        	case '3' :    /***或***/
        	              GraphSetBKMode((MDC*)hEditWin,BKMODE_OR);         	                      	              
        	              break;
        	case '4' :    /***与***/
        	              GraphSetBKMode((MDC*)hEditWin,BKMODE_AND);        	              
        	              break;
        	case '5' :    /***异或***/
        	              GraphSetBKMode((MDC*)hEditWin,BKMODE_XOR);   
         	              break;
                default :     
                              break;
        }                
        GraphDrawDot((MDC *)hEditWin,atoi(value1+1),atoi(value2+1));
        GraphSetBKMode((MDC*)hEditWin,saveBKMode);        
        if (save!=(char *)Null) *save = ')';  		
}

⌨️ 快捷键说明

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