Skocz do zawartości

argumenty oraz zwracanie wyniku po zakończeniu gry


Shin

Rekomendowane odpowiedzi

Witam.

 

W jaki sposób zmodyfikować grę, aby ta po zakończeniu zwracała wynik(score) do aplikacji która ją wykonała?

 

Opis szczegółowy:

Mam aplikację w Javie oraz grę wyklikaną w GM. Aplikacja będzie uruchamiać grę, oczekuje ona na zakończenie gry oraz zwrócenie przez grę wyniku. Wynikiem tym ma być uzyskana lista punktów przez danego gracza(score).

W związku z tym, poszukuje możliwości zwrócenia wyniku z gry. Odpowiednik return z main w c++.

 

Drugie pytanie:

jak odczytać w grze parametry przesłane jako argumenty podczas uruchamiania gry? w c++ było w mainie arc[]

parameter_count() - liczba parametrów

parameter_string(n) - kolejne parametry

 

Mam nadzieję że ktoś wyjaśni mi w miarę łatwo jak tego dokonać.

Z góry dziękuję i pozdrawiam

Shin

Odnośnik do komentarza
Udostępnij na innych stronach

GM Ci tego nie umozliwi. podstawowe pytanie: w jakim celu w ogole musisz zrobic wrappera w Javie do odpalania GMowej apki?

Możliwe rozwiązanie: przed wyjściem z gry, wysylasz broadcasta po sieci lokalnej i w apce Javowej odbierasz go i odczytujesz z niego wynik.

Drugie możliwe rozwiązanie: zamiast broadcasta, robisz tymczasowe połączenie po sieci lokalnej z apką w Javie i wysyłasz jej wynik, a ona go odbiera.

Trzecie możliwe rozwiązanie, zdaje sie najprostrze: tworzysz plik z ostatnim wynikiem gry i zapisujesz go przed wyjściem w folderze temp, skąd po wyjściu z gry, apka Javowa odczytuje ostatni wynik z tegoż pliku.

Odnośnik do komentarza
Udostępnij na innych stronach

Dziękuję za szybką odpowiedź.

Taki temat projektu na studiach, mam zrobić apkę, która "zarządza" grami. Jako że sama gra(docelowo kilka gier) nie są częścią projektu to postanowiłem uprościć sobie życie i je zrobić na szybko w GM zamiast od 0 pisać.

Odnośnik do komentarza
Udostępnij na innych stronach

ok, w takim razie Twój wrapper ma jakiś sens. tak więc najprostrzymi i najmniej problemowymi rozwiązaniami są te z plikiem i broadcastem (mimo to trudniejszy w więszej części od pliku).

Odnośnik do komentarza
Udostępnij na innych stronach

Opcja z plikiem mi przypadła do gustu. Niestety za łatwo być nie może i dostaje błąd "File not opened for writing."

 

Kod:

adres = "C:\%temp%\abc.txt";

plik = file_text_open_write(adres);

file_text_write_real(plik, score);

file_text_close(plik);

Odnośnik do komentarza
Udostępnij na innych stronach

najprosciej uzyj woring_directory, lub temp_directory (nie pamietam, czy jest, czy nie, ale jak nie, to working_directory sie nada -> dokumentacja GMLa)

Odnośnik do komentarza
Udostępnij na innych stronach

No niestety. Mam problem sprawdzić, czy plik tam jest, ponieważ cały ten folder jest usuwany automatycznie po zakończeniu gry.

Plik mam na pulpicie, stworzony jako gotowa aplikacja a nie plik instalacyjny. Tuż przed zapisem wyświetlam working_directory i dostaje takie coś: "C:\Users\Shin\AppData\Local\Temp\IXP000.TMP"

Odnośnik do komentarza
Udostępnij na innych stronach

Tzn jakiej?

Co do tych parametrów, taki przykład użycia prosto z mojej gry:

GML
if ( parameter_count() > 0 )

{

param = parameter_string(1);

 

switch ( param )

{

case "-CvC": gGameMode = 0; break;

case "-CvP": gGameMode = 1; break;

case "-PvC": gGameMode = 2; break;

case "-PvP": gGameMode = 3; break;

default : gGameMode = 1;

}

}

Odnośnik do komentarza
Udostępnij na innych stronach

Korzystam z wersji darmowej.

 

Co do samych parametrów dziękuję za przykład. Zechcesz może dodatkowo wytłumaczyć mi jak zrobić coś takiego. Jako parametr dostaję ścieżkę do pliku graficznego, który ma zastąpić obecnie wykorzystywany sprite w obiekcie o nazwie np oPilka.

Odnośnik do komentarza
Udostępnij na innych stronach

No tak ale free GMS czy free GM8.1? Bo różnica jest kolosalna.

 

GMS jest sandboxowany więc nie przejdzie takie coś. Tylko za pomocą get_save i get_open da się wczytać pliki z poza sandboxa.

 

Z drugiej strony żeby móc wykorzystać funkcje od wczytywania zasobów z zewnątrz w GM8.1 to trzeba mieć pro :/

Odnośnik do komentarza
Udostępnij na innych stronach

Dziękuję za pomoc. Jestem szczęśliwym posiadaczem wersji standard.

 

Funkcja get_save_filename działa, zapisuje ładnie wynik do zmiennej adres.

W następnym kroku próbuję sprawdzić czy nie zwróciła pustego ciągu... i tu kolejne schody bo ani if( adres != "") ani if( adres != 0 ) nie chce zadziałać.

 

 

--------------------------------------------------------

Inne pyanie:

Czy w tej wersji już można zrobić jakiś myk aby w zależności od parametru podczas uruchomienia piłeczka w grze miała inny kolor?

Np. parameter_string(1) == 1 to piłeczka ma kolor czarny ( inny sprite, wczytana z pliku grafika etc)

Odnośnik do komentarza
Udostępnij na innych stronach

parameter_string() nigdy nie zwroci pustego stringu, gdyz parametry te sa tworzone w sposob taki, iz string argumentow przekazanych do programu to jeden ciag znakow dzielony na pomniejsze stringi na zasadzie szukania spacji i tabulatorow i dzielenia stringa argumentow wedle nich. np:

"-i input.file -a 1 -c"

podzieli nam to na parametry:

"-i", "input.file", "-a", "1", "-c"

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...