bool bGroup::drawIndicators(block & held, block & k)
{
  bool ret=0;
  dropBlock db=underWhich(k, held);
  if(db.found()){
    indicate(db);
    ret=1;
  }
  if(!db.found()){
    db=underWhich(held, k);
    if(db.found()&&db.index==db.inThis->size()){
      indicate(db);
      ret=1;
    }
  }
  return ret;
}
Exemple #2
0
void input(int turn, int computer) {
	int count = 0;
	while (1) {
		if (_kbhit()) {
			switch (_getch()) {
			case 0x4D://右
				for (int i = 0; i < 3; i++) {
					if (move_field[i][0] == 2) {
						move_field[i][0] = 1;
						move_field[i][1] = 2;
					}
					else if (move_field[i][1] == 2) {
						move_field[i][1] = 1;
						move_field[i][2] = 2;
					}
				}
				break;
			case 0x4B://左
				for (int i = 0; i < 3; i++) {
					if (move_field[i][2] == 2) {
						move_field[i][2] = 1;
						move_field[i][1] = 2;
					}
					else if (move_field[i][1] == 2) {
						move_field[i][1] = 1;
						move_field[i][0] = 2;
					}
				}
				break;
			case 0x48://上
				for (int i = 0; i < 3; i++) {
					if (move_field[1][i] == 2) {
						move_field[1][i] = 1;
						move_field[0][i] = 2;
					}
					else if (move_field[2][i] == 2) {
						move_field[2][i] = 1;
						move_field[1][i] = 2;
					}
				}
				break;
			case 0x50://下
				for (int i = 0; i < 3; i++) {
					if (move_field[0][i] == 2) {
						move_field[0][i] = 1;
						move_field[1][i] = 2;
					}
					else if (move_field[1][i] == 2) {
						move_field[1][i] = 1;
						move_field[2][i] = 2;
					}
				}
				break;
			case 0x0D://Enter
				for (int i = 0; i < 3; i++) {
					for (int j = 0; j < 3; j++) {
						if (move_field[i][j] == 2) {
							if (display_field[i][j] == 1) {
								display_field[i][j] = turn;
								count++;
								if (computer == 2) {
									if (turn == 3)turn = 4;
									else if (turn == 4)turn = 3;
								}
								else if (computer == 1) {
									indicate();
									if (judge(count) > 0) {
										system("cls");
										break;
									}
									else {
										Sleep(2000);
										system("cls");
										cpu();
										count++;
									}
								}
							}
							else {
								indicate();
								printf("\nその場所には置くことができません。\n");
								Sleep(1000);
								system("cls");
							}
						}
					}
				}
			}
		}
		else {
			indicate();
			if (judge(count) > 0)break;
			else {
				Sleep(100);
				system("cls");
			}
		}
	}
}