Exemple #1
0
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);
}
Exemple #2
0
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;
            }
        }
    }
}