Hunt the Wumpus

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • yuki
    New Member
    • Nov 2007
    • 3

    Hunt the Wumpus

    i'm trying to write the hunt the wumpus game with simple conditions: (check-marked the ones i already accomplished)
    [x]the pits will be placed randomly
    [x] the wumpus is placed in the maze randomly (not sure if i did that one correctly)
    [x] the player starts on the lower left of the maze row 3 col 0
    -the player will only have 1 chance to shoot the Wumpus
    [x]if the player is close to the Wumpus then there would be a prompt saying there is stench around
    [x]if the player is close to a pit then she/he will be prompted that there is a breeze.
    -if the player falls in a pit or gets eaten by the wumpus the game will be over and the map of the maze will be shown. I used 0 for empty cells and p for pits and w for wumpus in the array.

    There is some problem with the program i've written so far but i don't know how to fix it. also, i don't know how to check if the wumpus will be in the direction the player wants to shoot. i'd appreciate any suggestions

    Code:
     -java
    
    import java.util.*;
    public class playWumpus 
    {
    	//initMaze METHOD
    	//put the pits and wumpus into the world
    	public static void initMaze(char [][] maze)
    	{
    		Random r = new Random();
    	
    		for (int row = 0; row <4; row ++)
    		{
    			maze[row][col] = 'O';    <<<<<<there is a problem here
    		}
    		int pitRow, pitCol;
    		for (int pitNum = 0; pitNum <4; pitNum++)
    		{
    			pitRow = r.nextInt(4); //randomly choose row
    			pitCol = r.nextInt(6); //randomly choose column
    			if (pitRow == 3 && pitCol == 0)//start location
    			{	
    				pitCol=5;
    			}
    		}
    		maze [pitRow][pitCol] = 'p'; //places the pits in the maze randomly
    		maze [r.nextInt(4)][r.nextInt(6)] = 'w'; //places the wumpus randomly in the maze
    	}// end of Maze method
    
    	
    	//CHECKMOVE method
    	//possible outcomes: run into the wall , fall into the pit, eaten by wumpus,
    	//feel breeze, smell stench, nothing. 
    	public static int checkMove(char [] [] maze, int newRow, int newCol)
    	{
    		//checks if they run into a wall
    		if (newRow<0 || newRow>3 || newCol<0 || newCol>5)
    		{
    			System.out.println("You hit a wall");
    			return 0;
    			// it will return to the main method and places 0 in the state variable
    		}
    		else if (maze[newRow][newCol] == 'p')  
    		//this checks the maze if there is a P in that location
    		{
    			System.out.println("You fall into a pit");
    			return 2;
    			// it will return to the main method and places 2 in the state variable
    		}
    		else if (maze[newRow][newCol] == 'w')//checks for the wumpus
    		{
    			System.out.println("You've eaten by the Wumpus!!");
    		}
    		//checks for the breeze (right,left,down,up)   //<<is the following if-statement correct?>>>
    		if (
    			(newCol>0 && maze[newRow][newCol-1] == 'p') || 
    			(newCol<5 && maze[newRow][newCol+1] =='p') ||
    			(newRow>0 && maze[newCol][newRow-1] == 'p') ||
    			(newRow<3 && maze[newCol][newRow+1] =='p')
    			)
    		{
    			System.out.println("You feel a breeze");
    		}
    		return 1;
    		
    	}//end of the maze method
    
    	public static void main(String [ ] args)
    	{
    		char [ ] [ ] maze = new char [4][6]; //the actual map of the game
    		int playerRow=3, playerCol=0;  // player location aka lat/long
    		Scanner in= new Scanner(System.in);   //<<there is something wrong with my scanner>>>
    		int move, state;
    		// state of the game
    		// state   0= illegal move, 1= legal move, 3= end game
    		initMaze (maze); // calling the initMaze method
    		do
    		{
    			System.out.println("What would you like to do? 1=up, 2=down, 3=right 4=left, 5=shoot");
    			move = in.nextInt(System.in);   //<<for some reason eclipse is telling me that the type is incorrect>>
    			if (move ==1) // move up in the world
    			{
    				state = checkMove(maze, playerRow-1,playerCol); //these are coordinates
    				if ( state >0 ) // legal move
    				{
    					playerRow = playerRow-1;
    				}
    			}
    			if (move ==2) // move down in the world
    			{
    				state = checkMove(maze, playerRow+1,playerCol); 
    				if ( state >0 ) // legal move
    				{
    					playerRow = playerRow+1;
    				}
    			}
    			if (move ==3) // move right in the world
    			{
    				state = checkMove(maze, playerRow,playerCol+1); 
    				if ( state >0 ) // legal move
    				{
    					playerCol = playerCol+1;
    				}
    			}
    			if (move ==4) // move left in the world
    			{
    				state = checkMove(maze, playerRow,playerCol-1); 
    				if ( state >0 ) // legal move
    				{
    					playerRow = playerCol-1;
    				}
    			}
    			if (move == 5) // shoot the wumpus in the world
    			{ 
    				System.out.println("Which direction would you like to shoot? 1=up, 2=down, 3=right, 4=left");
    				int shootDir = in.nextInt(System.in);
    				
    				// check if the wumpus gets killed
    				if (  shootDir == 1 )
    				{
    					System.out.println("You shot the Wumpus!");
    				}
    				
    			}
    		}while (state!=2);
    	}//end of main
    
    }//end of class
    Last edited by yuki; Nov 28 '07, 05:58 PM. Reason: pointed out the problems in the program
  • yuki
    New Member
    • Nov 2007
    • 3

    #2
    some problems i fixed

    i already fixed this part:

    for (int row = 0; row <4; row ++)
    {
    for (int col = 0; col <6; col ++)
    {
    maze[row][col] = '0';
    }
    }



    and this part:

    move = in.nextInt(Syst em.in);

    to this:

    move = in.nextInt();


    i just need to find out how to check where the wumpus is and if that is the direction the player is shooting.
    Last edited by yuki; Nov 29 '07, 06:59 PM. Reason: it didnt work the first time

    Comment

    Working...