RaistlinBlackRobe Opublikowano 21 Grudnia 2007 Udostępnij Opublikowano 21 Grudnia 2007 Mam dwie sprawy związane ze stringami: 1. Chce sprawdzać czy jakaś zmienna(string) zawiera na początku jakąś frazę np. "idz", a jeżeli tak to przyjmując całowity wygląd zmiennej za np.: "idz (West,3)" jak zrobić tak, aby pominął frazę "idz " i odczytał wartości West oraz 3 i przypisał je do zmiennych(integerów lub stringów) dir i dist, a nastepnie wykonał: if (obj_player.x=idzX && obj_player.y=idzY) then switch(dir) {case West: obj_player.direction=0; obj_player.speed=3;idzX=obj_player.x+lengthdir_x(dist,obj_player.direction);idzY=obj_player.y+lengthdir_y(dist,obj_player.direction); case North: obj_player.direction=90; obj_player.speed=3;idzX=obj_player.x+lengthdir_x(dist,obj_player.direction);idzY=obj_player.y+lengthdir_y(dist,obj_player.direction); case East: obj_player.direction=180; obj_player.speed=3;idzX=obj_player.x+lengthdir_x(dist,obj_player.direction);idzY=obj_player.y+lengthdir_y(dist,obj_player.direction); case South: obj_player.direction=270; obj_player.speed=3;idzX=obj_player.x+lengthdir_x(dist,obj_player.direction);idzY=obj_player.y+lengthdir_y(dist,obj_player.direction);}; 2.Jeżeli część "idz" zmiennej zaprezentowanej w problemie powyżej będzie błędna(np będzie "iidz"), ale podobna do prawidłowej wersji, czy da się tak zrobić, aby program sam zaproponował prawidłową wersję? Wszystkim, którzy zechcą pomóc dzięki wielkie. PS.: Zastanawiałem się czy dać do Początkujących czy Zaawansowanych. Jak źle dałem to proszę o przeniesienie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Modnar23 Opublikowano 21 Grudnia 2007 Udostępnij Opublikowano 21 Grudnia 2007 1) Do wycięcia wartości użyj funkcji string_copy(a,b,c) gdzie: a - string b - pozycja od której zacząć kopiowanie (liczona od 1 a nie od zera) c - ilość kopiowanych znaków Funkcja wycina fragment tekstu z innego tekstu. Zamiana stringa na wartość rzeczywista zrób po przez funkcję: real(str); Jeśli chodzi o wyszukanie frazy w stringu, to GM raczej niema takiej funkcji, musisz sobie ją sam napisać. Swoja drogą twoje rozwiązanie jest nieco karkołomne, ze względu na ilość wykonywanych operacji (operacje na stringach i konwersje typów niepotrzebnie ocbciążają procek), ja bym użył samych wartości liczbowych. 2) Pewnie że się da, ale trzeba by napisać skrypt, który by sprawdzał poprawność, no i to znowu dodatkowe i niepotrzebne operacje do wykonania. co wpływa ujemnie na fps gry. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
RaistlinBlackRobe Opublikowano 22 Grudnia 2007 Autor Udostępnij Opublikowano 22 Grudnia 2007 1) Do wycięcia wartości użyj funkcji string_copy(a,b,c) gdzie: a - string b - pozycja od której zacząć kopiowanie (liczona od 1 a nie od zera) c - ilość kopiowanych znaków Funkcja wycina fragment tekstu z innego tekstu. Zamiana stringa na wartość rzeczywista zrób po przez funkcję: real(str); Jeśli chodzi o wyszukanie frazy w stringu, to GM raczej niema takiej funkcji, musisz sobie ją sam napisać. Swoja drogą twoje rozwiązanie jest nieco karkołomne, ze względu na ilość wykonywanych operacji (operacje na stringach i konwersje typów niepotrzebnie ocbciążają procek), ja bym użył samych wartości liczbowych. 2) Pewnie że się da, ale trzeba by napisać skrypt, który by sprawdzał poprawność, no i to znowu dodatkowe i niepotrzebne operacje do wykonania. co wpływa ujemnie na fps gry. Zgodnie z radą zmieniłem to na to, aby po rozpoznaniu polecenia się pytał o kierunek i długość wymarszu. A jeżeli chodzi o string_copy() to czy nie będzie to zbyt pamięciożerne jeśli przy sprawdzaniu wielu komend będę musiał pobierać to kilka razy na step(tyle razy ile maxymalna możliwość liter w komendzie)? A jeśli tak, to czy można czyścić taki string_copy, kiedy nie jest już potrzebny? Hmm. Co do 2 to może ktoś ma jakąś propozycję, bo ja raczej nie byłbym zdolny, żeby jakiś wisdom z kompa wykrzesać? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę