Public Solving: Earth, Fire, Snow game

I'm a full-stack developer from South Africa πΏπ¦. I love writing about JavaScript, HTML and CSS.
Search for a command to run...

I'm a full-stack developer from South Africa πΏπ¦. I love writing about JavaScript, HTML and CSS.
No comments yet. Be the first to comment.
Most of you know me for my consistency, a golden arrow in my blog series. I've written 1000 articles in 1008 days! Almost an article a day, and my honeymoon was the only holiday I ever took. I'm super proud of this achievement; it has been a fantasti...

It's not the first time I'll be talking about community. I think it's an essential aspect of any successful tool. This shows in my previous explorations of Astro, Medusa, and now Vendure as well. All these products thrive in a super open, welcoming, ...

The cool part about Vendure is how easy it is to set up and how abstract each layer is. Basically, we get the following elements: External database Server Worker Admin UI Frontend While this is amazing, it also brings a bit of complexity when it co...

The previous article looked at customizing Vendure on a data and process level. In this article, we'll look at customizing emails, as they are often a big part of a webshop system. We'll be looking at two different layers of customization for customi...

Even though Vendure is a pretty significant project out of the box, in some cases, we might want to go in and modify some elements to work to our specific use case. In this article, I'll take a high-level look at some elements we can customize within...

The elves love making up games, and they have their own version of Rock, Paper, Scissor.
Their version includes Earth, Fire, and Snow. Let me quickly tell you how you can win with this game:
Alright, let's get right into coding this fun game for the elves π
Click here to view the puzzle.
I think it's safe to say there are only three options that win for this game.
Then there is a tie (both the same)
That's actually all there is, and it makes our program a bit easier to create.
Let me show you how:
Let's first define an object with the winning combinations.
const winMatchUp = {
fire: 'snow',
snow: 'earth',
earth: 'fire',
};
There is no need to define the other way around as we can abstract it, seeing we only have two players.
First, let's look at a draw. This means both players picked the same element.
export const selectWinner = (user1, user2) => {
if (user1.choice === user2.choice) return null;
};
Then we can check if user1's choice match up is equal to user2's choice. This would mean user 1 one.
Let's me check an example to explain a bit more:
We then query our match-up table and say give us the matchup object for snow. This will return earth.
So if we now compare this to user two choice, we won!
In our code we can do it like so:
if (winMatchUp[user1.choice] === user2.choice) return user1;
This automatically means, if user 1 did not win, user 2 must have won!
export const selectWinner = (user1, user2) => {
if (user1.choice === user2.choice) return null;
if (winMatchUp[user1.choice] === user2.choice) return user1;
return user2;
};
And there you go!
A super simple game, but yet so much fun.
I've run the test as a sanity check, and they turn green β .

Let me know what you think of my solution and how you would do differently.
Thank you for reading my blog. Feel free to subscribe to my email newsletter and connect on Facebook or Twitter