mirror of
https://gitlab.com/Kwoth/nadekobot.git
synced 2025-09-10 17:28:27 -04:00
Added .GetName extension method which will show human readable hand values in text. Also completely moved .betdraw the the new deck implementation. A renamed to Ace
This commit is contained in:
@@ -39,8 +39,16 @@ public abstract class NewDeck<TCard, TSuit, TValue>
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual TCard? Peek()
|
public virtual TCard? Peek(int x = 0)
|
||||||
=> _cards.First?.Value;
|
{
|
||||||
|
var card = _cards.First;
|
||||||
|
for (var i = 0; i < x; i++)
|
||||||
|
{
|
||||||
|
card = card?.Next;
|
||||||
|
}
|
||||||
|
|
||||||
|
return card?.Value;
|
||||||
|
}
|
||||||
|
|
||||||
public virtual void Shuffle()
|
public virtual void Shuffle()
|
||||||
{
|
{
|
||||||
|
@@ -14,4 +14,7 @@ public sealed class RegularCard : NewCard<RegularSuit, RegularValue>
|
|||||||
|
|
||||||
public override int GetHashCode()
|
public override int GetHashCode()
|
||||||
=> Suit.GetHashCode() * 17 + Value.GetHashCode();
|
=> Suit.GetHashCode() * 17 + Value.GetHashCode();
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
=> $"{Value.ToString()}-{Suit.ToString()}";
|
||||||
}
|
}
|
@@ -1,6 +1,6 @@
|
|||||||
namespace Nadeko.Econ;
|
namespace Nadeko.Econ;
|
||||||
|
|
||||||
public static class DeckExtensions
|
public static class RegularDeckExtensions
|
||||||
{
|
{
|
||||||
public static string GetEmoji(this RegularSuit suit)
|
public static string GetEmoji(this RegularSuit suit)
|
||||||
=> suit switch
|
=> suit switch
|
||||||
@@ -14,7 +14,7 @@ public static class DeckExtensions
|
|||||||
public static string GetEmoji(this RegularValue value)
|
public static string GetEmoji(this RegularValue value)
|
||||||
=> value switch
|
=> value switch
|
||||||
{
|
{
|
||||||
RegularValue.A => "🇦",
|
RegularValue.Ace => "🇦",
|
||||||
RegularValue.Two => "2️⃣",
|
RegularValue.Two => "2️⃣",
|
||||||
RegularValue.Three => "3️⃣",
|
RegularValue.Three => "3️⃣",
|
||||||
RegularValue.Four => "4️⃣",
|
RegularValue.Four => "4️⃣",
|
||||||
@@ -31,6 +31,15 @@ public static class DeckExtensions
|
|||||||
|
|
||||||
public static string GetEmoji(this RegularCard card)
|
public static string GetEmoji(this RegularCard card)
|
||||||
=> $"{card.Value.GetEmoji()} {card.Suit.GetEmoji()}";
|
=> $"{card.Value.GetEmoji()} {card.Suit.GetEmoji()}";
|
||||||
|
|
||||||
|
public static string GetName(this RegularValue value)
|
||||||
|
=> value.ToString();
|
||||||
|
|
||||||
|
public static string GetName(this RegularSuit suit)
|
||||||
|
=> suit.ToString();
|
||||||
|
|
||||||
|
public static string GetName(this RegularCard card)
|
||||||
|
=> $"{card.Value.ToString()} of {card.Suit.GetName()}";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
public enum RegularValue
|
public enum RegularValue
|
||||||
{
|
{
|
||||||
A = 1,
|
Ace = 1,
|
||||||
Two = 2,
|
Two = 2,
|
||||||
Three = 3,
|
Three = 3,
|
||||||
Four = 4,
|
Four = 4,
|
||||||
|
@@ -20,8 +20,7 @@ public sealed class BetdrawGame
|
|||||||
if (val is null && col is null)
|
if (val is null && col is null)
|
||||||
throw new ArgumentNullException(nameof(val));
|
throw new ArgumentNullException(nameof(val));
|
||||||
|
|
||||||
_deck.Shuffle();
|
var card = _deck.Peek(_rng.Next(0, 52))!;
|
||||||
var card = _deck.Peek()!;
|
|
||||||
|
|
||||||
var realVal = (int)card.Value < 7
|
var realVal = (int)card.Value < 7
|
||||||
? BetdrawValueGuess.Low
|
? BetdrawValueGuess.Low
|
||||||
|
@@ -27,7 +27,7 @@ public class NewDeckTests
|
|||||||
|
|
||||||
Assert.IsNotNull(card);
|
Assert.IsNotNull(card);
|
||||||
Assert.AreEqual(card.Suit, RegularSuit.Hearts);
|
Assert.AreEqual(card.Suit, RegularSuit.Hearts);
|
||||||
Assert.AreEqual(card.Value, RegularValue.A);
|
Assert.AreEqual(card.Value, RegularValue.Ace);
|
||||||
Assert.AreEqual(_deck.CurrentCount, _deck.TotalCount - 1);
|
Assert.AreEqual(_deck.CurrentCount, _deck.TotalCount - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,4 +48,24 @@ public class NewDeckTests
|
|||||||
|
|
||||||
Assert.IsNull(noCard);
|
Assert.IsNull(noCard);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestCardGetName()
|
||||||
|
{
|
||||||
|
var ace = _deck.Draw()!;
|
||||||
|
var two = _deck.Draw()!;
|
||||||
|
|
||||||
|
Assert.AreEqual("Ace of Hearts", ace.GetName());
|
||||||
|
Assert.AreEqual("Two of Hearts", two.GetName());
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestPeek()
|
||||||
|
{
|
||||||
|
var ace = _deck.Peek()!;
|
||||||
|
|
||||||
|
var tenOfSpades = _deck.Peek(48);
|
||||||
|
Assert.AreEqual(ace, new RegularCard(RegularSuit.Hearts, RegularValue.Ace));
|
||||||
|
Assert.AreEqual(tenOfSpades, new RegularCard(RegularSuit.Spades, RegularValue.Ten));
|
||||||
|
}
|
||||||
}
|
}
|
@@ -79,21 +79,9 @@ public partial class Gambling
|
|||||||
|
|
||||||
private async Task<Image<Rgba32>> GetCardImageAsync(RegularCard currentCard)
|
private async Task<Image<Rgba32>> GetCardImageAsync(RegularCard currentCard)
|
||||||
{
|
{
|
||||||
var oldCard = new Deck.Card((currentCard.Suit switch
|
var cardName = currentCard.GetName().ToLowerInvariant().Replace(' ', '_');
|
||||||
{
|
var cardBytes = await File.ReadAllBytesAsync($"data/images/cards/{cardName}.jpg");
|
||||||
RegularSuit.Clubs => Deck.CardSuit.Clubs,
|
return Image.Load<Rgba32>(cardBytes);
|
||||||
RegularSuit.Diamonds => Deck.CardSuit.Diamonds,
|
|
||||||
RegularSuit.Hearts => Deck.CardSuit.Hearts,
|
|
||||||
_ => Deck.CardSuit.Spades
|
|
||||||
}),
|
|
||||||
(int)currentCard.Value >= 11
|
|
||||||
? (int)currentCard.Value - 1
|
|
||||||
: (int)currentCard.Value);
|
|
||||||
|
|
||||||
return await GetCardImageAsync(oldCard);
|
|
||||||
// var cardName = currentCard.ToString().ToLowerInvariant().Replace(' ', '_');
|
|
||||||
// var cardBytes = await File.ReadAllBytesAsync($"data/images/cards/{cardName}.jpg");
|
|
||||||
// return Image.Load<Rgba32>(cardBytes);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<Image<Rgba32>> GetCardImageAsync(Deck.Card currentCard)
|
private async Task<Image<Rgba32>> GetCardImageAsync(Deck.Card currentCard)
|
||||||
|
Reference in New Issue
Block a user