MarYO Opublikowano 16 Listopada 2006 Udostępnij Opublikowano 16 Listopada 2006 Witam! Mam do Was poważne pytanie. Otóż pragnę wykorzystać GM do stworzenia małego programiku (tak tak!) dobierającego losowo graczy w grupy wyświetlając ich imiona. W praktyce wyglądałoby to tak, że wybieramy ilość graczy spośród dostępnych możliwości (np. 32 - 8 grup po 4 osoby). Wtedy przechodzimy do odpowiedniego roomu, w którym backgroundem jest przygotowany obrazek z namalowaną tabelką dla 32 osób - w ośmiu kolumnach po 4 wiersze. Teraz wpisujemy imiona lub nicki graczy - komendą (dla gracza 1): global.imie1 = get_string('Podaj imię/nick gracza 1 - object1:',''); { while ( global.imie1 = '' ) global.imie1 = get_string('Podaj imię gracza 1:',''); Dla gracza 2 - object2, imie2, dla 3 - object3, imie3 itp. itd. I tutaj pojawia się problem, bo w zdarzeniu Draw trzeba podać współrzędne wyświetlanego tekstu: draw_text(x,y,''+global.imie1); , a chciałbym, żeby to były współrzędne pasujące do miejsc w tabelce (tabelka będzie pasować do siatki w roomie, chociaż to chyba nie jest konieczny warunek) i, co najważniejsze, żeby losowało się miejsce, w którym pojawi się każde imię. Nie wiem, czy jest to możliwe do wykonania w Game Makerze. Próbowałem znaleźć jakieś skrypty, lecz nic nie wyczarowałem. A może jest jakiś inny, łatwiejszy sposób na rozwiązanie problemu? Proszę o pomoc i z góry dzięki za odpowiedź. Pozdrawiam. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 17 Listopada 2006 Udostępnij Opublikowano 17 Listopada 2006 Oczywiście że jest możliwe. https://gmclan.org/up152_11_imiona2.html <- z poprawkami. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pablo1517 Opublikowano 17 Listopada 2006 Udostępnij Opublikowano 17 Listopada 2006 tu myślę że przydała by się jakotaka wiedza na temat ciągów z matematyki i uzywani indexów np imie[0], imie[1] ... itp (dobrze mówie?) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MarYO Opublikowano 17 Listopada 2006 Autor Udostępnij Opublikowano 17 Listopada 2006 Dzięki, Tymon. Czegoś takiego oczekiwałem. Jednak mam kilka pytań, ponieważ wciąż nie mogę tego złożyć do kupy. Mianowicie: 1. W przykładzie mówimy o 32 graczach i tak jest też ustawione w projekcie powyżej. Jednak pojawiają się 33 okna na imiona 33 graczy. W tym wierszu jest "n" i z tym "n" skrypt w ogóle nie działa: _imie = get_string('Podaj imię gracza '+ string( n ) +':','') Gdy poprawiam na i, prawidłowo pojawiają się okna i numery graczy od 0 do 32 (czyli razem 33) w oknie Podaj imię gracza "X". Gdy zaś dopiszę i + 1, mamy graczy od 1 do 33. Podejrzewam, że przyczyna takiego stanu rzeczy tkwi gdzieś w indexie 0, lecz niestety nie wiem, co tu zmienić, aby było dobrze. 2. Jeśli chodzi o listę wynikową, to tutaj jest w ogóle misz masz. Jest jedna lista złożona z 17 imion, w tym pojawiają się magiczne wartości 0 (zero - jak się tego pozbyć?). Gdzie się ustawia ilość wyświetlanych imion? Ja bym chciał widzieć wszystkie i bez tych magicznych zer, a nie tylko 17. Poza tym, co należy zrobić, aby wynik poukładał się w cztery kolumny po 8 imion? Czy trzeba stworzyć 4 listy wynikowe, coś zmienić w tej jednej, która jest, czy może coś zmieniamy w evencie Draw? To na razie tyle. PS. Pablo, jestem dobry z ciągów, ale nie bardzo umiem je zastosować w skrypcie. Uwierz, że dla kogoś, kto jest już w obeznany w GM, wszystko jest łatwiejsze do zrobienia, niż dla nowicjusza. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 17 Listopada 2006 Udostępnij Opublikowano 17 Listopada 2006 Gdzie się ustawia ilość wyświetlanych imion? Ja bym chciał widzieć wszystkie i bez tych magicznych zer, a nie tylko 17.Zobacz wartość zmiennej listaWielkosc w Create :) Poza tym, co należy zrobić, aby wynik poukładał się w cztery kolumny po 8 imion? Czy trzeba stworzyć 4 listy wynikowe, coś zmienić w tej jednej, która jest, czy może coś zmieniamy w evencie Draw?To kompletnie niepotrzebne :) Używa się do tego celu funkcji mod i div (aby zmienić tylko pozycje rysowania). 1. W przykładzie mówimy o 32 graczach i tak jest też ustawione w projekcie powyżej. Jednak pojawiają się 33 okna na imiona 33 graczy.Błąd w pętli, powinno być < a dałem <=. Dlatego było zawsze o jeden za dużo. W tym wierszu jest "n" i z tym "n" skrypt w ogóle nie działa:_imie = get_string('Podaj imię gracza '+ string( n ) +':','') Z przyzwyczajenia postawiłem n :) Jednak wystarczy zmienić na i. Co do reszty, za dużo tłumaczenia :P Powiem tylko że popełniłem błąd w pętli która losowo miała wybierać imiona. Poprawiłem: https://gmclan.org/up152_11_imiona2.html I nie ma problemu, za 'proszę' i 'dziękuję' zawsze pomogę :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MarYO Opublikowano 18 Listopada 2006 Autor Udostępnij Opublikowano 18 Listopada 2006 Wielkie dzięki, Mistrzu! To jest to! Mam jeszcze tylko pytanie: W tym przykładzie listy pojawiają się wzdłuż osi x (i OK). A jak zmienić draw, by połowa list była w górnym rzędzie, a druga połowa pod nimi (między nimi ma być trochę przerwy)? Czuję, że to kwestia pogrzebania z div i mod, ale coś tu chyba trzeba dopisać, bo zmiana wartości nic nie daje. To by było na tyle. Pozdrawiam. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 18 Listopada 2006 Udostępnij Opublikowano 18 Listopada 2006 Chodzi o to żeby elementy listy pojawiały się tak 1 2 3 4 5 6 7 8 A nie tak jak teraz: 1 3 5 7 2 4 6 8 ? Te liczby to kolejne elementy listy od 1-8, tak dla przykładu :D EDIT Nie wiem czy dobrze rozumie ale podmień tą jedną linijkę w Draw na draw_text( x + ( i mod 4 ) * 120, y + 16 * ( i div 4 ) + 10 * ( i div 16 ), ds_list_find_value( listaWynikowa, i ) ); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MarYO Opublikowano 18 Listopada 2006 Autor Udostępnij Opublikowano 18 Listopada 2006 Neee, teraz jest 1 2 3 4 5 6 7 8 a chcę 1 2 3 4 5 6 7 8 Sprawdziłem Twoją linijkę. To jest dokładnie to, o co mi chodziło. Dzięki za pomoc. Pozdrawiam. * * * * * * * * EDIT 16:21 Nasunęło mi się jeszcze jedno pytanie: czy można posortować wyniki według kolejności wpisów (czyli wg indexów)? Przykład: Imiona graczy w liście wynikowej pojawiają się w zupełnie przypadkowej kolejności... (T - nr kolumny tabeli) Jest tak, jak po lewej, a chciałbym, żeby było tak, jak po prawej... T1 T2 T3 T4 T1 T2 T3 T4 -- -- -- -- -- -- -- -- 32 12 10 2 1 9 4 2 1 9 13 25 19 12 10 7 22 31 15 7 22 16 13 23 19 16 4 23 32 31 15 25 T5 T6 T7 T8 T5 T6 T7 T8 -- -- -- -- -- -- -- -- 8 27 24 30 8 3 5 6 28 20 26 29 11 14 17 21 18 14 5 6 18 20 24 29 11 3 17 21 28 27 26 30 Czy da się tak posortować? Czekam na odpowiedź. Pozdrawiam. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 20 Listopada 2006 Udostępnij Opublikowano 20 Listopada 2006 Da się jednak to jest trochę bez sensu bo wpisując nawet kilka nicków ukrywasz indeksy :D No ale napisałem: https://gmclan.org/up152_11_imiona3.html Trochę się skomplikowało. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MarYO Opublikowano 20 Listopada 2006 Autor Udostępnij Opublikowano 20 Listopada 2006 Dzięki wielkie! Tylko szkoda, że tak późno odpisałeś... :P Mam już wszystko porobione i nie chce mi się teraz zmieniać wszędzie kodu... Tak więc ostatni plik powędruje do mojego archiwum, może kiedyś najdzie mnie ochota, aby to pozmieniać... :D To było na tyle. Jeszcze raz serdeczne dzięki za pomoc. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 20 Listopada 2006 Udostępnij Opublikowano 20 Listopada 2006 Nie ma za co i wybacz że tak późno. Nie miałem dostępu do internetu przez cały weekend :( To ja zamykam, jak coś to pisz na PW. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi