Computer Science questions and answers
Question: 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). String name =
game.askForText("What is player 0
This problem has been solved!
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).
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);
}
}
}
}