Well, I'm fairly confident I know the language well. My problem is the actual game design and architecture. What would you recommend for that?
Also, any ideas for projects that I should work on?
In reply to this part of your post:
Just coding in general.Most beginners fall into this trap which ends up being a huge hole. Just code. Don't worry about if things are perfect or not. Just code. When you're a beginner you will not make perfect things. That is something that most of the time just automatically comes with experience. It comes up when you are just coding more and more and next thing you know you find yourself researching topics and implementing them.
When you have a problem, take a step back. Sometimes two steps back. Diagnose the problem and solving the problem STEP-BY-STEP. I mean in the smallest steps. Write down every step and before you know it you'll find yourself writing pseudo code that you can just about directly implement.
Important thing though: Do not worry about code design right now! When working on a good beginner project just focus on the problem at hand. Don't end up making one problem multiple problems because you're worried about code design. Your first projects will have absolutely terrible code design. It will just happen. Too many beginners see that and get worried and start all over and they end up learning almost nothing. You learn a lot more from actually finishing a project completely then starting over multiple times and not really ever getting further. When you have finished a project you can post the code here and most of the time multiple users, a lot even professional, will give you great advice on ways to improve the code. Try to understand what they are saying. If you don't understand something research it. If you still don't understand what they are saying ask them to explain a bit further but give your own ideas. This will have them and other people help more as it shows you are very interested in learning this. Finally try to implement some or all of their ideas into the project or write down their ideas. When you do your next project see if you can incorporate some or all of their ideas into your project. Don't force it though. Again just code. If you keep repeating this process, before you know it you will writing better designed code and even implementing designs on your own!
The most important part that doesn't get stressed enough sometimes. Just code. Don't worry about anything else right now. Just code. In time other things will come.
Also, I think I read from your OP that you do use Java. LazyFoo uses C++ and SDL but honestly he does a pretty good job even explaining the concepts of what is being done. From that you should be able to translate what he is doing into Java code pretty well. Just focus on the concepts a lot. Research how to do each of those concepts in your language and API of choice and try to implement it.