I am making a card game in Greenfoot similar to hearthstone.
I'm wondering how to switch between players?
I want to make it so that as soon as one player does something, he cannot do it again until the next player does something.


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import javax.swing.JOptionPane; /** * Write a description of class CrabWorld here. * * @author (your name) * @version (a version number or a date) */ public class CrabWorld extends World { int playerNumbers = 2 ; int turnNumber = 0 ; int GameState = 0 ; Player[] Player = new Player[ 2 ]; Player what = new Player(); public void act() { repaint(); addObject(Player[ 0 ], 436 , 440 ); addObject(Player[ 1 ], 436 , 100 ); GameState = playGame(turnNumber); } public CrabWorld() { super ( 845 , 570 , 1 ); SomeDice myDice = new SomeDice(); for ( int i = 0 ; i < 2 ; i ++) { int turn = 0 ; Player[i] = new Player(); //addObject(Player[i], 436, 400 * i * 2); } } public int playGame( int myTurnNumber){ int myRound = turnNumber/playerNumbers; //check what round we are on int myTurn = turnNumber%playerNumbers; //whose turn is it? showText( "" +myRound, getWidth()- 20 , 10 ); showText( "" +myTurn, getWidth()- 20 , 35 ); if (myRound == playerNumbers* 15 ){ return 0 ; //game over state gets reached here } //turnNumber += players[myTurn].takeTurn(1); //return gameState; return 2 ; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | import greenfoot.*; import javax.swing.JOptionPane; import java.util.ArrayList; import java.util.List; /** * Write a description of class Player here. * * @author (your name) * @version (a version number or a date) */ public class Player extends Actor { boolean cardPossessed[] = new boolean [ 2 ]; int [] Cards = new int [ 2 ]; private boolean click = false ; int health = 30 ; SomeDice playerdice = new SomeDice(); int count = 0 ; int number; boolean button; public int position1 = 1 ; public int position2 = 1 ; SomeDice dice = new SomeDice(); GreenfootImage[] playerImages ; Cards[] playerCards = { new Cards(), new Cards(), new Cards(), new Cards(), new Cards(), new Cards()}; public Player() { } public void CardSelect() { if (getY() > 400 && Greenfoot.mouseClicked( this )) { int value = Greenfoot.getRandomNumber( 6 ); getWorld().addObject(playerCards[value], 150 * position1^ 2 , 320 ); position1++; return ; } if (getY() < 400 && Greenfoot.mouseClicked( this )) { int value = Greenfoot.getRandomNumber( 6 ); getWorld().addObject(playerCards[value], 150 * position2^ 2 , 220 ); // playerCards[value].Stats(number); if (number == 1 ) { setLocation( 20 , 20 ); } position2++; return ; } } public void act() { CardSelect(); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | import greenfoot.*; public class CardWorld extends World { int playerCount = 2 ; int turn; int gameState; Player[] player = new Player[playerCount]; public CardWorld() { super ( 845 , 570 , 1 ); SomeDice myDice = new SomeDice(); for ( int i= 0 ; i<playerCount; i++) { Player[i] = new Player(); } } public void act() { repaint(); addObject(player[ 0 ], 436 , 440 ); addObject(player[ 1 ], 436 , 100 ); gameState = playGame(); } public int playGame() { int round = turn/playerCount; //check what round we are on int play = turn%playerCount; //whose turn is it? showText( "" +round, getWidth()- 20 , 10 ); showText( "" +play, getWidth()- 20 , 35 ); if (round == playerCount* 15 ) return 0 ; //game over state gets reached here return 2 ; } } |
1 | addObject(player[i], 436 , 100 + 340 *I); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | import greenfoot.*; public class CardWorld extends World { int playerCount = 2 ; int turn; int gameState; Player[] Player = new Player[playerCount]; public CardWorld() { super ( 845 , 570 , 1 ); SomeDice myDice = new SomeDice(); for ( int i= 0 ; i<playerCount; i++) { Player[i] = new Player(); addObject(Player[i], 436 , 100 + 340 *i); } } public void act() { addObject(Player[ 0 ], 436 , 440 ); addObject(Player[ 1 ], 436 , 100 ); } public void playGame() { int round = turn/playerCount; //check what round we are on int play = turn%playerCount; //whose turn is it? showText( "" +round, getWidth()- 20 , 10 ); showText( "" +play, getWidth()- 20 , 35 ); if (round == playerCount* 15 ) { gameState = 0 ; } //gme over state gets reached here } } |
1 | else gameState = 2 ; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import greenfoot.*; public class Player extends Actor { int position; Cards[] playerCards = { new Cards(), new Cards(), new Cards(), new Cards(), new Cards(), new Cards()}; public void cardSelect() { if (getY() > 400 && Greenfoot.mouseClicked( this )) { int value = Greenfoot.getRandomNumber( 6 ); getWorld().addObject(playerCards[value], 150 * (position+ 1 )^ 2 , 320 ); position++; } else if (getY() < 400 && Greenfoot.mouseClicked( this )) { int value = Greenfoot.getRandomNumber( 6 ); getWorld().addObject(playerCards[value], 150 * (position+ 1 )^ 2 , 220 ); position++; } } } |
1 2 3 4 5 6 7 8 9 10 | public void cardSelect() { if (position == 6 ) return ; int value = Greenfoot.getRandomNumber( 6 -position); Cards card = playerCards[value]; getWorld().addObject(card, 150 *(position+ 1 )^ 2 , ( 760 -getX())% 440 ); position++; playerCards[value] = playerCards[ 6 -position]; playerCards[ 6 -position] = card; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public void act() { addObject(Player[ 0 ], 436 , 440 ); addObject(Player[ 1 ], 436 , 100 ); if (Greenfoot.mouseClicked(Player[ 0 ])) { Player[ 0 ].CardSelect(); } if (Greenfoot.mouseClicked(Player[ 1 ])) { Player[ 1 ].CardSelect(); } } |
1 2 3 4 5 6 7 | public void act() { if (Greenfoot.mouseClicked(player[turn%playerCount])) { player[turn%playerCount].cardSelect(); } } |