Problem z zadaniem w C

1

Witam. Zaczęłam niedawno programowanie na studiach i potrzebuję pomocy w projekcie na zaliczenie. Mam napisać "grę w życie" z interfejsem graficznymi. Nawet mi działa, chodzi o to, że każą nam używać biblioteki ncurses i zrobić parę bajerów. Moje problemy są następujące:
-nie wiem jak zrobić, żeby gracz mógł wpisać, jak duża ma być plansza gry (ile rzędów i kolumn) oraz jak oddzielić część z grą od części, gdzie możnaby podać te wartośći
-mam napisaną funkcję, która generuje losowy stan początkowy, problem jest, że gracz ma wybierać, czy chce losowy stan początkowy, czy puste pole, a ja nie wiem, jak to zrobić żeby był wybór

Mam nadzieję, że znajdzie się dobra dusza, która zechce mi pomóc :)

0

Interfejs graficzny w ncurses… Poziom nauczania na studiach mnie przeraża. ;( (sorki za offtopic)

Do rzeczy. Przypuszczam, że gdzieś masz tablicę dwuwymiarową ze stanem poszczególnych pól. Będziesz musiała zaalokować ją teraz dynamicznie. W standardzie C99 (-std=c99 w gcc) możesz to zrobić na dwa sposoby
- na stosie: Pole plansza[x][y]; , czyli pewnie tak jak dotychczas, tyle, że wpisujesz zmienne zamiast cyfr na stałe.
- na stercie: Pole *plansza = malloc( x*y* sizeof(Pole) ) – ta opcja jest dostępna w każdym standardzie, wymaga nagłówka stdlib.h. Oczywiście można przy pomocy malloc zaalokować „dwuwymiarową tablicę”, ale byłoby to upierdliwe. Poza tym zwalnianie jest upierdliwe i stos generalnie jest szybszy i lepszy (bo zakładam, że nie masz planszy, która zdołałaby go przepełnić).
Poza tym pewnie w paru miejscach masz wpisane na sztywno wymiary planszy, więc zastępujesz je zmiennymi podanymi przy alokacji.

Rozmiar planszy pewnie najlepiej załadować przy pomocy parametrów wywołania. W funkcji main masz parametry:
- int argc — liczba parametrów (łacznie z nazwą wywołanego pliku)
- char argv[][] — tablica z parametrami (począwszy od nazwy wywołanego pliku).

Wystarczy sprawdzić czy liczba parametrów jest 3 (jeśli nie, wypisać instrukcję obsługi). Potem tylko:

unsigned int w, h;
sscanf( argv[1], "%u", &w );
sscanf( argv[2], "%u", &h );

Pole *plansza[x][y];

i tak dalej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1