Space Cowboy (Android Studio da 2 boyutlu mobil oyun yazılımı eğitimi )

Benzer belgeler
MASAÜSTÜ YAYINCILIK (FIREWORKS)

KENDİ ÇİZİM PROGRAMIMIZI OLUŞTURALIM

KENDİ ÇİZİM PROGRAMIMIZI OLUŞTURALIM

2- Kontrol Sil En Öne Getir En Arkaya Gönder Resim Özellikler: Genel Özellikler...

Tavsiye Edilen Önhazırlık Temel SQL Server 2000 bilgisi edinmek.

DYNED İLE İLGİLİ SIRASIYLA HANGİ İŞLEMLER YAPACAĞIZ

AST415 Astronomide Sayısal Çözümleme - I. 7. Grafik Çizimi

Proje 1. Arayüz Tasarımı

Flash ile Etkileşimli Öğretim Materyali Hazırlama Semineri

SMART Board EĞİTİMLERİ(sürüm:10) 3. Aşama

ÖRNEK. a=1 yazdığımızda ar k 1 sayısı a harfi olmuştur. Aynı şekilde b=2 dediğimizde 2 sayısı b. Diyagramımıza başlıyoruz. Başla

KOD PARÇACIKLARI 1 / 5

Windows 10 için Java JDK 8 ve NetBeans IDE 8.2 Kurulumu Detaylı Anlatım

MÜHENDİSLİ ÇİZİMLERİ LABORATUVAR UYGULAMASI

Ders Tanıtım Sunumu. Database Managegement II. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

Scratch 2.0 GOL OYUNU

Bilgiyolu Yayıncılık Elektronik Sunum Programı Kurulum Kılavuzu

Denetim Masası/Programlar/Windows özelliklerini Aç/Kapat

Kabuk Programlama (Bash)

NESNEYE YÖNELİK PROGRAMLAMA

AdverTech Dijital Tabela Yönetim Yazılımı Kullanım Klavuzu

DetailsView. DetailsView kontrolünün GridView kontrolüyle paralel şekilde kullanımı ile ilgili örnek

MASAÜSTÜ YAYINCILIK (FIREWORKS)

HESAP MAKİNASI YAPIMI

Flash ile Etkileşimli Öğretim Materyali Hazırlama Semineri

Kodlama Paneli. Nazmiye Demirel Ortaokulu SCRATCH Scratch bir grafik programlama dilidir.

Daha önce bu işlemin iki tane dosya oluşturduğunu gördük. GecDenTest.aspx dosyasının source kısmında içeriğini inceleyecek olursanız en başta

Windows 7 - IIS 7.5 üzerine PHP ve MySQL kurulumu

LT SPlCE. 1.Kurulumu: Google dan LTSpice aratıp, Linear Technolog nin anasayfasına gidiniz.

Tomcat Uygulama Sunucusunun Kurulumu. İlk olarak adresine gidiyoruz.

Android Ders Notları

ACCESS DERS Tablolarda Düzenleme

MOBİL UYGULAMA GELİŞTİRME

FTP Programı File Zilla nın Kurulumu & Çalıştırılması

MASAÜSTÜ YAYINCILIK (FLASH)

Değerli Datasoft Kullanıcısı;

Linux Ubuntu Kurulumu

GRAFİK TASARIM. ACTION SCRIPT 3.0 Ders1 YARD. DOÇ. DR. MEHTAP YALÇINKAYA

EXISTS VE NOT EXISTS fonksiyonları

Table of Contents

Kaynak Kodlardan Derleme. Turquaz Muhasebe. Versiyon 0.2. Hüseyin Ergün. 26 Mart 2005

Adım 1) Photoshop ekranının üst bölümünde bulunan Window seçeneğinden Animation u seçiyoruz. Ve alt kısımda uzun bir kutucuk açıldığını göreceksiniz.


V Daq Kurulum adımları

Video Hazırlama Programı ile Öğretim Materyali Oluşturulması

var Deneme = Sistem.Parametreler[0];

DORYA ROBOTİK. İçindekiler. Kitap Sayfa Sayısı: 80 Kitap Fiyatı: 24,00 TL

BİLGİSAYAR PROGRAMLAMA. Yrd. Doç. Dr. Beytullah EREN

İLERİ VERİTABANI SİSTEMLERİ SUAT ÜSTKAN

Android ile SQLLite Veri Tabanı

Burs Başvurusuna Başlanmadan Önce Okunması Gereken En Önemli Uyarı!!Okumadığınız taktirde burada anlatılan sebeplerden dolayı burs

Web sayfalarında en önemli bir konu halini alan bilgi girişi ve bunların kontrollerini yapan kontrollerdir (Şekil 3.1). Şekil 3.1

Genel Programlama II

Algoritmalar ve Programlama. DERS - 4 Yrd. Doç. Dr. Ahmet SERBES

SQL 2005 SQL STUDIO MANAGER ACP YAZILIMI KURULUM KILAVUZU

V14xx Güncelleme İşlemleri

ÖDEVLERİ SİSTEME YÜKLEME USULLERİ

UZAYLIYLA SOHBET. Kedi kuklasını silip bu kuklalardan birini seçin ve projenize başlayın.

ASP.Net validation controls validate the user input data to ensure that useless, unauthenticated or

MASAÜSTÜ YAYINCILIK (FIREWORKS)

MASAÜSTÜ YAYINCILIK (FLASH)


1. Yandaki kuş karakterini domuz karakterine ulaştırmak için doğru kod bloğu hangisidir?

Ecat 8. Hakbim Bilgi İşlem A.Ş. Versiyon

Adım Adım Windows 2000 Server Kurulumu 11 Cuma, 08 Eylül :32 - Son Güncelleme Cumartesi, 12 Eylül :45

PSPICE Đ NASIL KULLANIRIM

MultiBoot Kullanıcı Kılavuzu

Windows Paint ile Fotoğraf Düzenleme

Stok Modülü Muhasebeleştirme İşlemleri

Uzaktan Eğitim Kullanma Klavuzu

Şekil1. Tüm berileri projeme indirip ilgili tabakalara yerleştirdim.

MASAÜSTÜ YAYINCILIK (FLASH)

EBA Dosya Uygulaması Kullanıcı K ı lavuzu ( Mobil)

ENM 316 Arena Uygulama Dersi Mayıs 2015

Lisanslama Sistemi ve Set Yükleme İşlemleri

MetaTrader 4 ios. Kullanım Kılavuzu

Basit Parça Modelleme

MVC. Görüldüğü üzere 2 adet cs. Dosyası oluşturdum. Birincisi çok satır kodu (20-25) içeren büyük işlerin yapılacağı class. İsmi buyuk_isler.

İMAGE (SİSTEM GÖRÜNTÜSÜ) ALMA VE YÜKLEME NASIL YAPILIR. İmage nedir?

Java JDK (Java Development Kit) Kurulumu:

ILI9341 TFT Dokunmatik Ekranda Kalemle Çizim Yapmak için Visuino ile Arduino Programlama

GOOGLE DRIVE KULLANIMI Google Drive Kullanmak için öncelikle bir Gmail hesabınız olması ve onunla giriş yapmanız gerekiyor.

AKINSOFT. Eofis NetworkAdmin. AKINSOFT EOfis NetworkAdmin Kurulumu Bilgi Notu. Doküman Versiyon : Tarih : Copyright 2008 AKINSOFT

ANDROID UYGULAMA YARDIM DOKÜMANI

Her bir ofis programının olduğu gibi FrontPage inde bir dosya uzantısı vardır. Bunlar *.html veya *.htm dosya uzantılarıdır.

Bu Kitap Kime Hitap Eder? 2 Kitapta Nelerden Bahsedilmiştir? 3 Kitabı Takip Edebilmek için Nelere İhtiyaç Duyacaksınız?

BLGM 354 DENEY 1 * GİRİŞ

4. Animasyonumuzda karakterimizin harekete başlaması duyurusu yapıldığında çalışan komut aşağıdakilerden hangisidir?

Üst Düzey Programlama

Veri Tabanı Yönetim Sistemleri Bölüm - 02

AÇILIŞ EKRANI. Açılış ekranı temelde üç pencereye ayrılır:

ihmal edilmeyecektir.

Dosyalama olarak: HTML, PDF, DOC ve XLS dosya türlerini kullanabilirsiniz. Kütüphane Modülü açıldığında Vet.Asistanı Kütüphanesi ekrana gelmektedir.

PYTHON PROGRAMLAMA DİLİ

Web Formlar ve Sayfalar Arasında Bilgi Gönderme. BATML İnternet Programcılığı 1

İçindekiler Hitit Sayım Cihazı Kurulum ve Kullanım Kılavuzu... 2 Sayım Cihazı Kurulum İşlemleri... 2 Hitit Kurulum işlemleri...

Ağ Üzerinde MATLAB kurulum rehberi (Sunucu makine)

Flash ile Etkileşimli Öğretim Materyali Hazırlama Semineri

public static int Toplam int x, int y

Nevşehir Hacı Bektaş Veli Üniversitesi. Moodle Uzaktan Eğitim Sistemi. Öğretim Elemanı Bilgilendirme Kılavuzu

Transkript:

Space Cowboy (Android Studio da 2 boyutlu mobil oyun yazılımı eğitimi ) İçindekiler: 1- Gereken kurulumlar, GitHub dan oyunun framework unun indirilmesi (NgdroidApp), update/draw metodunun çalıştırılarak uygulamanın kontrol edilmesi 2- Animasyonun ekrana gösterilmesi 3- Animasyona kullanıcı kontrollerinin eklenmesi (User interaction) 4- Ateş etme, çarpışma ve patlama (çok boyutlu dizi, collision detection) 5- Menü ve ses (GUI Tasarımı) 1 Hazırlık Programın çalışabilmesi için Android Studio nun, Android SDK nın, Android Sanal Aygıtının (Virtual Device) ve Git uygulamasının kurulu olması gerekir. Programı indirmek için de kendinize ait GitHub hesabınızdan projeyi fork etmeniz gereklidir. Gamelab Istanbul / NgdroidApp adresinden projeyi fork edebilirsiniz.

Android Studio yu çalıştırdığınızda artık kendi git hesabınızı kullanarak projeyi indirebilir/klonlayabilirsiniz.

Projeyi açtığınızda AVD Manager den (Android Virtual Device) kullanacağınız sanal aygıtı seçmelisiniz. Genelde tüm bilgisayarlara uyumlu olduğundan aygıt tercihini Galaxy Nexus, System Images tercihini Kitkat 19 armeabi-v7a android 4.4 (with google APIs) yapıyoruz.

Projeyi çalıştırdığınızda Android Monitor da ard arda update draw satırlarını görüyorsanız projeniz artık kullanıma hazır haldedir. 2 Animasyonun Ekrana Gösterilmesi Projede GameCanvas.java sayfasını açalım.

Burada çizdirme, güncelleme, dokunma gibi metotlar bulunur. Setup() metodu initialization işlemi için kullanılır ve yalnız oyun açıldığı an çalışır. Update() metodu oyun içerisindeki değişkenlerin güncellenmesi için, draw() metodu ise ekrana çizdirme işlemleri için kullanılır. Update ve draw metotları sürekli çalışırlar. Setup(), update() ve draw() metotlarındaki Log.i( TAG,...) fonksiyonlarına şu anda ihtiyaç duyulmadığından comment out edebilir ve ya kaldırabilirsiniz. Öncelikle ekrana çizdireceğimiz zemin için bir tileset, kontrol edeceğimiz karakter için de bir spritesheet indirmeliyiz. Tileset için tilea2.png, karakterimiz için cowboy.png spritesheet ini kullanabiliriz. İndirdiğimiz dosyaları projemizin assets klasörüne yerleştirdikten sonra ekrana gösterme işlemlerine başlayabiliriz.

2.1 Zeminin Ekranda Gösterilmesi Gösterme işlemine ekrana zemin çizdirerek başlayalım. Sayfanın başına tileset isminde yeni bir Bitmap nesnesi oluşturalım. Ardından setup() metoduna gidip tileset e kullanacağımız zemin dosyası tilea2.png yi atalım.

Artık canvas.drawbitmap() ile tilesetimizi ekrana çizdirebiliriz. Görüldüğü gibi tilesetimizi herhangi bir kırpma ve ya yerleştirme işlemi yapmadan öylece ekrana vermiş olduk. Daha karmaşık çizdirme işlemlerine başlamadan önce yapmamız gereken ilk şey, üzerinde çalışacağımız görüntüyü olduğu gibi ekranda göstermektir. Çalışmalarımıza da bu ilkeyi benimseyerek, yani basitten karmaşığa doğru ilerleyerek devam edeceğiz. Tileseti ekranda sorunsuz bir şekilde çizdirebildiğimize göre artık bir zemin görüntüsü belirleyip ekranda sadece bu görüntünün çizilmesini sağlayabiliriz. Önce projemizin assets klasöründe bulunan, tileset olarak kullandığımız tilea2.png dosyamızı inceleyelim. Dikkat edersek her bir zemin tipinin iki tane 32 x 32 px lik kareden ve bir 64 x 64 px lik kareden oluştuğunu görebiliriz. Bu tarz bir tileset, zeminleri 2 nin kuvvetinden oluşan alanlarda tutulduğundan Bitmap adını alır. Şimdi bir zemin tercih edip bu zeminin sol üst köşesinin ve sağ alt köşesinin koordinatlarını alalım.

Başlangıç olarak 64x64px lik çimen zemini kullanalım. Bu kare 64, 128 noktasından başlayıp 127, 191 noktasında bitiyor. Bu koordinatları projemizde kare nesnesi oluşturmak için kullanacağız. Sayfamızın başına gidip tilesource ve tiledestination isimli kareleri tanımlayalım. Sonra da setup() metodunda bunlardan yeni nesne oluşturalım.

tilesource ye kullanacağımız zeminin tilea2 deki koordinatlarını yerleştireceğiz (x1,y1 x2,y2). Tiledestination ı da seçtiğimiz zeminin ekranda gösterileceği yeri ve boyutlarını belirlemek için kullanacağız. Şimdi draw() metoduna gidip bu karelerin değerlerini belirleyelim ve zemini ekranın sol üst köşesinde gösterelim Zemini ekrana bu şekilde çizdirebildiğimize göre artık koordinatlarımızı değişkenlere atayıp bu değişkenler üzerinden çalışabiliriz. Şimdi tilesource ve tiledestination karelerinin başlangıç noktalarını, genişliklerini ve yüksekliklerini tanımlayalım. Sonra da setup() metodunun içerisinde değişkenlerimize başlangıç değerlerini girelim.

Ardından draw() metodunun içerisinde tilesource ve tiledestination karelerini set ettiğimiz yere gidip önceden kullandığımız koordinatları değişkenler cinsinden girelim. Projeyi çalıştırdığımızda zemini yine aynı yerde göreceğiz. İstersek tiledstw ve tiledsth değerlerini değiştirerek zeminin çizildiği karenin boyutlarını artırabiliriz. Örnek olarak setup() metodunun içerisine gidip tiledstw ve tiledsth değişkenlerinin ilk değerlerini 128 yapalım

Şimdi de karenin çizildiği yeri değiştirelim. Örnek olarak zemini ekranın tam orta noktasına çizdirelim. getwidth() ekranın genişliğini, getheight() ekranın yüksekliğini verir. Ekranın orta noktasının x koordinatını getwidth() / 2 ile, y koordinatını ise getheight() / 2 ile elde ediyoruz. tiledstx ve tiledsty değerlerine doğrudan (getwidth() / 2) ve (getheight() / 2) değerlerini verseydik karenin sol üst köşesi, ekranın tam ortasında kalacağından kare, orta noktadan biraz ileride çizilecekti. Kareyi tam ortalayabilmek için tiledstx = (getwidth / 2) (tiledstw / 2), tiledsty = (getheight / 2) (tiledsth / 2) yaptık. Yukarıda ise bu işlemlerin sadeleşmiş halini yazdık. Şimdi ekranın tamamını seçtiğimiz zeminle dolduralım. Bu işlemi kareleri uç uca ekleyerek yapacağız.

2.2 Karakterin Ekranda Gösterilmesi Artık oyun karakteri ile ilgili işlemlere başlayabiliriz. Önce spritesheet adında yeni bir bitmap daha oluşturup setup() metodunun içerisinde cowboy.png dosyasını spritesheet e atayalım. Spritesheet in düzgün çalıştığını anlamak için önce ekranda gösterelim.

Spritesheet i ekranda gösterdikten sonra kırpma ve yerleştirme işlemlerine başlayabiliriz. Önce cowboy.png dosyasını inceleyelim. Dikkat edersek her bir animasyon karesinin 128x128px den oluştuğunu görebiliriz. Karakterimizi spritesheet ten alırken bu değeri kullanacağız.

Şimdi spritesheet in sol üst köşesindeki duran karakter karesini ekranda gösterelim. Zemin çizdirirken yaptığımız gibi karakter için de kare nesneleri oluşturacağız. Sayfanın başında spritesource ve spritedestination isimli kareleri oluşturalım. Sonra da setup() metodunun içerisinde bunlardan nesne oluşturalım. Çizdirme işlemine başlamadan önce bu kareler için genişlik / yükseklik tanımlayalım. Tanımladığımız genişliklere setup() metodunda ilk değerlerini verelim. Artık spritesource ve spritedestination karelerinin değerlerini set edip canvas.drawbitmap() ile çizdirme işlemine başlayabiliriz.

Karakter bu zeminde zor göründüğünden daha iyi bir zemin seçelim. Setup() metodunda tilesrcx ve tilesrcy değerlerini 0, 0 yapalım.

2.3 Karakterin yer değiştirmesi Karakterimizin çizildiği karenin sol üst köşesi için gereken değişkenleri oluşturalım. Setup() metodunun içerisinde bu değişkenlere ilk değerlerini verelim Animasyon, ard arda gelen görüntülerden oluşur. Her görüntüleme anında* spritedstx ve spritedsty değerlerini değiştirerek karakterimizin yer değiştirmesini sağlayabiliriz. update() ve draw() metotları her görüntü anında çalıştığından yaptığımız değişikliği update() metodunun içerisine yerleştirebiliriz. Şimdi karakterimizi sağa doğru ilerletmeyi deneyelim. * frame Projeyi çalıştırdığımızda karakterin sağa doğru ilerleyip ekranın dışına çıktığını göreceğiz. Karakterin ekran dışına çıkmasını engellemek için bir koşul oluşturalım.

Böylece karakterimiz ekranın sonuna geldiğinde duracaktır. Şimdiye kadar karakterimiz yürüme animasyonu yapmadan yer değiştiriyordu. Yürüme görüntüsünü oluşturmak için cowboy.png dosyasında ihtiyacımız olan animasyon karelerini belirledikten sonra spritesource da bu karelerin sırayla girilmesini sağlayacağız. Cowboy.png ye baktığımızda soldan 0. karenin durma, 1 den 8 e kadar olan karelerin yürüme animasyonu olduğunu görebiliriz. Kaçıncı karede olduğumuzu frameno değişkeni ile belirleyelim. Frameno ile kare genişliğini çarparsak karenin cowboy.png deki x koordinatını elde ederiz. Bu koordinatı spritesource.set() içerisinde kullanmadan önce gerekli değişkenleri oluşturalım. Artık spritesource a dinamik değerler vereceğimiz için cowboy.png den aldığımız koordinatları değişkenlere atamalıyız.

Setup() metodunda başlangıç değerlerini verelim Şimdi cowboy.png deki yürüme animasyonunu update() metodunun içerisinde çalıştıralım

spritesrc değerlerini draw() metodunda spritesource.set() içerisine yerleştirelim. Karakter ekranın sonuna ulaştığı halde yürümeye devam ettiğini göreceğiz. Update() metodunda karakterin ekranın dışına çıkmasını engellediğimiz yere gidip buraya durma animasyonunu da ekleyelim.

3. Animasyona Kullanıcı Kontrollerinin Eklenmesi (User Interaction) Karakterimizin gideceği yönü belirlemek için x ve y eksenlerinde ilerleme hızları tanımlayalım. Setup() ta başlangıç değerlerini girelim Update() metodunda spritedstx değerine ekleme yaparak ilerlemesini sağlıyorduk. Şimdi bu değeri hız ve işaret cinsine çevirelim. Ekrana dokunduğumuz noktadan elimizi kaldırdığımız noktaya yön göstererek karakterimizin gideceği yönü belirleyeceğiz. Önce ekrana dokunduğumuz nokta için değişkenler tanımlayalım. touchdown() metodunun içerisinde, ekrana dokunmaya başladığımız anın x/y değerleri kaydedilir. Buradaki x/y değerlerini değişkenlerimize verelim. touchup() metodunda da elimizi ekrandan çektiğimiz anın x/y değerleri kaydedilir. Bu değerler ile touchdown değişkenleri arasındaki farkı bularak karakterimizin gideceği yönü belirleyeceğiz.

Ekranın diğer kenarlarında karakterimize durma koşulu oluşturmamıştık. Duvarlarda karakterin durmasını sağladıktan sonra diğer yönler için yürüme animasyonu oluşturalım.

Şimdi cowboy.png den diğer yönlerin animasyon karelerine bakalım. Yukarıdan aşağıya baktığımızda 3. animasyon satırının sağa gitme, 5. satırın yukarı, 7. satırın sola, 9. satırdaki karelerin aşağı gitme animasyonları olduğunu görürüz. Yukarıdan aşağı kaçıncı karede olduğumuzu yön adında bir değişkene atayalım. Sonra da bu değişkeni kare genişliğiyle çarpıp spritesrcy değerine verelim.