Files
pike/libpike/blackjack/blackjack.odin

56 lines
1.0 KiB
Odin

// SPDX-License-Identifer: MIT
/* poker.odin
*
* Routines for handling poker related features
*
* Written by TiredWithJoy
*/
package blackjack
import "../log"
import "../casino"
/*
Type represeting a poker hand
*/
Hand :: struct {
_: [11]casino.Card,
}
/*
Determine the rank of the hand
*/
evaluate_hand :: proc(hand: Hand) -> int {
toal:int
aces: [dynamic]int
for x, i in hand {
total = total + x.rank
if x.rank = 1 {
total = total + 11
append(&aces, i)
}
if total > 21 {
if len(aces) > 0 {
total = total - 10
pop(&aces)
}
}
}
return total
}
/*
Compare two hands and return true if the
first one is better than the second one
*/
compare_hands :: proc(player: Hand, other: Hand) -> casino.Hand {
if evaluate_hand(player) > evaluate_hand(other) {
return .WIN
}else if evaluate_hand(player) < evaluate_hand(other) {
return .LOSE
} else {
return .TIE
}
}