предоставить оператор цикла, чтобы принудительно заставить игровые части игрока перейти в нижний ряд графического массива - PullRequest
1 голос
/ 02 марта 2011

привет, я создаю код C для игры connect 4. в игре будет один игрок против простого ai / hard ai и, наконец, режим для 2 игроков. Выбор игрового поля и колонки (где вы отбрасываете свою игровую фигуру) - все работает в данный момент, я просто пытаюсь найти время / если или для / если работаю, чтобы фигуры всегда начинались внизу игрового поля и зацикливались вверх в матрице, пока не найдет пустое место в этом столбце, выбранном пользователем.

Это то, что у меня сейчас есть, я попробовал несколько неудачных попыток использовать разные методы, и теперь я считаю, что у меня полная смесь плохого синтаксиса. Я собираю в gcc.

#include <stdio.h>
#include <stdlib.h>

// function: check
// input: takes user [5][*]
// output: completes check to place the users '@' piece on board, if row 6 is taken it moves to row 5 and so on.

int space_1 (char b[][]) {
int k,x
while (b[][] == '@' || '#'){
    for (k=5;k>5;k--){
        if (b[k][x] == ' '){            
        board[k][x] = '@';
        }
    }
}
}
// function: check
// input: takes user [5][*]
// output: completes check to place the users '#' piece on board, if row 6 is taken it moves to row 5 and so on.

int space_2 (char b[][]) {
int k,x
while (b[][] == '@' || '#'){
    for (k=5;k>5;k--){
        if (b[k][x] == ' '){            
        board[k][x] = '#';
        }
    }
}
}
//function: display_board
// input : where to place piece on board
// output: places users piece on board

void display_board (char b[][6]) {
   printf ("\033[01;33m  1   2   3   4   5   6   7\n");
   printf ("\033[01;33m-----------------------------\n");
   printf ("\033[01;33m| %c | %c | %c | %c | %c | %c | %c |\n", b[0][0], b[0][1], b[0][2], b[0][3], b[0][4], b[0][5], b[0][6]);
   printf ("\033[01;33m-----------------------------\n");
   printf ("\033[01;33m| %c | %c | %c | %c | %c | %c | %c |\n", b[1][0], b[1][1], b[1][2], b[1][3], b[1][4], b[1][5], b[1][6]);
   printf ("\033[01;33m-----------------------------\n");
   printf ("\033[01;33m| %c | %c | %c | %c | %c | %c | %c |\n", b[2][0], b[2][1], b[2][2], b[2][3], b[2][4], b[2][5], b[2][6]);
   printf ("\033[01;33m-----------------------------\n");
   printf ("\033[01;33m| %c | %c | %c | %c | %c | %c | %c |\n", b[3][0], b[3][1], b[3][2], b[3][3], b[3][4], b[3][5], b[3][6]);
   printf ("\033[01;33m-----------------------------\n");
   printf ("\033[01;33m| %c | %c | %c | %c | %c | %c | %c |\n", b[4][0], b[4][1], b[4][2], b[4][3], b[4][4], b[4][5], b[4][6]);
   printf ("\033[01;33m-----------------------------\n");
   printf ("\033[01;33m| %c | %c | %c | %c | %c | %c | %c |\n", b[5][0], b[5][1], b[5][2], b[5][3], b[5][4], b[5][5], b[5][6]);
   printf ("\033[01;33m-----------------------------\n");
}

 void display_board2 (char b[][6]) {
   int i, j;
    printf ("\033[01;33m  1   2   3   4   5   6   7\n");
    printf ("\033[01;33m-----------------------------\n");
    for (i=0; i<6; i++) {
          for (j=0; j<7; j++) {
         printf ("\033[01;33m| %c ", b[i][j]);
       }
           printf ("\033[01;33m|\n");
       printf ("\033[01;33m-----------------------------\n");
      }  
}
void main/*2*/ () {
        char board[5][6];
        int row, col, status;

// initialize the game board w/ blanks
board[0][0] = ' '; board[0][1] = ' '; board[0][2] = ' '; board[0][3] = ' '; board[0][4] = ' '; board[0][5] = ' '; board[0][6] = ' '; 
board[1][0] = ' '; board[1][1] = ' '; board[1][2] = ' '; board[1][3] = ' '; board[1][4] = ' '; board[1][5] = ' '; board[1][6] = ' '; 
board[2][0] = ' '; board[2][1] = ' '; board[2][2] = ' '; board[2][3] = ' '; board[2][4] = ' '; board[2][5] = ' '; board[2][6] = ' '; 
board[3][0] = ' '; board[3][1] = ' '; board[3][2] = ' '; board[3][3] = ' '; board[3][4] = ' '; board[3][5] = ' '; board[3][6] = ' '; 
board[4][0] = ' '; board[4][1] = ' '; board[4][2] = ' '; board[4][3] = ' '; boar d[4][4] = ' '; board[4][5] = ' '; board[4][6] = ' '; 
board[5][0] = ' '; board[5][1] = ' '; board[5][2] = ' '; board[5][3] = ' '; board[5][4] = ' '; board[5][5] = ' '; board[5][6] = ' ';


//display_board (board);
display_board2 (board);

while (1) {
    printf ("\033[22;31m@'s move enter column: ");
    scanf ("%d", &col);
    space_1[5][col-1] = '@';    // mark the board   
    display_board2 (board);

    // check for winner
    status = check2 (board);
    if (status == 1) {
        printf ("@ wins!\n");
        break;
    }

    printf ("\033[22;34m#'s move enter column: ");
    scanf ("%d", &col);
    space_2[5][col-1] = '#';  // mark the board
    display_board2 (board);


    // check for winner
    status = check2 (board);
    if (status == 1) {
        printf ("# wins!\n");
        break;
    }
}

    printf ("Thanks for playing!\n");
}

Я восхищался всеми дополнительными подпрограммами, чтобы сосредоточиться на моих слабых навыках программирования на c, и вся помощь очень ценится.

Ответы [ 2 ]

0 голосов
/ 29 мая 2011

Конечно, передавая b [] [] можно обойти, передав его как char ** b

0 голосов
/ 02 марта 2011
int space_1 (char b[][]) {

Вы можете оставить пустым крайнее левое измерение массива при объявлении аргументов массива.

int k,x
while (

Вам необходимо ;, чтобы завершить объявление переменных.В C операторы завершаются включением ;.

while (b[][] == '@' || '#') {

. Этот тест не проверяет, что вы думаете (предполагая, что b[][] что-то значило).Для этого нужно сравнить b[][] с '@' и, если отличается, сравнить '#' с 0 (ноль).Последнее сравнение всегда ложно.

for (k=5; k>5; k--) {

k никогда не превышает 5. Тело этого цикла никогда не выполняется.

void main() {

Если вы не пишете для автономной среды(компьютер без операционной системы) функция main возвращает int.Он должен быть определен с помощью int main(void) { /*...*/ }

Предложение:

Держите ваш код компилируемым всегда.Не добавляйте что-либо, если код не компилируется.При добавлении функций сохраняйте и тестируйте компиляцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...