From 1c2e6e5ca2e7bbb586f6415aadec5d31d559e4c8 Mon Sep 17 00:00:00 2001 From: Nico Date: Fri, 8 Aug 2025 13:57:05 +0200 Subject: [PATCH] drawing works sometimes --- blackjack.lua | 105 ++++++++++++++++++--------- cards_asset_pack/JustNormalCards.png | Bin 0 -> 40527 bytes karten.lua | 76 +++++++++---------- 3 files changed, 104 insertions(+), 77 deletions(-) create mode 100644 cards_asset_pack/JustNormalCards.png diff --git a/blackjack.lua b/blackjack.lua index decfd10..12c30e4 100644 --- a/blackjack.lua +++ b/blackjack.lua @@ -1,53 +1,86 @@ -local love = require "love" -require "karten" +local love = require("love") +require("karten") -spielerHand = {} +PlayerHand = {} DealerHand = {} -Deck = {} function LoadBlackjack() - Deck = Karten:createDeck() - Karten:shuffleDeck(Deck) - DealInitialCards() - Cards = love.graphics.newImage("/cards_asset_pack/CuteCards.png") + DealerHandPosition = { + x = love.graphics.getWidth() / 2, + y = love.graphics.getHeight() / 4, + } + PlayerHandPosition = { + x = love.graphics.getWidth() / 2, + y = love.graphics.getHeight() / 4 * 2.5, + } + + Deck = Karten:createDeck() + Karten:shuffleDeck(Deck) + DealInitialCards() + Cards = love.graphics.newImage("/cards_asset_pack/CuteCards.png") end function UpdateBlackjack(dt) - -- Hier können zukünftige Updates für Blackjack hinzugefügt werden + dt = dt * 1 end function DrawBlackjack() - print(love.graphics:getWidth()) - love.graphics.draw(Cards, love.graphics.getWidth() / 2 - 90 , 50, 0, 0.2) - -- love.graphics.print("Spieler Hand: " .. Karten:handValue(spielerHand), 50, 50) - -- love.graphics.print("Dealer Hand: " .. Karten:handValue(DealerHand), 50, 100) - -- love.graphics.print("Drücke 'H' für Hit oder 'S' für Stand", 50, 150) + for i, card in ipairs(PlayerHand) do + local suits = { ["Clubs"] = 0, ["Diamonds"] = 1, ["Spades"] = 2, ["Hearts"] = 3 } + local tileWidth = Cards:getWidth() / 15 + local tileHeight = Cards:getHeight() / 4 + local tileX = suits[card.suit] + local tileY = math.min(card.value - 2, 9) + love.graphics.draw( + Cards, + love.graphics.newQuad(tileX * tileWidth, tileY * tileHeight, tileWidth, tileHeight, Cards:getDimensions()), + PlayerHandPosition.x - tileWidth / 4, + PlayerHandPosition.y, + 0, + 0.5 + ) + end + for i, card in ipairs(DealerHand) do + local suits = { ["Clubs"] = 0, ["Diamonds"] = 1, ["Spades"] = 2, ["Hearts"] = 3 } + local tileWidth = Cards:getWidth() / 15 + local tileHeight = Cards:getHeight() / 4 + local tileX = suits[card.suit] + local tileY = math.min(card.value - 2, 9) + love.graphics.draw( + Cards, + love.graphics.newQuad(tileX * tileWidth, tileY * tileHeight, tileWidth, tileHeight, Cards:getDimensions()), + DealerHandPosition.x - tileWidth / 4, + DealerHandPosition.y, + 0, + 0.5 + ) + end end + function HandleBlackjackInput(key) - if key == 'h' then - Karten:hit(spielerHand) - if Karten:handValue(spielerHand) > 21 then - love.graphics.print("Spieler hat verloren!", 50, 200) - end - elseif key == 's' then - while Karten:handValue(DealerHand) < 17 do - Karten:hit(DealerHand) - end - if Karten:handValue(DealerHand) > 21 then - love.graphics.print("Dealer hat verloren!", 50, 200) - elseif Karten:handValue(spielerHand) > Karten:handValue(DealerHand) then - love.graphics.print("Spieler gewinnt!", 50, 200) - else - love.graphics.print("Dealer gewinnt!", 50, 200) - end - end + if key == "h" then + Karten:hit(PlayerHand) + if Karten:handValue(PlayerHand) > 21 then + love.graphics.print("Spieler hat verloren!", 50, 200) + end + elseif key == "s" then + -- while Karten:handValue(DealerHand) < 17 do + Karten:hit(DealerHand) + -- end + -- if Karten:handValue(DealerHand) > 21 then + -- print("Dealer hat verloren!", 50, 200) + -- elseif Karten:handValue(PlayerHand) > Karten:handValue(DealerHand) then + -- print("Spieler gewinnt!", 50, 200) + -- else + -- print("Dealer gewinnt!", 50, 200) + -- end + end end function DealInitialCards() - for i = 1, 2 do - Karten:hit(spielerHand) - Karten:hit(DealerHand) - end + for i = 1, 2 do + Karten:hit(PlayerHand) + Karten:hit(DealerHand) + end end - diff --git a/cards_asset_pack/JustNormalCards.png b/cards_asset_pack/JustNormalCards.png new file mode 100644 index 0000000000000000000000000000000000000000..8be7be117e064eb689c50e1eb8574c170b944909 GIT binary patch literal 40527 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 Dxxh@# literal 0 HcmV?d00001 diff --git a/karten.lua b/karten.lua index d5330ce..b4cddc4 100644 --- a/karten.lua +++ b/karten.lua @@ -1,56 +1,50 @@ -local love = require "love" +local love = require("love") + Karten = {} function Karten:createDeck() - local deck = {} - local suits = {"Clubs", "Diamonds", "Spades", "Hearts"} - local values = {2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 11} -- 10, J, Q, K sind alle 10, A ist 11 - for _, suit in ipairs(suits) do - for _, value in ipairs(values) do - table.insert(deck, {suit = suit, value = value}) - end - end + local deck = {} + local suits = { "Clubs", "Diamonds", "Spades", "Hearts" } + local values = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 11 } -- 10, J, Q, K sind alle 10, A ist 11 + for _, suit in ipairs(suits) do + for _, value in ipairs(values) do + table.insert(deck, { suit = suit, value = value }) + end + end - TileMap = love.graphics.newImage("/cards_asset_pack/CuteCards.png") - return deck + TileMap = love.graphics.newImage("/cards_asset_pack/JustNormalCards.png") + return deck end function Karten:shuffleDeck(deck) - for i = #deck, 2, -1 do - local j = love.math.random(i) - deck[i], deck[j] = deck[j], deck[i] - end + for i = #deck, 2, -1 do + local j = love.math.random(i) + deck[i], deck[j] = deck[j], deck[i] + end end function Karten:handValue(hand) - local value = 0 - local aces = 0 - for _, card in ipairs(hand) do - value = value + card.value - if card.value == 11 then - aces = aces + 1 - end - end - while value > 21 and aces > 0 do - value = value - 10 - aces = aces - 1 - end - return value + local value = 0 + local aces = 0 + for _, card in ipairs(hand) do + value = value + card.value + if card.value == 11 then + aces = aces + 1 + end + end + while value > 21 and aces > 0 do + value = value - 10 + aces = aces - 1 + end + return value end -function Karten:hit(x, y, hand) - if #Deck > 0 then - local card = table.remove(Deck) - table.insert(hand, card) - local suits = {["Clubs"] = 0, ["Diamonds"] = 1, ["Spades"] = 2, ["Hearts"] = 3} - local tileWidth = TileMap:getWidth() / 4 - local tileHeight = TileMap:getHeight() / 13 - local tileX = suits[card.suit] - local tileY = math.min(card.value - 2, 9) - love.graphics.draw(TileMap, love.graphics.newQuad(tileX * tileWidth, tileY * tileHeight, tileWidth, tileHeight, TileMap:getDimensions()), x, y) - end +function Karten:hit(hand) + if #Deck > 0 then + local card = table.remove(Deck) + table.insert(hand, card) + return card + end end - - return Karten