High and low
https://gyazo.com/b1edad25861383da4c413cc983d124b1
(※)ウィンドウの大きさを640*480にしています。
code:cpp
# include <Siv3D.hpp>
# include <HamFramework.hpp>
std::pair<PlayingCard::Card, PlayingCard::Card> ChoiceTwoCards(const Array<PlayingCard::Card>& cards)
{
const Array<PlayingCard::Card> cardPair = cards.shuffled().take(2);
return{ cardPair0, cardPair1 }; }
int32 Reorder(int32 var)
{
return (var + 12) % 14;
}
void Main()
{
Window::Resize(640, 480);
Graphics::SetBackground(Palette::Darkgreen);
const Font font(65, Typeface::Bold);
const RectF lowButton(Arg::center(Window::Center().movedBy(-130, 100)), 200, 90);
const RectF highButton(Arg::center(Window::Center().movedBy(130, 100)), 200, 90);
const PlayingCard::Pack pack(100, Palette::Red);
const Array<PlayingCard::Card> cards = PlayingCard::CreateDeck(0);
int32 combo = 0;
bool selected = false, correct = false;
auto cardPair = ChoiceTwoCards(cards);
cardPair.first.flip();
while (System::Update())
{
if (MouseL.down())
{
if (!selected)
{
if (lowButton.mouseOver())
{
cardPair.first.flip();
correct = (Reorder(cardPair.first.rank) <= Reorder(cardPair.second.rank));
selected = true;
}
else if (highButton.mouseOver())
{
cardPair.first.flip();
correct = (Reorder(cardPair.first.rank) >= Reorder(cardPair.second.rank));
selected = true;
}
}
else
{
cardPair = ChoiceTwoCards(cards);
cardPair.first.flip();
selected = false;
combo = correct ? (combo + 1) : 0;
}
}
if (lowButton.mouseOver() || highButton.mouseOver())
{
Cursor::RequestStyle(CursorStyle::Hand);
}
RectF(Arg::center(Window::Center().movedBy(-130, -60)), pack.size()).drawShadow(Vec2(6, 6), 12, 0);
pack(cardPair.first).drawAt(Window::Center().movedBy(-130, -60));
RectF(Arg::center(Window::Center().movedBy(130, -60)), pack.size()).drawShadow(Vec2(6, 6), 12, 0);
pack(cardPair.second).drawAt(Window::Center().movedBy(130, -60));
lowButton.rounded(25).draw(HSV(Palette::Lightblue) - HSV(0, lowButton.mouseOver()*0.15, 0)).drawFrame(2, 2, ColorF(0.6));
highButton.rounded(25).draw(HSV(Palette::Orange) - HSV(0, highButton.mouseOver()*0.4, 0)).drawFrame(2, 2, ColorF(0.6));
if (selected)
{
font(correct ? U"Win" : U"Lose")
.drawAt(Window::Center().movedBy(0, -110),
correct ? Palette::Red : Palette::Blue);
}
font(U"Low").drawAt(lowButton.center());
font(U"High").drawAt(highButton.center());
if (combo)
{
font(combo).drawAt(Window::Center().movedBy(0, -180), Palette::Gold);
}
}
}