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
Zegar analogowy
autor: gnysek (18.02.06)
Nie raz na forum zadawano pytanie jak zrobić aby obiekt poruszał się po okręgu, zatem dzisiaj z nudów napisałem dość prosty przykład tego typu, czyli zegar analogowy. Najpierw omówię bardzo prosty zegar, potem zrobimy trochę trudniejszy.

Jedyne co musicie zrobić to stworzyć nowy obiekt i do Draw wklejać poniższy kod:

Najpierw namalujemy ramkę dla zegaru.
gml:
draw_circle(320,240,100,true);

Teraz zdefinujemy za pomocą var kilka zmiennych: sekx,seky - pozycja grotu wskazówki od sekund, minx, miny - pozycja grotu wskazówki od minut,
godzx, godzy, kpozycja grotu wskazówki godzin, sekl, minl, godzl - długość wskazówki sekund, minut i godzin.
gml:
var sekx,seky,minx,miny,godzx,godzy,sekl,minl,godzl;
sekl=100;
minl=90;
godzl=70;


Teraz ustawiamy wszystkie dane końcówek wskazówek, w tym celu posłużymy się dość zaawansowanym równaniem:
gml:
sekx=320+sekl*cos(degtorad(current_second*6-90));
seky=240+sekl*sin(degtorad(current_second*6-90));
minx=320+minl*cos(degtorad(current_minute*6-90));
miny=240+minl*sin(degtorad(current_minute*6-90));
godzx=320+godzl*cos(degtorad(current_hour*30-90));
godzy=240+godzl*sin(degtorad(current_hour*30-90));

sekundy i minuty mnożymy przez 6 dlatego, że 6*60=360, w przypadku godzin jest to 30*12, a od tego odejmujemy 90 stopni, dlatego że w Game Makerze (jak i w innych programach) kąt 0 stopni skierowany jest w prawo, a w zegarku w górę (czyli musimy albo odjąć 90 stopni, albo dodać 270). Liczba którą otrzymamy to kąt w pod którym powinna być skierowana wskazówka. Potem wyciągamy z tego sin lub cos, zależnie czy jest to współrzędna x czy y. Mnożymy to przez długość wskazówki i mamy już jej pozycję, wystarczy teraz tylko to wszystko dodać do pozycji z której wskazówka ma być malowana.

Na sam koniec namalujemy trzy strzałki
gml:
draw_arrow(320,240,sekx,seky,10);
draw_arrow(320,240,minx,miny,10);
draw_arrow(320,240,godzx,godzy,10);


Zegar ten niestety będzie mało przypominał taki prawdziwy, bowiem wskazówki będą przeskakiwały, i o ile z sekundami nie ma problemu, o tyle minuty już śmiesznie przeskakują... ale i to da się poprawić.


Ulepszamy zegar
Tego przykładu już nie będę tłumaczył, pobawcie się sami w jego modyfikowanie, porównajcie z poprzednim i zobaczcie różnice. Wadą tego zegara jest to że ma czasami do jednej sekundy opóźnienia w stosunku do czasu prawdziwego. Dzieje się tak dla tego, że od czasu włączenia zegarka do minięcia następnej sekundy czasami mija 5 setnych, czasem aż 100 i sprawdzenie w którym akurat jesteśmy momencie wymagało by jeszcze sporo linijek kodu.
W create dajemy:
gml:
sec=current_second;

A w draw
gml:
if sec>60 then sec-=60;

sekx=320+sekl*cos(degtorad(sec*6-90));
seky=240+sekl*sin(degtorad(sec*6-90));
minx=320+minl*cos(degtorad((current_minute+(current_second/60))*6-90));
miny=240+minl*sin(degtorad((current_minute+(current_second/60))*6-90));
godzx=320+godzl*cos(degtorad((current_hour+(current_minute/60))*30-90));
godzy=240+godzl*sin(degtorad((current_hour+(current_minute/60))*30-90));


draw_arrow(320,240,sekx,seky,10);
draw_arrow(320,240,minx,miny,10);
draw_arrow(320,240,godzx,godzy,10);

for (i=0; i<360; i+=30)
{
var l1,l2,l3,l4;
l1=320+90*cos(degtorad(i-90));
l2=240+90*sin(degtorad(i-90));
l3=320+100*cos(degtorad(i-90));
l4=240+100*sin(degtorad(i-90));

draw_line(l1,l2,l3,l4);
}

Pętla for dodatkowo namaluje nam 12 kresek na zegarku.

Mam nadzieję, że dzięki temu przykładowi poznacie kilka ciekawych technik programowania, jak płynne przesuwanie obiektu i obliczanie pozycji na podstawie innych danych.
głosów: 5 | ocena: 6.00 oceń zasób | dodał: gnysek
Komentarze
stron: 21

2


(21:01, 3.09.2008)

hej mi nie działa!

(21:03, 3.09.2008)

Pomoże ktoś?pls

av

gnysek (21:09, 3.09.2008)

napisz na forum, to raz, a dwa - co nie działa ?

(21:26, 8.09.2008)

pokazuje że błąd jest w kodzie:draw_circle(320,240,100,true);

av

kryniak (21:39, 8.09.2008)

A treść błędu? :*

av

Gunman (12:08, 31.01.2010)

Dobra, nie chce mi się liczyć. Ponad 100 błędów wyłapało jak uruchomiłem .exe

stron: 21

2



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

Nie masz konta? Zarejestruj się
Użytkownicy on-line
5 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 1, userów: 4, ukrytych: 0
jestemnadal, Uzjel, Gibki Kaktus, I am vader
Użytkownicy na czacie discord
Wojo (11:51, 20.06.18):
jest tak samo koło dupy jak polska koło grecji
gnysek (11:43, 20.06.18):
a udziec to nie jest jakoś koło dupy ?
Penguin (9:00, 20.06.18):
XD
Wojo (22:39, 19.06.18):
jak ból dupy może być pyszny? co najwyżej dupa może być pyszna ale zakładam, że taka nie jest
I am vader (21:55, 19.06.18):
Pysnzy jest bol dupy tych wszystkich cebulaczkow i sebixow ktorych obchodzi pilka nozna.
gnysek (20:23, 19.06.18):
to nie udawaj wielkiego fana, udawaj małego fana
Wojo (19:13, 19.06.18):
Mi to wszystko jedno bo i tak nie lubię piłki nożnej, po co udawać wielkiego fana bo Polska gra w piłke nożną?
MaxGaming (19:11, 19.06.18):
Jak mogliśmy to przegrać
Wojo (14:40, 19.06.18):
na necie można znaleźć ciekawe sekrety o nim ale ja nic nie wiem
Wojo (14:39, 19.06.18):
mnie bardzo ciekawi ten jego coaching. Gdybym miał pieniędzy bez końca to za te pieniądze zapewniłbym sobie niezłą rozrywkę
ANtY (13:36, 19.06.18):
www.pangrodzki....sklep/mars-2488 niech ktoś to kupi i powie mi czy jacek uporał sie z bałaganem
ANtY (13:24, 19.06.18):
www.pangrodzki....-damsko-meskich rozgalezil sie na wszystkie rynku
Chell (12:12, 19.06.18):
75% z teorii e13, już się niczego nie boję
MaxGaming (22:48, 18.06.18):
"to moja ulubiona stronka zaraz po gmclanie"
Wojo (22:48, 18.06.18):
w ogole skoncz typie spam w shoutboxie robic i pisac jakies bzdury zamiast wejsc na gmczat i siedziec w ciszy razem z 16 użytkownikami....
Wojo (22:47, 18.06.18):
nie wole bo tam nie wchodze takie zarty - serio
MaxGaming (22:46, 18.06.18):
Wolisz gmclan? Na prawdę jest on przed tą stronką?
Wojo (22:44, 18.06.18):
a to moja ulubiona stronka zaraz po gmclanie
MaxGaming (22:44, 18.06.18):
position_meeting - co zrobić żeby wykrywał mi maski także tych obiektów które są rysowane w gui? da się to zrobić?
Wojo (22:44, 18.06.18):
15 bez czytania
MaxGaming (22:42, 18.06.18):
nie no mordo żartuje oczywiście żeby nie bylo że jakiś złośliwy jestem
MaxGaming (22:42, 18.06.18):
15 z wliczona przerwą na czytanie komentarzy? xd
Wojo (22:42, 18.06.18):
no i czytam tylko komentarze i nikt sie tam niczym nie przejmuje
Wojo (22:41, 18.06.18):
pudło bo 15
MaxGaming (22:41, 18.06.18):
Wojo nie oszukjmy się, twoja przygoda na phubie pewnie trwa 30 sekund XDD
Wojo (22:40, 18.06.18):
i tak kilka ostatnich kartkowek poprawilem czytajac streszczenia bo bym nie zdał
MaxGaming (22:40, 18.06.18):
To jest raczej propozycja dla tych którzy lubią pracę nad sobą i ogólnie cieżką pracę a nie leniwienie się xd tacy to tylko do szkoły
Wojo (22:40, 18.06.18):
zamiast czytać małego księcia to teraz spędzam czas na robieniu tego co lubię czyli oglądaniu phuba
MaxGaming (22:38, 18.06.18):
Możesz przeczytać je samemu. Ja sam czytam lektury których nie przeczytałem w szkole jak mam wolny czas
Wojo (22:37, 18.06.18):
ale co mi po kasie jakbym nie znał przygód tomka sojera
MaxGaming (22:37, 18.06.18):
Nie rozumiem jak działa to draw_gui. Jak po prostu wstawię w room_editorze jakiś obiekt i dam mu w draw gui draw_self() to rysuje się jako gui, ale nie jest wykrywany w tym miejscu w którym jest ale w tym w którym go postawiłem na start(jakby maska się z nim nie przemieszcza) podczas użycia position_meeting
Wojo (22:37, 18.06.18):
ja gdybym 2 i 3 klasę liceum przesiedział w pracy to mialbym fajny pieniadz na rozruch
MaxGaming (21:55, 18.06.18):
kto po takiej szkole jest gotowy do pracy? Ja osobiście czuję się oszukany i czuję że zmarnowałem te 4 lata. CHociaż moze nie zmarnowałem bo mam już doświadczenie
MaxGaming (21:55, 18.06.18):
nikt nigdy nie wspomniał nawet słowem o jquery a co mówić dalej w szkole
MaxGaming (21:55, 18.06.18):
Uważam że jeśli ktoś nie wie do końca czego chce, albo ma bardzo słabe pojęcie o IT to spoko jest technikum. Jeśli ktoś zna się już na tym czym chce trochę to lepiej usiąść w domu i pouczyć się samemu z książek/kursów/tutoriali
MaxGaming (21:54, 18.06.18):
Robisz technika 4 lata i nikt praktycznie nie bierze go pod uwagę
MaxGaming (21:53, 18.06.18):
jak kończyłem czwartą jeden już jeździł w audi za 150 tyś a drugi w mercedesie za 80tyś nie mówiąc o reszcie hajsu
MaxGaming (21:52, 18.06.18):
Moich dwóch znajomych rzucili technikum na pierwszym roku, posiedzieli 2 lata w domu ucząć się różnych technlogii front-end i back-endowych i założyli firmę kiedy ja byłem w trzeciej klasie
MaxGaming (21:49, 18.06.18):
Ale jak uczyli ich pisać wszystko z pamięci to nie dziwne...
MaxGaming (21:49, 18.06.18):
no kurde kto tak pisze strony internetowe? czego to ma nauczyć? I ciągle uczenei na pamięć. Nikt ode mnie z klasy nie umiał w jakikolwiek sposób debugować kodu. Jak zapomnieli wstawić średnika to wszystko pisali od nowa albo płacz proszę panią nie działa
MaxGaming (21:48, 18.06.18):
Albo na kartce papieru kazali nam pisać stronki całe
MaxGaming (21:46, 18.06.18):
Lub program/stronę dla klienta
MaxGaming (21:45, 18.06.18):
dostawaliśmy pracę na 4h to robiłem ją w godzinę a przez 3h na przykład robiłem kurs C# z jakiś stronek
MaxGaming (21:45, 18.06.18):
A co robiłem na lekcjach? Siedziałem i uczyłem się na własną rekę zupełnie innych rzeczy. Ale przeszkadzało mi to ze muszę tam siedzieć i jeszcze czasami tracić czas na jakieś durne zadania na zaliczenie podczas gdy ja w tym czasie uczyłem się zupełnie czego innego już
MaxGaming (21:44, 18.06.18):
Więc to wcale nie było tak że rozdawali te szóstki
MaxGaming (21:44, 18.06.18):
ostatnio jakąkolwiek szóstkę z zawowdowych w tej szkole miał ktoś 4 lata przede mna
MaxGaming (21:44, 18.06.18):
I były to jedyne 6tki z zawodowych w ciągu ostatnich 4 lat historii tej szkoły
MaxGaming (21:43, 18.06.18):
Ja z zawodowych miałem same 6tki na koniec
MaxGaming (21:43, 18.06.18):
Ale szkoła w Polsce w ogóle nie ma uczyć. Program nauczania E12/E13/E14 sprawia że człowiek wie o każdej z tych dziedziń tylko kompletne podstawy i nie nadaje się nawet zaliczając na 100% wszystkie egzaminy do pracy w jakimkolwiek zawodzie jeśli sam się nie douczy
Wojo (21:42, 18.06.18):
w szkole niskie oceny miałem za zbędną teorię. Sprawdzian z lektury itp. A z wypracowań miałem piąteczki ale co z tego skoro o kant uja mozna to rostrzasc
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.
[ Polityka prywatności ]
Copyright © 2002-2018. GMCLAN.ORG
Wszelkie prawa zastrzeżone. Kopiowanie materiałów bez zgody redakcji zabronione!
© 2002-2017 Ranmus (ranmus.pl), © 2017-2018 {=|=} fable_inside();

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