java - 在 java 中制作我的第一个项目

标签 java swing

因此,在学习了大约 2 小时的 Java 指南后,我开始制作我的第一个项目,一个简单的剪刀石头布游戏,但后来我发现了一个问题。每次您选择石头或剪刀并获胜时,我想为游戏的获胜者加 1 分,这是我在完成之前唯一需要做的事情(我是 Java 新手)。

import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Main extends JFrame {

    private static final long serialVersionUID = 1L;

    private static String Default = "Rock,Paper,Scissors";
    private static JLabel update;
    private static JLabel userScore;
    private static JLabel pcScore;
    private static Container panel;
    private static int userCounter;

    public static int getUserCounter() {
        return userCounter;
    }

    public static void setUserCounter(int userCounter) {
        Main.userCounter = userCounter + userCounter;
    }

    public static int getPcCounter() {
        return pcCounter;
    }

    public static void setPcCounter(int pcCounter) {
        Main.pcCounter = pcCounter + pcCounter;
    }

    private static int pcCounter;
    private static final int bwidth = 90;
    private static final int bheight = 25;
    private static Random random;
    private static final String ROCK = "Rock";
    private static final String PAPER = "Paper";
    private static final String SCISSORS = "Scissors";
    private static JButton rock;
    private static JButton paper;
    private static JButton scissors;

    public Main() {
        super("Simple Game :D");
        panel = new Container();
        getContentPane().add(panel);

        userScore = new JLabel();
        userScore.setText("Your Score " + getUserCounter());
        userScore.setBounds(300, 50, 100, 40);

        pcScore = new JLabel();
        pcScore.setText("Pc Score " + getPcCounter());
        pcScore.setBounds(430, 50, 100, 40);

        update = new JLabel(Default);
        update.setBounds(325, 0, 400, 40);
        update.enableInputMethods(false);
        update.setBackground(Color.BLUE.brighter());

        panel.add(update);
        panel.add(Rock());
        panel.add(Paper());
        panel.add(Scissors());

        panel.add(userScore);
        panel.add(pcScore);

    }

    public Component Rock() {
        rock = new JButton("Rock");
        rock.setBounds(350, 100, bwidth, bheight);
        rock.setBackground(Color.gray.brighter());
        rock.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                Game(ROCK);
            }
        });
        return rock;
    }

    public Component Paper() {
        paper = new JButton("Paper");
        paper.setBounds(350, 130, bwidth, bheight);
        paper.setBackground(Color.WHITE);
        paper.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                Game(PAPER);
            }
        });
        return paper;
    }

    public Component Scissors() {
        scissors = new JButton("scissors");
        scissors.setBounds(350, 160, bwidth, bheight);
        scissors.setBackground(new Color(174, 166, 166));
        scissors.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                Game(SCISSORS);
            }
        });
        return scissors;
    }

    public String Pc() {
        String pc = "";
        random = new Random();
        int choice = 1 + random.nextInt(3);
        if (choice == 1) {
            pc = ROCK;
        } else if (choice == 2) {
            pc = PAPER;
        } else if (choice == 3) {
            pc = SCISSORS;
        }
        return pc;
    }

    public void Game(String user) {
        String pc = Pc();
        int winner = 0;
        if (user == ROCK && pc == ROCK) {
            update.setText(user + " vs " + pc + " Its a Draw!!");
        } else if (user == ROCK && pc == PAPER) {
            setPcCounter(1);
            update.setText(user + " vs " + pc + " Pc Wins!! ");

        } else if (user == ROCK && pc == SCISSORS) {
            setUserCounter(1);
            update.setText(user + " vs " + pc + " You Win!!");

            // PAPER
        } else if (user == PAPER && pc == PAPER) {
            update.setText(user + " vs " + pc + " Its a Draw!!");
        } else if (user == PAPER && pc == ROCK) {
            update.setText(user + " vs " + pc + " You Win!!");
            userCounter += 1;
        } else if (user == PAPER && pc == SCISSORS) {
            update.setText(user + " vs " + pc + " Pc Wins!!");
            pcCounter += 1;
            // SCISSORS
        } else if (user == SCISSORS && pc == SCISSORS) {
            update.setText(user + " vs " + pc + " Its a Draw!!");
        } else if (user == SCISSORS && pc == ROCK) {
            update.setText(user + " vs " + pc + " Pc Wins!!");
            pcCounter += 1;
        } else if (user == SCISSORS && pc == PAPER) {
            update.setText(user + " vs " + pc + " You Win!!");
            userCounter += 1;
        } else if (user == null || pc == null) {
            System.exit(0);
        }

    }
}

最佳答案

你有一个错误

public static void setUserCounter(int userCounter) {
    Main.userCounter = userCounter + userCounter;
}

应该是

Main.userCounter += userCounter;

Main.userCounter = Main.userCounter + userCounter;

同样适用于:

public static void setPcCounter(int pcCounter) {
    Main.pcCounter = pcCounter + pcCounter;
}

还有在底部的一些地方,你直接使用了userCounter变量,没有使用setUserCounter();

} else if (user == SCISSORS && pc == PAPER) {
update.setText(user + " vs " + pc + " You Win!!");
userCounter += 1;

保持风格一致并使用 setUserCounter();

请注意,在对象中,当存在 myVar 对象字段和 myVar 参数时,可以通过键入“this.myVar”来访问对象字段,以区别于“myVar”的参数

关于java - 在 java 中制作我的第一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25512224/

相关文章:

java - 无需在浏览器中打开即可访问 URL,使用 Android 应用程序进行数字 LED 控制

Java 对话框允许使用选择文件

java - Swing 应用程序窗口未显示更改

java - JPanel 中的 JButton 占用太多空间

java - RowHeader 样式的表格,对 rowHeader 和数据进行排序

java - 在intellij中使用java连接到数据库(postgres)

java - 为什么要这么写一个迭代器呢?

java - 实现一个根据值返回对象的工厂

java - 在 JavaFX 中获取当前阶段的 GraphicsDevice

java - 如何在 Java swing 中嵌入 JavaFX SimpleSwingBrowser