User prompt
Faruk yerine Celil yazsın
User prompt
Arka plan assets olsun
User prompt
deste kart boyutunda olsun
User prompt
sağ üste kart destesi olsun
User prompt
Para $200 az olursa oyun biter
User prompt
Bahis seçin yerine Choose Bet yaz , NEW GAME yerine Next Round yaz
User prompt
Player'in parası biterse kaybeder eğer kasanın parası biterse oyun kazanılır.Her iki durumdada oyun biter.
User prompt
Kaybedersek bahis kadar paramız azalsın eğer kazanırsak bahis kadar paramız artsınv
User prompt
Bahisler tur başlamadan seçilsin ve 200$ ,500$ ve 1000$ olsun.
User prompt
Kasanın parası 30000$ olsun
User prompt
New game yerine para bitince yeni oyun başlasın
User prompt
Bütün oyuncuların 10000$ olsun. Dolarlar kartların altında yazsın.
User prompt
1. NPC nin Faruk ,2. NPC nin adı Sampuan olsun
User prompt
NPC ler yanımızda dursun
User prompt
2 tanede yanımızda NPC player olsun
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'fill')' in or related to this line: 'cardText.style.fill = "#ff0000";' Line Number: 100
Code edit (1 edits merged)
Please save this source code
User prompt
Blackjack Master
Initial prompt
blackjack
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Button = Container.expand(function (text, color) {
var self = Container.call(this);
var buttonGraphics = self.attachAsset(color === 0x228B22 ? 'hitButton' : color === 0xDC143C ? 'standButton' : 'newGameButton', {
anchorX: 0.5,
anchorY: 0.5
});
var buttonText = new Text2(text, {
size: 36,
fill: 0xFFFFFF
});
buttonText.anchor.set(0.5, 0.5);
self.addChild(buttonText);
self.enabled = true;
self.setEnabled = function (enabled) {
self.enabled = enabled;
buttonGraphics.alpha = enabled ? 1.0 : 0.5;
buttonText.alpha = enabled ? 1.0 : 0.5;
};
self.down = function (x, y, obj) {
if (!self.enabled) return;
if (text === 'HIT') {
playerHit();
} else if (text === 'STAND') {
playerStand();
} else if (text === 'NEW GAME') {
startNewGame();
}
};
return self;
});
var Card = Container.expand(function (suit, value) {
var self = Container.call(this);
self.suit = suit;
self.value = value;
self.faceUp = false;
var cardGraphics = self.attachAsset('card', {
anchorX: 0.5,
anchorY: 0.5
});
var cardBack = self.attachAsset('cardBack', {
anchorX: 0.5,
anchorY: 0.5
});
// Create card text
var cardText = new Text2('', {
size: 40,
fill: 0x000000
});
cardText.anchor.set(0.5, 0.5);
self.addChild(cardText);
self.flip = function () {
self.faceUp = true;
cardBack.visible = false;
cardGraphics.visible = true;
cardText.visible = true;
var displayValue = self.value;
if (displayValue === 1) displayValue = 'A';else if (displayValue === 11) displayValue = 'J';else if (displayValue === 12) displayValue = 'Q';else if (displayValue === 13) displayValue = 'K';
var suitSymbol = '';
if (self.suit === 'hearts') suitSymbol = '♥';else if (self.suit === 'diamonds') suitSymbol = '♦';else if (self.suit === 'clubs') suitSymbol = '♣';else if (self.suit === 'spades') suitSymbol = '♠';
cardText.setText(displayValue + '\n' + suitSymbol);
if (self.suit === 'hearts' || self.suit === 'diamonds') {
cardText.fill = 0xff0000;
}
LK.getSound('cardFlip').play();
};
self.getValue = function () {
if (self.value >= 10) return 10;
return self.value;
};
// Initialize card face down
cardBack.visible = true;
cardGraphics.visible = false;
cardText.visible = false;
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x0F5132
});
/****
* Game Code
****/
var suits = ['hearts', 'diamonds', 'clubs', 'spades'];
var deck = [];
var playerCards = [];
var dealerCards = [];
var npc1Cards = [];
var npc2Cards = [];
var gameState = 'betting'; // 'betting', 'playing', 'dealerTurn', 'gameOver'
var playerScore = 0;
var dealerScore = 0;
var npc1Score = 0;
var npc2Score = 0;
var wins = 0;
var losses = 0;
// UI Elements
var playerScoreText = new Text2('Player: 0', {
size: 48,
fill: 0xFFFFFF
});
playerScoreText.anchor.set(0.5, 0);
playerScoreText.x = 1024;
playerScoreText.y = 1800;
game.addChild(playerScoreText);
var dealerScoreText = new Text2('Dealer: ?', {
size: 48,
fill: 0xFFFFFF
});
dealerScoreText.anchor.set(0.5, 0);
dealerScoreText.x = 1024;
dealerScoreText.y = 500;
game.addChild(dealerScoreText);
var gameResultText = new Text2('', {
size: 60,
fill: 0xFFFF00
});
gameResultText.anchor.set(0.5, 0.5);
gameResultText.x = 1024;
gameResultText.y = 1366;
game.addChild(gameResultText);
var winsText = new Text2('Wins: 0', {
size: 36,
fill: 0xFFFFFF
});
winsText.anchor.set(0, 0);
winsText.x = 150;
winsText.y = 150;
game.addChild(winsText);
var lossesText = new Text2('Losses: 0', {
size: 36,
fill: 0xFFFFFF
});
lossesText.anchor.set(0, 0);
lossesText.x = 150;
lossesText.y = 200;
game.addChild(lossesText);
var npc1ScoreText = new Text2('Faruk: 0', {
size: 36,
fill: 0xFFFFFF
});
npc1ScoreText.anchor.set(0.5, 0);
npc1ScoreText.x = 300;
npc1ScoreText.y = 1000;
game.addChild(npc1ScoreText);
var npc2ScoreText = new Text2('Sampuan: 0', {
size: 36,
fill: 0xFFFFFF
});
npc2ScoreText.anchor.set(0.5, 0);
npc2ScoreText.x = 1700;
npc2ScoreText.y = 1000;
game.addChild(npc2ScoreText);
// Buttons
var hitButton = game.addChild(new Button('HIT', 0x228B22));
hitButton.x = 800;
hitButton.y = 2200;
var standButton = game.addChild(new Button('STAND', 0xDC143C));
standButton.x = 1200;
standButton.y = 2200;
var newGameButton = game.addChild(new Button('NEW GAME', 0x4169E1));
newGameButton.x = 1024;
newGameButton.y = 2400;
function createDeck() {
deck = [];
for (var suitIndex = 0; suitIndex < suits.length; suitIndex++) {
var suit = suits[suitIndex];
for (var value = 1; value <= 13; value++) {
deck.push({
suit: suit,
value: value
});
}
}
// Shuffle deck
for (var i = deck.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = deck[i];
deck[i] = deck[j];
deck[j] = temp;
}
}
function dealCard(target) {
if (deck.length === 0) createDeck();
var cardData = deck.pop();
var card = new Card(cardData.suit, cardData.value);
game.addChild(card);
if (target === 'player') {
playerCards.push(card);
card.x = 400 + (playerCards.length - 1) * 200;
card.y = 2000;
card.flip();
} else if (target === 'npc1') {
npc1Cards.push(card);
card.x = 200 + (npc1Cards.length - 1) * 120;
card.y = 1200;
card.flip();
} else if (target === 'npc2') {
npc2Cards.push(card);
card.x = 1600 + (npc2Cards.length - 1) * 120;
card.y = 1200;
card.flip();
} else {
dealerCards.push(card);
card.x = 400 + (dealerCards.length - 1) * 200;
card.y = 800;
// Only flip first dealer card
if (dealerCards.length === 1) {
card.flip();
}
}
return card;
}
function calculateScore(cards, showAll) {
var score = 0;
var aces = 0;
for (var i = 0; i < cards.length; i++) {
var card = cards[i];
if (!showAll && i > 0 && cards === dealerCards && !card.faceUp) {
continue; // Skip face-down dealer cards
}
var value = card.getValue();
if (card.value === 1) {
aces++;
score += 11;
} else {
score += value;
}
}
// Adjust for aces
while (score > 21 && aces > 0) {
score -= 10;
aces--;
}
return score;
}
function updateScores() {
playerScore = calculateScore(playerCards, true);
dealerScore = calculateScore(dealerCards, gameState === 'dealerTurn' || gameState === 'gameOver');
npc1Score = calculateScore(npc1Cards, true);
npc2Score = calculateScore(npc2Cards, true);
playerScoreText.setText('Player: ' + playerScore);
npc1ScoreText.setText('Faruk: ' + npc1Score);
npc2ScoreText.setText('Sampuan: ' + npc2Score);
if (gameState === 'dealerTurn' || gameState === 'gameOver') {
dealerScoreText.setText('Dealer: ' + dealerScore);
} else {
dealerScoreText.setText('Dealer: ?');
}
}
function npcDecision(npcCards, npcTarget) {
var score = calculateScore(npcCards, true);
// Basic AI: hit if score is 16 or less, stand if 17 or more
if (score < 17) {
dealCard(npcTarget);
updateScores();
} else {
// NPC stands
return 'stand';
}
return 'hit';
}
function processNPCTurns() {
// NPC 1 turn
if (npc1Score < 21) {
npcDecision(npc1Cards, 'npc1');
}
// NPC 2 turn
if (npc2Score < 21) {
npcDecision(npc2Cards, 'npc2');
}
}
function playerHit() {
if (gameState !== 'playing') return;
dealCard('player');
updateScores();
// Process NPC turns after player action
processNPCTurns();
updateScores();
if (playerScore > 21) {
// Player busts
gameState = 'gameOver';
gameResultText.setText('BUST! You lose!');
losses++;
lossesText.setText('Losses: ' + losses);
hitButton.setEnabled(false);
standButton.setEnabled(false);
LK.getSound('lose').play();
// Reveal dealer's hidden card
if (dealerCards.length > 1 && !dealerCards[1].faceUp) {
dealerCards[1].flip();
}
updateScores();
}
}
function playerStand() {
if (gameState !== 'playing') return;
gameState = 'dealerTurn';
hitButton.setEnabled(false);
standButton.setEnabled(false);
// Process final NPC turns
processNPCTurns();
updateScores();
// Reveal dealer's hidden card
if (dealerCards.length > 1 && !dealerCards[1].faceUp) {
dealerCards[1].flip();
}
dealerPlay();
}
function dealerPlay() {
updateScores();
if (dealerScore < 17) {
// Dealer hits
LK.setTimeout(function () {
dealCard(false);
dealerCards[dealerCards.length - 1].flip();
dealerPlay();
}, 1000);
} else {
// Dealer stands
endGame();
}
}
function endGame() {
gameState = 'gameOver';
updateScores();
var playerBlackjack = playerCards.length === 2 && playerScore === 21;
var dealerBlackjack = dealerCards.length === 2 && dealerScore === 21;
if (playerScore > 21) {
gameResultText.setText('BUST! You lose!');
losses++;
LK.getSound('lose').play();
} else if (dealerScore > 21) {
gameResultText.setText('Dealer busts! You win!');
wins++;
LK.getSound('win').play();
} else if (playerBlackjack && !dealerBlackjack) {
gameResultText.setText('BLACKJACK! You win!');
wins++;
LK.getSound('win').play();
} else if (dealerBlackjack && !playerBlackjack) {
gameResultText.setText('Dealer blackjack! You lose!');
losses++;
LK.getSound('lose').play();
} else if (playerScore > dealerScore) {
gameResultText.setText('You win!');
wins++;
LK.getSound('win').play();
} else if (dealerScore > playerScore) {
gameResultText.setText('You lose!');
losses++;
LK.getSound('lose').play();
} else {
gameResultText.setText('Push! It\'s a tie!');
}
winsText.setText('Wins: ' + wins);
lossesText.setText('Losses: ' + losses);
}
function startNewGame() {
// Clear previous cards
for (var i = 0; i < playerCards.length; i++) {
playerCards[i].destroy();
}
for (var i = 0; i < dealerCards.length; i++) {
dealerCards[i].destroy();
}
for (var i = 0; i < npc1Cards.length; i++) {
npc1Cards[i].destroy();
}
for (var i = 0; i < npc2Cards.length; i++) {
npc2Cards[i].destroy();
}
playerCards = [];
dealerCards = [];
npc1Cards = [];
npc2Cards = [];
gameState = 'playing';
gameResultText.setText('');
hitButton.setEnabled(true);
standButton.setEnabled(true);
// Deal initial cards
dealCard('player'); // Player card 1
dealCard('dealer'); // Dealer card 1
dealCard('player'); // Player card 2
dealCard('dealer'); // Dealer card 2 (face down)
dealCard('npc1'); // NPC 1 card 1
dealCard('npc1'); // NPC 1 card 2
dealCard('npc2'); // NPC 2 card 1
dealCard('npc2'); // NPC 2 card 2
updateScores();
// Check for blackjack
if (playerScore === 21) {
playerStand();
}
}
// Initialize game
createDeck();
startNewGame();
game.update = function () {
// Game loop - most logic is event-driven
}; ===================================================================
--- original.js
+++ change.js
@@ -145,17 +145,17 @@
lossesText.anchor.set(0, 0);
lossesText.x = 150;
lossesText.y = 200;
game.addChild(lossesText);
-var npc1ScoreText = new Text2('NPC 1: 0', {
+var npc1ScoreText = new Text2('Faruk: 0', {
size: 36,
fill: 0xFFFFFF
});
npc1ScoreText.anchor.set(0.5, 0);
npc1ScoreText.x = 300;
npc1ScoreText.y = 1000;
game.addChild(npc1ScoreText);
-var npc2ScoreText = new Text2('NPC 2: 0', {
+var npc2ScoreText = new Text2('Sampuan: 0', {
size: 36,
fill: 0xFFFFFF
});
npc2ScoreText.anchor.set(0.5, 0);
@@ -250,10 +250,10 @@
dealerScore = calculateScore(dealerCards, gameState === 'dealerTurn' || gameState === 'gameOver');
npc1Score = calculateScore(npc1Cards, true);
npc2Score = calculateScore(npc2Cards, true);
playerScoreText.setText('Player: ' + playerScore);
- npc1ScoreText.setText('NPC 1: ' + npc1Score);
- npc2ScoreText.setText('NPC 2: ' + npc2Score);
+ npc1ScoreText.setText('Faruk: ' + npc1Score);
+ npc2ScoreText.setText('Sampuan: ' + npc2Score);
if (gameState === 'dealerTurn' || gameState === 'gameOver') {
dealerScoreText.setText('Dealer: ' + dealerScore);
} else {
dealerScoreText.setText('Dealer: ?');