void timeInit() { // Interrupt 15. SysTick_IRQn is -1. // The SysTick timer is integrated into the Arm Cortex M3 CyIntSetSysVector((SysTick_IRQn + 16), TickISR); // Ensure the cycle count is < 24bit. // At 50MHz bus clock, counter is 50000. SysTick_Config((BCLK__BUS_CLK__HZ + 999u) / 1000u); }
int main() { PS2Controller psData; static uint8 c_flag = 0; static uint8 right_flag = 0; static uint8 left_flag = 0; static uint8 down_flag = 0; static uint8 up_flag = 0; uint8 counter = 0; uint8 cmax = 50; int blocks[7][4][4] = { //ブロックの宣言 { {0,0,0,0}, {0,1,1,0}, {0,0,1,0}, {0,0,1,0} }, { {0,0,0,0}, {0,1,1,0}, {0,1,0,0}, {0,1,0,0} }, { {0,0,0,0}, {0,1,0,0}, {0,1,1,0}, {0,0,1,0} }, { {0,0,0,0}, {0,0,1,0}, {0,1,1,0}, {0,1,0,0} }, { {0,0,0,0}, {0,0,1,0}, {0,1,1,0}, {0,0,1,0} }, { {0,0,0,0}, {0,1,1,0}, {0,1,1,0}, {0,0,0,0} }, { {0,0,1,0}, {0,0,1,0}, {0,0,1,0}, {0,0,1,0} } }; int i, j, bflg = 0, gflg = 1; int block[4][4] = {}, rotated[4][4]; signed int slidex = 0, slidey = 0; char string[12] = {}; CyGlobalIntEnable; PS2_Start(); CyIntSetSysVector(SysTick_IRQn + 16, timer_isr); SysTick_Config(0x00ffff); //USBUART_Start(0, USBUART_5V_OPERATION); //while (USBUART_GetConfiguration() == 0); //USBUART_CDC_Init(); DotMat_init(); randomBlock(blocks, block); paintBlock(block[4][4], slidey, slidex); //DotMat_paint(&Map); CyDelay(100); for (;;){ psData = PS2_Controller_get(); dotMatrix_print(&Map); dotMatrix_print(&dotMat); if(isr_flg){ if(gflg){ if(counter == cmax){ if(check(block, slidey - 1, slidex) == 1){ slidey--; } else{ mergeMatrix(block, slidey , slidex); clearRow(&cmax); dotMatrix_dataToArray(&Map); if(slidey == 0){ myprint(string); gflg = 0; } randomBlock(blocks, block); slidey = 0; slidex = 0; } if(gflg){ DotMat_paint(block, slidey, slidex); } counter = 0; } counter++; } else{ myprint(string); } isr_flg = 0; } if(psData.CIRCLE || psData.CROSS){ rand(); if(c_flag){ if(psData.CIRCLE){ rotate(block, rotated, 1); } if(psData.CROSS){ rotate(block, rotated, 2); } if(check(rotated, slidey , slidex) == 1){ if(bflg == 1){ slidex--; bflg = 0; } if(bflg == 2){ slidex++; bflg = 0; } rotate2block(block, rotated); DotMat_paint(block, slidey, slidex); } if(check(rotated, slidey , slidex) == 2){ bflg = 1; if(check(rotated, slidey , slidex + 1) == 2){ if(check(rotated, slidey , slidex + 2) == 1){ slidex++; } } if(check(rotated, slidey , slidex + 1) == 1){ slidex++; rotate2block(block, rotated); DotMat_paint(block, slidey, slidex); } } if(check(rotated, slidey , slidex) == 3){ bflg = 2; if(check(rotated, slidey , slidex - 1) == 3){ if(check(rotated, slidey , slidex - 2) == 1){ slidex--; } } if(check(rotated, slidey , slidex - 1) == 1){ slidex--; rotate2block(block, rotated); DotMat_paint(block, slidey, slidex); } } } c_flag = 0; } else{ c_flag = 1; } if(psData.LEFT){ bflg = 0; rand(); if(left_flag){ if(check(block, slidey , slidex - 1) == 1){ slidex--; DotMat_paint(block, slidey, slidex); } } left_flag = 0; } else{ left_flag = 1; } if(psData.RIGHT){ bflg = 0; rand(); if(right_flag){ if(check(block, slidey , slidex + 1) == 1){ slidex++; DotMat_paint(block, slidey, slidex); } } right_flag = 0; } else{ right_flag = 1; } if(psData.UP){ rand(); if(up_flag){ while(check(block, slidey - 1, slidex) == 1){ slidey--; } DotMat_paint(block, slidey, slidex); } up_flag = 0; } else{ up_flag = 1; } if(psData.DOWN){ rand(); if(psData.L1){ if(psData.R1){ while(check(block, slidey - 1, slidex) == 1){ slidey++; DotMat_paint(block, slidey, slidex); } } } if(down_flag){ while(check(block, slidey - 1, slidex) == 1){ slidey--; DotMat_paint(block, slidey, slidex); } } down_flag = 0; } else{ down_flag = 1; } if(psData.SELECT){ if(psData.START){ slidey = 0; slidex = 0; DotMat_init(); randomBlock(blocks, block); paintBlock(block[4][4], slidey, slidex); gflg = 1; cmax = 50; } } } }