Skocz do zawartości

Kalkulator


Grela

Rekomendowane odpowiedzi

To powodzenia

Podpowiem ci jeszcze, że ożywając get_ warto użyć

GML
message_background(back)

message_button(spr)

dzięki temu program będzie lepiej się prezentował

w pierwszym ustalasz tło wiadomości, a w 2 sprita guzika z tym że musi to być 3-spritowa animacja

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Jezu, najgorszy noob jakiego widziałem. Pytasz się o coś na dodatkową ocenę, chcesz to pisać w gmlu i do tego sobie nie radzisz z najprostszym kalkulatorem..

 

 

 

ŻĄŁ

Odnośnik do komentarza
Udostępnij na innych stronach

nie dodasz stingów do siebie, a przynajmniej nie uzyskasz oczekiwanego rezultatu.

mówię Ci użyj get_integer..

Dodasz rade jeśli wiesz jak, i będziesz mógł wpisać nawet liczbę ułamkową.

 

value1=get_string('x','0') 
value2=get_string('y','0')
//Miejsce na kod filtra
execute_string('value1='+value1)
execute_string('value2='+value2)
wyn=value1+value2

Niestety sposób wymaga dodania filtra przed wpisywaniem liter.

Odnośnik do komentarza
Udostępnij na innych stronach

GML (number)
for( i = 1; i <= string_length( argument0 ); i += 1 )

{

char = ord( string_char_at( argument0, i ) );

if( ( char < 48 || char > 57 ) && char != 46 )

{

if( i == 1 )

return 0;

else

return real( string_copy( argument0, 0, i - 1 ) );

}

}

return real( argument0 );

GML
show_message( string( number( get_string( 'Podaj liczbe:', '' ) ) ) );
Odnośnik do komentarza
Udostępnij na innych stronach

Jezu, najgorszy noob jakiego widziałem. Pytasz się o coś na dodatkową ocenę, chcesz to pisać w gmlu i do tego sobie nie radzisz z najprostszym kalkulatorem..

 

 

 

ŻĄŁ

 

I Ty się dziwisz "dlaczego ban?" i to jest właśnie powód. Jak nic nie wnosisz do tematu to się nie wypowiadaj.

 

Nie chcę kodu, napiszę to po swojemu, ale dzięki Tymciu za dobre chęci :)

Odnośnik do komentarza
Udostępnij na innych stronach

O, właśnie Dawidds, nie pamiętałem jak się nazywa ta funkcja. Nie uwzględnia kropki, ale przyda się do optymalizacji.

GML (number)
var pos;

pos = string_pos( '.', argument0 );

if( pos != 0 )

return real( string_digits( string_copy( argument0, 1, pos - 1 ) ) + '.' + string_digits( string_delete( argument0, 1, pos ) ) );

else

return real( string_digits( argument0 ) );

 

EDIT

https://forum.gmclan.org/index.php?s=&s...st&p=299095

Fixed.

Odnośnik do komentarza
Udostępnij na innych stronach

GML (number)
for( i = 1; i <= string_length( argument0 ); i += 1 )

{

char = ord( string_char_at( argument0, i ) );

if( ( char < 48 || char > 57 ) && char != 46 )

{

if( i == 1 )

return 0;

else

return real( string_copy( argument0, 0, i - 1 ) );

}

}

return real( argument0 );

GML
show_message( string( number( get_string( 'Podaj liczbe:', '' ) ) ) );

Ledko podrasowałem by była bardziej intuicyjna w użyciu :P

 

GML
value1=get_float('','0')

 

GML (getfloat)
argument3=get_string(argument0,argument1);

 

for( i = 1; i <= string_length( argument3 ); i += 1 )

{

char = ord( string_char_at( argument3, i ) );

if( ( char < 48 || char > 57 ) && char != 46 )

{

if( i == 1 )

return 0;

else

return real( string_copy( argument3, 0, i - 1 ) );

}

}

return real( argument3 );

Nie lepiej string_digits()? W przypadku złego znaku go zignoruje zamiast zwracać 0.

W tym i pomija kropkę co w efekcie daje wynik jak z get_integer()

 

Edit : No i za późno napisałem ;p

Odnośnik do komentarza
Udostępnij na innych stronach

Nie, masz zmienne A, B i C. To Twoje inputy, użytkownik ustala ich wartość. Podaje liczbę A, podaje typ działania B, podaje liczbę C, oblicza ABC i zapisuje do A. Później nie musi podawać A, podaje tylko B i C lub wciska "Wyczyść" by rozpocząć proces od podania A.

 

Zasada działania kalkulatora w telefonach SE.

 

EDIT

... w ogóle tak działają kalkulatory proste.

Odnośnik do komentarza
Udostępnij na innych stronach

O, właśnie Dawidds, nie pamiętałem jak się nazywa ta funkcja. Nie uwzględnia kropki, ale przyda się do optymalizacji.
GML (number)
var pos;

pos = string_pos( '.', argument0 );

if( pos != 0 )

return real( string_digits( string_copy( argument0, 0, pos - 1 ) ) + '.' + string_digits( string_delete( argument0, 0, pos ) ) );

else

return real( string_digits( argument0 ) );

ten kod ma gdzieś błąd gdy podaje 0.1 daje wynik 0.01 lub gdy podaje 5.5 daje wynik 5.55

Odnośnik do komentarza
Udostępnij na innych stronach

Szfak.

Bo GM liczy początek stringa od 1, a nie od zera... zawsze robię ten błąd. :)

GML (number)
var pos;

pos = string_pos( '.', argument0 );

if( pos != 0 )

return real( string_digits( string_copy( argument0, 1, pos - 1 ) ) + '.' + string_digits( string_delete( argument0, 1, pos ) ) );

else

return real( string_digits( argument0 ) );

Od cały problem.

 

Ingen, tak, ale to trochę zbyt łopatologiczne.

Odnośnik do komentarza
Udostępnij na innych stronach

Szfak.

Bo GM liczy początek stringa od 1, a nie od zera...

GML (number)
var pos;

pos = string_pos( '.', argument0 );

if( pos != 0 )

return real( string_digits( string_copy( argument0, 1, pos - 1 ) ) + '.' + string_digits( string_delete( argument0, 1, pos ) ) );

else

return real( string_digits( argument0 ) );

Od cały problem.

 

Ingen, tak, ale to trochę zbyt łopatologiczne.

Nice, choć ja bym mu dodał ten mały element który dodałem do poprzedniego twojego kodu by użycie go było tak proste jak wbudowanej funkcji gm czyli zamiast np.

GML
value2=number( get_string( 'Podaj liczbe:', '' ) )
zamienić na to

GML
value2=get_float('','0')

 

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

kod skryptu(tymona of course):

get_float

GML
var pos;

argument3=get_string(argument0,argument1);

pos = string_pos( '.', argument3 );

if( pos != 0 )

return real( string_digits( string_copy( argument3, 1, pos - 1 ) ) + '.' + string_digits( string_delete( argument3, 1, pos ) ) );

else

return real( string_digits( argument3 ) );

 

 

Dobra, a co z tym Win API pomoże mi ktoś? :)

Ja niestety nie znam WinApi :P

Odnośnik do komentarza
Udostępnij na innych stronach

E tam, chyba sobie poradzi, a number() jest bardziej uniwersalne.

 

Dobra, a co z tym Win API pomoże mi ktoś? :)
Skoro to ma być winapi to nie łatwiej będzie to napisać w delphi/c#/cpp?

Używanie gma po to, aby używać winapi przez bibliotekę do niego jest głupotą :/

Gm upraszcza ci m.in. rysowanie grafiki, ale jak i tak jej nie używasz, to nie łatwiej to od razu napisać w takim c#? Dodawanie zrobić to chyba nie problem, a sobie ui narysujesz bezproblemowo.

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