/******************************主界面显示********************************/ void Menu_Init(void) { OLED_Write_Char(0, yiwei(i,i), 43); OLED_Write_String(2,yiwei(0,i),"AI "); OLED_Write_String(2,yiwei(2,i),"BI "); OLED_Write_String(2,yiwei(4,i),"CI "); OLED_Write_String(2,yiwei(6,i),"DI "); OLED_Write_String(2,yiwei(8,i),"F1 "); OLED_Write_String(2,yiwei(10,i),"F2 "); OLED_Write_String(2,yiwei(12,i),"SD "); OLED_Write_Num2(7,yiwei(0,i),a1); OLED_Write_String(9,yiwei(0,i)," "); OLED_Write_Num2(7,yiwei(2,i),a2); OLED_Write_String(9,yiwei(2,i)," "); OLED_Write_Num2(7,yiwei(4,i),a3); OLED_Write_String(9,yiwei(4,i)," "); OLED_Write_Num2(7,yiwei(6,i),a4); OLED_Write_String(9,yiwei(6,i)," "); OLED_Write_Num4(7,yiwei(8,i),FTMDuty_1); OLED_Write_Num4(7,yiwei(10,i),FTMDuty_2); OLED_Write_String(7,yiwei(12,i)," "); //上移 if(Key_up == 0) { DelayMs(100); if(Key_up == 0) { OLED_Write_Char(0,yiwei(i,i), ' '); i = i - 2; if(i == -2) i = 12; } } //下移 if(Key_down == 0) { DelayMs(100); if(Key_down == 0) { OLED_Write_Char(0,yiwei(i,i), ' '); i = i + 2; if(i == 14) i = 0; } } //a1 if(yiwei(i,i) == yiwei(0,i)) { //加 if(Key_right == 0) { DelayMs(50); if(Key_right == 0) { a1++; if(a1 >= 50) a1 = 0; } } //减 if(Key_left == 0) { DelayMs(50); if(Key_left == 0) { a1--; if(a1 <= 0) a1 = 50; } } } //a2 if(yiwei(i,i) == yiwei(2,i)) { //加 if(Key_right == 0) { DelayMs(50); if(Key_right == 0) { a2++; if(a2 >= 50) a2 = 0; } } //减 if(Key_left == 0) { DelayMs(50); if(Key_left == 0) { a2--; if(a2 <= 0) a2 = 50; } } } //a3 if(yiwei(i,i) == yiwei(4,i)) { //加 if(Key_right == 0) { DelayMs(50); if(Key_right == 0) { a3++; if(a3 >= 50) a3 = 0; } } //减 if(Key_left == 0) { DelayMs(50); if(Key_left == 0) { a3--; if(a3 <= 0) a3 = 50; } } } //a4 if(yiwei(i,i) == yiwei(6,i)) { //加 if(Key_right == 0) { DelayMs(50); if(Key_right == 0) { a4++; if(a4 >= 50) a4 = 0; } } //减 if(Key_left == 0) { DelayMs(50); if(Key_left == 0) { a4--; if(a4 <= 0) a4 = 50; } } } //FTMDuty_1 if(yiwei(i,i) == yiwei(8,i)) { //加 if(Key_right == 0) { DelayMs(50); if(Key_right == 0) { FTMDuty_1 += 50; if(FTMDuty_1 >= 3000) FTMDuty_1 = 3000; } } //减 if(Key_left == 0) { DelayMs(50); if(Key_left == 0) { FTMDuty_1 -= 50; if(FTMDuty_1 <= 0) FTMDuty_1 = 0; } } } //FTMDuty_2 if(yiwei(i,i) == yiwei(10,i)) { //加 if(Key_right == 0) { DelayMs(50); if(Key_right == 0) { FTMDuty_2 += 50; if(FTMDuty_2 >= 3000) FTMDuty_2 = 3000; } } //减 if(Key_left == 0) { DelayMs(50); if(Key_left == 0) { FTMDuty_2 -= 50; if(FTMDuty_2 <= 0) FTMDuty_2 = 0; } } } //SD if(yiwei(i,i) == yiwei(12,i)) { if(Key_right == 0) { DelayMs(50); if(Key_right == 0) { OLED_Clear(); SD_D = 0; flag_sd_d = 1; } } } //打开ccd测试 if(Key_2 == 0) { DelayMs(100); if(Key_2 == 0) { OLED_Clear(); flag_test = 1; SD_X = 0; PIT_Start(PIT1); FTM_PWM_ChangeDuty(FTM0_CH3_PA6,FTMDuty_1); } } //发车 if(Key_1 == 0) { DelayMs(50); if(Key_1 == 0) { OLED_Clear(); flag_run = 1; PIT_Start(PIT1); FTM_PWM_ChangeDuty(FTM0_CH3_PA6,FTMDuty_1); } } }
/******************************主界面显示********************************/ void Menu_Init(void) { OLED_Write_Char(0, yiwei(i,i), 43); OLED_Write_String(2,yiwei(0,i),"AI "); OLED_Write_String(2,yiwei(2,i),"BI "); OLED_Write_String(2,yiwei(4,i),"CI "); OLED_Write_String(2,yiwei(6,i),"DI "); OLED_Write_String(2,yiwei(8,i),"EI "); OLED_Write_String(2,yiwei(10,i),"F1 "); OLED_Write_String(2,yiwei(12,i),"F2 "); OLED_Write_String(2,yiwei(14,i),"SD "); OLED_Write_Num2(7,yiwei(0,i),a1); OLED_Write_Num2(7,yiwei(2,i),a2); OLED_Write_Num2(7,yiwei(4,i),a3); OLED_Write_Num2(7,yiwei(6,i),a4); OLED_Write_Num2(7,yiwei(8,i),a5); OLED_Write_Num4(7,yiwei(10,i),FTMDuty_1); OLED_Write_Num4(7,yiwei(12,i),FTMDuty_2); OLED_Write_String(7,yiwei(14,i)," "); OLED_Write_String(9,yiwei(8,i)," "); OLED_Write_String(9,yiwei(6,i)," "); OLED_Write_String(9,yiwei(4,i)," "); OLED_Write_String(9,yiwei(2,i)," "); //上移 if(Key_up == 0) { DelayMs(100); if(Key_up == 0) { OLED_Write_Char(0,yiwei(i,i), ' '); i -= 2; if(i == -2) i = 14; } } //下移 if(Key_down == 0) { DelayMs(100); if(Key_down == 0) { OLED_Write_Char(0,yiwei(i,i), ' '); i += 2; if(i == 16) i = 0; } } //a1 if(yiwei(i,i) == yiwei(0,i)) { //加 if(Key_right == 0) { DelayMs(50); if(Key_right == 0) { a1++; if(a1 >= 30) a1 = 0; } } //减 if(Key_left == 0) { DelayMs(50); if(Key_left == 0) { a1--; if(a1 <= 0) a1 = 30; } } } //a2 if(yiwei(i,i) == yiwei(2,i)) { //加 if(Key_right == 0) { DelayMs(50); if(Key_right == 0) { a3++; if(a3 >= 50) a3 = 0; } } //减 if(Key_left == 0) { DelayMs(50); if(Key_left == 0) { a3--; if(a3 <= 0) a3 = 50; } } } //a4 if(yiwei(i,i) == yiwei(6,i)) { //加 if(Key_right == 0) { DelayMs(50); if(Key_right == 0) { a4++; if(a4 >= 50) a4 = 0; } } //减 if(Key_left == 0) { DelayMs(50); if(Key_left == 0) { a4--; if(a4 <= 0) a4 = 50; } } } //a5 if(yiwei(i,i) == yiwei(8,i)) { //加 if(Key_right == 0) { DelayMs(50); if(Key_right == 0) { a5++; if(a5 >= 50) a5 = 0; } } //减 if(Key_left == 0) { DelayMs(50); if(Key_left == 0) { a5--; if(a5 <= 0) a5 = 50; } } } //FTMDuty_1 if(yiwei(i,i) == yiwei(10,i)) { //加 if(Key_right == 0) { DelayMs(50); if(Key_right == 0) { FTMDuty_1 += 50; if(FTMDuty_1 >= 3000) FTMDuty_1 = 3000; } } //减 if(Key_left == 0) { DelayMs(50); if(Key_left == 0) { FTMDuty_1 -= 50; if(FTMDuty_1 <= 0) FTMDuty_1 = 0; } } } //FTMDuty_2 if(yiwei(i,i) == yiwei(12,i)) { //加 if(Key_right == 0) { DelayMs(50); if(Key_right == 0) { FTMDuty_2 += 50; if(FTMDuty_2 >= 3000) FTMDuty_2 = 3000; } } //减 if(Key_left == 0) { DelayMs(50); if(Key_left == 0) { FTMDuty_2 -= 50; if(FTMDuty_2 <= 0) FTMDuty_2 = 0; } } } //SD if(yiwei(i,i) == yiwei(14,i)) { if(Key_right == 0) { DelayMs(50); if(Key_right == 0) { OLED_Clear(); OLED_Write_String(0,0,"SD reading"); SD_D = 0; //扇区 SD_Flag = 1; } } } //打开ccd测试 if(Key_2 == 0) { DelayMs(100); if(Key_2 == 0) { OLED_Clear(); CCD_Flag = 1; SD_X = 0; PIT_Start(PIT1); } } //发车 if(Key_1 == 0) { DelayMs(50); if(Key_1 == 0) { OLED_Clear(); Run_Flag = 1; PIT_Start(PIT1); } } }
int qixing(int n,int p,int q) /* 返回空点p q在n方向上的棋型号 n为1-8方向 从右顺时针开始数 */ { int k,m=0; /* 棋型号注解: 己活000-003 己冲010-013 对活100-103 对冲110-113 己空活020-023 己空冲030-033 对空活120-123 对空冲130-133 空-1 边界冲-2 边界空冲-3*/ yiwei(n,&p,&q); if(p<0||p>14||q<0||q>14) k=-2; /* 边界冲棋型 */ switch(qipan[q][p]){ case COM:{ m++; yiwei(n,&p,&q); if(p<0||p>14||q<0||q>14) { k=m+9; return k; } while(qipan[q][p]==COM) { m++; yiwei(n,&p,&q); if(p<0||p>14||q<0||q>14) { k=m+9; return k; } } if(qipan[q][p]==SPA) k=m-1; /* 己方活棋型 */ else k=m+9; /* 己方冲棋型 */ }break; case MAN:{ m++; yiwei(n,&p,&q); if(p<0||p>14||q<0||q>14) { k=m+109; return k; } while(qipan[q][p]==MAN) { m++; yiwei(n,&p,&q); if(p<0||p>14||q<0||q>14) { k=m+109; return k; } } if(qipan[q][p]==SPA) k=m+99; /* 对方活棋型 */ else k=m+109; /* 对方冲棋型 */ }break; case SPA:{ yiwei(n,&p,&q); if(p<0||p>14||q<0||q>14) { k=-3; return k; } /* 边界空冲棋型 */ switch(qipan[q][p]){ case COM:{ m++; yiwei(n,&p,&q); if(p<0||p>14||q<0||q>14) { k=m+29; return k; } while(qipan[q][p]==COM) { m++; yiwei(n,&p,&q); if(p<0||p>14||q<0||q>14) { k=m+29; return k; } } if(qipan[q][p]==SPA) k=m+19; /* 己方空活棋型 */ else k=m+29; /* 己方空冲棋型 */ }break; case MAN:{ m++; yiwei(n,&p,&q); if(p<0||p>14||q<0||q>14) { k=m+129; return k; } while(qipan[q][p]==MAN) { m++; yiwei(n,&p,&q); if(p<0||p>14||q<0||q>14) { k=m+129; return k; } } if(qipan[q][p]==SPA) k=m+119; /* 对方空活棋型 */ else k=m+129; /* 对方空冲棋型 */ }break; case SPA: k=-1; break; /* 空棋型 */ } }break; } return k; }