예제 #1
0
bool inputOutput(int INwaited)
{
#ifdef DEBUG_STREAM
    printf("inputOutput - start");
#endif
//INPUT
//INPUT
    SDL_Event test_event;
    while (SDL_PollEvent(&test_event)) //GET INPUT
    {
        switch (test_event.type) //WHICH EVENT
        {
        case SDL_KEYDOWN: //KEYDOWN
            if (!paused) //IF NOT PAUSED
            {
                switch (test_event.key.keysym.sym) //WHICH KEY
                {
#ifdef ARROW_KEYS							//HARD DROP
                case SDLK_SPACE:
#else
                case SDLK_KP8:
#endif
                    lockDelay=waitLock;
                    drop=dropHard;
                    break;
#ifdef ARROW_KEYS							//SOFT DROP
                case SDLK_DOWN:
#else
                case SDLK_KP2:
#endif
                    if (lockDelay<waitLock)
                    {
                        //lockDelay=0;
                        drop=dropSoft;
                    }
                    break;
#ifdef ARROW_KEYS							//HOLD PIECE
                case SDLK_c:
#else
                case SDLK_KP0:
#endif
                    if (!usedHoldPiece)
                    {
                        usedHoldPiece=true;
                        pieceCreate(HOLD);
                    }
                    break;
#ifdef ARROW_KEYS							//ROTATE LEFT
                case SDLK_z:
#else
                case SDLK_KP3:
                case SDLK_KP7:
#endif
                    if (rotate(lft) && lockDelay<waitLock)
                    {
                        lockDelay=0;
                    }
                    break;
#ifdef ARROW_KEYS							//ROTATE RIGHT
                case SDLK_UP:
                case SDLK_x:
#else
                case SDLK_KP1:
                case SDLK_KP5:
                case SDLK_KP9:
#endif
                    if (rotate(rht) && lockDelay<waitLock)
                    {
                        lockDelay=0;
                    }
                    break;
#ifdef ARROW_KEYS							//MOVE LEFT
                case SDLK_LEFT:
#else
                case SDLK_KP4:
#endif
                    if (move(lft,tetUD) && lockDelay<waitLock)
                    {
                        //lockDelay=0;
                        tetLR--;
                    }
                    break;
#ifdef ARROW_KEYS							//MOVE RIGHT
                case SDLK_RIGHT:
#else
                case SDLK_KP6:
#endif
                    if (move(rht,tetUD) && lockDelay<waitLock)
                    {
                        //lockDelay=0;
                        tetLR++;
                    }
                    break;
                }
            } //IF NOT PAUSED
            switch (test_event.key.keysym.sym) //WHICH KEY
            {
            case SDLK_p:
                paused = !paused;
                break;

            case SDLK_ESCAPE:
                exit(0);
                break;
            } //WHICH KEY
            break; //IF KEY DOWN

        case SDL_KEYUP:
            switch (test_event.key.keysym.sym)
            {
#ifdef ARROW_KEYS							//SOFT DROP END
            case SDLK_DOWN:
#else
            case SDLK_KP2:
#endif
                drop=0;
                break;
            }
            break;


        case SDL_QUIT: //IF EXIT
            exit(0);
            break; //IF EXIT
        } //WHICH EVENT
    } //GET INPUT

//OUTPUT
//OUTPUT
    char temppiecemoving=true; //return this
    if (!paused) //Gravity and Drop
    {
        if (drop==dropHard)							 //HARD DROP
        {
            char tempLoop=true;
            while (tempLoop)
            {
                if (move(dwn,tetUD))
                {
                    tetUD++;
                    score+=2;
                }
                else
                {
                    tempLoop=false;
                    temppiecemoving=false;
                }
            }
            drop=0;
        }
        if (INwaited==0 || drop==dropSoft)			//SOFT DROP or GRAVITY
        {
            if (move(dwn,tetUD))
            {
                if (drop==dropSoft)
                    score++;
                tetUD++;
                lockDelay=0;
            }
            else
            {
                if (drop!=dropSoft)
                    lockDelay++;
            }
            if (lockDelay>=waitLock)
            {
                temppiecemoving=false;
                lockDelay=0;
            }
            //drop=0;
        }
        prevWaited=INwaited;
        /*if (score>readHigh(accesshigh))
        	{
        	writeHigh(accesshigh,score);
        	highMade=true;
        	}*/
    }
#ifdef DEBUG_STREAM
    printf(" - moving:%s - end\n",temppiecemoving?"yes":"no");
#endif
    return temppiecemoving; //THIS LINE WAS ADDED LATER
}
예제 #2
0
파일: Debug.c 프로젝트: haluuson/C_Source
void debug(int INmode)
	{
	ClearScreen();
	SDL_Flip(screen);
	selectGame(1);
	gameResetVars();

	if (INmode==2) //ClearFullRows()
		{
		for (int i=0; i<AREA_HEIGHT+2; i++)
			{
			for (int j=0; j<AREA_WIDTH; j++)
				{
				area[j][i] = (rand()%15)-EMPTY_AREA;
				if (area[j][i]>EMPTY_AREA)
					area[j][i]=area[j][i]%3+1;
				}
			}
		drawBoard();
		SDL_Delay(5000);
		clearFullRows();
		SDL_Delay(250);
		drawBoard();
		SDL_Delay(5000);
		}

	else if (INmode==3) //drawTetromino()
		{
		int tets,angl;
		for (tets=0; tets<7; tets++)
			{
			for (angl=0; angl<4; angl++)
				{
				ClearScreen();
				drawTetromino(tets,(angl+2)%4,0,0,REAL_TET);
				SDL_Flip(screen);
				SDL_Delay(600);
				}
			}
		}

	else if (INmode==4) //peiceSetinto()
		{
		pieceCreate(COMING);
		tetUD=10;
		
		drawTetromino(currentPiece,currentRotate,tetLR,tetUD,REAL_TET);
		SDL_Delay(3000);
		
		drawBoard();
		SDL_Delay(3000);
		
		pieceSetInto(currentPiece);
		drawBoard();
		SDL_Delay(3000);
		
		debugInfo(0);
		}
	
	else if (INmode==5) //peiceCreate()
		{
		for (int i=0; i<10; i++)
			{
			pieceCreate(COMING);
			ClearScreen();
			printf("c%d n%d n%d n%d\n",currentPiece,nextPiece[0],nextPiece[1],nextPiece[2]);
			SDL_Delay(100);
			}
		}
	
	else if (INmode==6) //gravity
		{
		pieceCreate(COMING);
		while(tetUD<AREA_HEIGHT) //off by 2?
			{
			ClearScreen();
			//drawBoard(true);
			drawTetromino(currentPiece,currentRotate,tetLR,tetUD,REAL_TET);
			printf("y=%d",tetUD);
			SDL_Delay(1000);
			tetUD++;
			}
		}
	}