简体   繁体   English

如何在点击按钮时切换播放器?

[英]How do I switch players on button click?

I have one button: Gooi I have 2 players that can throw a dice after eachother. 我有一个按钮:Gooi,我有2个可以互相掷骰子的玩家。 So player 1 gets to throw, then player 1, then player 2. I don't know how to do that. 所以玩家1开始投掷,然后是玩家1,然后是玩家2。我不知道该怎么做。 I don't know if I should use a while or for loop to check wich player's turn it is. 我不知道是否应该使用while或for循环来检查该轮到哪个玩家。

My code: 我的代码:

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

    }
}

}

Use a boolean to change the throwing player and switch it on each throw. 使用布尔值更改掷球运动员并在每次掷球时切换。 The easiest way to switch a boolean is. 切换布尔值的最简单方法是。

switchBoolean = !switchBoolean;

First, I would suggest to get rid of if-s. 首先,我建议摆脱if-s。 Try switch, it's more readable. 尝试切换,它更具可读性。

Player switching you can implement in a class which controls the game. 您可以在控制游戏的类中实现玩家切换。 Create a variable Player currentPlayer. 创建一个变量Player currentPlayer。 Now create a while loop with some termination condition and after each dice throw change currentPlayer to other player. 现在创建一个带有某些终止条件的while循环,并在每次掷骰后将currentPlayer更改为其他玩家。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM