2013-12-17 3 views
0

Я новичок в C и пытаюсь написать код c для игры peg solitaire (что очень похоже на шашки). 5 на 5 плата будет запуск в таком состоянии, какШашки, как игра/Peg Solitaire

. . O . . 
. . O . . 
O O . O O 
. . O . . 
. . O . . 

конечной целью является, чтобы довести его до следующего состояния после того, как найти все правильные ходы

. . . . . 
. . . . . 
. . O . . 
. . . . . 
. . . . . 

сделать это Я было сказано, что мне нужно использовать список (возможно, просто массив) плат.

Начальная доска помещается в список. Каждая доска в списке, в свою очередь, считывается из списка и все возможные шаги с этой доски, добавленные в список. Рассматривается следующая плата, и все ее результирующие доски добавляются и так далее. Тем не менее, одна из проблем заключается в том, что повторяющиеся доски могут быть помещены в список и «циклы». Вскоре это создает огромное количество досок (несколько миллионов). Вы можете решить эту проблему, добавив только доску в список, если ранее она никогда не была помещена в список. Каждая структура в списке будет содержать (помимо прочего) плату и информацию, позволяющую идентифицировать ее родительскую плату, т.е. совет, из которого он был создан.

Я хочу написать решение,

Считывает в 5x5board из файла (ARGV [1]), и проверяет, что он действителен. Платы указаны в файле с 5 строками по 5 символов. Каждый символ является либо полным, либо верхним регистром «O» (oh).

Распечатывает правильное решение (обратный порядок в порядке).

До сих пор у меня есть следующие, но может реально использовать помощь

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

//reads the table from file 
void OpenFile() 
{ 
    FILE *file = fopen("C:\\Users\\Sam\\Desktop\\pull_one.txt", "r"); //path 

    char c; 

    do 
    { 
     c = fgetc(file); 
     printf("%c", c); 
    } 
    while(c != EOF); 

    fclose(file); 
} 

struct node 
{ 
    int data; 
    int node* next; 
} 

int main(int argc, char *argv[]) 
{ 
    OpenFile(); 
    return 0; 
} 

тогда, я хотел бы попробовать использовать 2d массивов в некоторым образом, но это повсюду и может реально использовать некоторые советы

+0

Интересной преамбулу, но в основном вы хотите, чтобы прочитать текстовый файл в 2D массив? Если да, здесь есть сотни вопросов. – Duck

+0

Прочитать символ файла по символу и выбросить этот символ - есть первая проблема –

+0

Вы читаете файл? и делать с ним –

ответ

1

Почему вам нужно читать из файла? Если игра является новым, просто сделать это в начале основной:

char board[5][5] = { 
         {'.', '.', 'O', '.', '.'}, 
         {'.', '.', 'O', '.', '.'}, 
         {'O', 'O', '.', 'O', 'O'}, 
         {'.', '.', 'O', '.', '.'}, 
         {'.', '.', 'O', '.', '.'}, 
        }; 

Если вы хотите прочитать из файла, вам нужен файл, как это:

..O.. 
..O.. 
OO.OO 
..O.. 
..O.. 

После открытия файл, вы можете использовать цикл, чтобы заполнить ваш board 2D массива как это:

int row = 0, int col = 0; 

while((c = fgetc(file)) != EOF) 
{ 
    if(row == 5) 
     break; 
    else if((c != '.') || (c != 'O')) 
     continue; 
    else 
     board[row][col++] = c; 

    if(col == 5) 
    { 
     row++; 
     col = 0; 
    } 
} 
+0

Привет, я полагаю, мне не нужно читать из файла. Я изначально сделал доску так же, как и ты. Есть ли у вас какие-либо идеи по любой другой части? – user3112766

+0

Я пытаюсь расширить свой ответ. :-D –

+0

Спасибо, я очень ценю это! – user3112766

Смежные вопросы