コード例 #1
0
ファイル: sorengame2.c プロジェクト: sorenwasalone/misC
int checks(){
	spikeCheck();
	waterCheck();
	fieldCheck();
	return 0;
}
コード例 #2
0
int input(int field[][COL], int open[][COL], int number[][COL])
{
/* 指し手の入力を受付け,穴をあけます */
    int row = 0; // ユーザー指定の位置
    int col = 0; // ユーザー指定の位置
    int mode; // モード保持
    int status = 0; // 入力値が不正かどうかの結果を保存するため

    while(1) {
	printField(open, number,field,0); // 碁盤の表示

	printf("モードを選択してください(入力後に Enter キーを押してください)\n");
	printf("フラグを立てる・消す : 1, 穴を開ける : 2\n");

/* とりあえず文字入力時の無限ループ回避 */
	if(scanf("%d", &mode) != 1) {
	    scanf("%*s");
	    if(feof(stdin)) printf("Buffer Error!\n");
	    printf("\n不正な値です.再入力してください.(r)\n\n");
	    continue;
	}

/* 異なる文字の対策 */
	if(!(mode == 1 || mode == 2)) {
	    printf("\n不正な値です.再入力してください.(mfo)\n\n");
	    continue;
	}

	printf("あなたのマス目を選択してください\n");
	printf("縦(入力後に Enter キーを押してください) : ");

/* とりあえず文字入力時の無限ループ回避 */
	if(scanf("%d", &row) != 1) {
	    scanf("%*s");
	    if(feof(stdin)) printf("Buffer Error!\n");
	    printf("\n不正な値です.再入力してください.(r)\n\n");
	    continue;
	}

	printf("横(入力後に Enter キーを押してください) : ");

/* とりあえず文字入力時の無限ループ回避 */
	if(scanf("%d", &col) != 1) {
	    scanf("%*s");
	    if(feof(stdin)) printf("Buffer Error!\n");
	    printf("\n不正な値です.再入力してください.(c)\n\n");
	    continue;
	}

/* 入力番号から配列番号へ変換 */
	row--;
	col--;

	status = fieldCheck(open, row, col); // 入力値のチェック
	Msg(status); // チェック結果のメッセージを表示
	if(status == 0) break; // 正常ならループを抜ける
    }
    if(mode == 2) {
	if(field[row][col] == 1) { // 敗北判定
	    printField(open, number,field,1); // 碁盤の表示
	    printf("you lose!\n");
	    return -1;
	}
	fieldChange(open, number, row, col); // フィールドに穴を開ける
	if(win(field, open) == 0) { // 勝利判定
	    printField(open, number,field,1); // 碁盤の表示
	    printf("you win!\n");
	    return 1;
	}
    }
    else if(mode == 1) {
	/* フラグが立っていないなら、フラグを立てる */
	if(open[row][col] == 0) open[row][col] = -1;

	/* フラグが立っているなら、フラグを消す */
	else if(open[row][col] == -1) open[row][col] = 0;
    }
    return 0;
}