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 (17: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 (12: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
0 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 0, userów: 0, ukrytych: 0


2 użytkownik(ów) na gmczacie discord.com
Shoutbox
Pootkov (21:57, 17.08.17):
wygląd forum
Pootkov (21:56, 17.08.17):
Da się jakoś zmienić wygląd na stary? Ten nowy razi w oczy
I am Lord (21:52, 17.08.17):
Ale nie działa system ligi więc będzie to w temacie tylko
I am Lord (21:52, 17.08.17):
Właściwie ligę moge zrobić
Pootkov (21:31, 17.08.17):
dawno tutaj nie byłem. Jak się tu wysyła PW, czy są jeszcze Ligi Weekendowe?
I am Lord (16:41, 17.08.17):
Powiadomienia powinny być jakoś zintegrowane ze stroną główną
Penguin (8:59, 17.08.17):
emot_poo.gif
I am Lord (19:22, 16.08.17):
Chell (16:19, 16.08.17):
Patryk, w shoutboxie jest inny zestaw emotek niz na forum
Chell (16:19, 16.08.17):
no nie, a juz sie nastawilem na okragly avatar
PatrykPlayingPOLSKA (15:17, 16.08.17):
:gnysek:
gnysek (14:25, 16.08.17):
emotki wróciły. No, sukces
gnysek (14:00, 16.08.17):
naprawiłem kodowanie forum kurde, a sie bawiłem już w wyświetlanie hexów
I am Lord (13:03, 15.08.17):
można w nim zrobić taki model i potem wyexportować warstwy spritów
I am Lord (13:03, 15.08.17):
Dobre do tej techniki są takie programy do trójwymiarowego pixel artu, zrobione ma potrzeby minecrafta
I am Lord (13:02, 15.08.17):
nakładanych na siebie ale przesuniętych w osi Y każda nowa warstwa
I am Lord (13:02, 15.08.17):
Takie udawane 3D modele składające się z warstw spritów
I am Lord (13:02, 15.08.17):
O kiedyś coś takiego robiłem
Ignatus (12:08, 15.08.17):
Jak sobie pomyśle że to jest zrobione w GM www.youtube.com...h?v=_BztMPC5Kk4 i porównam ze swoimi możliwościami to chce się płakać
I am Lord (9:23, 15.08.17):
Coś dziwnego mam. Jak odpalam zakładkę z gmc to jestem wylogowany ale po odświeżeniu strony jestem już zalogowany
gnysek (14:15, 14.08.17):
Early Access Preview ?
Ignatus (13:15, 14.08.17):
Co to jest to "GameMakerStudio 1.4.x EAP " ???
gnysek (17:33, 13.08.17):
Nie wiem czemu tematy się z UTF-8 nie konwertują :/
gnysek (17:31, 13.08.17):
@I am Lord - naprawione
Wojo (17:13, 13.08.17):
Cieszę się, że ktoś tu posłuchał słusznych rad
I am Lord (14:42, 13.08.17):
Oj klikniecie w link z Nowości w forum nie przenosi do nowego posta
Borek (12:18, 13.08.17):
*się starzeje
Borek (12:18, 13.08.17):
Uff.. bo już myślałem, że sięstarzeje
Threef (11:54, 13.08.17):
Skórka się zmieni. Najpierw wszystko musiało być przywrócone do życia
Borek (11:51, 13.08.17):
Forum zostanie w obecnej ( nowej ) wersji wizualnej?
Uzjel (11:33, 13.08.17):
Co tu się!
gnysek (9:48, 13.08.17):
ew. problemy zgłaszajcie na czacie discrodowym - link na górze
gnysek (9:32, 13.08.17):
Jeśli komuś nie działa, niech skasuje ciasteczka
gnysek (9:31, 13.08.17):
Witamy ponownie
Ranmus (18:25, 6.08.17):
Parę razy zaczynałem, i kończyło się na paru backendowych skryptach w gitlabie.
I am Lord (18:16, 6.08.17):
Zacząłeś nowy gmclan pisać czy skończyło się na chęciach?
I am vader (17:42, 6.08.17):
To wiele tlumaczy
Ranmus (17:40, 6.08.17):
Mogłem, ale po prostu do niedawna wierzyłem, że zrobię nową wersję. Jednak nie ma się co oszukiwać.
I am vader (17:24, 6.08.17):
Nie zrozum mnie zle, nie widze Cie tak jak Gnysek maluje, ale gmclan mogles przekazac juz jakis czas temu. I tak ciesze sie ze sie doczekalismy przekazania passów teraz a nie kiedys pozniej.
Ranmus (17:20, 6.08.17):
Niech będzie, że to ja jestem ten zły. Koniec tematu.
Ranmus (17:19, 6.08.17):
Gnysek, daj se siana, bo Ty wiesz swoje, a ja swoje. Co jakiś czas oskarżasz mnie publicznie o to i tamto, a ja nie mam ochoty prać non-stop tych brudów ponownie. Już wiele razy tłumaczyłem swoje postępowanie i odpierałem te zarzuty. Nie mam zamiaru się powtarzać.
Ranmus (17:17, 6.08.17):
Ja się po prostu sugeruję aktywnością twórczą aktualnie i tyle. Wojo - zastanowię się.
I am vader (17:13, 6.08.17):
Osobiscie nie mam zdania czy Uzjel czy Gnysek. Ale Gnysek by mi nigdy nie dal moda wiec...
I am vader (17:12, 6.08.17):
Z drugiej strony jedyny powod ze gnysek zrezygnowal to brak rozwoju dla gmclanu pod wodza Ranmy, wiec nie ma co sie dziwic ze sie wypalil a teraz znowu ma ochote.
MaxGaming (16:20, 6.08.17):
Nie oszukujmy się tu nie chodzi kto chce lepiej ale kto chce przejąć gmclan xd osobu które mówiły że nie mają czasu moderować gmclan chcą teraz od nowa go pisać jak usłyszały o tym że ramna komuś go oddać chce xd
Wojo (14:10, 6.08.17):
Gmclanowi to nie grozi
Danielus (12:51, 6.08.17):
Zwykłe fora się nie sprawdzają gdy zaczyna się pojawiać za dużo wpisów
gnysek (10:45, 6.08.17):
nie mówiąc o tym, jaki tam jest śmietnik muszą być działy, muszą być pod działy
Ignatus (15:52, 5.08.17):
Zgadzam się z Korodzikiem.Jak wchodzę na reddit mam wrażenie że jestem w 1998r
Ankieta
» Jakiej wersji GameMakera głównie Używasz?
GameMaker: Studio 2
GameMaker: Studio
GameMaker 8.1 i starsze
Żadnej

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.03559 sekund ] [ Liczba zapytań MySQL: 13 ]

thecrims Otserv List Otserv LyricsTown Harry Potter Serwery Gier
dev nodev