⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client_consoleeventreader.java

📁 一个MMORPG手机游戏的服务器端程序源代码
💻 JAVA
字号:
package zsw_mmorpg.games.client;import zsw_mmorpg.client.*;import zsw_mmorpg.common.*;import java.util.*;import java.io.*;import org.apache.log4j.*;/** * Client_ConsoleEventReader.java * * @author <a href="mailto:shiwei@raymobile.com">朱世伟</a> * @version 1.0 *//**对应SERVER的客户端    ,调试用的*/public class Client_ConsoleEventReader extends Thread {    private Logger log = Logger.getLogger("Client_ConsoleEventReader");    private GameClient gameClient;    private EventQueue inQueue;    private EventQueue outQueue;    private  boolean running;    private static final String WELCOME_TEXT = "\n\nWelcome to the RPS (Rock, Paper, Scissors) Multi-player Game\n\n";    private static final String HELP_TEXT = 	"commands:\n" + 	"'/quit'\t\t\t\t\t quit the application \n" + 	"'/help'\t\t\t\t\t show this help \n" + 	"'/players'\t\t\t\t list players online\n" + 	"'/newgame <opponent name>'\t\t start a new game against opponent\n" +	"'/move <(r)ock|(p)aper|(s)cissors>'\t enter your move \n" + 	"'/endgame' \t\t\t\t end the game\n" + 	"'/addfriend' \t\t\t\t add friend\n" +	"'/delfriend' \t\t\t\t del friend\n" +	"'/shopbuy' \t\t\t\t buy  NO.\n" +	"'/shopsell' \t\t\t\t sell Box + NO\n" +	"'/equip' \t\t\t\t equip Box + NO\n" +	"'/unequip' \t\t\t\t unequip Box + NO\n" +	"'/use' \t\t\t\t use Box + NO\n" +	"all other input is treated as a chat message\n";    public Client_ConsoleEventReader(GameClient gc, EventQueue inQueue, EventQueue outQueue) {	super("ConsoleEventReader");	this.gameClient = gc;	this.inQueue = inQueue;	this.outQueue = outQueue;    }    public void run() {	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));	System.out.println(WELCOME_TEXT + HELP_TEXT);				running = true;	while (running) {	    try {		String s = br.readLine();		String tokens[] = tokenizeCmdString(s);		if (tokens.length > 0) {		    GameEvent event = parseInput(tokens, s);		    if (event != null) {			    outQueue.enQueue(event);		    }		}		else {		    gameClient.stdOut(null);		}	    }	    catch (Exception ioe) {		log.error("exception while reading GameEvent", ioe);	    }	}    }    public void shutdown() {	running = false;	interrupt();    }    private GameEvent parseInput(String tok[], String line) {	tok[0] = tok[0].toLowerCase();	GameEvent e = null;	if (tok[0].equals("/quit")) {	    e = new GameEventDefault(GameEventDefault.C_LOGOUT, "Bye Bye!");	}	else if (tok[0].equals("/help") || tok[0].equals("?")) {	    gameClient.stdOut(HELP_TEXT);	}	else if (tok[0].equals("/players")) {        e = new GameEventDefault(GameEventDefault.C_GET_PLAYERS);	}	else if (tok[0].equals("/newgame")) {	    if (tok.length < 2)		badCmd(tok, "no opponent specified");	    else {		e = new GameEventDefault(GameEventDefault.C_JOIN_GAME, tok[1]);		gameClient.setOpponent(tok[1]);	    }	}	else if (tok[0].equals("/move")) {	    if (tok.length > 2)		badCmd(tok, "illegal move: too many parameters");	    else if ( validMove(tok[1])) 		e = new GameEventDefault(GameEventDefault.C_MOVE, tok[1]);	}	else if (tok[0].equals("/endgame")) {	    e = new GameEventDefault(GameEventDefault.C_QUIT_GAME);	}    else if (tok[0].equals("/addfriend")) {	    e = new GameEventDefault(GameEventDefault.C_Friends_Add,tok[1]);    }    else if (tok[0].equals("/delfriend")) {	    e = new GameEventDefault(GameEventDefault.C_Friends_Del,tok[1]);    }    else if (tok[0].equals("/shopbuy")) {	    e = new GameEventDefault(GameEventDefault.C_shop_buy,tok[1]);    }    else if (tok[0].equals("/shopsell")) {	    e = new GameEventDefault(GameEventDefault.C_shop_sell,tok[1]+" "+tok[2]);    }    else if (tok[0].equals("/equip")) {	    e = new GameEventDefault(GameEventDefault.C_item_equip,tok[1]+" "+tok[2]);    }    else if (tok[0].equals("/unequip")) {	    e = new GameEventDefault(GameEventDefault.C_item_un_equip,tok[1]+" "+tok[2]);    }    else if (tok[0].equals("/use")) {	    e = new GameEventDefault(GameEventDefault.C_item_use,tok[1]+" "+tok[2]);    }    else {	    e = new GameEventDefault(GameEventDefault.C_CHAT_MSG, line.trim());	    gameClient.stdOut(null);	}	return e;    }    private boolean validMove(String m) {	return (m.equals("rock") || m.equals("paper") || m.equals("scissors") ||		m.equals("r") || m.equals("p") || m.equals("s"));    }    private void badCmd(String tok[], String mesg) {	inQueue.enQueue(new GameEventDefault(GameEventDefault.C_CMD_ACK, mesg));    }    public static String[] tokenizeCmdString(String s) {	StringTokenizer toke = new StringTokenizer(s, " ");	int numTokes = toke.countTokens();		String[] tokens = new String[numTokes];		for (int i=0; toke.hasMoreTokens(); i++) {	    tokens[i] = toke.nextToken();	}	return tokens;    }    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -