this post was submitted on 01 Mar 2025
127 points (99.2% liked)

Programming

18454 readers
83 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 2 years ago
MODERATORS
 

note: i did NOT create the ASCII art. I'm not good enough to do that. I found on various ascii art archives as well as those image to ascii art converters for the continents I couldn't find.

countryguess was a project I made recently because I wanted to make a quiz that could be customised as you see fit. Also, I had no clue how to make GUIs with Python and ASCII art is cool so I decided to roll with it. It turned out pretty cool!

I made the maps by printing the ASCII art map, and then all the spaces that make up each country would be an array. These arrays would fill up the spaces like morocco[0], morocco[1], etc.

Then, when the country is guessed, the country (or an alternate name/abbrviation, such as uk for the united kingdom or ivory coast for cote d'ivoire) is matched with its index in the list of countries in that continent.

A second list contains all the countries that show up on the map (excluding citystates, islands, etc. that aren't big enough to be shown on the map) and has all the countries as either 0 (false) or 1 (true). Whenever the country is guessed, its respective list item turns into 1.

The map printing function checks each list item for whether it is true or false. If it is true, then the list of spaces for that country would be replaced with a list of equal length and equal number of characters but with hashes "#" instead of spaces " ". This means that, when the county is printed, hashes are printed instead of spaces and the country fills up

I've got africa, europe, north america, and oceania completed. I haven't yet made the map for asia because it's HUGE, and south america I haven't done yet as well. Also, central/eastern europe is VERY out of proportion and will be fixed...eventually. (i.e. long romanian panhandle)

other fun features I added include the ability to enable/disable disputed territories (Western Sahara, Kosovo, and Somaliland bc why not) and the U.N. observer states (the Vatican and Kosovo) as well as score saving to a "scores.txt" that shows the date, time, and name of quiz that you complete along with your score.

once I finished all the continents, I'll work on making a world quiz with ALL the countries. other things like capital quizzes and flag quizzes could be added on later, but that's likely very far into the future.

here are some more screenshots:

europe europe

oceania oceania

north america north america

the github link if you want to look at the code or just have a go at the quiz: https://github.com/swarbler/countryguess

top 20 comments
sorted by: hot top controversial new old
[–] [email protected] 30 points 1 day ago* (last edited 1 day ago) (2 children)

note: i did NOT create the ASCII art. I’m not good enough to do that. I found on various ascii art archives as well as those image to ascii art converters for the continents I couldn’t find.

FYI:

$ telnet mapscii.me

Zoom is "a" and "z", arrow keys pan, "q" quits.

e.g.:

Can produce a map of wherever at whatever zoom.

[–] [email protected] 8 points 1 day ago

oh damn that's kinda cool

[–] [email protected] 3 points 1 day ago

This is so cool!

[–] [email protected] 12 points 1 day ago (1 children)
Traceback (most recent call last):
  File "<redacted>\countryguess\countryguess.py", line 3, in <module>
    from art import *
ModuleNotFoundError: No module named 'art'

you might want to add a requirements.txt

[–] [email protected] 6 points 1 day ago (1 children)

oop yep that's probably important. I've added that to the repo!

[–] [email protected] 8 points 1 day ago (2 children)

wow that's... quite a list. Are you sure you need them all? What are you using like redis, yt-dlp or spotifyapi, ytmusicapi for??

[–] [email protected] 6 points 1 day ago (3 children)

oh wait shoot did it just add all the modules installed on my computer...damn... how do I make a proper requirements.txt? that pip command definitely didn't do it...

[–] [email protected] 4 points 1 day ago

have a look at venv for your future projects :) there is also some tooling to help with all the warts around python and packaging.

last bigger python project i was part of used poetry, but it's been ages, so there is probably a new cool thing i am not aware of.

[–] [email protected] 3 points 1 day ago (1 children)

Are you using a virtual env to isolate the environment of the game from the rest ofyour system? There are a few ways/tools to do it but maybe start here:

https://docs.python.org/3/library/venv.html

[–] [email protected] 1 points 21 hours ago (1 children)

is venv important/neccesary?

[–] [email protected] 2 points 5 hours ago

Neccessary? No. You showed that by coding this with your main python environment. Important? Yes. Using a project specific virtual python environment allows you to only use the modules needed and protects your main environment from malware packages and incompatible packages that could not play well with your OS and other projects you are working on.

[–] [email protected] 1 points 1 day ago

ok haha, I guessed something like that must've happened

[–] [email protected] 3 points 1 day ago

ok I fixed it, it should just be "art" (a library to make ascii art) and "colorama" (easier coloured text)

[–] [email protected] 6 points 1 day ago

another upside to this quiz over things like Sporcle is that since it's a python program, you don't need an internet connection to play it.

[–] [email protected] 2 points 1 day ago (1 children)
[–] [email protected] 2 points 20 hours ago
[–] [email protected] 3 points 1 day ago

besides weird central/eastern europe chaos, there's also no islands that are highlighted at all in north america, not even the big ones like cuba or haiti/dominican republic. I will probably add those at some point, but that'll be later.

[–] [email protected] -5 points 1 day ago (1 children)

Ah Python, the Facebook of programming languages.

[–] [email protected] 3 points 20 hours ago (1 children)

python is fun, the syntax is very easy and it makes it simple to just go make a cool project

[–] [email protected] 0 points 1 hour ago* (last edited 1 hour ago)

As long as I continue to sometimes waste hours of my life on irresolvable dependency hell, after exactly following the "deploy my project" instructions, trying with multiple environment managers (venv, conda, poetry), watching my system environment somehow get broken even though I'm using some kind of virtual environment (happened to me just last week), I will continue to AGGRESSIVELY have the opinion that

  • The only reason we're all still here is everybody else is.
  • The only reason someone would actually voluntarily CHOOSE this tech stack, in 2025, is for comfort zone reasons, they don't know any better reasons, their boss told them to reasons, or the libraries they need are ONLY here reasons.

Thus the Facebook of programming languages.

And oh yeah, "so use docker." Dude, if your ecosystem only works reliably in carefully controlled containers, in 2025, the problem is your shitty shitty, stupid, chronically broken ecosystem, not me for being frustrated with it.

This problem IS AND HAS BEEN so bad that every few years someone does a WHOLE NOTHER BIG PROJECT to try to solve it, so now we have multiple buggy ass environment resolvers, non of which work well enough to be considered anything other than an embarrassment to the community, when compared with say modern Lua or Rust ecosystems.

Like this stack ALL YOU WANT, I not only don't get it, I'm (I believe justifiably) grumpy and frustrated because when I want to use your shit, now I have to use this crummy stack. Thanks for that Python advocates. I'm so grateful to you for that. Thanks so very very much.

THUS the Facebook of programming languages. Facebook is "fun" and "easy to get started with" too. Lua is JUST AS EASY to get started with, but its' ecosystem doesn't do this to me. Explain that, if you can.

I know you're human beings like me and you deserve compassion, but damn it, I have wasted SO MUCH TIME trying to get your broken, buggy ass shit to work, and I'm VERY frustrated about it. You're not gonna talk me down.

I will die on this hill, regardless of hate and downvotes.