[英]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.