0% found this document useful (0 votes)
2 views

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

The document provides a Java programming guide for creating a simple game that allows 1 to 3 players to answer questions. It includes instructions for collecting player names, asking questions in a loop, and checking answers for correctness. Additionally, it contains code snippets for player management and game interface elements.

Uploaded by

Adel Hassan
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

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

The document provides a Java programming guide for creating a simple game that allows 1 to 3 players to answer questions. It includes instructions for collecting player names, asking questions in a loop, and checking answers for correctness. Additionally, it contains code snippets for player management and game interface elements.

Uploaded by

Adel Hassan
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 22

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);
}
}
}
}

You might also like