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
Akademia GMCLANu
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
8 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 6, userów: 2, ukrytych: 0
adam014, Chell
Użytkownicy na czacie discord
gnysek (18:29, 19.02.18):
W WPF można robić design apek w XAMLu ? włącznie z animacjami
ANtY (15:51, 19.02.18):
co to za stanowisko C# Designer?
Wojo (12:57, 16.02.18):
Nie
gnysek (9:11, 16.02.18):
Widziałeś kiedyś stackoverflow ?
Wojo (19:36, 15.02.18):
Fajnie jakby się zarabialo a problemy się opisywalo na gmclanie, chociaż ktoś już tak próbował robić.
MaxGaming (18:10, 15.02.18):
oj gnysek, szukasz dziury w cały. Po pierwsze nie wiedziałem właśnie co psuje stronę zupełnie, po drugie nie chiało mi się bawić w takie rzeczy bo dłużej by to zajęło niż potem komuś znaleźć błędy. No a cóż, to każdy mówi jeżeli robisz komercyjnie to i to to musisz wiedzieć to i to. Skoro robię coś komercyjnie i zarabiam to znaczy że umiem wystarczająco dużo żeby to robić i zarabiać
gnysek (16:32, 15.02.18):
Taki hint: w serwisach typu twitter/facebook/discord można wkleić printscreena ze schowka
Wojo (16:23, 15.02.18):
Ja kiedyś dawalem screeny na imageshack to byly czasy...
I am vader (12:10, 15.02.18):
Najlepsze są serwisy do dzielenia się screenami jak puush czy gyazoo, chociaz sam korzystam z feenus ktore jest prywatne niestety wiec tylko ja i pare innych osob ma tam wstep.
Wojo (10:59, 15.02.18):
Służę pomocą tym co nie umieją robić screenów
Wojo (10:58, 15.02.18):
Nawet ja wiem jak to zrobic naciskasz klawisz z napisem prt scr
gnysek (10:53, 15.02.18):
jak robisz komercyjne strony to powinieneś takie rzeczy umieć
gnysek (10:53, 15.02.18):
no ale to całej strony nie trzeba pokazać, żeby naprawić błąd, można zrobić screena i obciąć i pokazać tylko parę bloków albo na jsfiddle.com wrzucić fragmetn co się psuje
MaxGaming (1:15, 15.02.18):
Już mam w sensie że doszedłem sam gdzie jest błąd
MaxGaming (1:14, 15.02.18):
Już mam. Nie chodzi o kradzeż, po prostu robię portal do celów komercyjnych i zależy mi by nikt nie wedział zanim nie skończe co to za portal. Sam html i css jest bez wartości akurat
I am vader (0:14, 15.02.18):
Chwuila zaraz to naprawie.
gnysek (19:10, 14.02.18):
w wersji na androida chyba nikt nie wydał ?
PsichiX (16:14, 14.02.18):
smiejecie sie, ale to bylby achievement, zrobic najlepszego catch the clauna na swiecie
Ignatus (16:01, 14.02.18):
A co jeżeli to najlepszy kacz de klown w historii i zarobi wiecej niz hotline miami?
I am Lord (11:25, 14.02.18):
Ktoś robi kacz de klawna i wysyła na PW bo na pewno ukradnie
I am Lord (11:25, 14.02.18):
uwielbiam to na gmclanie xD
PsichiX (1:50, 14.02.18):
na forum temat zaloz, nie mysl nawet ze ktos by mial krasc cssa, skoro nie dziala a i css to opis materialu, a nie algorytm
MaxGaming (1:36, 14.02.18):
Mógłby mi ktoś pomóc znaleźć błąd w prostym CSSie? Wyślę na PW kod
Wojo (15:36, 13.02.18):
Gierka uspokok się
ANtY (12:19, 13.02.18):
nie mow o mnie za plecami, ok?
Wojo (12:02, 13.02.18):
I się rozwinęły gierki nie można się kłócić...
Wojo (12:02, 13.02.18):
Wiesz o kim mówię
Ignatus (11:20, 13.02.18):
Jak to nie.Zaczynalem od skool daze na c64, przez UFO na amidze 500 az po Fallouta 2 na PC ,zadne pozniejsze gry wiekszego wrazenia juz nie robio
Wojo (10:22, 13.02.18):
Co za babole ludzie wy nie zyliscie w czasach rozwoju gier a pierdzielicie bez sensu. Ja mam dopiero 9 lat i takich głupot nie pierdziele
gnysek (10:14, 13.02.18):
nie nie, babuleńki mówią "za Gierka to było lepiej"
PsichiX (23:03, 12.02.18):
no wlasnie wszyscy mowio na odwrot
Ignatus (22:04, 12.02.18):
A wszyscy mówio że ten Gierek to taki super był
Wojo (8:26, 12.02.18):
Gierka, przecież napisoł
I am Lord (7:24, 12.02.18):
co robisz?
exp (21:17, 11.02.18):
tak dzisiaj stwierdziłem, że gierka, którą robie od jakiegoś czasu to jednak do dupy jest
Chell (20:48, 11.02.18):
musicie mi uwierzyc
Chell (20:47, 11.02.18):
kumpel przedwczoraj puscil i teraz mi podpowiada
Chell (20:47, 11.02.18):
z rok nie slyszalem tenacious d, w podpowiedziach tez nie mialem bo bym se puscil
Chell (20:46, 11.02.18):
tej bez kitu, uwierzylem w to co pisal Vader
Wojo (19:02, 10.02.18):
Bo to nie jest zależne od gmclanu
Gibki Kaktus (0:44, 10.02.18):
Czemu? XD
ANtY (23:57, 9.02.18):
OBY NIGDY
Gibki Kaktus (22:38, 9.02.18):
Ciekawe kiedy jakieś info o wystawie na Pyrkonie dadzą
Nikas (19:32, 7.02.18):
Odbierałem to inaczej. Nieważne. TopHat też po prostu zmarł już dawno i nic z nim nie robiłem.
I am vader (16:38, 7.02.18):
No i elegancko
Wojo (9:57, 7.02.18):
Ja bym dal znizke dla vadera za konstrukcje z krytyki
I am vader (20:58, 6.02.18):
Przepraszam ze konstruktywną krytykę tak źle odbierasz
Nikas (18:20, 6.02.18):
No oczywiście, że nic lepiej się nie dało. Bo jak by się dało, to by się zrobiło.
gnysek (16:32, 6.02.18):
może jeszcze zniżki dla stałych klientów
gnysek (16:32, 6.02.18):
kupony rabatowe
Ankieta
» Jakie kursy najchętniej widziałbyś na stronie ?
GM Studio
GM Studio 2
Godot
Construct

GMCLAN to serwis o programie Game Maker i nie tylko.
Copyright © 2002-2018. GMCLAN.ORG
Wszelkie prawa zastrzeżone. Kopiowanie materiałów bez zgody redakcji zabronione!
© 2002-2017 Ranmus (ranmus.pl), © 2017 {=|=} fable_inside();

[ Czas generowania strony: 0.03497 sekund ] [ Liczba zapytań MySQL: 13 ]