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
1 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 1, userów: 0, ukrytych: 0
Użytkownicy na czacie discord
Shoutbox
gnysek (0:17, 24.10.17):
Jedna z rzeczy do zmiany
gnysek (0:17, 24.10.17):
Uploader niestety głupio zapisywał daty. Jako data modyfikacji pliku...
kriso99 (22:07, 23.10.17):
witam ponownie gmclany, swietnie ze stronka jest juz z powrotem
Threef (20:40, 23.10.17):
Hasztag znów
Uzjel (20:38, 23.10.17):
Dobra robota Szkoda, że potraciliśmy daty uploadów.
gnysek (17:00, 23.10.17):
Z pocztą powalczę potem, mailtester na wiecej testów dziennie nie pozwala
gnysek (16:19, 23.10.17):
Ok, uploader się pokazuje i działa.
gnysek (15:42, 23.10.17):
możliwe z pocztą też jest problem, trafia w spam
Uzjel (14:29, 23.10.17):
Uploader nie działa?
gnysek (11:19, 23.10.17):
Ok, jesteśmy na nowym serwerze
I am Lord (17:10, 18.10.17):
a nie sorry nie jest
I am Lord (17:10, 18.10.17):
gms 1.4 w uploaderze moim jest
I am Lord (17:10, 18.10.17):
No ja
Sutikku (14:54, 18.10.17):
właśnie nie wiem czy gms 1.4 czy 2
PsichiX (12:59, 18.10.17):
a pamietasz do ktorej wersji GMa to bylo?
Sutikku (23:43, 17.10.17):
coś mi się pokićkało czy jakiś czas temu ktoś udostępniał tutaj przykład networkingu z TCP i UDP i chatem? Bo nie mogę znaleźć, a dałbym sobie rękę uciąć, że tak było
I am Lord (12:06, 15.10.17):
A dobra widzę teraz że ten drugi router w trybie acces point ma zablokowane opcje konfiguracji firewalla, czyli działa tylko ten pierwszego routera
I am Lord (12:04, 15.10.17):
Podłączyłem ze sobą 2 routery po kablu. Oba nadają Wifi pierwszy router funkcjonuje zwyczajnie jako router a ten drugi jako acces point i teraz pytanie czy mam 2 firewalle?
PsichiX (16:48, 11.10.17):
poprawilem
gnysek (14:50, 11.10.17):
gobarbra.com/hi...2e9735f81eacc5e dzika wixa !
gnysek (9:34, 11.10.17):
tam jest jakiś błąd javascriptowy, chyba spowodowany google analytics - po przeniesieniu serwera sie tym zajmę (czyli po weekendzie).
Ignatus (22:04, 10.10.17):
U mnie często też tak jest-i nie ładuje się w ogóle.Za którymś podejściem dopiero
PatrykPlayingPOLSKA (21:40, 10.10.17):
Czy tylko u mnie otwieranie poprzednich stron tematów trwa w nieskończoność.Nie wiem czym może być to spowodowane,ale wątpię że to przez internet,sprawdzałem na wielu urządzeniach i wszędzie się otwiera naprawdę długo.
I am Lord (17:39, 10.10.17):
DS mają swoje funkcje do zapisywania
Adriann (17:05, 10.10.17):
Nie mogę otworzyć poprzedniej strony na forum
Uzjel (14:55, 10.10.17):
Niestety, ale to jedna z tych rzeczy "o których trzeba było pomyśleć wcześniej"
Ignatus (13:40, 10.10.17):
Kurcze klapa bo nie zapisuje w ten sposob DS i wywala błedy a ze względu na dynamiczne oświetlenie nie ma w ogóle opcji żeby to ręcznie ogarnąć..Znacie jakiś dobry sytem save, nawet płatny?
Ignatus (11:21, 10.10.17):
Potrzebuje prosty save checkpoint przed spotkaniem z bossem.Powinienem wybrać game_save() ,game_save_buffer() czy coś zupełnie innego?? Zapisywanie 1000zmiennych w autorskim systemie nie wchodzi w grę bo to przerost formy.Czym się różnią te systemy?
gnysek (10:07, 10.10.17):
trzeba po prostu dać w grze opcję przekonfigurowania klawiszy na padzie
Threef (7:46, 10.10.17):
Czyli GM obsługuje to tak samo jak kierownice, drążki, joysticki i tanie pady
Threef (7:46, 10.10.17):
To jest DirectInput. Problem to tylko koniguracja klawiszy bo każda może mieć inne
PsichiX (22:38, 9.10.17):
ta mata uzywa standardowego protokolu HID z layoutem dla gamepadów - obsłużysz je tak samo, jak buttony byle pada
Ignatus (22:33, 9.10.17):
Threef: Minotour był naprawdę zabawny;p Jak ogarnąłeś matę w GM? Chyba że to nie GM..
ANtY (10:04, 9.10.17):
wybuch jak wybuch, szczegolnie jak Ignatus napisał na statycznym ssie. Ale trawa i ogólnie enviro cieniutko wygląda
Ignatus (8:13, 9.10.17):
i gdzie ta wersja do grania w zapowiedziach?
doctor (23:11, 8.10.17):
Możecie też "chore game makery znalezione przez ferviego"
doctor (23:00, 8.10.17):
Zróbcie subforum dla Enigmy, a nie
PsichiX (22:50, 7.10.17):
bedzie dzis wrzucona wersja do grania w zapowiedzi
Ignatus (22:46, 7.10.17):
ok,ale ponawiam poprzednią wypowiedź- particle można ocenić tylko w ruchu
PsichiX (20:22, 7.10.17):
nowe wybuchy media.discordap...-explosions.png
Chell (16:37, 7.10.17):
jeden z konkursow PGG nie działał to na szybko zrobiłem w gmie w 15 minut zamiennik, człowiek warga w nim udział, mój największy devowy sukces
Gibki Kaktus (22:58, 5.10.17):
Za rok
ANtY (22:15, 5.10.17):
gibki bedziesz na PGA?
Gibki Kaktus (16:33, 5.10.17):
Szkoda, że xp nie ma, jakoś najbardziej jego lubię
I am Lord (16:28, 5.10.17):
Kupiłem żeby sobie powspominać stare czasy przed game makerowe
Gibki Kaktus (16:10, 5.10.17):
O to jednak nawet funta nie wydam na to xD
gnysek (15:36, 5.10.17):
O, nowa wersja GMS2 wyszła.
gnysek (10:21, 5.10.17):
O, jednak grafiki z RTP maja licencję na użytek jedynie w RPG Makerze. Trochę sprawa
Gibki Kaktus (1:22, 5.10.17):
Aż chyba się wykosztuję i dam te niecałe 6 funtów, żeby mieć powyżej średniej xD
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-2017. GMCLAN.ORG
Wszelkie prawa zastrzeżone. Kopiowanie materiałów bez zgody redakcji zabronione!
© 2002-2017 Ranmus, © 2017 {=|=} fable_inside();

[ 06:00:51 24.10.2017 ] [ Czas generowania strony: 0.01902 sekund ] [ Liczba zapytań MySQL: 13 ]