Beispiel #1
0
char* RubiksCube::get_notation() {
    /*You must pass the cube's position as stdin as so:
     
     UF UR UB UL DF DR DB DL FR FL BR BL UFR URB UBL ULF DRF DFL DLB DBR
     */
    char *state = new char[70];
    sprintf(state, "%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s\0",
            find_edge("UF"),
            find_edge("UR"),
            find_edge("UB"),
            find_edge("UL"),
            find_edge("DF"),
            find_edge("DR"),
            find_edge("DB"),
            find_edge("DL"),
            find_edge("FR"),
            find_edge("FL"),
            find_edge("BR"),
            find_edge("BL"),
            find_corner("UFR"), 
            find_corner("URB"),
            find_corner("UBL"),
            find_corner("ULF"),
            find_corner("DRF"), 
            find_corner("DFL"),
            find_corner("DLB"),
            find_corner("DBR")
            );
    return state;
}
Beispiel #2
0
/* Choose a move for the computer. */
void computer_move(void)
{
  int square;
  int row, col;

  /* Use first strategy rule that returns valid square */
  square = find_win(computer);
  if (!square)
    square = find_win(user);
  if (!square)
    square = middle_open();
  if (!square)
    square = find_corner();
  if (!square)
    square = find_side();

  printf("\nI am choosing square %d!\n", square);

  row = (square - 1) / 3;
  col = (square - 1) % 3;

  board[row][col] = computer;

  return;
}
Beispiel #3
0
preprocess()
{
  find_corner();
  find_avoid_area();
  find_wall_cap();
  get_goal_p();
  calc_max_value(); /* by Y.Murase */
  find_all_avoid();
}
Beispiel #4
0
int play_ttt(int turn)
{
    unsigned char len_resp[128];
    //unsigned int resp_len = 0;
    //unsigned char *resp = NULL;
    char *select_guess_num_game = "3\n";

    cgc_memset(len_resp, 0, 128);
    read_until_game_prompt();
    length_read(STDIN, len_resp, cgc_strlen("Game # "));
    transmit_all(STDOUT, select_guess_num_game, cgc_strlen(select_guess_num_game));

    if (turn == COMPUTER) {
        switch(find_corner()) {
        case 0:
            transmit_all(STDOUT, "1,1\n", 4);
            transmit_all(STDOUT, "0,2\n", 4);
            transmit_all(STDOUT, "1,0\n", 4);
            transmit_all(STDOUT, "2,2\n", 4);
            return 0;
        case 1:
            transmit_all(STDOUT, "1,1\n", 4);
            transmit_all(STDOUT, "0,1\n", 4);
            transmit_all(STDOUT, "1,0\n", 4);
            transmit_all(STDOUT, "2,2\n", 4);
            return 1;
        case 2:
            transmit_all(STDOUT, "1,1\n", 4);
            transmit_all(STDOUT, "1,0\n", 4);
            transmit_all(STDOUT, "2,2\n", 4);
            transmit_all(STDOUT, "0,2\n", 4);
            return 2;
        case 3:
            transmit_all(STDOUT, "1,1\n", 4);
            transmit_all(STDOUT, "2,1\n", 4);
            transmit_all(STDOUT, "0,2\n", 4);
            transmit_all(STDOUT, "1,0\n", 4);
            return 3;
        }
    } else {
        transmit_all(STDOUT, "2,0\n", 4);
        transmit_all(STDOUT, "2,1\n", 4);
        transmit_all(STDOUT, "0,0\n", 4);
        transmit_all(STDOUT, "1,2\n", 4);
        transmit_all(STDOUT, "0,2\n", 4);
        return 5;
    }
    return -1;
}