Thursday, 15 May 2014

Turn mechanism in Java -



Turn mechanism in Java -

i'm trying implement turn mechanism in app scenario: appframe gets list of users in scheme > prompts message dialog "user's turn! > user types answers, clicks submitbutton > scheme adds hashmap answers > if there's no more users left show frame results, else starts sec user's turn message dialog etc.

i tried that

public void turnmechanism() { (final user user : gf.getusers()) { joptionpane.showmessagedialog(null, user.getusername()+'s turn); gamestopbutton.addactionlistener(new actionlistener() { public void actionperformed(actionevent evt) { gamestopbuttonactionperformed(evt, user); } }); } new resultsframe(gf); dispose(); } private void userstop(user u){ answerset userset = new answerset(gamenamefield.gettext().trim() .tolowercase(), gameanimalfield.gettext().trim().tolowercase(), gameplantfield.gettext().trim().tolowercase(), gamecountryfield .gettext().trim().tolowercase(), gamecityfield .gettext().trim().tolowercase(), gameoccupationfield .gettext().trim().tolowercase()); answers.put(u, userset); } private void gamestopbuttonactionperformed(actionevent evt, user u) { userstop(u);

but doesn't work properly. can give me hint how that? without static fields.

here code on plate work you. construction class user store answer:

public class player { private final user user; private answerset answer; public player(user p_user) { user = p_user; } public user getuser() { homecoming user; } public void setanswer(answerset answer) { this.answer = answer; } public answerset getanswer() { homecoming answer; } }

here class main logic turn based behavior:

public class turnbasedgame { public enum state { ready, running, ended } private final list<player> players = new arraylist<>(); private final int rounds; private int currentround; private int currentturn; private state currentstate = state.ready; public turnbasedgame() { this(1); } public turnbasedgame(int rounds) { this.rounds = rounds; } public void addplayer(player player) { players.add(player); } public list<player> getplayers() { homecoming players; } public void start() { currentturn = 0; currentround = 0; currentstate = state.running; } public void endplayerturn() { if (currentstate != state.running) { throw new illegalstateexception("game not started"); } currentturn++; if (currentturn >= players.size()) { currentturn = 0; currentround = 0; } if (currentround >= rounds) { currentstate = state.ended; } } public state getcurrentstate() { homecoming currentstate; } public player getcurrentplayer() { homecoming players.get(currentturn); } }

and here how weave code:

public void turnmechanism() { final turnbasedgame game = new turnbasedgame(); (final user user : gf.getusers()) { game.addplayer(new player(user)); } gamestopbutton.addactionlistener(new actionlistener() { public void actionperformed(actionevent evt) { final player currentplayer = game.getcurrentplayer(); currentplayer.setanswer(createanswerset()); game.endplayerturn(); switch (game.getcurrentstate()) { case running: //next player showcurrentplayerinfo(game); break; case ended: //show resutls here showresults(game); break; } } }); game.start(); showcurrentplayerinfo(game); //not sure new resultsframe(gf); dispose(); } private void showcurrentplayerinfo(turnbasedgame p_game) { joptionpane.showmessagedialog(null, p_game.getcurrentplayer().getuser().getusername() + 's turn); } private void showresults(turnbasedgame p_game) { (player player : p_game.getplayers()) { final answerset reply = player.getanswer(); //do whatever want reply } }

java

No comments:

Post a Comment