The thing about sliding puzzle is that you can easily take any image or photo that doesn't have to many things on it and slice it into multiple images that then represent the movable pieces and thus generate puzzle from such image. Sure you could use pretty much any image but sliding puzzles made from images that have lots of little details on them can be very hard.
You can check one of such examples on next website: https://www.artbylogic.com/puzzles/i...ageShuffle.htm
If you go the route of using images then you don't even need to worry about High DPI awareness. Why? High DPI awareness is what is needed for your application to render fonts properly taking into account system scaling settings since in reality fonts are actually rendered by the operating system through the use of a specific API's. But when dealing with images you have complete control yourself.
So all you need is for your source images to be in high enough resolution so they wont have to be stretched when shown on monitors with high resolution. As for showing suuch high resolution images on low resolution monitors. Well it is far easier to shrink large image down without loosing to much noticeable detail (take a look at all those thumbnails of your images that OS made for quickly browsing your image folders).
If you go for ASCI art by using text based components like TMemo for instance the most important function for you might be TextWidth which returns width of specific text in pixels so you could size up your component so that it can store whole lines: https://www.freepascal.org/docs-html...textwidth.html
I'm not sure if FreePascal version takes into account DPI scalling but I know that Delphi version does since it is thigtly contectged into a specific canvas so it knows which DPI scalling has been used for that specific canvas: https://docwiki.embarcadero.com/Libr...nvas.TextWidth
Just don't forget that you need to use monospaced fonts for ASCI art to work properly
And if you decide to go with images you may want to learn about Bitmap fonts: https://en.wikipedia.org/wiki/Computer_font
Bitmap fonts or sometimes also referred as BitFonts are commonly used in games. Most often the bitmap font is just a black and white image where you have white characters on a black background.
Why white characters on black background? Because then you can also use such image directly as bitmask with which you can then control what part of another image is rendered and what skipped (area of white pixels is rendered while area of black pixels is skipped).
Yes bitmap fonts usually also contain characters drawn in different sizes so you can reduce the amount if shrinking or stretching of such font images in order to represent different sized characters.
Yes using vector graphics would make scaling most easy and smooth on any resolution but as far as I know FreePascal does not support vector graphics out of the box so you would have to find suitable 3rd part library to add such support to your application. Here you may encounter a problem because some of the available libraries may be limited to only specific platforms.
Not to mention that unless they are using extended CPU features or GPU features they could be quite slow. Sure if you have few vector based images your probably won't notice. But when you have several hundred of such images (one for each font character) the performance impact can be quite noticeable.
Do you know that modern fonts which are also known as TrueType fonts /at least on windows) are actually vector based fonts? You can check FontForge which is an open sourced font making/editing program to easily see how existing fonts are made: https://fontforge.org/en-US/ You might be surprised of how many details certain fonts can have.
Bookmarks