Sterowanie obiektem (proste gry)

Ogólnie nie zajmuje się grami, raczej tworzę programu biurowe, systemy ERP itp, ale co nieco robiłem w tym temacie i tą wiedzą i doświadczeniem chętnie się podzielę. Będziemy w tym dziale tworzyć proste gry i omawiać sobie ich mechanikę, na pewno ktoś początkujący w tym temacie znajdzie tutaj coś dla siebie. Kiedy mówimy o grze zazwyczaj scenariusz jest podobny, wcielamy się w jakąś postać i poprzez sterowanie nią rozwiązujemy zagadki, strzelamy itp. Dzisiaj pokażę wam najlepszy według mnie sposób sterowania obiektem. Zrobimy sobie kwadrat który będzie poruszał się po wyznaczonym obszarze. Każdy obiekt/kształt wygenerowany na ekranie ma swoją własną długość i szerokość wyrażoną zazwyczaj w pikselach. Kiedy umieścimy mniejszy obiekt w większym będziemy mogli określić jego położenie względem większego i ograniczyć jego zasięg. Zaczniemy standardowo od stworzenia nowego projektu ustawiamy jego wielkość na 600;400

sterowanie obiektemZnajdujemy w przyborniku PictureBox i dodajemy do formy. Ja ustawiłem PictureBox1 Location: 20;20 Size: 540;320 BackColor: Gray.

sterowanie obiektem1Mamy nasz obszar po którym będziemy się poruszać. Najpierw stworzymy sobie nasz obiekt. Będzie to mniejszy PictureBox którym będziemy sterować za pomocą strzałek. Aby stworzyć taki obiekt w Form_Load wpisujemy:

Teraz po uruchomieniu nasz mniejszy PictureBox powinien pojawić się w środku większego PictureBoxa.

sterowanie obiektem2Przyszedł czas aby go ożywić. Aby tego dokonać należy wyodrębnić zdarzenia klikania strzałek na klawiaturze. Najpierw dodamy sobie do naszej formy obiekt o nazwie Timer. Po wystartowaniu Timer będzie odmierzał czas a ruch naszego statku będzie płynny.

sterowanie obiektem4Przeciągamy go na Formę i gotowe. Teraz wystarczy zmodyfikować lekko Form_Load i Timer będzie uruchomiony.

Zaznaczamy teraz naszą formę i znajdujemy dwa zdarzenia KeyUp i KeyDown i tworzymy do nich uchwyty(klikamy dwukrotnie na puste pole po prawej):

sterowanie obiektem3Te zdarzenia będą reagować na wciskanie naszych strzałek. Pod formą Dodajemy cztery zmienne:

Następnie przechodzimy do uchwytów KeyUp i KeyDown. Wypełniamy je kodem.

Jego zasada jest dosyć prosta, jeśli przycisk jest trzymany zmienna typu boolean jest zmieniana na true po puszczeniu klawisza zmienna wraca w stan false. Wracamy do projektu i klikamy na nasz Timer1ma on tylko jedno zdarzenie które wykorzystamy, jest to zdarzenie Tick.

sterowanie obiektem5Tworzymy sobie uchwyt i wypełniamy go kodem:

To jak szybko będzie się poruszał statek zależy od dwóch czynników. Pierwszym jest Interval Timera im mniejszy tym statek będzie poruszał się szybciej. Dodam jeszcze, że 1 sekunda odpowiada Intervalowi równemu 1000 czyli 1000 milisekund. Każda jednostka Intervala określa po jakim czasie nasza funkcja ma być wykonana, tak więc jeśli Interval= 1000 nasze zdarzenie Timer1_tick będzie co sekundę wykonywało operacje w nim zawartą. Z tego co wiem dolne ograniczenie Intervala w vb.net to 55milisecund czyli każda liczba Intervalu mniejsza niż 55 będzie wykonywana z szybkością 55 milisekund. Drugim sposobem jest zwiększenie zmiany położenia obiektu, jeśli w przykładzie mamy „-=4” zmiana na „-=10” przyśpieszy nasz statek ale będzie poruszał się on nienaturalnie.

Teraz należy ograniczyć poruszanie się naszego Statku. Nie może on przecież wychodzić poza obszar PictureBox1. Wiemy, że położenie naszego statku jest określane względem głównego obiektu. Czyli jeśli przesuwamy statek w prawo jego położenie +jego szerokość nie może być większe niż szerokość obiektu głównego. Wygląda to tak:

sterowanie obiektem6W praktyce modyfikujemy nasz Timer:

To na tyle. w następnej lekcji dodamy mu może jakąś animacje :).

Projekt do pobrania tutaj:Sterowanie_obiektem_1

 

Permalink do tego artykułu: https://visualmonsters.cba.pl/sterowanie-obiektem-proste-gry/

Dodaj komentarz

Twój adres email nie będzie publikowany.