Tux Hunt (cz. 1) - Tworzenie gier
pl-gamedev·@fervi·
0.000 HBDTux Hunt (cz. 1) - Tworzenie gier
<div class="text-justify"> **Jako, że czegoś się nauczyliśmy by zrobić Tux Hunt czy inną grę - zaczniemy ją projektować. Naszym zadaniem jest stworzenie gry a'la Duck Hunt - oczywiście od zera.** Duck Hunt to prosta gra automatowa, która ukazała się na Famiconach i NESach (i na Pegasusach - bo Pegasus to piracki Famicon), w której latają sobie kaczki a my musimy je zestrzelić. Taka rozgrywka dla burżujów. Oczywiście tam się strzelało z pistoletu laserowego, ale my nie mamy takich technologii, więc będziemy klikać myszką :) Nasza gra luźno będzie inspirowana tym tytułem - trzeba by grę bardzo obserwować by zrobić bardzo dobrą kopię, ale nam aż tak nie jest to potrzebne. ## Nowy projekt Oczywiście zakładamy nowy projekt o nazwie np. TuxHunt. Dodajemy obiekt controller, który na razie nie będzie używany. Zróbmy na razie mechanikę strzelania do pingwina. #### Grafika Na OpenGameArt znalazłem taką oto grafikę pingwina na licencji CC-BY 3.0, czyli do użytku komercyjnego:  Zdjęcie to jest przerobione i ma "lepsze tło".  Mała prośba - w Collision Checking zaznacznie Precision (zamiast Rectangle). Rectangle bierze prostokąt z grafiki (czyli nawet jak nie traficie w pingwina, a w prostokąt w którym jest obudowany - to zadziała). - bądźmy precyzyjni ;) #### Obj_tux Skoro mamy pingwina, trzeba go oprogramować. Dodajmy obj_tux i dajmy do zdarzenia "puszczonego lewego przycisku myszy", że ilość punktów jest zwiększona o 100, a pingwin eksploduje (xD) i zostaje zniszczony. Przy okazji dajmy mu grafikę już :) ``` score = score + 100; effect_create_above(ef_explosion, x, y, 1, c_red); instance_destroy(); ``` Score to zmienna globalna. O zmiennych globalnych mówiliśmy (chyba) przy marynarzyku - ogólnie działają w obrębie całej gry. Są jednak trzy zmienne, które są wbudowane w grę - Score, Lives i Health. Nie musimy ich wykorzystywać, ale już są wbudowane. Effect create above tworzy eksplozję, wałkowaliśmy to Instance_destroy() to funkcja, która usuwa instancję obiektu - albo w skrócie obiekt z planszy. Czyli jeśli naciśniemy myszką to Pingwin zostanie usunięty z egzystencji. Ogólnie możliwe, że dwie lekcje będą teoretyczne - o Git (przyda się do tworzenia gier) i Instancje. Instancje są wręcz bardzo ważne, gdyż musimy jakoś tworzyć nowe obiekty - na przykład strzelanie w grze może tworzyć obiekt "kula", a my tego nie omówiliśmy (z tego co pamiętam).   ## Ilość strzałów Bardzo trudno to oszacować, ale w DH mieliśmy 3 strzały na rundę (i dwie kaczki). Zróbmy taki teoretyczny (będziemy musieli to zrobić ładnie) system liczenia pocisków. Każde kliknięcie odejmie jeden strzał, więc jak ktoś nie ma strzałów to nie może zabić pingwiniastego. W obj_controller w Create dajemy ``` global.ammo=3; ``` Czyli tworzymy zmienną globalną global.ammo z wartością 3. Dodajmy w tym samym obiekcie event "Global Left released" (mysz), czyli jeśli ktoś gdzieś kliknie w grze (niekoniecznie na pingwina) to ``` global.ammo=global.ammo-1; ``` Odejmie 1 od global.ammo. Teraz w obj_tux w kodzie, który usuwa pingwinka zróbmy ifa (cały kod wygląda tak) ``` if(global.ammo>=1) { score = score + 100; effect_create_above(ef_explosion, x, y, 1, c_red); instance_destroy(); } ``` Jeśli global.ammo jest większe lub równe 1 - wykonaj kod. ## Na zakończenie Dziękuję za uwagę i zachęcam do testowania naszego kodu. Dzisiaj nauczyliście się (prawdopodobnie) o wbudowanych zmiennych globalnych i niszczeniu obiektów (instancji obiektów). Mam nadzieję naturalnie, że Wam się podobało. </div>
👍 fervi, haytham, rasel49, sujonmia, franino, kapitanpolak, reinmar, niepoprawny, malina1979, bocik, buzzbeergeek, dadview, adventureevryday, kriptonoob, patricklancaster, bargolis, pharesim, derrick829, curiosit, donpepe, diosbot, hellobot, igl00, yanosh01, kingscrown, piotr42, rossco99, boatymcboatface, theshell, fatmanc1970, sotura, nimble, firesteem, kiddarko, mciszczon, iwanderela, marekkaminski, jakipatryk, lukmarcus, wolontariusz, jacekw, anyx, kushed, stone1, steemychicken1, aizensou, b0y2k, stoner19, hagie, coinbar, platinum-blue, bigdaddy, kingsmind, romedog, spg, sammosk, stitchybitch, dream-o, joseph, richman, razvanelulmarin, raymondspeaks, knozaki2015, shawnamawna, thebluepanda, yoshiko, thisisbenbrick, sirwinchester, einsteinpotsdam, zahnspange, steemsquad, allesgruen, dannystravels, jerryblanceton, ssekulji, timbernana, sherlockcupid, dark.horse, toyman, i-gordan, sunshinetraveler, eveuncovered, freefuture, kinakomochi, biancajapan, wackou, danknugs, steemservices, thebotkiller, thecyclist, theyeti, yougotflagged, thedelegator, ngc, andybrandy, kryptoraport, kolorowa.wedzma, piotr-galas, beleg, grecki-bazar-ewy, astromaniak, andzi76, entuir, santarius, busy.org, kacperski, voitaksoutache, xkrycha666, absenscarens, alcik,