Попытка сделать четырехцветную гипотезу в Java, которая является полностью ложной игрой, в настоящее время застряла - PullRequest
0 голосов
/ 17 марта 2019

В настоящее время застрял как в поиске способа правильно нарисовать линию, так и в функции JLabel, работающей должным образом (если вы нажмете на нее, она изменит цвет четырех выбранных типов)

Наш профессор хочет, чтобы мы создали игруиз четырех гипотез о цвете, которые являются полностью ложной игрой, пользователь введет желаемую вершину и ребро, программа автоматически сгенерирует вершину и ребро, пользователь щелкнет по вершине, чтобы развернуть вершину в четыре предварительно запрограммированных цвета, а затем пользовательотправьте его, и программа проверит его, у пользователя есть только 3 попытки, прежде чем он потерпит неудачу, если пользователь потерпел неудачу или бросил, программа закончит игру для него, наконец, это достижения, которые являются необязательными.

I 'Теперь я сгорел, так что любой совет полезен (извините за грязный код).Заранее спасибо.Код:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;
import java.util.Arrays;
import java.util.ArrayList;

public class FourColor extends JFrame implements ActionListener
{
ArrayList<Integer> ab = new ArrayList<Integer>();
ArrayList<Integer> ba = new ArrayList<Integer>();
JLabel Label1 = new JLabel("Vertex:");
JLabel Label2 = new JLabel("Edge:");
JButton Button1 = new JButton("Enter");
JButton Button2 = new JButton("Back");
JTextField TextField1 = new JTextField();
JTextField TextField2 = new JTextField();
Font Font1 = new Font("Century Schoolbook",Font.BOLD,13);
Container Contains;
int Tries, i,h,l,a,b;
final int BUTTON_WIDTH = 20;
final int BUTTON_HEIGHT = 20;
public int Ver,Edg;


public FourColor()
{   
    Contains = getContentPane();
    Contains.setLayout(null);
    Contains.setBackground(Color.WHITE);
    setSize(800,400);
    setLocation(0,0);
    setResizable(false);
    setVisible(true);
    setTitle("4 Color Game");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    Contains.add(Label1);
    Contains.add(Label2);
    Contains.add(Button1);
    Contains.add(Button2);
    Contains.add(TextField1);
    Contains.add(TextField2);

    Label1.setBounds(15,20,100,25);
    Label2.setBounds(15,50,100,25);
    Button1.setBounds(20,90,90,25);
    Button2.setBounds(120,90,90,25);
    TextField1.setBounds(90,20,150,25);
    TextField2.setBounds(90,50,150,25);

    Label1.setFont(Font1);
    Label2.setFont(Font1);

    Button1.addActionListener(this);
    Button2.addActionListener(this);

    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); 
    int w = getSize().height;
    int h = getSize().height;
    int x = (dim.width-w)/2;
    int y = (dim.height-h)/2;
}
        public void actionPerformed(ActionEvent Evt)
    {   
        if(Evt.getSource()==Button2)
        {
            setVisible(false);
            //new MainMenu();
        }

        Random random = new Random();
        Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); 
        int w = getSize().height;
        int h = getSize().height;
        int x = (dim.width-w)/2;
        int y = (dim.height-h)/2;
        double xy = random.nextInt(dim.width-w);
        double yx = random.nextInt(dim.height-h);

        if(Evt.getSource()==Button1)
        {

            try
            {
                double vert = Double.parseDouble(TextField1.getText());
                double edge = Double.parseDouble(TextField2.getText());
                vert = - 1;
                edge = - 1;
            }
            catch (Exception e)
            {
                JOptionPane.showMessageDialog(null, "Error, Please enter a number");
            }

            double vert = Double.parseDouble(TextField1.getText());
            double edge = Double.parseDouble(TextField2.getText());
            Ver = (int) vert;
            Edg = (int) edge;
            h = Ver;

            if (Double.parseDouble(TextField1.getText())>2 && Double.parseDouble(TextField1.getText()) < Double.parseDouble(TextField2.getText()))
                {

                setSize(1366,768);
                Label1.setVisible(false);
                Label2.setVisible(false);
                Button1.setVisible(false);
                Button2.setBounds((1366/2),(700),100,20);
                Button2.setVisible(true);
                TextField1.setVisible(false);
                TextField2.setVisible(false);

            for(int i = 0; i < vert ; i++)
                {
                //Generates the jlabel

                JLabel lbtn[] = new JLabel[Ver];
                int j = (int) xy;
                int k = (int) yx;
                a = random.nextInt(j);
                b = random.nextInt(k);
                lbtn[i].setBounds (a, b, BUTTON_WIDTH, BUTTON_HEIGHT);
                lbtn[i].setBackground(Color.BLACK);
                ab.add(a);
                ba.add(b);
                Contains.add(lbtn[i]);

                lbtn[i].setVisible(true);
                Contains.revalidate();
                Contains.repaint();
                System.out.println(i+"a");
                }

        for(int i = 0; i < vert ; i++)
        {
            //Should change the color of the jlabels when clicked
        //  lbtn.get[i].setIcon(rd);
                Contains.revalidate();
                Contains.repaint();
        }
        }
        else if (TextField1.getText() == "" &&TextField2.getText() == "" )
        {
            JOptionPane.showMessageDialog(null, "Error, Please enter number in the text fields");
        }
        else if (Double.parseDouble(TextField1.getText())<2 || Double.parseDouble(TextField2.getText())<Double.parseDouble(TextField1.getText()))
        {
            JOptionPane.showMessageDialog(null, "Error, Please enter < 2 vertex and edges < vertex");
        }
        }
        }

        @Override 
    public void paint (Graphics g)
    {
    //this paint should create lines that connects the vertex
        Contains.revalidate();
        Contains.repaint();

            g.drawLine(ab.get(i),ba.get(i),ab.get(i+1),ba.get(i+1));

    }
    public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        @Override
        public void run() {
            new FourColor();
        }
    });
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...