Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm studying Java right now, and I'm thinking of this tool as my practice project. The game is "League of Legends" in case anyone knows it, I'm not actually simulating the game as in simulating game play, I'm just trying to create a tool that can compare different champions to each other based on their own abilities and items bought inside the game.

The game basics are:

  • Every player has a champion in a team of 5 players playing against another team.
  • Each champion has a different set of abilities (usually 4) that s/he uses to do damage to opposing champions.
  • Each champion gets stronger by buying different items, increasing the attack it deals or decreasing the damage received.

What I want to do is to create a tool to be used outside the game enabling players to try out different builds for their champions and compare the figures against other champions they usually fight against.

The goal is to enable players get a deeper understanding of the different item combinations (builds) that can be used during the games, instead of trying them out in real games which can be somehow very time consuming.

What I'm stuck at is the best practice I should follow to make this possible using Java, I can't figure out which classes should inherit from which, should I make champions and items specs in the code or extracted from other files, specially that I'm talking about hundreds of items and champions to use in that tool.

I'm self studying Java, and I don't have much practice at it, so I would really appreciate any broad guidelines regarding this, and sorry if my question doesn't fit here, I tried to follow the rules.

English isn't my native language, so I'm really sorry if I wasn't clear enough, I would be more than happy to explain anything that's not understood.

share|improve this question
    
I want to add that one of the big problems here is that I will be dealing with over a hundred champions and around the same number of items. –  Tougheart Oct 3 '12 at 23:52
    
did you find a solution to your problem? or an answer to your question? –  Malachi Oct 23 '12 at 18:26
    
@Malachi yes I did, thanks a lot for your help, I'm going to start working on it soon after I finish my course with oracle. unfortunately I can't vote your answer up because I don't have enough reputation, but your answer was the one I'm looking for, thanks again :) –  Tougheart Oct 24 '12 at 19:12
    
will you post your Answer/Solution and accept it, or accept the answer that helped you the most. that way when other people are searching for an answer they will know what works and what didn't. –  Malachi Oct 24 '12 at 19:14
    
glad that you figured it out too BTW –  Malachi Oct 24 '12 at 19:14

1 Answer 1

up vote 0 down vote accepted

I would start by laying out my objects/classes that I need to code:

  1. main object (Champion)
    • with attributes of Strength, Agility, etc.
    • Spells
    • special attacks
  2. decorator objects (Items you buy in Game)
    • their attributes
    • what increases?
  3. Class for Champion interaction (or direct battle simulation algorithm)
    • attributes like Distance or time (these might even be something to Program into the champion or the item)

with the Items I would use the decorator Pattern to add the stats together.

{very rough example}

when you have the objects all set up then I would create a Database that would hold the information for the different objects or classes

I hope that this gives you a good starting point. I didn't want to do all the fun stuff for you. :)

Addition

Best Database for Java?

doesn't look like it matters what database that you use when programming with Java. I would probably go with MySQL mostly because it is Free. as far as I know you can connect to a MySQL Database from any language.

that post mentions a couple of other Databases

HSQLDB

H2

I do most of my work with SQL Server or MySQL.

share|improve this answer
1  
thanks a lot for the help, I was thinking about something like that, and due to the massive amount of information I need to handle, I will def go for a database, trying to find out which one will be good for me, thanks again for your help –  Tougheart Oct 18 '12 at 3:29

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.