User prompt
rakip kale ve bizim kalemizi oluştur. oyuncular kalelere giremez. top kaleye ulaştığında gol olur ve oyun başa döner
User prompt
topu aldıktan sonra herşey duruyor top sürme ve şut mekaniğini düzenle
User prompt
oyuncuya tıklandığında çıkan hedef göstergeleri için yeni texture oluştur
User prompt
oyuncunun gideceği yeri gösterme ye de yeni bi texture ata
User prompt
saha karelerine textur ekleyebilir misin arka plan olacak
User prompt
duvarların texturunu wall olarak değiştirebilir misin
User prompt
saha kareleri için yeni texture oluştur
User prompt
duvarların texturunu wall olarak ayarla
User prompt
topuve tüm oyuncuların görünüşünü %75 büyüt
Code edit (1 edits merged)
Please save this source code
User prompt
Grid Knight Football
Initial prompt
## 1. Saha (Oyun Alanı) ve Koordinat Sistemi - **Saha**, bir ızgara (grid) sistemidir. Örneğin: 21 hücre genişliğinde (X), 31 hücre yüksekliğinde (Y). - Her hücre eşit büyüklüktedir (ör: 75x75 piksel). - Saha, ekranın ortasına yerleştirilir. Her objenin (oyuncu, top, duvar) pozisyonu grid koordinatları ile tutulur: `gridX` ve `gridY`. - Ekrandaki gerçek pozisyonlar, bu grid koordinatları üzerinden hesaplanır. --- ## 2. Oyuncular ve AI - **İki takım** vardır: Bir insan oyuncusu (player) ve bir yapay zeka (AI). - Her takımda birden fazla oyuncu olabilir (ör: 5'er kişi). - Her oyuncunun grid üzerinde bir pozisyonu vardır (`gridX`, `gridY`). - Oyuncular sırayla hamle yapar. Sıra kimdeyse sadece o takım hareket edebilir. --- ## 3. Hareket Sistemi - Oyuncular, satrançtaki "at" gibi (L şeklinde) hareket eder. Yani bir hamlede 8 farklı pozisyona gidebilirler. - Hareket edilecek pozisyonun: - Saha sınırları içinde olması, - Başka bir oyuncu veya duvar tarafından işgal edilmemesi gerekir. - Hareketler, dokunmatik/mouse ile seçilen oyuncu üzerinden ve sadece geçerli hamleler için gösterilir. --- ## 4. Top ve Şut Mekaniği - Top, gridde bir hücrede bulunur ve bir oyuncunun pozisyonunda olabilir. - Oyuncu topa sahipken, belirli bir yönde (ör: yukarıya veya aşağıya) "şut" atabilir. - Şut, topu 5 hücreye kadar düz bir çizgide ilerletir. Ancak yol üzerinde engel (duvar veya başka oyuncu) olmamalı. - Şutun geçerli olup olmadığı, matematiksel olarak yolun her hücresinin boş olup olmadığına bakılarak kontrol edilir. --- ## 5. Duvarlar (Engeller) - Duvarlar, Tetris blokları gibi farklı şekillerde (O, I, L, J, S, Z, T) oluşturulur. - Her duvar, gridde 4 hücreyi kaplar. - Duvarlar rastgele bir pozisyonda ve rastgele bir şekille oluşturulur. Ancak: - Kale (goal) hücrelerine, oyuncu/top üstüne veya başka bir duvarın üstüne gelmemesi gerekir. - Duvarlar, hareketi ve şutları engeller. --- ## 6. Oyun Akışı ve Trigger (Tetikleyici) Mantığı - Oyun, sırayla oynanır: Önce oyuncu, sonra AI hamle yapar. - Her hamlede şu kontroller yapılır: - Oyuncu/AI hareket ettiğinde, yeni pozisyonun geçerli olup olmadığı kontrol edilir. - Oyuncu/AI topa sahip olup olmadığı kontrol edilir. - Topun veya oyuncunun kale hücresine ulaşıp ulaşmadığı kontrol edilir (gol olup olmadığı). - Şut atıldığında, topun yolunun boş olup olmadığı kontrol edilir. - Bir oyuncu/AI gol atarsa, skor güncellenir ve pozisyonlar sıfırlanır. - Her hamle sonunda, yeni bir duvar eklenip eklenmeyeceğine bakılır. ### Trigger (Tetikleyici) Yapıları - **Bir pozisyona ulaşınca tetikleme:** Her objenin önceki (`lastX`, `lastY`) ve şimdiki (`x`, `y`) pozisyonu tutulur. Örneğin: ```js if (self.lastY <= GOAL_Y && self.y > GOAL_Y) { // Gol çizgisine ulaşıldı } ``` - **Bir objeyle çarpışınca tetikleme:** Her objede `lastWasIntersecting` tutulur. ```js if (self.lastWasIntersecting === false && self.intersects(goal)) { // Gol oldu } ``` - **Bir yolun boş olup olmadığını kontrol etme:** Şut atarken, topun gideceği yolun her hücresinde engel olup olmadığına bakılır. --- ## 7. Matematiksel ve Mantıksal İşlemler - **Grid sınırları:** `x >= 0 && x < GRID_W && y >= 0 && y < GRID_H` - **Bir hücrenin dolu olup olmadığını kontrol etme:** - Oyuncular, AI'lar ve duvarlar için ayrı ayrı kontrol edilir. - **Hareket seçenekleri:** - At (knight) hareketleri için 8 olası hamle hesaplanır ve geçerli olanlar filtrelenir. - **Şut yolu:** - Topun gideceği yol, bir dizi hücre olarak hesaplanır ve her biri için engel kontrolü yapılır. --- ## 8. Oyun Sonu ve Reset - Bir takım belirlenen sayıda gol atınca oyun biter. - Oyun motoru (LK), oyunu otomatik olarak resetler ve tüm değişkenler baştan oluşturulur. --- ## 9. Özet - Her şey grid tabanlıdır. - Oyuncular ve AI sırayla oynar. - Hareketler ve şutlar, matematiksel olarak geçerli olup olmadığına göre tetiklenir. - Duvarlar, hareket ve şutları engeller. - Oyun akışı, trigger mantığı ve kontrollerle yönetilir.
/**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 });
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});