Basic java please help QUESTION 1: Add code to ask user about the number of players (from 1 to 3) - use game.askForInt. Store the input in a variable numPlayers. QUESTION 2: Modify the code below to ask for players' names and add them to the game in a for loop (up to numPlayers iterations).

Basic java please help 

Basic java please help  QUESTION 1: Add code to ask user about the number of players (from 1 to 3) - use game.askForInt. Store the input in a variable numPlayers. QUESTION 2: Modify the code below to ask for players' names and add them to the game in a for loop (up to numPlayers iterations).


QUESTION 1: Add code to ask user about the number of players (from 1 to 3) - use game.askForInt. Store the input in a variable numPlayers.

QUESTION 2: Modify the code below to ask for players' names and add them to the game in a for loop (up to numPlayers iterations).

String name = game.askForText("What is player 0 name?");

game.addPlayer(name);

name = game.askForText("What is player 1 name?");

game.addPlayer(name);

name = game.askForText("What is player 2 name?");

game.addPlayer(name);

QUESTION 3: Modify this part to ask questions and get answers in a for loop (up to numPlayers iterations)  

game.setCurrentPlayer(0);

String answer = game.askForText(q0);

if(a0.equals(answer))

  

 

 

Answer

 

import java.awt.Color;

import java.awt.Font;

import java.awt.FontMetrics;

import java.awt.Graphics2D;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

 

import javax.imageio.ImageIO;

 

public class Player {

private String name;

private int score, x, y;

//private static Image img = Toolkit.getDefaultToolkit().getImage("MisterX.jpg");

private BufferedImage img;

public Player(String name){

this.name = name;

try {

img = ImageIO.read(new File("MisterX.jpg"));

} catch (IOException e) {}

}

 

public void paint(Graphics2D g2){

g2.drawImage(img, x, y, null);

g2.setColor(new Color(255, 210, 0));

Font font = new Font("Arial", Font.PLAIN, 18);

FontMetrics metrics = g2.getFontMetrics(font);

int nameWidth = metrics.stringWidth(name);

g2.setFont(font);

g2.drawString(name, x + (img.getWidth(null)-nameWidth)/2, y + img.getHeight(null)-5);

 

g2.setFont(new Font("Arial", Font.BOLD, 22));

g2.setColor(new Color(150, 255, 255));

g2.drawString("$" + score, x+10, y + img.getHeight(null)+55);

}

 

public String getName() {

return name;

}

public int getScore() {

return score;

}

public void incrementScore(){

score+=100;

}

public int getX() {

return x;

}

public int getY() {

return y;

}

public BufferedImage getImg() {

return img;

}

public void setX(int x) {

this.x = x;

}

public void setY(int y) {

this.y = y;

}

public void setImg(BufferedImage img) {

this.img = img;

}

}

 

 

 

 

 

public class Main {    //This is your main class (executable class)

static Game game;   //This is a global variable (can be accessed everywhere in this class)

public static void main(String[] args) {

 game = new Game();  //This statement resets the game

 

 //REQ1: Modify the value of the two variables q0 and a0 to a real question and answer.

 String q0 = "Where is the biggest city in Canada by population?";

 String a0 = "Toronto";

 

 //REQ2: Create 4 more String variables, q1, a1, q2, and a2, for two more questions and answers.

  String q1 = "What is the official language in Argentina? ";

  String a1 = "Spanish";

 

 String q2 = "What is the postal code of UBCO";

 String a2 = "VIV 1V7";

 

 

 //REQ3: Declare a variable name.

 

 //  Ask the user about player0's name (using game.askForText(message)). Store the user input in the variable name. Add player to the game (using game.addPlayer(playerName)).

 //  Repeat the same thing for the other two players.

String name1 = game.askForText("What is the first player's name ");

game.addPlayer(name1);

String name2 = game.askForText("What is the second player's name ");

game.addPlayer(name2);

String name3 = game.askForText("What is the third player's name ");

game.addPlayer(name3);

 

 game.setCurrentPlayer(0);

 

 //REQ4: Ask player0 question q0 (using game.askForText(message)). read the answer into a String variable.

 //  If player's input is equal to a0, then call game.correct(), otherwise call game.incorrect()

 

String answer1 = game.askForText(q0);

 

if(a0.equals(answer1))

          game.correct();

else

          game.incorrect();

 

 game.setCurrentPlayer(1);

 

 //REQ5: Ask player1 question q1 (using game.askForText(message)). read the answer into a String variable.

 //  If player's input is equal to a1, then call game.correct(), otherwise call game.incorrect()

 

String answer2 = game.askForText(q1);

 

if(a1.equals(answer2))

          game.correct();

else

          game.incorrect();

 

 game.setCurrentPlayer(2);

 

 //REQ6: Ask player2 question q2 (using game.askForText(message)). Read the answer into a String variable.

 //  If player's input is equal to a2, then call game.correct(), otherwise call game.incorrect()

 

String answer3 = game.askForText(q2);

 

if(a2.equals(answer3))

game.correct();

else

game.incorrect();

 

 

 System.exit(1);  //This statement terminates the program

}

}

 

 

 

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

 

import javax.imageio.ImageIO;

import javax.swing.JFrame;

import javax.swing.JPanel;

 

@SuppressWarnings("serial")

public class GameFrame extends JFrame{

private Game game;

public GameFrame(Game game, String title, int width, int height) {

this.game = game;

//attributes

setSize(width, height);

setTitle(title);

setUndecorated(true);

setDefaultCloseOperation(EXIT_ON_CLOSE);

//create and add objects

add(new GamePanel());

}

 

private class GamePanel extends JPanel{

BufferedImage myImage;

public GamePanel() {

//setBackground(Color.BLACK);

try {

myImage = ImageIO.read(new File("background.jpg"));

} catch (IOException e) {

e.printStackTrace();

}

}

public void paint(Graphics g) {

super.paint(g);

g.drawImage(myImage, 0, 0, this);

game.paint((Graphics2D)g);

}

 

}

 

}

 

//background.jpg

//MisterX.jpg

 

 

 

import java.awt.BasicStroke;

import java.awt.Color;

import java.awt.Font;

import java.awt.FontMetrics;

import java.awt.Graphics2D;

import java.util.ArrayList;

 

public class Game {

public static final int WIDTH = 800, HEIGHT = 500, MAX_PLAYERS = 3, PLAYER_Y = 50;

protected ArrayList<Player> players = new ArrayList<Player>(MAX_PLAYERS);

private GameFrame frame = new GameFrame(this, "COSC 111 Jeopardy", WIDTH, HEIGHT);

private BDialog dialog = new BDialog(frame);

private Player currentPlayer;

private Color responseColor = Color.white;

 

public Game(){

 frame.setLocationRelativeTo(null);

 dialog.setLocationRelativeTo(frame);

 dialog.setSize(WIDTH-10, 100);

 dialog.setLocation(frame.getX()+5, frame.getY() + HEIGHT - 105);

 frame.setVisible(true);

}

public void print(String msg){

 frame.repaint();

 dialog.showMessageDialog(msg);

}

public String askForText(String msg){

 frame.repaint();

 String response = dialog.showInputDialog(msg);

 return (response==null || response.length()==0)? "" : response.trim();

}

public int askForInt(String msg, int min, int max){

 msg += "(" + min + " to " + max + ")";

 boolean found = false, msgModified = false;

 int num = 0;

 while(!found){

  try{

   num = Integer.parseInt(askForText(msg));

   if(num<min || num>max)

    throw new Exception();

   found = true;

  }catch(Exception e){

   if(!msgModified) msg = "Invlid input. " + msg;

   msgModified = true;

  }

 }

 return num;

}

 

public void addPlayer(String name){

 Player player = new Player(name);

 int playerWidth = player.getImg().getWidth();

 int distanceBetweenPlayers = (WIDTH - MAX_PLAYERS * playerWidth) / (MAX_PLAYERS + 1);

 int x = (players.size()+1)  * distanceBetweenPlayers + players.size() * playerWidth;

 player.setX(x);

 player.setY(PLAYER_Y);

 players.add(player);

 frame.repaint();

}

public void clearPlayers(){

 players.clear();

}

public void paint(Graphics2D g2){

 //draw players

 for (int i = 0; i < players.size(); i++)

  players.get(i).paint(g2);

 //draw frame around selected player

 if(currentPlayer != null){

  int px = currentPlayer.getX()-4;

  int py = currentPlayer.getY()-4;

  int pw = currentPlayer.getImg().getWidth()+8;

  int ph = currentPlayer.getImg().getHeight()+8;

  g2.setStroke(new BasicStroke(8));

  g2.setColor(responseColor);

  g2.drawRect(px, py, pw, ph);

 }

 //who is turn it is

 if(currentPlayer != null){

  g2.setColor(Color.yellow);

  String name =  currentPlayer.getName() + "'s turn";

  Font font = new Font("Arial", Font.BOLD, 28);

  g2.setFont(font);

  FontMetrics metrics = g2.getFontMetrics(font);

  int txtWidth = metrics.stringWidth(name);

  g2.drawString(name, (WIDTH-txtWidth)/2, 35);

 }

}

public void setCurrentPlayer(int pl) {

 currentPlayer = players.get(pl);

 responseColor  = new Color(255, 160, 255);

}

public void correct() {

 responseColor = Color.green;

 frame.repaint();

 if(currentPlayer != null)

  currentPlayer.incrementScore();

 print("Correct (press Enter to continue).");

}

public void incorrect() {

 responseColor = Color.red;

 frame.repaint();

 print("Sorry, that is incorrect answer (press Enter to continue).");

}

}

 

 

import java.awt.Color;

import java.awt.Font;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

 

import javax.swing.JButton;

import javax.swing.JDialog;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JTextField;

 

@SuppressWarnings("serial")

public class BDialog extends JDialog {

 

   private JButton btnAnswer = new JButton("Answer");

   private JButton btnExit = new JButton("Exit");

   private JTextField txtAnswer = new JTextField(10);

   private JLabel lblMsg = new JLabel("This is a message");

   private String result;

   public BDialog(JFrame frame) {

       super(frame, true);

       setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);

       setUndecorated(true);

       setLayout(new GridLayout(2, 1));

       getContentPane().setBackground(Color.black);

 

       //set font and color

       Font font = new Font("Arial", Font.BOLD, 20);

       lblMsg.setFont(font);

       lblMsg.setForeground(Color.CYAN);

       txtAnswer.setFont(font);

       btnAnswer.setFont(font);

       btnExit.setFont(font);

 

       JPanel tmpPanel = new JPanel();

       //tmpPanel.setBackground(Color.black);

       tmpPanel.setOpaque(false);

       tmpPanel.add(lblMsg);

       add(tmpPanel);

       tmpPanel = new JPanel();

       //tmpPanel.setBackground(Color.black);

       tmpPanel.setOpaque(false);

       tmpPanel.add(txtAnswer);

       tmpPanel.add(btnAnswer);

       tmpPanel.add(btnExit);

       add(tmpPanel);

 

       //pack();

       MyHandler handler = new MyHandler();

       btnAnswer.addActionListener(handler);

       txtAnswer.addActionListener(handler);

       btnExit.addActionListener(handler);

   }

   public String showInputDialog(String msg){

    lblMsg.setText(msg);

    setVisible(true);

    return result;

   }

   public void showMessageDialog(String msg){

    lblMsg.setText(msg);

    setVisible(true);

   }

   private class MyHandler implements ActionListener{

 public void actionPerformed(ActionEvent e) {

  if(e.getSource() == btnExit){

   if(JOptionPane.showConfirmDialog(null, "Really want to exit?","Confirmation", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION)

    System.exit(0);

  }else{

   result = txtAnswer.getText();

   txtAnswer.setText("");

   setVisible(false);

  }

 }

   }

}

 

 

 📩 Need a similar solution? Email me: adel455@hotmail.com


Previous Post Next Post

Comments

Nepali Graphics - Learn design, Animation, and Progrmming