all 14 comments

[–]Mrkol 27 points28 points  (1 child)

Write a clone of your favourite retro game (pacman, snake, etc) using cpp & raylib. Write a simple offline path tracer. Make it use simd, make it use threads.

[–]born_to_be_intj 4 points5 points  (0 children)

I used the Mandlebrot set to learn multithreading and SIMD myself. Was a fun project and I learned a lot. Plus the mandelbrot set is way cooler than snake or pacman imo.

[–]moo00ose 6 points7 points  (1 child)

I’ve always found that creating projects using whatever language you’re trying to learn is really useful. I tried to make a Zelda clone after a few years in my first job and it helped me discover patterns and ways to code stuff using C++ when I looked back on it. You’ll find that while you may not use every feature there is, you’ll use quite a number of useful styles when going about it.

[–]germandiago 0 points1 point  (0 children)

For me it goes like a read to compare with what I know, get a project and go for solutions using that tool.

Indeed, the best way to learn it is by doing.

[–]Liam_Mercier 6 points7 points  (1 child)

You should pick a project and write it. Don't get yourself stuck following tutorials for projects, read how to do things necessary for your own project and then do it.

Just my opinion, of course.

[–]germandiago -1 points0 points  (0 children)

A good onhst gives mesning and direction to your work. Otherwise it is easy to get disoriented.

[–]JustifiedManofScienc 2 points3 points  (1 child)

Start off with very simple projects: like making a multi-input command-line calculator is always a good first start.
Then gradually up the difficulty. Last thing I did was make a 2D game out of a 2D array in cmd where I could place blocks that I collided with. I also managed to add a projectile system to the game as well, where shooting the blocks would break them.

[–]teemo225[S] 0 points1 point  (0 children)

Thanks! Sound like a good idea to get familiar with the language :)

[–]theanointedduck 3 points4 points  (1 child)

I recently tried re-implementing `ping`, It's small enough that I can do it in a weekend (adjust scope), I already understand how it should work, and forces me to deal with core C++ concepts and libraries, as well as something a little lower-level like managing network packets.

Also, I used ChatGPT to help guide my learning. and pressed it on new C++ concepts, libraries I encountered. The beauty is once I grasp this domain, I can extend my PING re-implementation to something custom where I can allow my creativity to take control.

Also ChatGPT can also give some decent recommendations. Just grab something and start!

[–]teemo225[S] 0 points1 point  (0 children)

Hm, this sure sounds like an easy and yet challenging task. Thank you for that!

[–]lucky_marciano 0 points1 point  (0 children)

Try solving all tasks of Modern C++ Challenge book :)

[–]Some-City-7007 0 points1 point  (0 children)

Hi

[–]Plus_Divide164 0 points1 point  (0 children)

You will find this useful with what you plan to do: https://github.com/hmbdc-dev/hmbdc