Ejemplo n.º 1
0
//키 입력받는 함수
void key_ent() {
	key = 0;
	if (kbhit()) {

		key = getch();

		if (key == 224) {

			do {
				key = getch();
			} while (key == 244);

			switch (key)
			{
			case DOWN: {
				check_crash(b_x, b_y + 1);
				if (crash_num == 1) move_block(DOWN);
				break;
			}
			case RIGHT: {
				check_crash(b_x + 1, b_y);
				if (crash_num == 1) move_block(RIGHT);
				break;
			}
			case LEFT: {
				check_crash(b_x - 1, b_y);
				if (crash_num == 1) move_block(LEFT);
				break;
			}
			case UP: {
				block_turn(temp);
				break;
			}
			default:
				break;
			}
		}
		else {

		}

	}
	fflush(stdin);
}
Ejemplo n.º 2
0
/*响应方向事件*/
static void player_response_event(Player * player, IOOPS * io_ops)
{
    int event;

    if ((event = rb_event(player)) < 0)
        return;

    switch (event) {
        case EVENT_UP:
            block_turn(player);
            set_glue_block(player, SOLIDIFY_TIME);
            break;

        case EVENT_DOWN:
            block_fall(player, BLOCK_MAP_H, 0);
            break;

        case EVENT_LEFT:
            block_left(player);
            set_glue_block(player, SOLIDIFY_TIME);
            break;

        case EVENT_RIGHT:
            block_right(player);
            set_glue_block(player, SOLIDIFY_TIME);
            break;

        case EVENT_SPACE:
        case EVENT_ESCAPE:
            break;
    }

    out_win_map(player, io_ops);

    return;
}
Ejemplo n.º 3
0
//블럭 이동함수
void move_block(int key) {

	switch (key)
	{
	case DOWN: { //아래
		for (int i = 0; i < 4; i++) {
			for (int j = 0; j < 4; j++) {
				if (temp[i][j] == -2) {
					main_org[b_y + i][b_x + j] = EMPTY;
				}
			}
		}
		for (int i = 0; i < 4; i++) {
			for (int j = 0; j < 4; j++) {
				if (temp[i][j] == -2)
					main_org[b_y + i + 1][b_x + j] = ACTIVE_BLOCK; //함수로 줄이기
			}
		}
		b_y++;
		break;
	}
	case RIGHT: { //오른쪽
		for (int i = 0; i < 4; i++) {
			for (int j = 0; j < 4; j++) {
				if (temp[i][j] == -2) {
					main_org[b_y + i][b_x + j] = EMPTY;
				}
			}
		}
		for (int i = 0; i < 4; i++) {
			for (int j = 0; j < 4; j++) {
				if (temp[i][j] == -2)
					main_org[b_y + i][b_x + j + 1] = ACTIVE_BLOCK;
			}
		}
		b_x++;
		break;
	}
	case LEFT: { //왼쪽
		for (int i = 0; i < 4; i++) {
			for (int j = 0; j < 4; j++) {
				if (temp[i][j] == -2) {
					main_org[b_y + i][b_x + j] = EMPTY;
				}
			}
		}
		for (int i = 0; i < 4; i++) {
			for (int j = 0; j < 4; j++) {
				if (temp[i][j] == -2)
					main_org[b_y + i][b_x + j - 1] = ACTIVE_BLOCK;
			}
		}
		b_x--;
		break;
	}
	case UP: { //턴
		block_turn(temp);
		break;
	}
	default:
		break;
	}
	
}