Small adventure game

Posted by Nick Rosencrantz on Game Development See other posts from Game Development or by Nick Rosencrantz
Published on 2012-06-19T06:51:06Z Indexed on 2012/06/19 9:24 UTC
Read the original article Hit count: 386

Filed under:
|
|
|

I'm making a small adventure game where the player can walk through Dungeons and meet scary characters: enter image description here

The whole thing is 20 java classes and I'm making this a standalone frame while it could very well be an applet I don't want to make another applet since I might want to recode this in C/C++ if the game or game engine turns out a success. The engine is the most interesting part of the game, it controls players and computer-controlled characters such as Zombies, Reptile Warriors, Trolls, Necromancers, and other Persons. These persons can sleep or walk around in the game and also pick up and move things. I didn't add many things so I suppose that is the next thing to do is to add things that can get used now that I already added many different types of walking persons.

What do you think I should add and do with things in the game? The things I have so far is:

package adventure;
/**
 * The data type for things. Subclasses will be create that takes part of the story
*/
public class Thing {

    /**
     * The name of the Thing.
     */
  public String name;

    /**
     * @param name The name of the Thing.
     */
  Thing( String name ) {
    this.name = name;
  }

}



public class Scroll extends Thing
{
  Scroll (String name)
  {
    super(name);
  }
}



class Key extends Thing
{
  Key (String name)
  {
    super(name);
  }
}

The key is the way to win the game if you figure our that you should give it to a certain person and the scroll can protect you from necromancers and trolls. If I make this game more Dungeons and Dragons-inspired, do you think will be any good? Any other ideas that you think I could use here?

The Threadwhich steps time forward and wakes up persons is called simulation. Do you think I could do something more advanced with this class?

package adventure;
class Simulation extends Thread
{

  private PriorityQueue Eventqueue;

  Simulation()
  {
    Eventqueue = new PriorityQueue();
    start();
  }

  public void wakeMeAfter(Wakeable SleepingObject, double time)
  {
    Eventqueue.enqueue(SleepingObject, System.currentTimeMillis()+time);
  }

  public void run()
  {
    while(true)
    {
      try
      {
    sleep(5); //Sov i en halv sekund

    if (Eventqueue.getFirstTime() <= System.currentTimeMillis())
    {
      ((Wakeable)Eventqueue.getFirst()).wakeup();
      Eventqueue.dequeue();
    }    

      }
      catch (InterruptedException e )
    {

    }


    }
  }

}

And here is the class that makes up the actual world:

package adventure;
import java.awt.*;
import java.net.URL;
/**
 * Subklass to World that builds up the Dungeon World. 
 */

public class DungeonWorld extends World {

    /**
     *
     * @param a Reference to adventure game.
     *
     */
  public DungeonWorld(Adventure a) {
    super ( a );

    // Create all places
    createPlace( "Himlen" );
    createPlace( "Stairs3" );
    createPlace( "IPLab" );
    createPlace( "Dungeon3" );
    createPlace( "Stairs5" );
    createPlace( "C2M2" );
    createPlace( "SANS" );
    createPlace( "Macsal" );
    createPlace( "Stairs4" );
    createPlace( "Dungeon2" );
    createPlace( "Datorsalen" );
    createPlace( "Dungeon");//, "Ljushallen.gif" );
    createPlace( "Cola-automaten", "ColaAutomat.gif" );
    createPlace( "Stairs2" );
    createPlace( "Fable1" );
    createPlace( "Dungeon1" );
    createPlace( "Kulverten" );

    // Create all connections between places
    connect( "Stairs3", "Stairs5", "Down", "Up" );
    connect( "Dungeon3", "SANS", "Down", "Up" );
    connect( "Dungeon3", "IPLab", "West", "East" );
    connect( "IPLab", "Stairs3", "West", "East" );
    connect( "Stairs5", "Stairs4", "Down", "Up" );
    connect( "Macsal", "Stairs5", "South", "Norr" );
    connect( "C2M2", "Stairs5", "West", "East" );
    connect( "SANS", "C2M2", "West", "East" );
    connect( "Stairs4", "Dungeon", "Down", "Up" );
    connect( "Datorsalen", "Stairs4", "South", "Noth" );
    connect( "Dungeon2", "Stairs4", "West", "East" );
    connect( "Dungeon", "Stairs2", "Down", "Up" );
    connect( "Dungeon", "Cola-automaten", "South", "North" );
    connect( "Stairs2", "Kulverten", "Down", "Up" );
    connect( "Stairs2", "Fable1", "East", "West" );
    connect( "Fable1", "Dungeon1", "South", "North" );

    // Add things

    // --- Add new things here ---

    getPlace("Cola-automaten").addThing(new CocaCola("Ljummen cola"));
    getPlace("Cola-automaten").addThing(new CocaCola("Avslagen Cola"));
    getPlace("Cola-automaten").addThing(new CocaCola("Iskall Cola"));
    getPlace("Cola-automaten").addThing(new CocaCola("Cola Light"));
    getPlace("Cola-automaten").addThing(new CocaCola("Cuba Cola"));

    getPlace("Stairs4").addThing(new Scroll("Scroll"));
    getPlace("Dungeon3").addThing(new Key("Key"));
    Simulation sim = new Simulation();

    // Load images to be used as appearance-parameter for persons
    Image studAppearance = owner.loadPicture( "Person.gif" );
    Image asseAppearance = owner.loadPicture( "Asse.gif" );
    Image trollAppearance = owner.loadPicture( "Loke.gif" );
    Image necromancerAppearance = owner.loadPicture( "Necromancer.gif" );  
    Image skeletonAppearance = owner.loadPicture( "Reptilewarrior.gif" );
    Image reptileAppearance = owner.loadPicture( "Skeleton.gif" );
    Image zombieAppearance = owner.loadPicture( "Zombie.gif" );
    // --- Add new persons here ---
    new WalkingPerson(sim, this, "Peter", studAppearance);
    new WalkingPerson(sim, this, "Zombie", zombieAppearance );
    new WalkingPerson(sim, this, "Zombie", zombieAppearance );
    new WalkingPerson(sim, this, "Skeleton", skeletonAppearance );
    new WalkingPerson(sim, this, "John", studAppearance );
    new WalkingPerson(sim, this, "Skeleton", skeletonAppearance );
    new WalkingPerson(sim, this, "Skeleton", skeletonAppearance );
    new WalkingPerson(sim, this, "Skeleton", skeletonAppearance );
    new WalkingPerson(sim, this, "Sean", studAppearance );
    new WalkingPerson(sim, this, "Reptile", reptileAppearance );

    new LabAssistant(sim, this, "Kate", asseAppearance);
    new LabAssistant(sim, this, "Jenna", asseAppearance);

    new Troll(sim, this, "Troll", trollAppearance);

    new Necromancer(sim, this, "Necromancer", necromancerAppearance);

  }


    /**
     *
     * The place where persons are placed by default
     *
     *@return The default place.
     *
     */
  public Place defaultPlace() {
    return getPlace( "Datorsalen" );
  }


  private void connect( String p1, String p2, String door1, String door2) {
    Place place1 = getPlace( p1 );
    Place place2 = getPlace( p2 );

    place1.addExit( door1, place2 );
    place2.addExit( door2, place1 );
  }

}

Thanks

© Game Development or respective owner

Related posts about 2d

Related posts about java