Market'e dön
Oyunlar

Numex Candy

Açık Kaynak · Ücretsiz · Numex AI üretimi

Candy Crush tarzı, bölümlü şeker eşleştirme oyunu. Numex AI tarafından geliştirildi.

Ekran Görüntüleri

Numex Candy ekran görüntüsü 1

Doküman (README)

🍬 Numex Candy

Candy Crush tarzı, 20 bölümlük, profesyonel şeker eşleştirme (match-3) oyunu. Tarayıcıda çalışır; oyun mantığı sunucu tarafında test edilebilir saf modüllere ayrılmıştır.

Numex Codex tarafından oluşturulmuştur.


Özellikler

| Özellik | Açıklama | | --- | --- | | 🎯 20 bölüm | Kademeli zorluk eğrisi, her bölümde farklı tahta düzeni | | 🎨 Saf CSS şekerler | Emoji yok; 6 tip, 3 şekil, gradyanlı gövde | | ✨ Özel şekerler | 4'lü → çizgili, 5'li → renkli, L/T → bomba | | 🔗 Zincirleme | Art arda patlamalar x1.5 → x2 → x2.5 çarpanla ödüllenir | | 🔨 Güçlendiriciler | Çekiç, Karıştır, Bomba — bölüm zorluğuna göre sayı artar | | 🧊 Jel hedefleri | Bazı bölümlerde zemin temizleme görevi | | ⭐ Yıldız sistemi | Her bölümde 3 yıldız eşiği | | 🏆 Skor tablosu | Bölüm başına en iyi 10 skor (sunucu tarafı) | | 💾 İlerleme kaydı | localStorage ile bölüm kilidi ve yıldızlar saklanır | | 🔊 Ses | WebAudio ile sentezlenmiş efektler (harici dosya yok) | | 📱 Responsive | Mobil öncelikli; dokunma ve sürükleme desteği |


Kurulum

npm install
npm start

Ardından tarayıcıda: http://localhost:4321

Geliştirme (dosya değişince otomatik yeniden başlatma):

npm run dev

Testler:

npm test

Mimari

┌──────────────────────────────────────────────────────────┐
│                        Tarayıcı                          │
│  public/index.html  →  public/css/style.css              │
│  public/js/oyun.js  →  arayüz denetleyicisi              │
│         │                                                │
│         └── src/engine/*  (motoru doğrudan import eder)  │
└────────────────────────┬─────────────────────────────────┘
                         │ fetch /api/...
┌────────────────────────▼─────────────────────────────────┐
│                    Node + Express                        │
│  server/index.js       → uçlar + statik servis           │
│  server/levels.js      → 20 bölüm tanımı                 │
│  server/leaderboard.js → skor tablosu (bellek içi)       │
└──────────────────────────────────────────────────────────┘

Motor DOM'dan tamamen bağımsızdır — bu sayede hem tarayıcıda hem node --test altında aynı kod doğrulanabilir.

Klasör yapısı

numex-candy/
├── package.json
├── README.md
├── server/
│   ├── index.js          Express sunucusu ve API uçları
│   ├── levels.js         20 bölüm tanımı + tahta üreticileri
│   └── leaderboard.js    skor tablosu deposu
├── src/
│   └── engine/
│       ├── board.js      tahta temsili, dolum, takas, hamle kontrolü
│       ├── match.js      eşleşme bulma, özel şeker kararı, yayılım
│       ├── cascade.js    yerçekimi, zincirleme döngüsü
│       └── score.js      puanlama, yıldız, booster, hedef durumu
├── public/
│   ├── index.html        arayüz iskeleti
│   ├── css/style.css     tema ve şeker çizimleri
│   └── js/oyun.js        oyun denetleyicisi
└── test/
    └── engine.test.js    motor testleri (20 test)

API

| Metot | Uç | Açıklama | | --- | --- | --- | | GET | /api/saglik | Sunucu sağlık kontrolü | | GET | /api/sekerler | Şeker tipi listesi | | GET | /api/levels | Tüm bölümlerin meta bilgisi | | GET | /api/levels/:id | Tek bölüm (meta + tahta düzeni) | | GET | /api/levels/:id/board | Bölümün başlangıç tahtası | | GET | /api/leaderboard/:id | Bölüm skor tablosu | | POST | /api/leaderboard | Skor kaydet |

POST /api/leaderboard gövdesi:

{ "levelId": 1, "isim": "Oyuncu", "skor": 4250, "yildiz": 2 }

Oyun kuralları

  • 3'lü eşleşme → şekerler patlar, temel puan
  • 4'lü eşleşme → çizgili şeker doğar (satır veya sütun temizler)
  • 5'li eşleşme → renkli şeker doğar (tahtadaki tüm aynı renkleri siler)
  • L / T şekli → bomba doğar (3x3 alanı temizler)
  • Zincirleme patlama → ardışık turlar çarpanla çarpılır
  • Geçersiz takas hamle harcamaz (takas geri alınır)

Bölüm hedef tipleri

| Tip | Anlamı | | --- | --- | | score | Belirtilen puana ulaş | | collect | Belirtilen renkten N adet topla | | jel | Tahtadaki tüm jelleri kır |


Kontroller

| Girdi | İşlev | | --- | --- | | Tıkla → tıkla | İki komşu şekeri takas et | | Sürükle | Şekeri yönüne doğru takas et | | Esc | Seçimi / aktif güçlendiriciyi iptal et | | Ctrl + R | Bölümü yeniden başlat |


Teknolojiler

  • Node.js ≥ 18 (ES Modules)
  • Express 4 — sunucu ve API
  • Saf JavaScript — oyun motoru (bağımlılık yok)
  • Saf CSS — şeker çizimleri, animasyonlar (harici kütüphane yok)
  • WebAudio API — sentezlenmiş ses efektleri
  • node:test — birim testleri

Lisans

MIT — Numex AI Bilişim Teknolojileri