Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Java,I tryig to create a crossword puzzle, it works, but I need help on how you would share letters, what I mean is if cat

Java,I tryig to create a crossword puzzle, it works, but I need help on how you would share letters, what I mean is if cat is down and share is up then I want both words to share a, what's the best way to do that with my code provided?

package wordsearch;

import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Image; import java.util.Random; import javax.swing.DefaultListModel; import javax.swing.ImageIcon;

/** * * @author Josh */ public class wordSearchFrame extends javax.swing.JFrame {

Graphics draw; Font wordFont = new Font("Tahoma", 0, 24); String letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; int letHeight, letWidth; FontMetrics fontMetrics; //letter info Image graph; ImageIcon lblGraph; int row = 0, col = 0, ind = 0; String let; int letSize = 15; String[][] placed = new String[letSize][letSize]; int wordToPlace = 0; Dimension board; Random rnd = new Random(); DefaultListModel newList = new DefaultListModel();

/** * Creates new form wordSearchFrame */ public wordSearchFrame() { initComponents(); listPanel.setModel(newList); // board = new Dimension(500, 500); // graph = createImage(board.width, board.height); // draw = graph.getGraphics(); // draw.setFont(wordFont); // fontMetrics = draw.getFontMetrics(wordFont); // letHeight = fontMetrics.getHeight(); // letWidth = fontMetrics.charWidth('W'); // // draw.clearRect(0, 0, board.width, board.width); // draw.setColor(Color.white); // draw.fillRect(0, 0, board.width, board.width); // // draw.setColor(Color.RED); // drawWordsOnImage(); // // //draw.drawString("It works", 100, 100); // lblGraph = new ImageIcon(graph); // lblGraphout.setIcon(lblGraph); }

public void blankArray() { for (int i = 0; i < letSize; i++) { for (int j = 0; j < letSize; j++) { placed[i][j] = "-"; } } }

public void drawWordsOnImage() { row = letHeight * 2; col = letWidth / 2; draw.clearRect(0, 0, board.width, board.width); draw.setColor(Color.white); draw.fillRect(0, 0, board.width, board.width);

draw.setColor(Color.RED); blankArray();

fillArrayWithWords(); //fillArrayWithJunk(); for (int i = 0; i < letSize; i++) { for (int j = 0; j < letSize; j++) { draw.drawString(placed[i][j], col, row); col += letWidth * 1.5;//manage the columns

} col = letWidth / 2; row += letHeight; } }

public void fillArrayWithWords() { int up, row, col, start = 0, diff = 0, used = 0; //listPanel.setModel(newList); for (int x = 0; x < this.listPanel.getModel().getSize(); x++) { int reverse = 0; this.listPanel.setSelectedIndex(wordToPlace); String word = this.listPanel.getSelectedValue().toString(); up = rnd.nextInt(5); switch (up) { case 0: do { used = 0; row = rnd.nextInt(letSize); diff = letSize - word.length(); start = rnd.nextInt(diff); for (int i = 0; i < word.length(); i++) { if (placed[row][i + start] != "-") { used++; this.setTitle("Repeat"); } } } while (used > 0); for (int i = 0; i < word.length(); i++) { placed[row][i + start] = word.substring(i, i + 1); } break; case 1: do { used = 0; col = rnd.nextInt(letSize); diff = letSize - word.length(); start = rnd.nextInt(diff); for (int i = 0; i < word.length(); i++) { if (placed[i + start][col] != "") { used++; this.setTitle("Repeat"); } } } while (used > 0); for (int i = 0; i < word.length(); i++) { placed[i + start][col] = word.substring(i, i + 1); } break; case 2: do { used = 0; col = rnd.nextInt(letSize); diff = letSize - word.length(); start = rnd.nextInt(diff); for (int i = 0; i < word.length(); i++) { if (placed[i + start][col] != "-") { used++; this.setTitle("Repeat"); } } } while (used > 0); for (int i = word.length() - 1; i>=0; i--) { placed[i][col] = word.substring(reverse, reverse + 1); reverse++; } break; case 3: do { used = 0; row = rnd.nextInt(letSize); diff = letSize - word.length(); start = rnd.nextInt(diff); for (int i = 0; i < word.length(); i++) { if (placed[i + start][row] != "-") { used++; this.setTitle("Repeat"); } } } while (used > 0); for (int i = word.length() - 1; i>=0; i--) { placed[i][row] = word.substring(reverse, reverse + 1); reverse++; } break; case 4: do { used = 0; row = rnd.nextInt(letSize); diff = letSize - word.length(); start = rnd.nextInt(diff); for (int i = 0; i < word.length(); i++) { if (placed[i + start][i + start] != "-") { used++; this.setTitle("Repeat"); } } } while (used > 0); for (int i = word.length() - 1; i>=0; i--) { placed[i + start][i + start] = word.substring(reverse, reverse + 1); reverse++; } break; } wordToPlace++; } }

public void fillArrayWithJunk() { for (int i = 0; i < letSize; i++) { for (int j = 0; j < letSize; j++) {

if (placed[i][j] == "-") { ind = rnd.nextInt(letters.length()); placed[i][j] = letters.substring(ind, ind + 1); } } } }

/** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // private void initComponents() {

lblGraphout = new javax.swing.JLabel(); jButton1 = new javax.swing.JButton(); enterWordButton = new javax.swing.JButton(); wordBox = new javax.swing.JTextField(); jScrollPane2 = new javax.swing.JScrollPane(); listPanel = new javax.swing.JList<>();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jButton1.setText("Build Word Search"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } });

enterWordButton.setText("Enter Word"); enterWordButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { enterWordButtonActionPerformed(evt); } });

jScrollPane2.setViewportView(listPanel);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jButton1) .addGroup(layout.createSequentialGroup() .addComponent(enterWordButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(wordBox, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 193, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(165, 165, 165) .addComponent(lblGraphout, javax.swing.GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(lblGraphout, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 387, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButton1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(enterWordButton) .addComponent(wordBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(0, 21, Short.MAX_VALUE))) .addContainerGap()) );

pack(); }//

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: //listPanel.setModel(newList); wordToPlace = 0; board = new Dimension(500, 500); graph = createImage(board.width, board.height); draw = graph.getGraphics(); draw.setFont(wordFont); fontMetrics = draw.getFontMetrics(wordFont); letHeight = fontMetrics.getHeight(); letWidth = fontMetrics.charWidth('W');

draw.clearRect(0, 0, board.width, board.width); draw.setColor(Color.white); draw.fillRect(0, 0, board.width, board.width);

draw.setColor(Color.RED); drawWordsOnImage();

//draw.drawString("It works", 100, 100); lblGraph = new ImageIcon(graph); lblGraphout.setIcon(lblGraph); }

private void enterWordButtonActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: newList.addElement(wordBox.getText().toUpperCase()); wordBox.setText(""); }

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Finance The Role Of Data Analytics In Manda Due Diligence

Authors: Ps Publishing

1st Edition

B0CR6SKTQG, 979-8873324675

More Books

Students also viewed these Databases questions

Question

What is Accounting?

Answered: 1 week ago

Question

Define organisation chart

Answered: 1 week ago

Question

What are the advantages of planning ?

Answered: 1 week ago

Question

Explain the factors that determine the degree of decentralisation

Answered: 1 week ago