Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Direction Game The Alien Direction Game System Modify the AlienDirection program

ID: 3851104 • Letter: D

Question

Direction Game

The Alien Direction Game System Modify the AlienDirection program in Listing 7.20 so that it displays 10 random numbers between 1 and 100 in random locations and as the alien moves, it eats the numbers and as the numbers are consumed, it shows the total. When a number is consumed, the consumed number disappears, while other numbers remain the same. When all the numbers are consumed, the game starts over.

My Code So far :


package alien;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;


public class AlienDirection extends Application {
  
public final static int JUMP = 10;
  
private ImageView imageView;
@Override
public void start(Stage primaryStage)
{
Image alien = new Image("file:Small_alien.png");
  
imageView = new ImageView(alien);
imageView.setX(20);
imageView.setY(20);
  
Group root = new Group(imageView);

Scene scene = new Scene(root, 400, 200, Color.BLUE);
scene.setOnKeyPressed(this::processKeyPress);

primaryStage.setTitle("Alien Direction");
primaryStage.setScene(scene);
primaryStage.show();
}


public void processKeyPress(KeyEvent event)
{
switch (event.getCode())
{
case UP:
imageView.setY(imageView.getY() - JUMP);
break;
case DOWN:
imageView.setY(imageView.getY() + JUMP);
break;
case RIGHT:
imageView.setX(imageView.getX() + JUMP);
break;
case LEFT:
imageView.setX(imageView.getX() - JUMP);
break;
default:
break;
}
}
  
public static void main(String[] args) {
launch(args);
}
  
}

Explanation / Answer

keep the image name as "Small_alien.png".

keep the image available to program AlienDirection.java

import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import java.util.Random;
import javax.swing.JOptionPane;
/**
*
* @author dhrgam
*/
public class AlienDirection extends Application {
  
    public final static int JUMP = 10;
    public final static int WIDTH = 400;
    public final static int HEIGHT = 200;
  
    private ImageView imageView;
    private Text text[];
    private Group root;
    @Override
    public void start(Stage primaryStage)
    {
       Image alien = new Image("Small_alien.png");
      
        imageView = new ImageView(alien);
        //imageView.setScaleX(0.5);
        //imageView.setScaleY(0.5);
        imageView.setX(20);
        imageView.setY(20);
      
        root = new Group(imageView);
       ObservableList list = root.getChildren();
       System.out.println("Initially List Size:"+list.size());
      
      
       int x;
       Random r = new Random();
       text = new Text[10];
      
       for(int i=0;i<10;i++){
           text[i] = new Text();

           //Setting font to the text
           text[i].setFont(new Font(15));
           text[i].setFill(Color.RED);
          
           //setting the position of the text
           x=10+r.nextInt(39)*10;
           //System.out.print(x+",");
           text[i].setX(x);
           x=10+r.nextInt(19)*10;
           //System.out.print(x+",");
           text[i].setY(x);        

           //Setting the text to be added.
           x=1+r.nextInt(100);
           //System.out.print(x+",");
           text[i].setText(""+x);

           //Setting the text object as a node to the group object
           list.add(text[i]);
       }
       System.out.println("After adding Text objects, ListSize:"+list.size());
       Scene scene = new Scene(root, WIDTH, HEIGHT, Color.BLACK);
       scene.setOnKeyPressed(this::processKeyPress);

       primaryStage.setTitle("Alien Direction");
       primaryStage.setScene(scene);
       primaryStage.show();
    }


//--------------------------------------------------------------------
    // Modifies the position of the image view when an arrow key is
    // pressed.
    //--------------------------------------------------------------------
    public void processKeyPress(KeyEvent event)
    {
        switch (event.getCode())
        {
            case UP:
                imageView.setY(imageView.getY() - JUMP);
                isConsumed();
                break;
            case DOWN:
                imageView.setY(imageView.getY() + JUMP);
                isConsumed();
                break;
            case RIGHT:
                imageView.setX(imageView.getX() + JUMP);
                isConsumed();
                break;
            case LEFT:
                imageView.setX(imageView.getX() - JUMP);
                isConsumed();
                break;
            default:
                break; // do nothing if it's not an arrow key
          
          
        }
    }
    public void isConsumed(){
       for(int i=0;i<10;i++){
           if(imageView.getX()==text[i].getX() && imageView.getY()==text[i].getY()){
               root.getChildren().remove(text[i]);
               System.out.println("consumed at:"+text[i].getX()+","+text[i].getY());
           }
       }
       //if all text objects are consumed(removed from list), then list size will become 1. means all numbers are consumed.
       if(root.getChildren().size()==1){
           JOptionPane.showMessageDialog(null,"Game Completed!!!","Result",JOptionPane.WARNING_MESSAGE);
       }
   }
    public static void main(String[] args) {
        launch(args);
    }
  
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote