BATAK

<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8"><title>Batak (Koz Maça)</title>
<style>
  body { font-family: 'Segoe UI', sans-serif; background: #0f172a; color: #fff; margin:0; height: 100vh; display: flex; overflow: hidden; }
  .screen { display: none; width: 100%; height: 100%; padding: 20px; box-sizing: border-box; } .active { display: flex; }
  #menu { flex-direction: column; justify-content: center; align-items: center; background: #1e293b; }
  .btn { padding: 15px 30px; font-size: 20px; font-weight: bold; background: #38bdf8; color: #0f172a; border: none; border-radius: 10px; cursor: pointer; } .btn:hover{background:#0ea5e9;}
  #game { gap: 20px; } #board { flex: 3; position: relative; background: radial-gradient(circle, #0f766e, #064e3b); border-radius: 20px; }
  #panel { flex: 1; background: #1e293b; border-radius: 20px; padding: 20px; display: flex; flex-direction: column; }
  .area { position: absolute; display: flex; justify-content: center; width: 100%; gap:-50px; }
  #p-top { top: 20px; } #p-left { left: -250px; top: 50%; transform: rotate(90deg) translateX(-50%); width: 600px; } #p-right { right: -250px; top: 50%; transform: rotate(-90deg) translateX(50%); width: 600px; } #p-bot { bottom: 20px; gap:-35px; }
  .card { width: 70px; height: 105px; background: #fff; border-radius: 8px; position: relative; display: flex; flex-direction: column; justify-content: space-between; padding: 5px; font-weight: bold; font-size: 16px; user-select: none; box-shadow: -2px 0 8px rgba(0,0,0,0.4); transition: 0.2s; z-index:1; }
  .red { color: #ef4444; } .black { color: #0f172a; } .hidden { background: repeating-linear-gradient(45deg, #1e3a8a, #1e40af 10px); border: 2px solid #fff; }
  .playable:hover { transform: translateY(-20px); cursor: pointer; z-index: 50 !important; }
  #table { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 200px; height: 200px; }
  .t-card { position: absolute; } .name { position: absolute; background: rgba(0,0,0,0.8); padding: 5px 10px; border-radius: 15px; font-size: 12px; z-index: 100; border: 1px solid #38bdf8; }
  .log-box { flex-grow: 1; background: #0f172a; padding: 10px; overflow-y: auto; border-radius: 10px; margin-top: 15px; font-size: 13px; } .log { margin-bottom: 5px; }
  #bid-panel { background: #334155; padding: 10px; border-radius: 10px; margin-top: 10px; text-align: center; display: none; }
  .bbtn { margin: 2px; width: 30px; height: 30px; cursor:pointer; background:#1e293b; color:#fff; border:1px solid #38bdf8; border-radius:5px;} .bbtn:hover{background:#38bdf8; color:#000;}
</style>
</head>
<body>
<div id="menu" class="screen active">
  <h1 style="font-size:3rem; color:#fbbf24;">BATAK (Koz Maça)</h1>
  <button class="btn" onclick="start()">Oyuna Başla</button>
</div>
<div id="game" class="screen">
  <div id="board">
    <div id="p-top" class="area"><div class="name" style="top:-25px;">Cemil Bey</div></div>
    <div id="p-left" class="area"><div class="name" style="top:-25px;">Elif Hanım</div></div>
    <div id="p-right" class="area"><div class="name" style="top:-25px;">Kenan Bey</div></div>
    <div id="p-bot" class="area"><div class="name" style="bottom:-25px;">Siz</div></div>
    <div id="table"></div>
  </div>
  <div id="panel">
    <div id="scores" style="font-size: 13px; font-weight: bold; line-height: 1.6;"></div>
    <div id="bid-panel"><div>Kaç alırsınız?</div><div id="bbtns"></div></div>
    <div id="logs" class="log-box"></div>
  </div>
</div>
<script>
  const S=['♠','♥','♦','♣'], V=['2','3','4','5','6','7','8','9','10','J','Q','K','A'], R={'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,'10':10,'J':11,'Q':12,'K':13,'A':14};
  let deck=[], table=[], players=[], turn=0, phase='bid', bids=0, suit=null, tricks=0;
  const bots = [
    {id:'elif', name:'Elif Hanım', cls:'color:#c084fc;', b:["Mevcut elime bakarak nezaketen [B] el almayı hedefliyorum."], p:["Zarif bir hamle, [K]."], w:["Teşekkürler, bu eli ben alıyorum."]},
    {id:'cemil', name:'Cemil Bey', cls:'color:#60a5fa;', b:["Matematiksel ihtimaller [B] el alacağımı gösteriyor."], p:["Koz analizime uygun olarak [K] çıkıyorum."], w:["Hesaplamam doğru, mülkiyet bende."]},
    {id:'kenan', name:'Kenan Bey', cls:'color:#fb923c;', b:["Net [B] el bende."], p:["Kararım [K]."], w:["Aldım masayı."]}
  ];
  function log(txt){ document.getElementById('logs').innerHTML+=`<div class="log">${txt}</div>`; document.getElementById('logs').scrollTop=9999; }
  function start(){ document.getElementById('menu').classList.remove('active'); document.getElementById('game').classList.add('active'); players=[{name:'Siz', h:[], bid:0, tk:0, s:0}]; bots.forEach(b=>players.push({name:b.name, h:[], bid:0, tk:0, s:0, txt:b})); deal(); }
  function deal(){ deck=[]; S.forEach(s=>V.forEach(v=>deck.push({s,v,r:s==='♥'||s==='♦',rk:R[v]}))); deck.sort(()=>Math.random()-0.5); players.forEach(p=>{p.h=[]; p.bid=0; p.tk=0; for(let i=0;i<13;i++)p.h.push(deck.pop()); p.h.sort((a,b)=>a.s===b.s?b.rk-a.rk:S.indexOf(a.s)-S.indexOf(b.s));}); phase='bid'; bids=0; turn=0; suit=null; table=[]; tricks=0; log("<i style='color:#4ade80;'>Kartlar dağıtıldı. Koz Maça.</i>"); updateUI(); procBid(); }
  function render(c, hid, play, i){ if(hid) return `<div class="card hidden"></div>`; let o=(phase==='play'&&turn===0&&!play)?'opacity:0.5;':''; return `<div class="card ${c.r?'red':'black'} ${play?'playable':''}" ${play?`onclick="playC(${i})"`:''} style="${o}"><div style="line-height:1;">${c.v}<br>${c.s}</div><div style="font-size:24px;text-align:center;flex-grow:1;display:flex;align-items:center;justify-content:center;">${c.s}</div><div style="line-height:1;text-align:right;transform:rotate(180deg);">${c.v}<br>${c.s}</div></div>`; }
  function updateUI(){
    let tH=''; table.forEach(t=>{ let d=`left:50%;top:50%;transform:translate(-50%,-50%);`; if(t.pi===0)d=`bottom:10px;left:50%;transform:translateX(-50%);`; if(t.pi===1)d=`left:10px;top:50%;transform:translateY(-50%) rotate(90deg);`; if(t.pi===2)d=`top:10px;left:50%;transform:translateX(-50%);`; if(t.pi===3)d=`right:10px;top:50%;transform:translateY(-50%) rotate(-90deg);`; tH+=`<div class="t-card" style="${d}">${render(t.c)}</div>`; }); document.getElementById('table').innerHTML=tH;
    let valid = (c) => { if(phase!=='play'||turn!==0)return false; if(!suit)return true; if(c.s===suit)return true; return !players[0].h.some(x=>x.s===suit); };
    document.getElementById('p-bot').innerHTML = '<div class="name" style="bottom:-25px;">Siz</div>' + players[0].h.map((c,i)=>render(c,false,valid(c),i)).join('');
    ['left','top','right'].forEach((p,i)=>{ document.getElementById(`p-${p}`).innerHTML = `<div class="name" style="top:-25px;">${players[i+1].name}</div>` + players[i+1].h.map(()=>render(null,true)).join(''); });
    let sH=''; players.forEach(p=>sH+=`<div>${p.name}: İhale ${p.bid} | Aldığı ${p.tk} | <b>Puan: ${p.s}</b></div>`); document.getElementById('scores').innerHTML=sH;
  }
  function procBid(){
    if(bids===4){ phase='play'; turn=0; log("<i style='color:#4ade80;'>Oyun Başladı!</i>"); updateUI(); return; }
    if(turn===0){ let h=''; for(let i=1;i<=13;i++)h+=`<button class="bbtn" onclick="uBid(${i})">${i}</button>`; document.getElementById('bbtns').innerHTML=h; document.getElementById('bid-panel').style.display='block'; }
    else setTimeout(bBid, 1000);
  }
  function uBid(v){ players[0].bid=v; log(`Siz: İhale ${v}`); document.getElementById('bid-panel').style.display='none'; bids++; turn=(turn+1)%4; updateUI(); procBid(); }
  function bBid(){ let p=players[turn], b=p.h.filter(c=>c.s==='♠').length + p.h.filter(c=>c.rk>=13&&c.s!=='♠').length; b=Math.max(1,Math.min(13,b)); p.bid=b; log(`<b style="${p.txt.cls}">${p.name}:</b> "${p.txt.b[0].replace('[B]',b)}"`); bids++; turn=(turn+1)%4; updateUI(); procBid(); }
  function playC(i){ let c=players[0].h.splice(i,1)[0]; log(`Siz: ${c.v}${c.s} attınız.`); procC(0,c); }
  function bPlay(){
    let p=players[turn], v=suit?p.h.filter(c=>c.s===suit):p.h; if(v.length===0)v=p.h;
    let ci=p.h.indexOf(v[Math.floor(Math.random()*v.length)]), c=p.h.splice(ci,1)[0];
    let ct=`<span style="color:${c.r?'#ef4444':'white'};">${c.v}${c.s}</span>`; log(`<b style="${p.txt.cls}">${p.name}:</b> "${p.txt.p[0].replace('[K]',ct)}"`); procC(turn,c);
  }
  function procC(pi, c){
    if(table.length===0)suit=c.s; table.push({c:c, pi:pi}); updateUI();
    if(table.length===4){ phase='wait'; setTimeout(resolve, 1500); } else { turn=(turn+1)%4; if(turn!==0)setTimeout(bPlay,1000); }
  }
  function resolve(){
    let w=table[0];
    table.forEach(t=>{ let c=t.c, wc=w.c; if(c.s==='♠'&&wc.s!=='♠')w=t; else if(c.s==='♠'&&wc.s==='♠'&&c.rk>wc.rk)w=t; else if(c.s===suit&&wc.s===suit&&c.rk>wc.rk)w=t; });
    let wp=players[w.pi]; wp.tk++;
    if(w.pi!==0) log(`<b style="${wp.txt.cls}">${wp.name}:</b> "${wp.txt.w[0]}"`); else log("<i style='color:#4ade80;'>Eli Siz aldınız.</i>");
    table=[]; suit=null; tricks++; updateUI();
    if(tricks===13){ players.forEach(p=>{ if(p.tk>=p.bid)p.s+=(p.bid*10)+(p.tk-p.bid); else p.s-=(p.bid*10); }); log("<hr><i style='color:#fbbf24;'>El Bitti. Yeni tur için sayfayı yenileyiniz.</i>"); updateUI(); }
    else { turn=w.pi; phase='play'; if(turn!==0)setTimeout(bPlay,1200); }
  }
</script>
</body>
</html>


POKER

<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8"><title>Texas Hold'em Poker</title>
<style>
  body { font-family: 'Segoe UI', sans-serif; background: #0f172a; color: #fff; margin:0; height: 100vh; display: flex; overflow: hidden; }
  .screen { display: none; width: 100%; height: 100%; padding: 20px; box-sizing: border-box; } .active { display: flex; }
  #menu { flex-direction: column; justify-content: center; align-items: center; background: #1e293b; }
  .btn { padding: 15px 30px; font-size: 20px; font-weight: bold; background: #38bdf8; color: #0f172a; border: none; border-radius: 10px; cursor: pointer; } .btn:hover{background:#0ea5e9;}
  #game { gap: 20px; } #board { flex: 3; position: relative; background: radial-gradient(ellipse at center, #0f766e, #064e3b); border-radius: 20px; border: 10px solid #3f2a14;}
  #panel { flex: 1; background: #1e293b; border-radius: 20px; padding: 20px; display: flex; flex-direction: column; }
  .area { position: absolute; display: flex; justify-content: center; width: 100%; gap:5px; }
  #p-top { top: 20px; } #p-left { left: -150px; top: 50%; transform: rotate(90deg) translateX(-50%); width: 400px; } #p-right { right: -150px; top: 50%; transform: rotate(-90deg) translateX(50%); width: 400px; } #p-bot { bottom: 20px; }
  .card { width: 60px; height: 90px; background: #fff; border-radius: 6px; position: relative; display: flex; flex-direction: column; justify-content: space-between; padding: 4px; font-weight: bold; font-size: 14px; user-select: none; box-shadow: 2px 2px 5px rgba(0,0,0,0.5); }
  .red { color: #ef4444; } .black { color: #0f172a; } .hidden { background: linear-gradient(45deg, #7f1d1d, #b91c1c); border: 2px solid #fff; }
  #table { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); display: flex; gap: 10px; }
  .name { position: absolute; background: rgba(0,0,0,0.8); padding: 5px 10px; border-radius: 10px; font-size: 12px; z-index: 10; border: 1px solid #fbbf24; }
  .log-box { flex-grow: 1; background: #0f172a; padding: 10px; overflow-y: auto; border-radius: 10px; margin-top: 15px; font-size: 13px; line-height:1.5; }
  #act-panel { display:none; background:#334155; padding:10px; border-radius:10px; text-align:center; margin-top:10px; }
</style>
</head>
<body>
<div id="menu" class="screen active">
  <h1 style="font-size:3rem; color:#fbbf24;">TEXAS HOLD'EM</h1>
  <button class="btn" onclick="start()">Masaya Otur</button>
</div>
<div id="game" class="screen">
  <div id="board">
    <div id="p-top" class="area"><div class="name" style="top:-25px;">Cemil Bey</div></div>
    <div id="p-left" class="area"><div class="name" style="top:-25px;">Elif Hanım</div></div>
    <div id="p-right" class="area"><div class="name" style="top:-25px;">Kenan Bey</div></div>
    <div id="p-bot" class="area"><div class="name" style="bottom:-25px;">Siz</div></div>
    <div id="table"></div>
    <div id="pot-display" style="position:absolute; top:40%; left:50%; transform:translateX(-50%); font-size:20px; font-weight:bold; color:#fbbf24; background:rgba(0,0,0,0.6); padding:5px 15px; border-radius:10px;">POT: $0</div>
  </div>
  <div id="panel">
    <div id="chips" style="font-size: 14px; font-weight: bold; line-height: 1.8;"></div>
    <div id="act-panel">
      <button class="btn" style="font-size:14px; padding:8px; background:#4ade80;" onclick="userAct('call')">Gör (Call)</button>
      <button class="btn" style="font-size:14px; padding:8px; background:#fbbf24;" onclick="userAct('raise')">Artır (Raise)</button>
      <button class="btn" style="font-size:14px; padding:8px; background:#ef4444;" onclick="userAct('fold')">Çekil (Fold)</button>
    </div>
    <div id="logs" class="log-box"></div>
  </div>
</div>
<script>
  const S=['♠','♥','♦','♣'], V=['2','3','4','5','6','7','8','9','10','J','Q','K','A'], R={'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,'10':10,'J':11,'Q':12,'K':13,'A':14};
  let deck=[], table=[], players=[], pot=0, state=0, turn=0, activeP=4; // state: 0=pre, 1=flop, 2=turn, 3=river
  const bots = [
    {id:'elif', name:'Elif Hanım', cls:'color:#c084fc;', a:["Kartlarımın zarafetine güvenerek bahsi görüyorum.", "Müsaadenizle pota dahil oluyorum."], f:["Şansımı zorlamadan zarafetle çekiliyorum."]},
    {id:'cemil', name:'Cemil Bey', cls:'color:#60a5fa;', a:["Pot oranları matematiksel olarak oyunda kalmamı destekliyor. Call.", "Rasyonel risk analizi ile devam ediyorum."], f:["Varyans negatif görünüyor, matematiksel olarak çekiliyorum."]},
    {id:'kenan', name:'Kenan Bey', cls:'color:#fb923c;', a:["Gördüm.", "Bende."], f:["Pas. Net."]}
  ];
  function log(txt){ document.getElementById('logs').innerHTML+=`<div style="margin-bottom:5px;">${txt}</div>`; document.getElementById('logs').scrollTop=9999; }
  function render(c, hid){ if(hid) return `<div class="card hidden"></div>`; return `<div class="card ${c.r?'red':'black'}"><div>${c.v}<br>${c.s}</div><div style="font-size:20px;text-align:center;">${c.s}</div><div style="text-align:right;transform:rotate(180deg);">${c.v}<br>${c.s}</div></div>`; }
  function start(){ document.getElementById('menu').classList.remove('active'); document.getElementById('game').classList.add('active'); players=[{name:'Siz', h:[], m:1000, act:true}]; bots.forEach(b=>players.push({name:b.name, h:[], m:1000, act:true, txt:b})); deal(); }
  function deal(){ deck=[]; S.forEach(s=>V.forEach(v=>deck.push({s,v,r:s==='♥'||s==='♦',rk:R[v]}))); deck.sort(()=>Math.random()-0.5); players.forEach(p=>{p.h=[deck.pop(), deck.pop()]; p.act=true;}); table=[]; pot=0; state=0; turn=0; activeP=4; log("<hr><i style='color:#4ade80;'>Yeni El Başladı. Kör bahisler alındı.</i>"); pot+=60; players.forEach(p=>p.m-=15); updateUI(); procTurn(); }
  function updateUI(){
    document.getElementById('table').innerHTML = table.map(c=>render(c,false)).join('');
    document.getElementById('p-bot').innerHTML = '<div class="name" style="bottom:-25px;">Siz</div>' + (players[0].act ? players[0].h.map(c=>render(c,false)).join('') : '<i>Çekildi</i>');
    ['left','top','right'].forEach((p,i)=>{ document.getElementById(`p-${p}`).innerHTML = `<div class="name" style="top:-25px;">${players[i+1].name}</div>` + (players[i+1].act ? [0,1].map(()=>render(null,true)).join('') : '<i>Çekildi</i>'); });
    let sH=''; players.forEach(p=>sH+=`<div style="${!p.act?'opacity:0.5':''}">${p.name}: $${p.m}</div>`); document.getElementById('chips').innerHTML=sH; document.getElementById('pot-display').innerText=`POT: $${pot}`;
  }
  function procTurn(){
    if(activeP===1){ evalWin(); return; }
    if(turn===4){ state++; turn=0; if(state===1)table.push(deck.pop(),deck.pop(),deck.pop()); else if(state===2||state===3)table.push(deck.pop()); if(state>3){evalWin();return;} updateUI(); procTurn(); return; }
    if(!players[turn].act){ turn++; procTurn(); return; }
    if(turn===0){ document.getElementById('act-panel').style.display='block'; } else setTimeout(bAct, 1200);
  }
  function userAct(a){ document.getElementById('act-panel').style.display='none'; if(a==='fold'){ players[0].act=false; activeP--; log("Siz: Çekildiniz (Fold)."); } else { let bet=a==='raise'?40:20; players[0].m-=bet; pot+=bet; log(`Siz: ${a==='raise'?'Artırdınız':'Gördünüz'} ($${bet}).`); } turn++; updateUI(); procTurn(); }
  function bAct(){
    let p=players[turn], act='call', bet=20;
    if(Math.random()<0.2){ act='fold'; p.act=false; activeP--; log(`<b style="${p.txt.cls}">${p.name}:</b> "${p.txt.f[0]}"`); }
    else { p.m-=bet; pot+=bet; log(`<b style="${p.txt.cls}">${p.name}:</b> "${p.txt.a[Math.floor(Math.random()*p.txt.a.length)]}"`); }
    turn++; updateUI(); procTurn();
  }
  // Basit Skorlayıcı
  function scoreHand(h, t){ let all=[...h,...t]; let maxRank=Math.max(...all.map(c=>c.rk)); let pair=false; for(let i=0;i<all.length;i++)for(let j=i+1;j<all.length;j++)if(all[i].v===all[j].v)pair=true; return pair ? 100+maxRank : maxRank; }
  function evalWin(){
    let best=-1, maxS=-1;
    players.forEach((p,i)=>{ if(p.act){ let s=scoreHand(p.h, table); if(s>maxS){maxS=s; best=i;} } });
    log(`<hr><i style='color:#fbbf24;'>Bitiş! Eli kazanan: ${players[best].name} (Pot: $${pot})</i>`);
    players[best].m+=pot;
    // Botların ellerini aç
    ['left','top','right'].forEach((pos,i)=>{ if(players[i+1].act) document.getElementById(`p-${pos}`).innerHTML=`<div class="name" style="top:-25px;">${players[i+1].name}</div>`+players[i+1].h.map(c=>render(c,false)).join(''); });
    setTimeout(deal, 5000);
  }
</script>
</body>
</html>
[B][/B]







Selamlar batak - poker oyunları kodları ilettim geliştirmek size kalmış iyi forumlar