Takip et

React ile Sağlam Bir Pokémon Oyunu Geliştirmek: Bir Geliştiricinin Macerası!

React ile Sağlam Bir Pokémon Oyunu Geliştirmek: Bir Geliştiricinin Macerası!

Merhaba arkadaşlar! Bugün sizlere React ile nasıl sağlam bir Pokémon oyunu geliştirebileceğimiz hakkında bir rehber hazırladım. Bu yazıda, bir oyun geliştirmek için React’in nasıl kullanılabileceğini, SOLID prensiplerine göre kodun nasıl düzenlenebileceğini ve farklı özellikleri nasıl uygulayabileceğimizi inceleyeceğiz.

Başlangıç: Projenizi Kurmak

Öncelikle yeni bir React projesi oluşturarak işe başlayacağız. Bunu yapmak için terminalinizde aşağıdaki komutu kullanabilirsiniz:

“`bash
npx create-react-app pokemon-game
“`

Bu komut, gerekli tüm dosyaları ve bağımlılıkları içeren yeni bir `pokemon-game` klasörü oluşturacaktır. Proje klasörüne geçin ve geliştirme sunucusunu başlatın:

“`bash
cd pokemon-game
npm start
“`

Tarayıcınızda `http://localhost:3000` adresini ziyaret ederek projenizin çalıştığını görebilirsiniz. Şimdi, oyunumuzun temel yapısını oluşturmaya başlayabiliriz.

Oyunun Temel Yapısı

Oyunumuzu üç temel bileşenden oluşturacağız:

  • **Oyun Alanı:** Oyunun görsel olarak sunulduğu alan.
  • **Oyuncu:** Oyunda kontrol ettiğimiz karakter.
  • **Düşman:** Oyuncunun savaştığı rakip Pokémon.

Bu bileşenler, oyunun temel işlevlerini sağlayacak ve daha karmaşık özellikleri geliştirmek için bir temel oluşturacaktır.

SOLID Prensipleri: Kodunuzun Düzenli Olmasını Sağlamak

Oyunumuzu geliştirirken SOLID prensiplerine uymak, kodumuzun daha düzenli, ölçeklenebilir ve bakımı kolay olmasını sağlayacaktır.

Single Responsibility Principle (SRP): Tek Sorumluluk Prensibi

Bu prensip, her bir kod parçasının sadece tek bir sorumluluğu olmasını vurgular. Örneğin, `Oyuncu` bileşenimiz sadece oyuncuyu temsil etmeli ve oyunun diğer işlevleri ile ilgilenmemelidir.

Open/Closed Principle (OCP): Açık/Kapalı Prensibi

Bu prensip, kodun yeni özelliklere açık, ancak değişikliklere kapalı olmasını söyler. Örneğin, yeni bir Pokémon türünü oyuna eklemek için mevcut kodu değiştirmek yerine, `Pokémon` sınıfına yeni bir alt sınıf eklemeliyiz.

Liskov Substitution Principle (LSP): Liskov Yerine Geçme Prensibi

Bu prensip, bir alt sınıfın üst sınıfı yerine kullanılabilmesini sağlar. Örneğin, `Saldırı` sınıfının bir alt sınıfı olan `AteşSaldırısı`, `Saldırı` sınıfının yerine geçebilmelidir.

Interface Segregation Principle (ISP): Arayüz Ayrımı Prensibi

Bu prensip, bir arayüzün sadece kullanacağı metotları içermesini söyler. Örneğin, `HareketEdebilen` arayüzü, sadece `hareketEt()` metodunu içermeli ve `saldırı()` metodunu içermemelidir.

Dependency Inversion Principle (DIP): Bağımlılık Tersine Çevirme Prensibi

Bu prensip, yüksek seviyeli modüllerin düşük seviyeli modüllere bağımlı olmamasını söyler. Örneğin, `Oyuncu` sınıfı, `Düşman` sınıfına doğrudan bağımlı olmamalıdır. Bunun yerine, bir arayüz aracılığıyla etkileşime girmelidir.

Oyunun Özelliklerini Geliştirmek

Şimdi oyunumuz için bazı temel özellikleri geliştirelim.

Oyun Alanı

Oyun alanını `App.js` dosyasında oluşturabiliriz. Bu alanda, oyuncunun hareket ettiği ve düşmanın göründüğü bir alan olacaktır.

“`javascript
import React, { useState } from ‘react’;

function App() {
const [oyuncuKonumu, setOyuncuKonumu] = useState({ x: 0, y: 0 });
const [düşmanKonumu, setDüşmanKonumu] = useState({ x: 5, y: 5 });

const hareketEt = (direction) => {
switch (direction) {
case ‘yukarı’:
setOyuncuKonumu({ …oyuncuKonumu, y: oyuncuKonumu.y – 1 });
break;
case ‘aşağı’:
setOyuncuKonumu({ …oyuncuKonumu, y: oyuncuKonumu.y + 1 });
break;
case ‘sol’:
setOyuncuKonumu({ …oyuncuKonumu, x: oyuncuKonumu.x – 1 });
break;
case ‘sağ’:
setOyuncuKonumu({ …oyuncuKonumu, x: oyuncuKonumu.x + 1 });
break;
default:
break;
}
};

return (




);
}

export default App;
“`

Bu kod, 10×10 boyutunda bir ızgara oluşturur ve oyuncunun ve düşmanın konumunu temsil etmek için iki kare ekler. Ayrıca, oyuncunun hareket etmesini sağlayan dört düğme ekler.

Oyuncu

Oyuncuyu temsil etmek için `Oyuncu` bileşenini oluşturabiliriz. Bu bileşen, oyuncunun konumu ve hareket etme fonksiyonlarını içerecektir.

“`javascript
import React, { useState } from ‘react’;

function Oyuncu() {
const [konum, setKonum] = useState({ x: 0, y: 0 });

const hareketEt = (direction) => {
switch (direction) {
case ‘yukarı’:
setKonum({ …konum, y: konum.y – 1 });
break;
case ‘aşağı’:
setKonum({ …konum, y: konum.y + 1 });
break;
case ‘sol’:
setKonum({ …konum, x: konum.x – 1 });
break;
case ‘sağ’:
setKonum({ …konum, x: konum.x + 1 });
break;
default:
break;
}
};

return (


);
}

export default Oyuncu;
“`

Bu kod, oyuncunun konumunu `konum` değişkeninde saklar ve `hareketEt()` fonksiyonu aracılığıyla hareket etmesini sağlar.

Düşman

Düşmanı temsil etmek için `Düşman` bileşenini oluşturabiliriz. Bu bileşen, düşmanın konumunu, görünümünü ve saldırı fonksiyonlarını içerecektir.

“`javascript
import React, { useState } from ‘react’;

function Düşman() {
const [konum, setKonum] = useState({ x: 5, y: 5 });

return (


);
}

export default Düşman;
“`

Bu kod, düşmanın konumunu `konum` değişkeninde saklar ve kırmızı bir kare olarak görüntüler.

Savaş Sistemi

Oyunumuzda bir savaş sistemi geliştirmek için `Savaş` bileşenini oluşturabiliriz. Bu bileşen, oyuncunun ve düşmanın saldırılarını ve savaş sonucunu yönetecektir.

“`javascript
import React, { useState } from ‘react’;

function Savaş() {
const [oyuncuSağlığı, setOyuncuSağlığı] = useState(100);
const [düşmanSağlığı, setDüşmanSağlığı] = useState(100);

const oyuncuSaldırı = () => {
setDüşmanSağlığı(düşmanSağlığı – 10);
};

const düşmanSaldırı = () => {
setOyuncuSağlığı(oyuncuSağlığı – 10);
};

return (

Savaş

Oyuncu Sağlığı: {oyuncuSağlığı}

Düşman Sağlığı: {düşmanSağlığı}


);
}

export default Savaş;
“`

Bu kod, oyuncunun ve düşmanın sağlığını saklar ve saldırı butonları aracılığıyla sağlık değerlerini günceller.

Ek Özellikler

Oyunumuzu daha ilgi çekici hale getirmek için bazı ek özellikler ekleyebiliriz.

Pokémon Seçimi

Oyuncunun başlangıçta bir Pokémon seçmesini sağlamak için `PokémonSeçimi` bileşenini oluşturabiliriz.

“`javascript
import React, { useState } from ‘react’;

function PokémonSeçimi() {
const [seçilenPokémon, setSeçilenPokémon] = useState(null);
const pokemonlar = [‘Pikachu’, ‘Bulbasaur’, ‘Charmander’];

const seç = (pokemon) => {
setSeçilenPokémon(pokemon);
};

return (

Pokémon Seç

{pokemonlar.map((pokemon) => (

))}
{seçilenPokémon &&

Seçilen Pokémon: {seçilenPokémon}

}

);
}

export default PokémonSeçimi;
“`

Bu kod, oyuncunun `pokemonlar` dizisinden bir Pokémon seçmesini sağlar.

Hareketler

Oyuncunun farklı saldırılar kullanabilmesi için `Hareketler` bileşenini oluşturabiliriz.

“`javascript
import React, { useState } from ‘react’;

function Hareketler() {
const [seçilenHareket, setSeçilenHareket] = useState(null);
const hareketler = [‘Ateş Topu’, ‘Elektrik Şoku’, ‘Yaprak Kılıcı’];

const seç = (hareket) => {
setSeçilenHareket(hareket);
};

return (

Hareketler

{hareketler.map((hareket) => (

))}
{seçilenHareket &&

Seçilen Hareket: {seçilenHareket}

}

);
}

export default Hareketler;
“`

Bu kod, oyuncunun `hareketler` dizisinden bir hareket seçmesini sağlar.

Ses ve Görseller

Oyunumuzu daha etkileşimli hale getirmek için ses efektleri ve görseller ekleyebiliriz.

Ses efektleri için `Howler.js` kütüphanesini kullanabiliriz. Görseller için ise kendi resimlerimizi veya ücretsiz kaynaklardan yararlanabiliriz. Daha fazla bilgi için Howler.js ve Pixabay sitelerini ziyaret edebilirsiniz.

Sonuç

Bu makalede, React ile nasıl sağlam bir Pokémon oyunu geliştirebileceğimizi gördük. SOLID prensiplerine uymak, kodumuzun düzenli, ölçeklenebilir ve bakımı kolay olmasını sağladı. Ayrıca, oyunun temel yapısını, savaş sistemini ve ek özellikleri geliştirdik. Oyunumuza daha fazla özellik ekleyerek ve görsel unsurları geliştirerek daha da ilginç hale getirebiliriz.

Umarım bu rehber size faydalı olmuştur. Oyun geliştirmek için React’in güçlü bir araç olduğunu unutmayın! Kendi oyununuzu geliştirmek için fatihsoysal.com sitesini ziyaret edebilir ve daha fazla bilgi edinebilirsiniz.

#Etiketler
React, Pokémon, Oyun Geliştirme, SOLID Prensipleri, JavaScript, Web Geliştirme, Eğlence, Oyun, Kodlama, Programlama, Yazılım, Uygulama, Web, Mobil, Teknoloji, Howler.js, Pixabay

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version