Results 1 to 2 of 2
  1. #1
    bthug211 is offline Member
    Join Date
    Dec 2009
    Posts
    1
    Rep Power
    0

    Default Need help! Please...

    Please help me ... a NullPointerException appears
    here's the codes

    import java.util.Random;

    public class Dice {

    Random r =new Random();
    int sides;

    //constructor
    public Dice(int s){
    sides = s;
    }
    //roll method depending on sides on top
    public int roll(){

    return r.nextInt(sides-1)+1;

    }
    }
    // end of class



    public class Maze {
    char [][] maze;
    public Maze(int s){
    maze=new char[s][s];
    for (int x=0; x<s; x++)
    for (int y=0; y<s; y++)
    maze[x][y]=' ';
    }
    }
    //end of class

    public class karaKter {


    //Dice needed for initial karakter position in maze
    Dice d = new Dice(10);
    String name;
    String race;
    String raceDescription;

    // if the Character picked object
    Object [] dala=new Object[2];

    // decreases per attack. if 0, you lose baby.
    int life;
    // used for normal attack. to be subtracted from opponent's life
    int damage;
    //used to determine if how far will the Character move
    int speed;
    //initial positions
    int xpos;
    int ypos;

    //KaraKter symbol in maze
    char symbol;

    //variable to determine if KaraKter is dead
    boolean isDead;

    String [] raceChoice = {"Homo Sapien", "Homo Alien", "Super Goo" , "Enkantado" };
    String [] raceDescriptionChoice= { "Tao. with normal human strength. Superpower: Suntok sa buwan (+100 to damage, +100 to life)",
    "Alien from another planet. Human-like strength. Superpower: Alien-nation (destroys any target within 9 squares, -50 to life)",
    "Gooey-like alien from another planet. Slow creature yet powerful. Superpower: Super Ga-Goo (attack for +100 damage to each target within 9 squares) ",
    "Enkanto from planet Earth. calm and fierceful. Superpower: MagikStik (+50 to damage, +200 life)"};
    int []lifechoice={100,100,100,100};
    int []damagechoice={4,4,4,4};
    int []speedchoice={1,2,3,4};

    public karaKter(String n,int r){
    name=n;
    race=raceChoice[r];
    raceDescription=raceDescriptionChoice[r];
    life=lifechoice[r];
    damage=damagechoice[r];
    speed=speedchoice[r];
    symbol = name.charAt(0);
    xpos =d.roll();
    ypos =d.roll();
    isDead = true;
    }

    //moves depending on the dice roll on Main Game
    public void move(int x, int y){

    }

    //method to attack and inflict damage, affected by weapon which Character holds
    public int attack(){
    return d.roll() + 10;
    }
    //method to use superpower
    public void superAttack(){

    }

    //method to get wounded and decrease life, affected by armor which Character holds
    public int getWounded(){
    life=life-attack();
    return life;
    }
    }
    //end of class

    public class Item {

    String type;
    int cost;
    int strength;
    boolean isDestroyed = false;
    char symbol;
    int xpos;
    int ypos;
    int roll;

    }
    //end of class

    public class Armor extends Item {

    int defensePoint;

    String [] typechoice = {"chainmail","iorica Segmentata", "plate Armor"};
    int [] strengthChoice = {30, 20, 25};
    int [] costChoice = {8, 6, 7};
    int [] defenseChoice = {20, 30, 25};

    public Armor(int i){

    type = typechoice[i];
    strength = strengthChoice[i];
    defensePoint = defenseChoice[i];
    cost = costChoice[i];
    symbol = type.charAt(0);

    }


    public int defend(){

    return defensePoint;

    }

    public void getAttacked(int damage){

    strength = strength - damage;
    if (strength<=0) isDestroyed = true;

    }


    }
    //end of class

    public class Weapon extends Item{

    Dice d=new Dice(10);
    int attackPoint;

    String [] typechoice = {"kris","sword", "bolo"};
    int [] strengthChoice = {30, 20, 25};
    int [] costChoice = {8, 6, 7};
    int [] defenseChoice = {20, 30, 25};

    public Weapon(int i){

    type = typechoice[i];
    strength = strengthChoice[i];
    attackPoint = defenseChoice[i];
    cost = costChoice[i];
    symbol = type.charAt(0);
    xpos=d.roll();
    ypos=d.roll();
    }
    public int attack(){

    return attackPoint;

    }

    public void getAttacked(int damage){

    strength = strength - damage;
    if (strength<=0) isDestroyed = true;

    }



    }
    //end of class

    import javax.swing.JOptionPane;

    public class MainGameV1 {

    static karaKter [] kararray = new karaKter[6];
    static int karakterCount = 0;
    static int armorCount = 0;
    static Dice d = new Dice(3);
    static Maze m = new Maze(10);
    static Dice initpos = new Dice (10);
    static Dice movex = new Dice (10);
    static Dice movey = new Dice (10);
    static Armor [] armorarray = new Armor[3];
    static Weapon [] weparray = new Weapon[3];
    static Weapon w1 = new Weapon(d.roll()-1);
    static Armor a1 = new Armor(d.roll()-1);

    public static void main (String []args){

    boolean addMore = true;
    int pTurn = 0;
    int itemturn = 0;

    while(addMore){

    newkarakter();
    String c = JOptionPane.showInputDialog("add Another?(y/n)");

    if(c.equalsIgnoreCase("n"))
    addMore=false;

    if( m.maze[w1.xpos][w1.ypos]==' ' && m.maze[a1.xpos][a1.ypos]==' ') {

    w1.xpos=movex.roll();
    w1.ypos=movey.roll();
    a1.xpos=movex.roll();
    a1.ypos=movey.roll();
    }
    m.maze[w1.xpos][w1.ypos]=w1.symbol;
    m.maze[a1.xpos][a1.ypos]=a1.symbol;
    printMap();
    }
    //for putting weapons and armors in the map
    while(true){

    JOptionPane.showMessageDialog(null," Player " + (pTurn+1) + "\n" + kararray[pTurn].name + "'s turn");
    printMap();

    for(itemturn=0;itemturn < 3;itemturn++){

    armorarray[itemturn].xpos = movex.roll();
    armorarray[itemturn].ypos = movey.roll();
    m.maze[armorarray[itemturn].xpos][armorarray[itemturn].ypos] = armorarray[itemturn].symbol;
    m.maze[weparray[itemturn].xpos][weparray[itemturn].ypos] = weparray[itemturn].symbol;
    printMap();
    //Condition if Player land on an Armor
    if( m.maze[armorarray[itemturn].xpos][armorarray[itemturn].ypos] != ' ' ){

    char t = m.maze[armorarray[itemturn].xpos][armorarray[itemturn].ypos];

    for(int s=0;s<=armorCount;s++){

    char f=m.maze[armorarray[s].xpos][armorarray[s].ypos];

    if(f == t && s != itemturn ){

    char Armor = armorarray[s].symbol;
    printMap();
    JOptionPane.showMessageDialog(null,kararray[pTurn].name + " picked up an " + Armor );

    break;
    }
    }
    }
    //Condition if Player land on a Weapon
    if( m.maze[weparray[itemturn].xpos][weparray[itemturn].ypos] != ' ' ){

    char t = m.maze[weparray[itemturn].xpos][weparray[itemturn].ypos];

    for(int s=0;s<=armorCount;s++){

    char f=m.maze[weparray[s].xpos][weparray[s].ypos];

    if(f == t && s != itemturn ){

    char Weapon = weparray[s].symbol;
    printMap();
    JOptionPane.showMessageDialog(null,kararray[pTurn].name + " picked up a " + Weapon );

    break;
    }
    }
    }
    }
    //Condition if 2 Players have the same location
    if( m.maze[kararray[pTurn].xpos][kararray[pTurn].ypos] != ' ' ){

    char t = m.maze[kararray[pTurn].xpos][kararray[pTurn].ypos];

    for(int s=0;s<=karakterCount;s++){

    char f=m.maze[kararray[s].xpos][kararray[s].ypos];

    if(f == t && s != pTurn ){

    String Player = kararray[s].name;
    printMap();
    JOptionPane.showMessageDialog(null,kararray[pTurn].name + " will Battle " + Player + "\n Let THe Fight Begin" );
    doBattle(kararray[pTurn].name,Player);
    break;
    }
    }
    }

    m.maze[kararray[pTurn].xpos][kararray[pTurn].ypos]=kararray[pTurn].symbol;
    pTurn++;
    printMap();

    if(pTurn==karakterCount)
    pTurn = 0;
    }
    }


    //prints map and position of characters
    public static void printMap(){

    System.out.println("---------------------");

    for(int x=0; x<10; x++){
    for(int y=0;y<10;y++)
    System.out.print(m.maze[x][y]+"|");
    System.out.println();
    System.out.println("---------------------");
    }
    }


    //creates a new character
    public static void newkarakter(){

    if (karakterCount>5) JOptionPane.showMessageDialog(null, "Karakter capacity exceeded");
    else {
    kararray[karakterCount] = new karaKter(JOptionPane.showInputDialog("Enter your name, challenger: "),Integer.parseInt(JOptionPane.showInputDialog("E nter your race: \n 1. Homo Sapien\n 2. Homo Alien\n 3. Super Goo\n 4. Enkantado"))-1);

    // checks kung may laman yung initial postion ni character sa maze
    while(m.maze[kararray[karakterCount].xpos][kararray[karakterCount].ypos]!=' '){

    kararray[karakterCount].xpos=initpos.roll();
    kararray[karakterCount].ypos=initpos.roll();
    }

    m.maze[kararray[karakterCount].xpos][kararray[karakterCount].ypos]=kararray[karakterCount].symbol;
    }
    karakterCount++;
    }

    public static void doBattle(String P1,String P2){

    karaKter Player1=new karaKter(P1,2);
    karaKter Player2=new karaKter(P2,3);
    Dice Attack=new Dice(10);
    int p=Attack.roll();
    int p2=Attack.roll();
    int life;
    int Attack1=Player1.attack() + p;
    int Attack2=Player2.attack() + p2;
    JOptionPane.showMessageDialog(null,"============== =======================In One Corner========================================= " + " \nName : " + P1 + "\nRace : "+ Player1.race + "\nRace Description:"+ Player1.raceDescription + "\nLife :" + Player1.life + "\n==================================In the Other Corner====================================== " + "\nName : " + P2 + "\nRace : "+ Player2.race + "\nRace Description:"+ Player2.raceDescription + "\nLife :" + Player2.life );

    while(Player1.isDead && Player2.isDead){

    int life1=Player1.getWounded();
    int life2=Player2.getWounded();


    if(life1<=0||life2<=0){
    if(Player1.life !=0 )

    JOptionPane.showMessageDialog(null,P1+ " Wins");
    else{

    JOptionPane.showMessageDialog(null,P2 + " Wins");
    JOptionPane.showMessageDialog(null,"============== ============================ Lets Return To THe Map ==========================================");
    break;
    }
    JOptionPane.showMessageDialog(null,Player1 + " Attacks " + Player2 + "\nDamage : " + Player1.attack() + "\n" + Player2 + "'s life is now " + Player2.getWounded() + "\n=========================================== =\n " + Player2 + " Attacks " + Player1 + "\nDamage : " + Player2.attack() + "\n" + Player1 + "'s life is now " + Player1.getWounded() );
    } //
    }
    }
    }
    //end of class

    //please help me..why when I run the MainGameV1 class, a NullPointerException appears?please solve this error..tnx

  2. #2
    Fubarable's Avatar
    Fubarable is offline Moderator
    Join Date
    Jun 2008
    Posts
    19,316
    Blog Entries
    1
    Rep Power
    25

    Default

    It's a bit much to expect anyone to go through that amount of code.

    What you need to do is find the line that is throwing the NullPointerException (the exception message will tell you). An object that you are trying to use is null there, and often just knowing this will be enough to allow you to solve your problem. If not, then either use a debugger or a lot of println statements to help you trace back through your code to figure out why.

    If you're still having problems, then at least isolate the class and the section of code where the problem occurs and post that with code tags. Much luck.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •