void control_mode() // Режим управления { LED_GREEN_ON; while (OFFHOOK) { if (!CONTROL) play_wav_auto_pgm(MAINMENU_WAV); while (!CONTROL && OFFHOOK) play_wav_auto_pgm(MAINMENU_WAV); if (CONTROL) { int cnt = count_disk(); switch (cnt) { case 1: select_mode(0); break; case 2: select_mode(1); break; case 10: break; default: play_record(record_num-(cnt-2)); break; } } } LED_GREEN_OFF; _delay_ms(100); // Защита от дребезга контактов }
/* ゲーム終了局面の評価値を返す関数(勝ち:∞, 引き分け:0, 負け:−∞) */ int get_terminal_value(void) { int mine, opp; // 数をカウント if (turn == BLACK) count_disk(&mine, &opp); else count_disk(&opp, &mine); if (mine > opp) // Win return INFINITY; else if (mine == opp) // DRAW return 0; else // if (diff < 0) // LOSE return -INFINITY; }
/* 結果を表示する関数 */ void show_result(void) { int black, white; count_disk(&black, &white); // 数える printf("Result : Black %d, White %d\n", black, white); if (black == white) printf("Draw!!\n"); else if (black > white) printf("Black Win!!\n"); else printf("White Win!!\n"); }
void select_mode(char istemp) // Выбот режима { say_mode(istemp); while (!CONTROL && OFFHOOK) play_wav_auto_pgm(MODELIST_WAV); if (!CONTROL) return; int cnt = count_disk(); if (cnt >= 10) cnt = 0; if (!istemp) { mode_current = cnt; say_mode(0); } else { mode_temp = cnt; say_mode(1); } save_mode(); }