尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Siberpunk temalı Pis Yedili kart oyunu (React + TypeScript + Vite)
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗React, TypeScript ve Vite ile yazılmış, siberpunk temalı, tamamen oynanabilir Pis Yedili kart oyunu. Arayüz tamamen Türkçedir; masaüstü ve mobilde çalışır.
Oyna: https://dizzycray.github.io/pis-yedili-neon/
(Aynı oyun https://pis-yedili-neon.vercel.app adresinde de yayında; ancak bazı internet
sağlayıcıları ve cihazlar *.vercel.app adreslerine erişemediği için asıl adres GitHub Pages.)
Gereksinim: Node.js 20 veya üstü (npm ile birlikte).
npm install
npm run dev
Tarayıcıda http://localhost:5173 adresini aç.
| Komut | Açıklama |
|---|---|
npm run dev | Geliştirme sunucusu |
npm test | Vitest testlerini çalıştırır |
npm run build | Tür denetimi (tsc -b) + üretim derlemesi (dist/) |
npm run preview | Derlenmiş sürümü yerelde sunar |
.github/workflows/deploy.yml, main dalına her push'ta testleri çalıştırır, derler ve GitHub Pages'e yayınlar.
pis-yedili).git init
git add .
git commit -m "Pis Yedili"
git branch -M main
git remote add origin https://github.com/<kullanıcı>/<repo>.git
git push -u origin main
https://<kullanıcı>.github.io/<repo>/Vite base yolu: vite.config.ts, base değerini VITE_BASE_PATH ortam değişkeninden alır.
İş akışı bunu otomatik olarak /<repo-adı>/ yapar; depo adını değiştirsen bile ayar gerekmez.
Yerel npm run build varsayılan olarak /pis-yedili/ kullanır; kökte sunmak için:
VITE_BASE_PATH=/ npm run build
Depo <kullanıcı>.github.io adlı bir kullanıcı sitesiyse iş akışındaki VITE_BASE_PATH değerini / yap.
resolveDeckCut() — src/game/deckCut.ts)Her turun başında deste karılır ve kapalı tutulur. Kesen oyuncu turdan tura döner (1. tur 1. oyuncu, 2. tur 2. oyuncu…).
Özel kural metni bazı noktaları açık bırakıyor. Kural sessizce değiştirilmedi; şu yorumlar seçildi:
| Belirsizlik | Seçilen yorum |
|---|---|
| "Elde kalan yarı" hangisi? | Kesmede kaldırılan üst yarı (deste dizisinde index 0..c-1). |
| "İlgili dizi" ne kadar uzun? | Alt karttan yukarı en fazla 7 kart (alınabilecek en büyük blok). |
| Hak koşulu | Bu 7 kartlık dizide en az bir J, A veya 7 olması. Yalnızca alt kartın özel olması şart değil. |
| Hangi kartlar alınır? | Alt karttan başlayıp yukarı giden ardışık k kart (4 ≤ k ≤ 7). Elde k'dan az kart varsa o sayı sunulmaz. |
| Diziyi kim görür? | Yalnızca kesen oyuncu (yerel modda "cihazı devret" ekranıyla korunur). AI kesimini diğerleri görmez. |
| Deste nasıl birleşir? | Normal kesme gibi: yeniDeste = alt yarı + elde kalan üst yarı. |
| 2–3 oyunculu oyunda rotasyon | 4 tur olduğundan kesme hakkı sırayla tekrar eder (2 kişide herkes 2 kez kesiyor). |
| Turu kim başlatır? | Kesen oyuncunun bir sonrakisi. |
Diğer kural boşlukları için yapılan seçimler:
Tüm süreler src/config/timing.ts içindeki TIMING nesnesinden değiştirilir:
| Ayar | Varsayılan | Anlamı |
|---|---|---|
botThinkMinMs / botThinkMaxMs | 2000 / 4000 | Bot hamlesinden önceki rastgele bekleme |
cardMoveMs | 420 | Kart oynama/çekme hareketi |
panelNoticeMs | 2200 | Oyuncu paneli bildirimi süresi |
roundEndDelayMs | 2000 | Tur sonunda sonuç ekranından önceki bekleme |
turnMs | 20000 | Hamle süresi |
oneCardWindowMs | 5000 | "TEK KART" deme süresi |
botOneCardDelayMs | 700 | Botun tek kart bildirimi gecikmesi |
Bot zamanlayıcısı her durum sürümü için tek bir hamle planlar; zamanlayıcı tetiklendiğinde durum değişmişse hamle yapılmaz, böylece aynı bot iki kez oynayamaz.
src/
game/ # Saf TypeScript, React'ten bağımsız
types.ts # Veri tipleri
deck.ts # Deste oluşturma, karıştırma, güvenli kart çekme
rules.ts # Hamle yasallığı, sıra, kesen/başlayan rotasyonu
scoring.ts # Kart/el değeri, tur puanları, kazanan
deckCut.ts # previewDeckCut() ve resolveDeckCut()
engine.ts # Durum makinesi: applyAction(state, action)
ai.ts # Yapay zekâ (yalnızca kendi eli + açık bilgi)
config/timing.ts # Merkezi süre ayarları
ui/seating.ts # Koltuk yerleşimi (alt/sol/üst/sağ) ve alt koltukta kimin eli görünür
hooks/useGame.ts # React durumu, bot zamanlayıcısı, 20 sn sayaç, tek kart süresi, duraklatma
hooks/usePanelNotices.ts # Motor olaylarından oyuncu paneli bildirimleri
components/ # Arayüz bileşenleri
styles.css # Siberpunk tema, animasyonlar, mobil düzen
tests/ # Vitest testleri
Motor değiştirilemez (immutable) durum döndürür; yasadışı her eylem IllegalActionError fırlatır.
Yapay zekâ buildAiView() ile yalnızca kendi elini, üst kartı, bekleyen cezayı ve rakiplerin kart sayılarını görür.
npm test şu alanları kapsar: Vale ile sembol seçimi, tek kart bildirimi ve +2 cezası, panel bildirim hedefleri,
koltuk düzeni, bot bekleme aralığı, deste bütünlüğü, geçerli hamleler, kart çekme, 7 cezası birikimi, As atlatma,
Vale bitişi, puanlama, deste kesme (yeniden kurma dahil), AI yasallığı (40 tam oyun simülasyonu, her adımda 52 kart denetimi),
tur tamamlama ve kilitlenme, biten deste.