This site requires JavaScript, please enable it in your browser!
Greenfoot back
ChaosPhantom7
ChaosPhantom7 wrote ...

2019/6/9

Null Pointer Exception

ChaosPhantom7 ChaosPhantom7

2019/6/9

#
Getting a null pointer exception with getWorld().addObject()
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.ArrayList;
import java.util.Arrays;

/**
 * Write a description of class Card here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Card extends Actor
{
    ArrayList <String> cardList = new ArrayList <String> (Arrays.asList("1R", "1G", "1B", "1Y", "2R", "2G", "2B", "2Y", "3R", "3G", "3B", "3Y", "4R", "4G", "4B", "4Y", "5R", "5G", "5B", "5Y", "6R", "6G", "6B", "6Y", "7R", "7G", "7B", "7Y", "8R", "8G", "8B", "8Y", "9R", "9G", "9B", "9Y", "0R", "0G", "0B", "0Y", "RevR", "RevG", "RevB", "RevY", "SR", "SG", "SB", "SY", "+2R", "+2G", "+2B", "+2Y", "Wild", "+4", "1R", "1G", "1B", "1Y", "2R", "2G", "2B", "2Y", "3R", "3G", "3B", "3Y", "4R", "4G", "4B", "4Y", "5R", "5G", "5B", "5Y", "6R", "6G", "6B", "6Y", "7R", "7G", "7B", "7Y", "8R", "8G", "8B", "8Y", "9R", "9G", "9B", "9Y", "0R", "0G", "0B", "0Y", "RevR", "RevG", "RevB", "RevY", "SR", "SG", "SB", "SY", "+2R", "+2G", "+2B", "+2Y", "Wild", "Wild", "Wild", "+4", "+4", "+4")); 
    ArrayList <String> playerOneHand = new ArrayList <String> ();
    ArrayList <String> playerTwoHand = new ArrayList <String> ();
    ArrayList <String> playerThreeHand = new ArrayList <String> ();
    ArrayList <String> playerFourHand = new ArrayList <String> ();
   
    ArrayList <String> revCards = new ArrayList <String> (Arrays.asList("RevR.png", "RevG.png", "RevB.png", "RevY.png"));
    ArrayList <String> skipCards = new ArrayList <String> (Arrays.asList("SR.png", "SG.png", "SB.png", "SY.png"));
    ArrayList <String> plusTwoCards = new ArrayList <String> (Arrays.asList("+2R.png", "+2G.png", "+2B.png", "+2Y.png"));

    int playerTurn = 0;
    int numCardsHand = 0;
    int numCardsHand2 = 0;
    
    int turnOrder = 1;

    /**
     * Act - do whatever the Card wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act() 
    {
        ifClicked();
    }

    /**
     * ifClicked - When clicked, places cards in middle
     */
    public void ifClicked()
    {
        if (playerTurn == 1)
        {
            String clickedImage = getClickedImage();
            if (Greenfoot.mouseClicked(this))
            {
                if (revCards.contains(clickedImage))
                {
                    turnOrder = -1;
                }
                else if (skipCards.contains(clickedImage))
                {
                    playerTurn ++;
                }
                else if (plusTwoCards.contains(clickedImage))
                {
                    for (int i = 0; i < 2; i++)
                    {
                        addCardTwo();
                    }
                }
                else if (clickedImage == "+4")
                {

                }
                else if (clickedImage == "Wild")
                {

                }
                else
                {

                }
                setLocation(350, 225);
                playerOneHand.remove(clickedImage);
                numCardsHand --;
                playerTurn = playerTurn + turnOrder;
            }
        }
    }
    
    /**
     * setGameScreen - Adds card and deck objects when player buttons are clicked
     */
    public void setGameScreen()
    {
        while (numCardsHand < 7)
        {
            addCardOne();
            addCardTwo();

            numCardsHand ++;
            numCardsHand2 ++;
        }
    }
    
    /**
     * updateTurn - Updates turn number if > 4 or < 1
     */
    public void updateTurn()
    {
        if (playerTurn == 5)
        {
            playerTurn = 1;
        }
        
        if (playerTurn == 0)
        {
            playerTurn = 4;
        }
    }
    
    /**
     * checkWin - Check if player has won
     */
    public void checkWin()
    {
       if (playerOneHand.isEmpty())
       {
           Instructions instruct = new Instructions("one win");
           getWorld().addObject(instruct, 400, 225);
           
           getWorld().removeObjects(getWorld().getObjects(Card.class));
           getWorld().removeObjects(getWorld().getObjects(Deck.class));
           Greenfoot.stop();
       }
       
       if (playerTwoHand.isEmpty())
       {
           Instructions instruct = new Instructions("one lose");
           getWorld().addObject(instruct, 400, 225);
           
           getWorld().removeObjects(getWorld().getObjects(Card.class));
           getWorld().removeObjects(getWorld().getObjects(Deck.class));
           Greenfoot.stop();
       }
    }

    /**
     * addCardOne - Adds random card to player one
     */
    public void addCardOne()
    {
        String chooseCard = cardList.get(Greenfoot.getRandomNumber(cardList.size()));
        playerOneHand.add(chooseCard);
        cardList.remove(chooseCard);
        Card card1 = new Card();
        card1.setImage(chooseCard + ".png");
        getWorld().addObject(card1, (numCardsHand*55) + (getWorld().getHeight()/4), 410);
    }

    /**
     * addCardtTwo - Adds random card to player two
     */
    public void addCardTwo()
    {
        String chooseCard = cardList.get(Greenfoot.getRandomNumber(cardList.size()));
        playerThreeHand.add(chooseCard);
        cardList.remove(chooseCard);
        Card card2 = new Card();
        card2.setImage("Back.png");
        getWorld().addObject(card2, (numCardsHand*55) + (getWorld().getHeight()/4), 40);
    }

    
    /**
     * getClickedImage - get image of clicked card
     */
    public String getClickedImage()
    {
        if (Greenfoot.mouseClicked(this))
        {
            String name = getImage().toString();
            String[] names = name.split("name: ");
            String nameRefined = names[1].split("   Ima")[0];
            return nameRefined;
        }
        return null;
    }
}
danpost danpost

2019/6/10

#
ChaosPhantom7 wrote...
Getting a null pointer exception with getWorld().addObject() << Code Omitted >>
Please provide entire error terminal output this code produced.
You need to login to post a reply.