Question

In: Computer Science

import java.util.Scanner; public class ZombieApocalypse{    public static void main(String[] args){    Scanner input = new...

import java.util.Scanner;

public class ZombieApocalypse{
   public static void main(String[] args){
  
Scanner input = new Scanner(System.in);
  
       boolean gameOver = false;
int colSize = 10;
int rowSize= 10;
String floorTile= ".";
int playerX = 0;
int playerY= 0;
String playerTile="@";
int exitX= colSize-1;
int exitY= rowSize-1;
String exitTile="# ";
int zombieX=5;
int zombieY=5;
// Defining Second Zombie
int zombie2Y= 8;
int zombie2X= 3;
// Defining third zombie
int zombie3Y= 1;
int zombie3X= 7;
String zombieTile="*";
String zombie2Tile="*";
String zombie3Tile="*";

while(gameOver== false){
for(int y=0; y<rowSize; y++){
    for(int x=0; x<colSize; x++){
        if(x== playerX && y== playerY){
            System.out.print(playerTile);
        }
        else if(x== exitX && y== exitY){
            System.out.print(exitTile);
        }
        else if(x== zombieX && y== zombieY){
            System.out.print(zombieTile);
        }
// Printing second zombie on map
else if(x== zombie2X && y== zombie2Y){
System.out.print(zombie2Tile);
}
// Printing third zombie
else if(x== zombie3X && y== zombie3Y){
System.out.print(zombie3Tile);
}

        else{
System.out.print(floorTile);
}
    }
    System.out.print("\n");
}
//player input
String choice = input.nextLine();
//execute action
if(choice.equals("w")){
// constraining player to map
if (playerY>0)
  
  
    playerY--;
}
else if(choice.equals("s")){
// constraining player to map
if(playerY<9)

    playerY++;
}
else if(choice.equals("d")){
// constraining player to map
if(playerX<9)
  
    playerX++;
}
else if(choice.equals("a")){
// constraining player to map
if(playerX>0)
  
    playerX--;
}
// check win
if(zombieX== playerX && zombieY== playerY){
gameOver= true;
System.out.println("Your brains were eaten by the zombie");
}
// Defining the loss the the second zombie
if(zombie2X== playerX && zombie2Y== playerY){
gameOver= true;
System.out.println("Your brains were eaten by the zombie");
}
// Defining loss to third zombie
if(zombie3X== playerX && zombie3Y== playerY){
gameOver= true;
System.out.println("Your brains were eaten by the zombie");
}

if(playerX== exitX && playerY==exitY){
    gameOver= true;
    System.out.println("You survived and made it to the exit!");
}
// execute monster action
int zombieChoice=(int)(Math.random()*4);
if(zombieChoice==0){
    zombieX=(zombieX+1)% colSize;
}
else if( zombieChoice==1){
    zombieX=--zombieX>=0 ? zombieX: (colSize-1);
}
else if( zombieChoice==2){
    zombieY=--zombieY>=0 ? zombieY: (rowSize-1);
}
else if(zombieChoice==3){
    zombieY= (zombieY+1)% rowSize;
}
// Second zombie's movement
int zombie2Choice=(int)(Math.random()*4);
if(zombie2Choice==0){
zombie2X=(zombie2X+1)% colSize;
}
else if( zombie2Choice==1){
zombie2X=--zombie2X>=0 ? zombie2X: (colSize-1);
}
else if( zombie2Choice==2){
zombie2Y=--zombie2Y>=0 ? zombie2Y: (rowSize-1);
}
else if(zombie2Choice==3){
zombie2Y= (zombie2Y+1)% rowSize;
}
// Third zombie's movement
int zombie3Choice=(int)(Math.random()*4);
if(zombie3Choice==0){
zombie3X=(zombie3X+1)% colSize;
}
else if( zombie3Choice==1){
zombie3X=--zombie3X>=0 ? zombie3X: (colSize-1);
}
else if( zombieChoice==2){
zombie3Y=--zombie3Y>=0 ? zombie3Y: (rowSize-1);
}
else if(zombie3Choice==3){
zombie3Y= (zombie3Y+1)% rowSize;
}

}


   }
}

How would I add obstacles to this game in java? I understand it would be a move constraint, but I cant figure out exactly how to implement it. It is written in java

Solutions

Expert Solution

I believe you are working on 2D matrix for prototyping this game.

Its a good strategy for a beginner to start like this. I appreciate your efforts.

Now, as i can see, you have dedicated zombie tiles into the 2D array

To help you with obstacles part, i would suggest, while you initialize the array, or matrix denote some cells with - 1 or 'o'

These notations would, indicate, the obstacles in the matrix.

Now whenever you ask the user to press a key, and move in any direction, you increment on decrement X, Y right, that means you are moving towards any cell.

Now you have already written the code for checking if at that cell zombie is present or not, now just add this condition too in each if clause,

Matrix [X] [Y] == - 1, its an obstacle and ask, user to again input,

But the catch here is., do this all in while(true) loop as you are making your game interactive.

As you have Written logic correctly, just make few extensions i told you, and viola, lets play??.

Hope i have helped you.

Happy learning.


Related Solutions

------------------------------------------------------------------------------------ import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input =...
------------------------------------------------------------------------------------ import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); int result = 0; System.out.print("Enter the first number: "); int x = input.nextInt(); System.out.print("Enter the second number: "); int y = input.nextInt(); System.out.println("operation type for + = 0"); System.out.println("operation type for - = 1"); System.out.println("operation type for * = 2"); System.out.print("Enter the operation type: "); int z = input.nextInt(); if(z==0){ result = x + y; System.out.println("The result is " + result); }else...
import java.util.Scanner; public class Squaring { public static void main(String[] args) { Scanner sc = new...
import java.util.Scanner; public class Squaring { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num=0; String s = ""; while (true) { System.out.println("Enter an integer greater than 1: "); try { // reading input s = sc.nextLine(); // converting into int num = Integer.parseInt(s); break; } catch (Exception e) { System.out.println(s + " is not valid input."); } } // Now we have a valid number // putting into square int square = num; int count...
import java.lang.UnsupportedOperationException; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc...
import java.lang.UnsupportedOperationException; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in);    // parse the number of strings int numStrings = Integer.parseInt(sc.nextLine());    // parse each string String[] stringsArray = new String[numStrings]; for (int i = 0; i < numStrings; i++) { stringsArray[i] = sc.nextLine(); }    // print whether there are duplicates System.out.println(hasDuplicates(stringsArray)); }    private static boolean hasDuplicates(String[] stringsArray) { // TODO fill this in and remove the below line...
import java.util.Stack; import java.util.Scanner; class Main { public static void main(String[] args)    {       ...
import java.util.Stack; import java.util.Scanner; class Main { public static void main(String[] args)    {        Stack<Integer> new_stack = new Stack<>();/* Start with the empty stack */        Scanner scan = new Scanner(System.in);        int num;        for (int i=0; i<10; i++){//Read values            num = scan.nextInt();            new_stack.push(num);        } System.out.println(""+getAvg(new_stack));    }     public static int getAvg(Stack s) {        //TODO: Find the average of the elements in the...
import java.util.Stack; import java.util.Scanner; class Main { public static void main(String[] args)    {       ...
import java.util.Stack; import java.util.Scanner; class Main { public static void main(String[] args)    {        Stack<Integer> new_stack = new Stack<>();/* Start with the empty stack */        Scanner scan = new Scanner(System.in);        int num;        for (int i=0; i<10; i++){//Read values            num = scan.nextInt();            new_stack.push(num);        }        int new_k = scan.nextInt(); System.out.println(""+smallerK(new_stack, new_k));    }     public static int smallerK(Stack s, int k) {       ...
import chapter6.date.SimpleDate; import java.util.Scanner; public class SimpleDateTestDefault { public static void main(String[] args) { Scanner stdin...
import chapter6.date.SimpleDate; import java.util.Scanner; public class SimpleDateTestDefault { public static void main(String[] args) { Scanner stdin = new Scanner(System.in); SimpleDate d1 = new SimpleDate(); SimpleDate d2 = new SimpleDate(stdin.nextInt(), stdin.nextInt(), stdin.nextInt()); System.out.println(d1); System.out.println(d2); System.out.println(d1.before(d2)); System.out.println(d2.before(d1)); } } Implement SimpleDate class in chapter6.date package with the following attributes: day, (int type,  private) month, (int type,  private) year (int type,  private) The class should have the following methods: a constructor with three parameters: year, month, and day a constructor with no parameters which initialize the...
public static void main(String[] args) {        Scanner input = new Scanner(System.in);        String[]...
public static void main(String[] args) {        Scanner input = new Scanner(System.in);        String[] strings = new String[100];        for (int i = 0; i < strings.length; i++) {            System.out.println("Enter Strings: stop ");            strings[i]=input.nextLine();            if(strings[i].equalsIgnoreCase("stop"))                break;        }               MaxLength(strings);//here is the error    }    public static int MaxLength(String[] array) {        int max = array[0].length();       ...
//This is an ArrayReverser Problem.. import java.util.Scanner; public class Main { public static void main(String[] args)...
//This is an ArrayReverser Problem.. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in);    // Read in the list of numbers int[] numbers; String input = sc.nextLine(); if (input.equals("")) { numbers = new int[0]; } else { String[] numberStrings = input.split(" "); numbers = new int[numberStrings.length]; for (int i = 0; i < numberStrings.length; i++) { numbers[i] = Integer.parseInt(numberStrings[i]); } }    // Reverse the list int[] resultArray = reverseArray(numbers);   ...
import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class Exercise { public static void main(String[] args) {...
import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class Exercise { public static void main(String[] args) { Scanner input=new Scanner(System.in); int[] WordsCharsLetters = {0,1,2}; while(input.hasNext()) { String sentence=input.nextLine(); if(sentence!=null&&sentence.length()>0){ WordsCharsLetters[0] += calculateAndPrintChars(sentence)[0]; WordsCharsLetters[1] += calculateAndPrintChars(sentence)[1]; WordsCharsLetters[2] += calculateAndPrintChars(sentence)[2]; } else break; } input.close(); System.out.println("Words: " + WordsCharsLetters[0]); System.out.println("Characters: " + WordsCharsLetters[1]); System.out.println("Letters: " + WordsCharsLetters[2]); } static int[] calculateAndPrintChars(String sentence) { int[] WCL = new int[3]; String[] sentenceArray=sentence.split(" "); WCL[0] = sentenceArray.length; int letterCount=0; for(int i=0;i<sentence.length();i++) { if(Character.isLetter(sentence.charAt(i))) letterCount++; } WCL[1]...
Correct the code: import java.util.Scanner; public class Ch7_PrExercise5 { public static void main(String[] args) {   ...
Correct the code: import java.util.Scanner; public class Ch7_PrExercise5 { public static void main(String[] args) {    Scanner console = new Scanner(System.in);    double radius; double height; System.out.println("This program can calculate "+ "the area of a rectangle, the area "+ "of a circle, or volume of a cylinder."); System.out.println("To run the program enter: "); System.out.println("1: To find the area of rectangle."); System.out.println("2: To find the area of a circle."); System.out.println("3: To find the volume of a cylinder."); System.out.println("-1: To terminate the...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT