java - Coin game. How to make a player lose their next turn if they meet a certain criteria -


i'm making program has 4 players taking turns tossing 3 coins. first player earn 16 points wins. player earns points each time tosses coins. number of points earns equals number of heads tosses. if tosses no heads loses next turn. if flips 3 heads earns turn , tosses coins again. if tosses less 3 heads next player’s turn. player must earn 16 points win. if player has 14 points , tosses 2 heads wins if tosses n heads , goes on 16 points loses half of points , loses turn too. must have 16 points win.

how player skipped next turn? each player goes in order. ex. tom, hank, hannah, tina. if hank rolls 0 heads or goes on 16 points should lose next turn making order tom, hannah, tina, tom, hank, hannah, tina. i've posted code , need figure out how edit nextplayer() method suit needs. believe logic , code did in computerstate() method correct lose_turn. appreciated.

game class

import java.util.random;      public class game     {       private random randomizer;       private final int n_players;       private final int m_coins;       private final int p_points;       private int player_index;       private boolean game_over;        public game()       {         n_players = 4;         m_coins = 3;         p_points = 16;         game_over = false;         randomizer = new random();         player_index = randomizer.nextint(n_players);       }        public game(int new_m_coins, int new_n_players, int new_p_points)       {           n_players = new_n_players;           m_coins = new_m_coins;           p_points = new_p_points;           game_over = false;           randomizer = new random();           player_index = randomizer.nextint(n_players);       }        public int getplayerindex()       {           return player_index;       }        public void setplayerindex()       {           player_index = randomizer.nextint(n_players);       }        public boolean gameover()       {            return game_over;        }        public int nextplayer(player[] players)       {           //player_index = (player_index + 1) % n_players;            if(players[player_index].getstate() == state.extra_turn)           {              players[player_index].setstate(state.normal);           }           else if(players[player_index].getstate() == state.lose_turn)           {               player_index = (player_index + 1) % n_players;            }           else           {               player_index = (player_index + 1) % n_players;           }            /*while(players[player_index].getstate() != state.normal)           {               players[player_index].setstate(state.normal);               player_index = (player_index + 1) % n_players;           }*/           return player_index;       }       public void computestate(player player, int m_heads, int oldpoints, int newpoints)       {              int player_points = player.getpoints();              if(player_points == p_points)                 game_over = true;             else if(player_points > p_points)             {                 player.setpoints(player_points / 2);                 player.setstate(state.lose_turn);             }             else if(m_heads == 0)             {                 player.setstate(state.lose_turn);             }             else if(m_heads == 3)             {                 player.setstate(state.extra_turn);             }             else if(m_heads == 3 && player_points > p_points)             {                 player.setstate(state.normal);             }             else                 player.setstate(state.normal);        }     } 

testcoingame

public class testcoingame {   public static void main(string[] args)   {      try      {       int m_coins = 3;       int n_players = 4;       int p_points = 16;       string [] names = {"hank", "tina", "hannah", "tom"};       player [] players = new player[n_players];        for(int index = 0; index < players.length; index++)         players[index] = new player(names[index]);        coins coins = new coins();       game game = new game();       int player_index;             {           player_index = game.nextplayer(players);           system.out.printf("it %s's turn\n", players[player_index].getname());           system.out.printf("%s has %d points\n", players[player_index].getname(),           players[player_index].getpoints());            coins.tosscoins();           int n_heads = coins.getnheads();           system.out.printf("%s tossed %d heads\n",           players[player_index].getname(), n_heads);            int old_points = players[player_index].getpoints();           int new_points = old_points + n_heads;           players[player_index].setpoints(new_points);           game.computestate(players[player_index], n_heads, old_points, new_points);           system.out.printf("%s has %d points\n", players[player_index].getname(),players[player_index].getpoints());        }       while(!game.gameover());       system.out.printf("%s wins!\n", players[player_index].getname());      }      catch(exception ex)      {      }   } } 

you have boolean instance variable in player class keeps track of whether player skips next turn. when point of checking if value true or false , evaluate true (ie yes, skips turn), skip turn, set boolean false before move on next player or turn or have you.

edit (based on user response): pseudocode: i'm assuming you're keeping track of turn via array or list or comparable that. i'm going refer playerlist. if, example, have 3 players, keep looping on playerlist[0],playerlist[1],playerlist[2].

while (gamenotover()) {     if (!playerlist[currentplayer].skipnextturn())     {         //do     }     else     {         playerlist[currentplayer].setskipnextturn(false);     } } 

Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -