Skocz do zawartości

Reprezentacja słowna dowolnej liczby


Rekomendowane odpowiedzi

Witam, drodzy panowie (i panie)!

Otóż czy chcielibyście np. w Waszej grze RPG, żeby sklepikarz mówił, ile kosztuje dany produkt? Albo piszesz jakiś program do przelewów w GM-ie (mało prawdopodobne :P)? Tak? To dobrze się składa, ponieważ zrobiłem przykład, który słownie wyświetli daną liczbę!

Przykład użycia:

GML
show_message(slownie(15)); // wyświetli "piętnaście"

show_message(slownie(9999999)); //wyświetli "dziewięć milionów dziewięćset dziewięćdziesiąt dziewięć tysięcy dziewięćset dziewięćdziesiąt dziewięć"

Nad tym przykładem bardzo się napracowałem (ok. 1h) i także nie dodałem żadnych komentarzy do skryptu, ale myślę, że przeżyjecie =3.

 

Uwaga! Jeśli chcesz go wykorzystać, umieść mnie w liście autorów.

Link jest tutaj:

https://gmclan.org/up739_12_slownie.html

 

Enjoy!

 

EDIT: Chciałem jeszcze powiedzieć, że zakres liczb to 0 - 9 999 999 :).

EDIT2: Działa również na niezarejestrowanej wersji.

Odnośnik do komentarza
Udostępnij na innych stronach

@Edit: Oki, to były żarty ;p . Daję 3/5, bo w sumie nic takiego =D .

To nie były, to żarty =3.

 

Dobra, widzę, że większość siedzi na pirackim GM-ie 6.1, więc podaję kod skryptu:

GML
/****************************

Argument 0 - liczba

by Kryniak

****************************/

var str,slow,jednosci,dziesiatki,dziesiatki2,setki,tysiace,n,tmp;

slow='';

tmp='';

jednosci[0]='zero';

jednosci[1]='jeden';

jednosci[2]='dwa';

jednosci[3]='trzy';

jednosci[4]='cztery';

jednosci[5]='pięć';

jednosci[6]='sześć';

jednosci[7]='siedem';

jednosci[8]='osiem';

jednosci[9]='dziewięć';

 

dziesiatki[0]='dziesięć';

dziesiatki[1]='jedenaście';

dziesiatki[2]='dwanaście';

dziesiatki[3]='trzynaście';

dziesiatki[4]='czternaście';

dziesiatki[5]='piętnaście';

dziesiatki[6]='szesnaście';

dziesiatki[7]='siedemnaście';

dziesiatki[8]='osiemnaście';

dziesiatki[9]='dziewiętnaście';

 

dziesiatki2[0]='dwadzieścia';

dziesiatki2[1]='trzydzieści';

dziesiatki2[2]='czterdzieści';

dziesiatki2[3]='pięćdziesiąt';

dziesiatki2[4]='sześćdziesiąt';

dziesiatki2[5]='siedemdziesiąt';

dziesiatki2[6]='osiemdziesiąt';

dziesiatki2[7]='dziewięćdziesiąt';

 

setki[0]='sto';

setki[1]='dwieście';

setki[2]='trzysta';

setki[3]='czterysta';

setki[4]='pięćset';

setki[5]='sześćset';

setki[6]='siedemset';

setki[7]='osiemset';

setki[8]='dziewięćset';

 

tysiace[0]='tysiąc';

tysiace[1]='tysiące';

tysiace[2]='tysięcy';

 

miliony[0]='milion';

miliony[1]='miliony';

miliony[2]='milionów';

 

str=string(argument0);

str=string(real(string_digits(str)));

n=string_length(str);

if (n==1)

slow=jednosci[real(str)];

else

{

if (string_char_at(str,n-1)!='1' && string_char_at(str,n)!='0')

slow=jednosci[real(str) mod 10];

if (n>1 && string_char_at(str,n-1)=='1')

slow=dziesiatki[real(string_char_at(str,n))];

if (n>1 && string_char_at(str,n-1)!='1' && string_char_at(str,n-1)!='0')

slow=dziesiatki2[real(string_char_at(str,n-1))-2]+' '+slow;

if (n>2 && string_char_at(str,n-2)!='0')

slow=setki[real(string_char_at(str,n-2))-1]+' '+slow;

if (n==4 && string_char_at(str,n-3)=='1')

slow=tysiace[0]+' '+slow;

if (n==4 && real(string_char_at(str,n-3))>1 && real(string_char_at(str,n-3))<5)

slow=jednosci[real(string_char_at(str,n-3))]+' '+tysiace[1]+' '+slow;

if (n==4 && real(string_char_at(str,n-3))>4)

slow=jednosci[real(string_char_at(str,n-3))]+' '+tysiace[2]+' '+slow;

if (n>=5 && string_char_at(str,n-4)=='1')

slow=dziesiatki[real(string_char_at(str,n-3))]+' '+tysiace[2]+' '+slow;

if (n>=5 && real(string_char_at(str,n-4))>1)

{

tmp=slow;

slow=dziesiatki2[real(string_char_at(str,n-4))-2];//+' '+tysiace[2]+' '+slow;

if (string_char_at(str,n-3)!='0')

slow+=' '+jednosci[real(string_char_at(str,n-3))];

slow+=' '+tysiace[2]+' '+tmp;

}

if (n>=6 && string_char_at(str,n-5)!='0')

{

if (string_count(tysiace[2],slow)==0)

slow=setki[real(string_char_at(str,n-5))-1]+' '+tysiace[2]+' '+slow;

else

slow=setki[real(string_char_at(str,n-5))-1]+' '+slow;

}

if (n==7)

{

if (string_char_at(str,n-6)=='1')

slow=miliony[0]+' '+slow;

if (string_char_at(str,n-6)!='1' && real(string_char_at(str,n-6))<5)

slow=jednosci[real(string_char_at(str,n-6))]+' '+miliony[1]+' '+slow;

if (real(string_char_at(str,n-6))>4)

slow=jednosci[real(string_char_at(str,n-6))]+' '+miliony[2]+' '+slow;

}

}

return slow;

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ę...