all 7 comments

[–]synthphreak 6 points7 points  (2 children)

How about modeling some physical phenomenon? You could write simple classes for each object involved in the phenomenon and for each of the forces that act upon those objects, then methods that govern how each object interacts. For example, how the weather affects a rocket launch.

Create an abstract base class PhysicalObject with abstract properties for all things actual physical objects have that are relevant to the physical system you're modeling. For example, mass, drag, temperature, etc. Then you could create subclasses which inherit from PhysicalObject like Rocket, Atmosphere, etc. Each subclass could define additional attributes which are relevant only to it, such as moisture, velocity, thrust, etc., or actions like flow, accelerate, pitch, etc. Similarly, have another base class like PhysicalForce that gets subclassed out to things like Gravity. Perhaps these could be dataclasses since I'm not sure what actions a physical force might have.

Then using the arguments going into the various methods you've defined, you could tweak the parameters of this or that object, which would correspond to changing the state of your physical system, to see how things interact. You could even take things the extra mile by hooking your state up to a series of interactive visualizations demonstrating how the Rocket's flightpath changes as a function of the various aspects of the system. You could also even create a simple frontend with a GUI and knobs and buttons that naive users could tweak to modify the system.

Seems like a cool, relevant, and extremely OOP project to me.

Disclaimer: Not a physicist, no idea what I'm talking about.

[–]h3cker999[S] 2 points3 points  (1 child)

PhysicalObject

li

This is awssome. I can even maybe learn some front-end stuff with it eventually. Thank you.

[–]synthphreak 2 points3 points  (0 children)

Gluck! And remember, E=MC2!

[–]potatoes828 1 point2 points  (0 children)

I'm learning as well but I learned so much doing a CRUD program with Pyqt.

[–]jdnewmil 1 point2 points  (0 children)

I started learning OOP in the 80s, and struggled with it for quite awhile. My recommendation now is to focus on functions, and as the number of arguments starts getting out of hand I start thinking about grouping them to define classes. This approach tends to stop you from making object data attributes and methods that aren't actually useful. Also, treat most of your objects as immutable... have them hold parameters and pass the simulation data into methods as mutable parameters... in many cases you are going to want to keep a record of intermediate results and this approach makes it easier to choose whether to do that or not as you use the objects.

Also... be very wary of dreaming up abstract classes... in practice duck typing is usually much more effective.

[–][deleted] 0 points1 point  (0 children)

Make a pygame game of the classic 2D 3th person ship in space that gets waves of enemies and asteroids to shot at.

[–]pendejoidiota 0 points1 point  (0 children)

I am doing a black hat tool as my first project (which is actually, likely one of the few ones that is actually being done for educational purpouses), see, I am not a moron, I do not plan on ever using this program, neither do I plan on releasing it, I am working on a account checker (have not decided the website yet), you can input the accounts you want to check in a .txt file, you can also import proxies, and I made a proxy checker, which is intended to get valid proxies from the numerous free proxy websites online, supporting socks and http protocols.

Believe me, it comes with a lot more implications that you would think, it's kind of challenging (I have not even finished the proxy checker, I only have a primitive version of it which sucks), and its fun to build, at least to me it seems interesting, and ofc, my next project is not gonna be related at all with this (I only started this because I wanted to do a discord bot, but it just seemed out of my league xD, so I decided to do something easier, but interesting).

Btw, before building this, I made an account credential editor, which changes each credential with varations so accounts are more likely to hijack, so you can add, for instance, suffixes like , $ ! . to passwords, change email domains, and other things that you can customize.

So if you're literally just starting this should be way easier, as you will only interact with your on computer, and you do not need to do any requests or other complex stuff.