OhMyGame
OhMyGame은 AI로 게임을 만들 수 있는 오픈소스 스튜디오로, 디자인·구축·플레이테스트·출판을 하나의 앱에서 모델 키와 함께 수행합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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.