Well, I'm really fairly new to programming. So while of course my goal is to write code that I can then use again in later iterations, I am also sure that some things I do now are either completely wrong or at least very inefficient. I already threw out some stuff I did after realizing that there was a better way of doing it. That's the process of learning ;-)
The reason why I'm writing the program I am working on right now is to try out some of the stuff I already learned, find solutions to the problems I encounter and also just get some routine working with code. I am prepared to fail and go back every now and then.
Now to your questions:
My classes contain the usual stuff. Mainly a lot of private variables, and a few functions to do some basic stuff.
Here is an upload of the program.
http://www.mediafire.com/folder/jul8iyg4mf3a2/RPG_Test_Combat
Just be aware that it is very much a work in progress with a lot of unfinished stuff, placeholders and certainly a bunch of errors. It also contains a lot of stuff that the current program does not need (like variables for food, drink, sleep, etc.) in preparation for later iterations. Also the way weapons are initialized in the main program is really just a placeholder (the weapons are destroyed again right after initialization). I will implement this properly once I figured out how to equip them. I also know that I create objects in places where the rest of the program can't access them (for example inside an if-condition). This is something I still try to figure out (and I'm confident that I will).
About the 900 lines constructor:
Yeah I know it is a bit unwieldy. Problem is that each weapon has 19 different variables that need to be initialized and there are 29 different weapons. So just the list of weapons the constructor can pick from is 551 lines. I also use a lot of empty lines and comments to keep things organized and clear. I have seen code from more experienced programmers, which is usually a lot more compact.
I have already thought about shortening the whole thing. Since every weapon has the same 19 variables, I should be able to put that block into a function and then just hand over different parameter values to put into these variables based on what weapon needs to be initialized. I have already done something similar with attributes and skills. I first had a separate code-block for each of the 14 attributes and skills and later moved it to a function and now just hand over different parameter values based on what attribute or skill to initialize. That eliminated quite a bunch of code.
I actually like working like that. First do it the way I know how, then go back and see if I can find more efficient ways. Then next time I do the same or a similar thing, I can implement the more efficient solution from the start. I feel like this is a good learning experience for me.