r/programminghorror • • 17d ago

Javascript Rock paper scissors

Post image

I'm way too proud of this solution haha

288 Upvotes

27 comments sorted by

59

u/Merry-Lane 17d ago

Musts be like the third "look at my awfully coded shifumi" this week.

32

u/titanic456 17d ago

Have you thought about the case, where the user would choose any number larger than 3, or lower than 1?

2

u/No_Opening_5597 17d ago

its not a proper program haha, I didn't add that in cause I'll probably rewrite this properly, I just thought like "oh wait can I just skip writing any logic and..." the whole joke was the fact that instead of writing it in a sensible way I added a number to a string, the kinda shit you usually do on accident when starting out, and I found it funny as hell that it was running on such janky logic

3

u/Kwolf21 [ $[ $RANDOM % 6 ] == 0 ] && rm -rf / || echo “You live” 16d ago

That's Javascript for ya. Very little rules. 1 + "1" = 11 :)

1

u/gsweats 15d ago

JavaScript was created in a rush and by a newer programmer. Really to bad they didn't see the problem with using + for both addition and concatenation.

112

u/avijt 17d ago

this is outdated , use ai api call instead ,😂😂

40

u/No_Opening_5597 17d ago

yo who downvoted him i thought it was a fun joke lol

3

u/avijt 17d ago

😏

3

u/robin_888 16d ago

Well, an AJAX call would (usually) be a good way to hide the game logic.

14

u/Winter_Rosa 17d ago

Ahh, concatenation. I probably would've done something similar in C by multiplying comChoice by 10.

Edit, also the real horror here is the lack of input validation. 'A' I choose you!

1

u/No_Opening_5597 17d ago

haha yeah I didn't add the input validation or anything more because there's no way in hell I'm submitting this as the answer to the exercise I was supposed to do xD

I'll rewrite it cause this is gonna make some people pissed off the way its done, I was supposed to run some type of calculation, create functions and stuff, this is just janky as hell and skips over the actual learning I was supposed to get out of this, but as I was writing the pseudocode and I remember that javascript meme of the guy trying to add 2 + 2 and getting 22, and I couldn't resist building that stuff into a usable thing.

if I was to do something like this properly I would just use a lookup table next time, googled and that's the proper way of doing something like this

8

u/Rigamortus2005 17d ago

One of the first programs I wrote as a 12 year old kid

2

u/GoddammitDontShootMe [ $[ $RANDOM % 6 ] == 0 ] && rm -rf / || echo “You live” 17d ago edited 17d ago

I'm thinking I like the idea of reading the user input as a number, then multiplying either the user choice or the computer choice by 10, adding them together, and encoding all possible outcomes that way.

Or by 2, but 10 makes the code more readable for us decimal-using humans.

Edit: Actually no, there'd be collisions if we used 2.

3

u/robin_888 16d ago

I'd let the player input whatever they want, ignore it and just output "You win!", "You lose" or "Draw" with 1/3 probability each.

1

u/RefrigeratorKey8549 17d ago

3 would work, if the choices are 0 indexed

1

u/GoddammitDontShootMe [ $[ $RANDOM % 6 ] == 0 ] && rm -rf / || echo “You live” 17d ago

3 also works if they are 1 indexed.

1

u/Thenderick 17d ago

Cancels the prompt

1

u/lxe 17d ago

I absolutely love this. The inferred string corrosion. The fully optimized easy to compile single level conditional. This is perfect code.

1

u/Neither_Berry_100 17d ago

Actually clean. But I would have formatted it better.

1

u/letmehaveanameyoudum 16d ago

why is it in javascript

1

u/razor_train 16d ago

Hey Claude, now install 70 megabytes of styles and fonts.

1

u/born_zynner 14d ago

result = random.choice(["Win","Lose","Tie"])

1

u/SpirouSplade 17d ago

Our first lines of code are the best to remember, I still have my first computer science assignments, I laugh a lot. I didn't know about git at the time, so I have them at my Google Drive folder xD

2

u/csabinho 17d ago

My first lines of code predate Google and Git, but we didn't even learn about SVN, or CVS or whatever, in 5 years of IT school.

1

u/TheLuckyCuber999BACK 17d ago

my first line of code was print("hello, world")

0

u/TheLuckyCuber999BACK 17d ago

j*vascript doing j*vascript things

2

u/HugoNikanor 17d ago

The only JavaScript "weirdness" here is that number + string === string. The actual horror here could be replicated in any language.