如何在按钮点击时切换玩家?

时间:2016-06-17 09:07:26

标签: java

我有一个按钮:Gooi 我有2名球员可以在彼此之后掷骰子。因此,玩家1可以投掷,然后是玩家1,然后是玩家2.我不知道该怎么做。我不知道是否应该使用一段时间或for循环来检查玩家是否已经转过来。

我的代码:

package Opdrachten;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

import javax.swing.*;

public class spel extends JPanel {
private JButton knop;
private boolean geklikt, player1, player2;
private JLabel speler1, speler2, plekOpBord, gegooid, bijzonderheid;
Random rand = new Random();
int waardeP1 = rand.nextInt(6) + 1;
int waardeP2 = rand.nextInt(6) + 1;
int optelP1 = 0;
int optelP2 = 0;

public spel() {
    setBackground(Color.WHITE);
    knop = new JButton("Gooi");
    knop.addActionListener(new KnopHandler());
    knop.setBounds(20,20, 100,20);
    speler1 = new JLabel("Speler 1");
    speler2 = new JLabel("Speler 2");
    speler1.setBounds(20, 50, 50, 50);
    speler2.setBounds(20, 80, 50, 50);
    gegooid = new JLabel("");
    gegooid.setBounds(140, 5, 150, 50);
    plekOpBord = new JLabel("Plek op het bord");
    plekOpBord.setBounds(140, 35, 100,50);
    bijzonderheid = new JLabel("Bijzonderheid");
    bijzonderheid.setBounds(260, 35, 100,50);


    add(knop);
    add(gegooid);
    add(speler1);
    add(speler2);
    add(plekOpBord);
    add(bijzonderheid);



}

public void paintComponent(Graphics g) {
    super.paintComponent(g);


    if(geklikt) {
        optelP1 += waardeP1;
        g.drawString("Speler 1 " + " heeft " + waardeP1 + " gegooid", 150,40);
        g.drawString(""+optelP1, 175, 85);
    }

    if (optelP1 == 3) {
        g.drawString("Bokkesprong", 260, 85);
    }
    if (optelP1 == 6) {
        g.drawString("Brug", 260, 85);
    }
    if (optelP1 == 15) {
        g.drawString("Vogelkooi", 260, 85);
    }
    if(optelP1 == 19){
        g.drawString("Hotel", 260, 85);
    }
    if(optelP1 == 26){
        g.drawString("Dobbelsteenvakje", 260, 85);
    }
    if(optelP1 == 31){
        g.drawString("Put", 260, 85);
    }
    if(optelP1 == 39){
        g.drawString("Trap", 260, 85);
    }
    if(optelP1 == 42){
        g.drawString("Labyrint", 260, 85);
    }
    if(optelP1 == 52){
        g.drawString("Gevangenis", 260, 85);
    }
    if(optelP1 == 58){
        g.drawString("Graf", 260, 85);
    }
    if(optelP1 == 63){
        g.drawString("Zonsondergang", 260, 85);
    }


    if(geklikt) {
        optelP2 += waardeP2;
        //g.drawString("Speler 1 " + " heeft " + waardeP2 + " gegooid", 150,40);
        g.drawString(""+optelP2, 175, 110);
    }

    if (optelP2 == 3) {
        g.drawString("Bokkesprong", 260, 110);
    }
    if (optelP2 == 6) {
        g.drawString("Brug", 260, 110);
    }
    if (optelP2 == 15) {
        g.drawString("Vogelkooi", 260, 110);
    }
    if(optelP2 == 19){
        g.drawString("Hotel", 260, 110);
    }
    if(optelP2 == 26){
        g.drawString("Dobbelsteenvakje", 260, 110);
    }
    if(optelP2 == 31){
        g.drawString("Put", 260, 110);
    }
    if(optelP2 == 39){
        g.drawString("Trap", 260, 110);
    }
    if(optelP2 == 42){
        g.drawString("Labyrint", 260, 110);
    }
    if(optelP2 == 52){
        g.drawString("Gevangenis", 260, 110);
    }
    if(optelP2 == 58){
        g.drawString("Graf", 260, 110);
    }
    if(optelP2 == 63){
        g.drawString("Zonsondergang", 260, 110);
    }
}

class KnopHandler implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        geklikt = true;
        waardeP1 = rand.nextInt(6) + 1; // get another random number
        waardeP2 = rand.nextInt(6) + 1; // get another random number
        repaint();

    }
}

}

2 个答案:

答案 0 :(得分:0)

使用布尔值更改投掷玩家并在每次投掷时切换它。 切换布尔值的最简单方法是。

String#scan

答案 1 :(得分:0)

首先,我建议摆脱if-s。尝试切换,它更具可读性。

玩家切换你可以在控制游戏的类中实现。创建一个变量Player currentPlayer。现在创建一个带有一些终止条件的while循环,并在每个掷骰子之后将currentPlayer更改为其他玩家。