Fastbar
Powrót do strony głównej
Trzymaj pliki na gmclan.org!
Game Maker w pytaniach i odpowiedziach!
Polska dokumentacja
Tabela wyników ligi 24
Pobierz GM
Kategorie bazy artykułów
Artykuły -> Game Maker -> Kursy GML
Treść artykułu
Operacje na zmiennych
autor: gnysek (5.11.09)
W Game Makerze wyróżniamy dwa typy zmiennych:

1) Zmienne liczbowe (real) - są to po prostu liczby rzeczywiste, np. a = 5, a=17.32, a = $A1 (szesnastkowo 161);

2) Łańcuchy tekstowe (string) - są to zmienne zawierające tekst, np. a = 'tekst';

Należy jednak zauważyć, że a=5 to nie to samo co a='5', gdyż tekst nie jest liczbą i na odwrót i tych dwóch typów nie wolno bezpośrednio ze sobą porównywać.

Do zamiany liczby w tekst służy funkcja string(), do zamiany tekstu w liczbę służy funkcja real(), jednak tekst taki może zawierać tylko cyfry, znak minus, kropkę oddzielającą część dziesiętną oraz znak wykładniczy E (np. 1.E+1), bez liter i innych znaków.

Istnieje również wiele funkcji pozwalających na bardziej zaawansowane działania na zmiennych, skupię się jednak tylko na operatorach.

Operacje na łańcuchach tekstu:

Na tekście możemy dokonać dwóch operacji:

1) Konkatenacja, czyli łączenie tekstów: np. a = 'xxx' + 'yyy', a+='xxx';

2) Konkatenacja tekstu z samym sobą określoną ilość razy, np. a = 5 * 'x' zwraca 'xxxxx';


Operacje na liczbach:

Na liczbach można wykonać następne operacje:

Dodawanie: a=5+7; a=a+5, a+=5;

Odejmowanie: a=5-7; a=a-5; a-=5;

Zmiana znaku na przeciwny: a = -a;

Mnożenie: a=5*7; a=a*7; a*=7;

Dzielenie: a=5/7; a=a/7; a/=7; (nie można dzielić przez 0!)

Dzielenie całkowite div (dzielenie bez reszty / z zaokrągleniem w dół): a = 7 div 3 (7 div 3 = 2, bo 7/3 = 2, reszty 1);
Wynikiem dzielenia całkowitego jest zawsze liczba całkowita.

Reszta z dzielenia modulo : a = 7 mod 3 (7 mod 3 = 1, bo 7/3 = 2 reszty 1);
Reszta z dzielenia x mod y jest zawsze liczbą z zakresu od 0 do y-1.

Porównania:
Do porównań funkcji służą następujące operatory:
>, >=, ==, !=, <> , <, <= : większe, większe równe, równe, nierówne, różne, mniejsze, mniejsze równe

W Game Makerze nie ma funkcji post/pre-inkrementacji oraz post/pre-dekrementacji, które występują w innych językach.


Operacje logiczne:

W operacjach logicznych rozróżniamy dwie wartości: true, false. Wartość true (prawdę) oznaczają wszystkie liczby > 0, oraz stała true, wartość false (fałsz) oznaczają wszystkie zmienne <= 0 oraz stała false. Wykorzystywane są głównie do operacji warunkowych (if, while, etc.)

Rozróżniamy następujące operacje logiczne:

&&, and: prawdziwa, gdy wszystkie wartości wyrażenia mają wartość true, fałszywa w pozostałych przypadkach, np. 7 and 14 to prawda, 7 and -1 to fałsz.

||, or: prawdziwa, gdy co najmniej jedno wyrażenie jest prawdziwe, fałszywe tylko gdy wszystkie są fałszywe, np. 7 or -1 to prawda, 0 or -1 to fałsz.

^^, xor: prawdziwa, gdy oba argumenty są sobie przeciwne, fałszywa, gdy są takie same, np. 7 xor -1 to prawda, 7 xor 14 to fałsz

!: negacja, zamienia prawdę w fałsz i na odwrót, np. x = !7 to fałsz, x = !0 to prawda, x = !x zamienia prawdę w fałsz i na odwrót



Operacje bitowe:

Operacje bitowe to operacje, które zachodzą bezpośrednio na bitach liczby w systemie dwójkowym, np. liczba 12 to binarnie 1100.

>> : przesunięcie podanej ilości bitów w liczbie w prawo, poprzez usunięcie bitów na najmłodszej pozycji i dopisanie zer na najstarszej
np. 12 >> 1 to 6, 12 >> 2 to 3 (bo 1100 >> 1 = 0110 czyli 6, 1100 >> 2 = 0011, czyli 3)
Przesunięcie bitów w prawo o 1 jest równoznaczne z operacją dzielenia przez 2.

<< : przesunięcie podanej ilości bitów w liczbie w lewo, poprzez usunięcie bitów na najstarszej pozycji i dopisanie zer na najmłodszej
np. 12 << 1 to 24, 12 << 2 to 48 (bo 1100 << 1 = 1 1000 czyli 24, 1100 << 2 = 11 0000, czyli 48)
Przesunięcie bitów w lewo o 1 jest równoznaczne z operacją mnożenia przez 2.

|, &, ^ : operacje or,and,xor na bitach liczby
12 | 3 = 15, bo 1100 | 0011 = 1111
12 & 4 = 4, bo 1100 & 0100 = 0100
5 ^ 3 = 6, bo 0101 ^ 0011 = 0110

~: negacja bitowa liczby, np. ~12 = -13, bo 12 = ~0000 0000 ... 1100 = 1111 1111 ... 0011 (zmieniany jest także bit parzystości, liczby w GM mają 8 bajtów, od -9223372036854775808 do +4611686018427387904, dla których oznaczenie INF (nieskończoność) nie pozwala na operacje dodawania / odejmowania)

**********

Funkcje takie jak potęgowanie, pierwiastkowanie, logarytmowanie etc. wykonywane są przez funkcje wbudowane w Game Makera, nie są jednak operatorami, więc do ich poznania polecam lekturę dokumentacji programu.
głosów: 5 | ocena: 6.40 oceń zasób | dodał: gnysek
Komentarze
stron: 21

2


av

MagnusArias (18:13, 25.03.2010)

A czy w operacjach logicznych, wykrzyknika nie można zamienic cząstką"not" ? no zamiast "if !instance_exists", to "if not instance_exists"

av

Makary155 (13:30, 26.03.2010)

! - not
&& -and
|| -or.

stron: 21

2



Dodaj komentarz:
Treść:
Menu
Panel użytkownika
Jesteś niezalogowany!

Nie masz konta? Zarejestruj się
Użytkownicy on-line
91 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 84, userów: 7, ukrytych: 0
ProExCurator, Uzjel, Japanstache, ΨΧΞ, MaxGaming, ♔ I am Lord ♔ , ♔ Wojo ♔

0 użytkownik(ów) na gmczacie i 0 bot(ów)
Shoutbox
MaxGaming (23:07, 18.01.17):
YXE może to była aluzja żebyś mnie gadał ze sobą, a więcej z nią?
Wojo (23:00, 18.01.17):
Wnioskuję że słyszałeś o tym od swojej dziewczyny
ΨΧΞ (20:34, 18.01.17):
słyszałem, że macie ostatnio biedne wsparcie od rządu :/
Sutikku (20:16, 18.01.17):
w końcu trzeba mieć szacunek do samego siebie xd
ΨΧΞ (20:12, 18.01.17):
Ja to wiem, ale dziewczyna kazała mi odzywać się grzeczniej do niepełnosprawnych.
MaxGaming (18:40, 18.01.17):
pysiaczku głuptaśny - boże jak to beznadziejnie brzmi xd
I am vader (16:03, 18.01.17):
Gnysek A coś co nie wymaga logowania?
Wojo (15:55, 18.01.17):
Ja tam was wszystkich lubię mimo, iz nie jestem zdolny do odczuwania jakichkolwiek emocji. Ludzie to istoty kierujące się uczuciami i pieniedzmi. Więc kończę już te psychologiczne badanie. Osiągnąłem to co chciałem, dziękuję
ΨΧΞ (14:09, 18.01.17):
tak, dokładnie to! Dziękuję pysiaczku głuptaśny :*
ANtY (14:05, 18.01.17):
@Nikas o tym mowisz? i.imgur.com/l2eaeUX.png
gnysek (13:43, 18.01.17):
Znalazłem w GM buga, ktory ma 14 lat i jest obecny do dzisiaj: forum.yoyogames...th_ext-jpg.6168
Nikas (12:34, 18.01.17):
Uwaga, to chyba czas na przypomnienie screena z opisem, że YXE to chłodna jednostka bez uczuć.
ΨΧΞ (12:20, 18.01.17):
nie jedną noc przepłakałem przez to. #takbylo, nie kłamię! :>
I am vader (11:02, 18.01.17):
Też bym coś dopisał, ale jestem przeciw nękaniu bezbronnych.
MaxGaming (10:23, 18.01.17):
Na pewno YXE płacze po nocach z tego powodu xD
Wojo (5:52, 18.01.17):
Skoro odpisujesz to jednak cię rusza, a ta bezsilność
ΨΧΞ (21:39, 17.01.17):
patrz, jak się przejąłem xD
Wojo (18:04, 17.01.17):
a raczej BYŁEGO admina hehe
Wojo (18:03, 17.01.17):
Nie ma to jak dostać nagrodę za obrazę admina xD
I am vader (17:44, 17.01.17):
:v
I am vader (17:44, 17.01.17):
Czemu nie mogło być tak pięknej świecącej błyszczącej rangi rok temu jak usera roku dostałem
gnysek (10:05, 17.01.17):
Ale zajebiście mi wyszedł skrypt parsujący tekst gmclan.org/uplo...log_parsing.png
Threef (18:25, 15.01.17):
No to wygląda jakby twoje "mouse" miało duplikat nazwy.
Ignatus (17:52, 15.01.17):
Threef-juz znalazlem o co chodzi ale logiki tu nie ma.Krzaczyl kod if mouse.x!=mouse.xprevious" po usunieciu tego wszystko dziala.Problem polega ze jedyne co zmienialem to podmienialem grafiki, w ogole kodu nie ruszalem i nagle zaczelo swirowac
I am vader (16:24, 15.01.17):
W warnlogu masz ze to za ten link
Nikas (12:23, 15.01.17):
Ej no serio to za ten obrazek i link do nakidmag? Lel
gnysek (12:05, 15.01.17):
polecam screeny i trailery na almora.pl
gnysek (12:05, 15.01.17):
@Wojo: ale nikt o online nie mówi, a na androidzie masz całkiem niezłą Almorę, a następny update pobije wszystko co do tej pory było
Threef (11:02, 15.01.17):
Ignatus cache wyczyszczony? Obiekt w Room jest?
Adriann (22:58, 14.01.17):
aww to: i.imgur.com/mT8i8.gif
I am vader (22:25, 14.01.17):
O KURCZE DZISIAJ ROCZNICA MOJEJ SYGNATURY
Ignatus (22:12, 14.01.17):
Jest kod do wykonania jak w pysk strzelil-nie robi i koniec.Identyczny obiekt z identycznym kodem ale sprzed 4 dni dziala.Magia
Ignatus (22:03, 14.01.17):
Mieliscie kiedys taka zawieche GM ze przestal wykonywac kod?Wlasnie to przerabiam.Cos pieknego,4 dni w plecy
MaxGaming (20:36, 14.01.17):
To jest ten przypadek gdy użytkowników jest tak mało że moderatorzy już z nudów wykazują się nadgorliwością no i żeby ich nikt nie oskarżył że nic nie robią ale wszyscy chyba wiemy że ten ban był bez sensu xd
I am vader (17:52, 14.01.17):
Niby za 18+ Ale ja tam gora widze 16+ bo jedyne widoczne piersi sa bardziej plaskie od powierzchni lustra
Ignatus (15:11, 14.01.17):
Za co to zgraniasz Nikas?
Gibki Kaktus (14:40, 14.01.17):
A ja za 4h mam studniówkę....
Gibki Kaktus (14:37, 14.01.17):
Nie wiedziałem, że Nikas ma bana xD
Wojo (13:41, 14.01.17):
co za społeczniaki, nie dość,że forum martwe do ubijacie aktywnych userów
Nikas (13:03, 14.01.17):
No elo wracam po krótkim banie, wskoczyły mi dwa kolejne warny. Czuję dobrze niekwestionowany zwycięzca jesli chodzi o warnlog. xD
Wojo (23:39, 13.01.17):
No i szczerze niewiele osób będzie w nią grało jeśli ktokolwiek, na urządzeniach mobilnych osiągnęłaby sukces jakby była zajebiście pod nie przystosowaną mechaniką. Ale i tak szacun za pisanie czegokolwiek
I am vader (23:38, 13.01.17):
Strasznie mało głosów w CA jak na ilość osób podrzucającą nominacje
Wojo (23:38, 13.01.17):
Jak w almore przecież nikt nie gra a co dopiero myśleć o moderach
I am Lord (19:40, 13.01.17):
moderzy by takie coś wykorzystali
gnysek (16:15, 13.01.17):
W sumie, tak bardzo na siłę, to dałoby się dociągać questy z sieci przy tym systemie. Ale po co.
gnysek (16:14, 13.01.17):
Ach, właśnie kończę system scenariuszy do Almory. Teraz muszę go "upłnnić", animacje itd. Ale ogólnie działa zajebiście, szkoda, że 7 lat temu na to nie wpadłem
Korodzik (14:53, 13.01.17):
jeśli to jeszcze aktualne 34 godziny później
Korodzik (14:53, 13.01.17):
MaxGaming: pokaż, może ja dam radę
Chell (0:32, 13.01.17):
o, i AC1 za dolca
Ankieta
» Czy jesteś szczery odpowiadając w ankietach w Internecie?
Tak
Nie

GMCLAN to serwis o programie Game Maker i nie tylko.
Copyright © 2002-2017. GMCLAN.ORG
Wszelkie prawa zastrzeżone. Kopiowanie materiałów bez zgody redakcji zabronione!

[ Czas generowania strony: 0.01332 sekund ] [ Liczba zapytań MySQL: 16 ]

thecrims Otserv List Otserv LyricsTown Harry Potter Serwery Gier
dev nodev