[SDL]Uruchamienie programu z poziomu...

Awatar użytkownika
Peter Zof
Użytkownik
Użytkownik
Posty: 585
Rejestracja: 30 cze 2012, o 16:07
Płeć: Mężczyzna
Lokalizacja: Warszawa (MIMUW) / Pułtusk
Podziękował: 88 razy
Pomógł: 66 razy

[SDL]Uruchamienie programu z poziomu...

Post autor: Peter Zof »

Witam!

Piszę grę Sokoban (zakładałem już z tym wcześniej temat) jednak teraz mam inny problem. Mianowicie chciałbym aby program można było uruchamiać z poziomu wiersza poleceń, chodzi mi o coś takiego:

Sokoban.exe 1, gdzie: Sokoban.exe - nazwa pliku, a ta 1 to numer planszy.
Gdy chcę uruchomić tak program to wyskakuje mi czarne okno (utworzone przez SDL'a) jednak jest w nim tylko czarne tło. Czy wie ktoś może dlaczego tak się dzieje?
Awatar użytkownika
Arcymistrz
Użytkownik
Użytkownik
Posty: 134
Rejestracja: 9 sty 2012, o 17:08
Płeć: Mężczyzna
Podziękował: 22 razy
Pomógł: 3 razy

[SDL]Uruchamienie programu z poziomu...

Post autor: Arcymistrz »

Z fusów nie wróżę, pokaż kod to może będę w stanie pomóc.

Jeżeli chcesz przyjmować argumenty wywołania to musisz w main zrobić coś takiego:

Kod: Zaznacz cały

int main(int argc, char* argv[])
{
    return 0;
}
W argc jest przechowywana liczba argumentów wywołania, a w tablicy będziesz miał wartości poszczególnych argumentów.

np. Sobokan.exe arg1 arg2

Wówczas do wartości argumentów wywołania możesz się odwoływać za pomocą tablicy stringów:
argv[0] == Sokoban
argv[1] == arg1
argv[2] == arg2
Ostatnio zmieniony 22 maja 2013, o 19:01 przez Arcymistrz, łącznie zmieniany 5 razy.
lemoid
Użytkownik
Użytkownik
Posty: 199
Rejestracja: 24 maja 2012, o 23:36
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 5 razy
Pomógł: 30 razy

[SDL]Uruchamienie programu z poziomu...

Post autor: lemoid »

program przyjmuje argumenty na wejściu?
Awatar użytkownika
Peter Zof
Użytkownik
Użytkownik
Posty: 585
Rejestracja: 30 cze 2012, o 16:07
Płeć: Mężczyzna
Lokalizacja: Warszawa (MIMUW) / Pułtusk
Podziękował: 88 razy
Pomógł: 66 razy

[SDL]Uruchamienie programu z poziomu...

Post autor: Peter Zof »

Panowie...przecież w SDL'u aby nawet utworzyć okno trzeba argumenty do maina dać :)

@edit: Zrobiłem to już innym sposobem, ale teraz mam nowy problem. Mam tablicę, która przechowuje nazwy map:

Kod: Zaznacz cały

char *tablica_leveli[10] = {"level_1.txt", "level_2.txt"...} i tak dalej.
Tworzę zmienną:

Kod: Zaznacz cały

int aktualny_poziom = 0;
i wszystkie odczyty z pliku robie tak, że wysyłam: tablica_leveli[aktualny_poziom];

Chcę zrobić coś takiego, że gdy użytkownik wciśnie np Enter to do zmiennej aktualny_poziom ma dodać jeden (do jej dotychczasowej wartości). Problem jednak w tym, że nie mogę tak zrobić, mogę ustawić tą zmienną na konkretną wartość ale nic więcej. Jak zrobie tak:

Kod: Zaznacz cały

if( uzytkownik_wcisnal_enter )
{
    aktualny_poziom = 1;
    //aktualny_poziom++;  ---> Źle! Jak tak zrobie to program przestanie działać! (po wciśnięciu ENTERA)

}
lemoid
Użytkownik
Użytkownik
Posty: 199
Rejestracja: 24 maja 2012, o 23:36
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 5 razy
Pomógł: 30 razy

[SDL]Uruchamienie programu z poziomu...

Post autor: lemoid »

Na podstawie tego nie da się za bardzo stwierdzić dlaczego. Nie pamiętam jak tam SDL działa z samo-powtarzaniem klawiszy, bo być może wykracza poza zakres tablicy. Jeżeli działają Ci inne klawisze to spróbuj tam przeprowadzić inkrementacje (choć pewnie już to zrobiłeś). Może to też zależeć od momentu, w którym wywołujesz nazwę z tablicy w pętli głównej.
Awatar użytkownika
Peter Zof
Użytkownik
Użytkownik
Posty: 585
Rejestracja: 30 cze 2012, o 16:07
Płeć: Mężczyzna
Lokalizacja: Warszawa (MIMUW) / Pułtusk
Podziękował: 88 razy
Pomógł: 66 razy

[SDL]Uruchamienie programu z poziomu...

Post autor: Peter Zof »

Na pewno nie wychodzę poza zakres tablicy, zadeklarowałem ją jako tablicę 10 elementów. Zmienna,
na której chcę dokonać postinkrementacji ma wartość zero, czyli po wciśnięciu klawisza miałaby wartość 1 (czyli nie przekraczam tablicy). Jak chcesz to napisz na PW i wyślę Ci kod (chociaż ostrzegam, że ciężko może być go ogarnąć).

Też myślałem, że może chodzi o miejsca w programie, ale gdy do tej zmiennej (po wciśnięciu klawisza) podstawiam normalnie jedynkę to ładuje mi się nowa mapa (:
ODPOWIEDZ