Link to home
Start Free TrialLog in
Avatar of UrbanTwitch
UrbanTwitchFlag for Spain

asked on

Java Client Applet - if / else statement

Ok so this has been bugging me for over 4 hours. Well through a period of 4 hours.

Anyway, I get a new update in the player class which updates or gets the player's current command. Right now it's either chat or move.

One problem I have is that when a user clicks on the menu to chat (its just a place holder for now).. it will say the following.
weka clicks menu to chat
weka's chat screen says:
Dan|weka|Dan
Dan says: Hello, world!
weka|weka|weka
weka 44says: Hello, world!

Open in new window


As you can see, what is wrong with this is that Dan did NOT say Hello world but rather weka did.

If you look over on Dan's screen it says:
weka says: Hello, world!

As you can see that is fine output. But here's the thing... the else if statemetns are going to and not doing their job... just take a look at this code:

this is to iniate the chat
	public void mouseClicked(MouseEvent e) {
		if (e.getClickCount() == 2) {
			myCommand = "chat";
			c.append("\nDouble clicked on " + list.getSelectedItem());
			os.println(username + "|1|Hello, world!|yes|chat");
		}

	}

Open in new window


Then under
while ((responseLine = in.readLine()) != null) {

Open in new window

I have
if ("chat".equalsIgnoreCase(temp[4])) {

sendMsg(temp[0], temp[2], player.getUsername());
// incoming username, their chat message, the name of the current while-loop of the player
}

Open in new window


and in the sendMsg method I have:

	public void sendMsg(String e, String msg, String getUser) {

c.append("\n" + e + "|"+username +"|"+getUser);
if (username != getUser) {

		c.append("\n" + getUser + " says: " + msg);
}else{
		c.append("\n" + username + " 44says: " + msg);
}
	}

Open in new window


So, as you can see.. it's really a boggle of how this error is going through. Can you help me fix it? :|

Thank you.

tileGen
/**
Mystik Client
Programer: Dan J.
Many thanks to objects & CEHJ
Started May 23, 2010
(c) 2010
**/

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Label;
import java.awt.List;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Random;
import javax.imageio.*;

import javax.swing.JApplet;
import javax.swing.JPanel;

public class tileGen extends JApplet implements KeyListener, MouseListener,
		ActionListener, Runnable {

	Image[] tiles;
	Image[] weapon;
	Image[] userImg;
	String[] user;
	int x, y, px, py, tx, ty; // x tile - y tile // player x - player y // tile
	// x - tile y
	boolean left, right, down, up, canMove, respawn;
	boolean drawFlail, drawBattleaxe;
	public static int[][] board;
	final int NUM_TILES = 200;
	final int NUM_WEAPS = 2;
	boolean[] weaponPicked;
	Label lx, ly; // to see where we are!
	int r1, r2, u1, u2, l1, l2, d1, d2, spawnX, spawnY;
	int rightSide = 480;
	int downSide = 320;
	int mapX = 15;
	int mapY = 10;
	String txtLastFX, txtLastFY;
	boolean boolRC, boolLC, boolUC, boolDC;
	int leftMap, upMap, rightMap, downMap, currentMap, map;
	public static TextArea c = new TextArea();
	public static TextArea stats = new TextArea();
	public static String newline;
	public static java.awt.List list;

	public static Font TimesR = new Font("MonoSpaced", Font.BOLD, 15);
	public static ArrayList<String> arr;
	public static tileGen anItem;
	public static boolean firstpush = false;
	String name, desc, typeOf, attackAdd, defenseAdd, canSell, canEat,
			earnedCoins, canEquip;
	public static int blkStr;
	public static Random roll = new Random();
	public static String username;
	public static int[] userPX;
	public static int[] userPY;
	private Map<String, Player> players = new HashMap<String, Player>();
	public static String[] tokens;
	public static String[] temp;
	public static boolean isResp = false;
	public static String myCommand = "move";

	// Network schtuff
	public static PrintStream os = null;
	static Socket clientSocket = null;
	static BufferedReader in;
	static boolean closed;

	int lastX, lastY, row, col;
	Label lbl1, lbl2, p1, p2, lblRC;

	int attack, defense, gold, level, exp;

	public static void showInventory(ArrayList<String> theList) {
		for (int i = 0; i < theList.size(); i++) {
			System.out.println(theList.get(i));
		}
	}

	public void init() {

		setLayout(new BorderLayout());
		JPanel invOne = new JPanel();
		JPanel game = new JPanel();
		JPanel banner = new JPanel();

		add(game, BorderLayout.CENTER);
		add(c, BorderLayout.SOUTH);
		// add(banner, BorderLayout.NORTH);

		/**
		 * arr.add("Hatchet"); arr.add("Sword"); arr.add("Shield"); arr.add(gold
		 * + " Gold"); System.out.println("You have " + arr.size() +
		 * " items in your inventory."); showInventory(arr);
		 **/

		anItem = new tileGen();
		arr = new ArrayList<String>();

		list = new List();
		for (String item : arr)
			list.add(item);

		list.addMouseListener(this);

		list.setVisible(true);

		list.setFocusable(false);

		add(list, BorderLayout.EAST);

		game.setOpaque(false);

		game.setBounds(0, 0, 416, 288);

		c.setBackground(Color.white);
		c.setForeground(Color.black);
		c.setFont(TimesR);
		c.setEditable(true);

		board = loadBoard(1);
		currentMap = 1;
		spawnY = 6;
		spawnX = 10;

		this.setFocusable(true);

		tiles = new Image[NUM_TILES];
		for (int i = 0; i < NUM_TILES; i++) {
			tiles[i] = getImage(getClass().getResource(
					String.format("line_tile/t%d.png", i)));
		}

		weapon = new Image[NUM_WEAPS];
		for (int xi = 0; xi < NUM_WEAPS; xi++) {
			weapon[xi] = getImage(getClass().getResource(
					String.format("weapon/w%d.gif", xi)));
		}

		userPX = new int[10];
		for (int i = 0; i < 10; i++) {
			userPX[i] = -100;
		}

		userPY = new int[10];
		for (int i = 0; i < 10; i++) {
			userPY[i] = -100;
		}

		// demo
		// player = getImage(getClass().getResource("me.gif")); // our player
		addKeyListener(this);
		canMove = true;

		String txtY = Integer.toString(spawnY);
		String txtX = Integer.toString(spawnX);

		py = spawnY * 32;
		px = spawnX * 32;

		lastY = spawnY;
		lastX = spawnX;

		drawFlail = true;
		drawBattleaxe = true;
		this.setFocusable(true);
		game.setFocusable(true);
		c.setFocusable(false);

		invOne.setVisible(true);

		// blkStr = board[5][5];
		// System.out.println("Teh black one: " +blkStr);
		// board[5][5] = 26;

	}

	public void start() {
		new Thread(this).start();
	}

	     public void playerLogin() throws IOException {

	            Random roll = new Random();
	            int newNo = roll.nextInt(200);
	            // username = "Guest #" + roll.nextInt(110);
	            username = getParameter("name");
	            c.append("$$$$Welcome to the game, " + username);

	            Player player = new Player();
	            player.setUsername(username);
	            player.setPlayerImage(ImageIO.read(getClass().getResource("me.gif")));
	            player.setX(256);
	            player.setY(256);
	            player.setMap(1);
	            player.setCommand("move");
	            players.put(username, player);

	            repaint();

	            System.out.println(username + " was added. player: " + player);
	                os.println(player.getUsername() + "|" + player.getX() + "|" + player.getY() + "|" + player.getMap() + "|" + player.getCommand());

	            attack = 4;
	            defense = 5;
	            gold = 542;
	            level = 1;
	            exp = 53;

      }

	public void mousePressed(MouseEvent e) {
	}

	public void mouseReleased(MouseEvent e) {
	}

	public void mouseEntered(MouseEvent e) {
	}

	public void mouseExited(MouseEvent e) {
	}

	// equip - use - select
	public void mouseClicked(MouseEvent e) {
		if (e.getClickCount() == 2) {
			myCommand = "chat";
			c.append("\nDouble clicked on " + list.getSelectedItem());
			os.println(username + "|1|Hello, world!|yes|chat");
		}

	}

	private static final HashSet<Integer> BLOCKED_TILES = new HashSet<Integer>();
	static {

		/**
		 * BLOCKED_TILES.add(118); BLOCKED_TILES.add(67);
		 * BLOCKED_TILES.add(190); BLOCKED_TILES.add(40);
		 * BLOCKED_TILES.add(135); BLOCKED_TILES.add(520);
		 * BLOCKED_TILES.add(25); BLOCKED_TILES.add(91); BLOCKED_TILES.add(394);
		 * BLOCKED_TILES.add(1); BLOCKED_TILES.add(121);
		 **/

		BLOCKED_TILES.add(1);
		BLOCKED_TILES.add(6);
		BLOCKED_TILES.add(7);
		// add more tiles here
	}

	public void actionPerformed(ActionEvent actionevent) {
		os.println("You said: NO TEXT YET - :(");
	}

	public Player getPlayer(String username) {
		return players.get(username);
	}

	public void run() {

		System.out.println("run() still going..");


		Socket s = null;

		try {

			// s = new Socket(getParameter("host"),
			// Integer.valueOf(getParameter("port"));
			// s = new Socket(getParameter("host"),
			// Integer.valueOf(getParameter("port")));
			s = new Socket("localhost", 25566);
			in = new BufferedReader(new InputStreamReader(s.getInputStream()));

			os = new PrintStream(s.getOutputStream());

			playerLogin();

			int buf = -1;
			String responseLine;



			// rawr
			while ((responseLine = in.readLine()) != null) {
				isResp = true;
				//c.append("\nxxx\n");
				// System.out.println("responseLine (|): " + responseLine);

				String str = responseLine;

				String delimiter = "\\|";

				String[] temp = str.split(delimiter);

				//c.append("\noutput: " + str);

				// pid
				Player player = players.get(temp[0]);
System.out.println(temp[0] + " == " + username);
if ("chat".equalsIgnoreCase(temp[4])) {

sendMsg(temp[0], temp[2], player.getUsername());

}


				if (player == null) {
				System.out.println("player not found, adding!");
				player = new Player();
				player.setUsername(temp[0]);
				player.setX(Integer.parseInt(temp[1]));
				player.setY(Integer.parseInt(temp[2]));
				player.setCommand(temp[4]);
				player.setPlayerImage(ImageIO.read(getClass().getResource("me.gif")));
				player.setMap(1);
				players.put(temp[0], player);
				}
if ("move".equalsIgnoreCase(temp[4])) {
	c.append("\n"+temp[2] + " and temp 4: " + temp[4]);
				player.setX(Integer.parseInt(temp[1]));
				player.setY(Integer.parseInt(temp[2]));
				player.setMap(Integer.parseInt(temp[3]));
			}
				player.setCommand(temp[4]);
				player.setUsername(temp[0]);
				System.out.println("X set: " + player.getX() + " | Y set: "
						+ player.getY() + " | CurrMap set: " + player.getMap()
						+ " | Username set: " + player.getUsername() + " | Command set: " + temp[4]);



				repaint();





			}
			repaint();

		} catch (Exception rwe) {
			// System.exit(0);
			System.out.println("Server went down -- crap!");
			rwe.printStackTrace();
		} finally {
			try {
				s.close();
			} catch (IOException ere) {
				ere.printStackTrace();
			}
		}

	}

	public void sendMsg(String e, String msg, String getUser) {

c.append("\n" + e + "|"+username +"|"+getUser);
if (username != getUser) {

		c.append("\n" + getUser + " says: " + msg);
}else{
		c.append("\n" + username + " 44says: " + msg);
}
	}

	public void keyPressed(KeyEvent e) {

		// getPlayers();

		repaint();

		myCommand = "move";
		System.out.println("PRESSED" + myCommand);

		if (isInBound(lastX, lastY) == true) {
			System.out.println("\nYOU WENT OFF THE GRID.\n");
		}

		right = true;
		left = true;
		up = true;
		down = true;

		String choice = list.getSelectedItem();

		// c.append("\nInventory selection: " + choice);

		// DESCRIBE ITEM
		if (e.getKeyCode() == KeyEvent.VK_D) {
			String descInv = invShow(list.getSelectedItem());
			c.append("\n" + descInv);
		}

		if (e.getKeyCode() == KeyEvent.VK_S) {
			int numToReplace = 0;
			int replacement = 7;
			// loop through each nested array
			for (int i = 0; i < board.length; i++) {
				// loop through each element of the nested array
				for (int j = 0; j < board[i].length; j++) {
					if (board[i][j] == numToReplace) {
						board[i][j] = replacement;
					}
				}
			}
		}

		// USE
		if (e.getKeyCode() == KeyEvent.VK_U) {

			// MAP ONE
			if (currentMap == 1) {

				// OPEN BLOCKED TILES
				if (spawnX == 10 && spawnY == 7) {
					board[8][10] = 167;
					c.append("\nYou opened a door.");
				}

			}

			// MAP ONE

		}

		// PICK UP
		if (e.getKeyCode() == KeyEvent.VK_G) {

			// MAP ONE
			if (currentMap == 1) {

				if (spawnX == 4 && spawnY == 4) {
					int xav = board[4][4];
					board[4][4] = 7;
					drawFlail = false;
					try {
						anItem.addInv(1);
					} catch (Exception ere) {
						ere.printStackTrace();
					}

				}

			}

			// MAP ONE
			if (currentMap == 3) {

				if (spawnX == 3 && spawnY == 3) {
					int xav = board[3][3];
					board[3][3] = 1;
					drawBattleaxe = false;
					try {
						anItem.addInv(2);
					} catch (Exception ere) {
						ere.printStackTrace();
					}

				}

			}
			// MAP ONE

		}

		try {
			if (blocked(spawnX - 1, spawnY) == true && spawnX == mapX) {
				left = false;
				System.out.println("You can't go left!");
			}
			if (blocked(spawnX + 1, spawnY) == true && spawnX == 0) {
				right = false;
				System.out.println("You can't go right!");
			}
			if (blocked(spawnX, spawnY + 1) == true && spawnX == mapX) {
				down = false;
				System.out.println("You can't go down!");
			}
			if (blocked(spawnX, spawnY - 1) == true && spawnX == mapX) {
				up = false;
				System.out.println("You can't go up!");
			}

		} catch (ArrayIndexOutOfBoundsException xe) {
			xe.printStackTrace();
		}

		try {
			if (blocked(spawnX + 1, spawnY) == true)
				right = false;
		} catch (ArrayIndexOutOfBoundsException xe) {
			System.out.println("\n\ncc Border AIOOB Exception!!\n\n");
		}

		try {
			if (blocked(spawnX - 1, spawnY) == true)
				left = false;
		} catch (ArrayIndexOutOfBoundsException xe) {
			System.out.println("\n\ncc Border AIOOB Exception!!\n\n");
		}

		try {
			if (blocked(spawnX, spawnY + 1) == true)
				down = false;
		} catch (ArrayIndexOutOfBoundsException xe) {
			System.out.println("\n\ncc Border AIOOB Exception!!\n\n");
		}

		try {
			if (blocked(spawnX, spawnY - 1) == true)
				up = false;
		} catch (ArrayIndexOutOfBoundsException xe) {
			System.out.println("\n\ncc Border AIOOB Exception!!\n\n");
		}

		if (blocked(12, 7) == true && spawnX == mapX && spawnY - 1 == 1 - mapX) {
			up = false;
		}

		int r1 = lastX + 1;
		if (lastX > 0) {
			r1 = lastX + 1;
		} else {
			r1 = 0;
		}
		int r2 = lastY;

		int u1 = lastX;
		int u2;
		if (lastY > 0) {
			u2 = lastY - 1;
		} else {
			u2 = 0;
		}

		int l1;
		if (spawnX > 0) {
			l1 = lastX - 1;
		} else {
			l1 = 0;
		}
		int l2 = spawnY;

		int d1 = lastX;
		int d2;
		if (lastY > 0) {
			d2 = lastY + 1;
		} else {
			d2 = 0;
		}

		try {
			if (blocked(r1, r2) == true)
				right = false; // we cannot go right
			if (blocked(u1, u2) == true)
				up = false; // we cannot go up
			if (blocked(l1, l2) == true)
				left = false; // we cannot go left
			if (blocked(d1, d2) == true)
				down = false; // we cannot go down

		} catch (ArrayIndexOutOfBoundsException xe) {
			System.out
					.println("\n\nFuture block Array Index Out of Bounds Exception!!\n\n");
		}

		leftMap = 0;
		upMap = 0;
		rightMap = 0;
		downMap = 0;

		boolRC = false;
		boolLC = false;
		boolUC = false;
		boolDC = false;

		// Border Checks
		if (spawnX == mapX && e.getKeyCode() == KeyEvent.VK_RIGHT) {
			boolRC = true;
		}

		if (spawnX == 0 && e.getKeyCode() == KeyEvent.VK_LEFT) {
			boolLC = true;
		}

		if (spawnY == 0 && e.getKeyCode() == KeyEvent.VK_UP) {
			boolUC = true;
		}

		if (spawnY == mapY && e.getKeyCode() == KeyEvent.VK_DOWN) {
			boolDC = true;
		}

		/** MAP SWITCHING **/
		/** MAP SWITCHING **/
		/** MAP SWITCHING **/

		if (currentMap == 1) {
			leftMap = 3;
			upMap = 2;
			rightMap = 4;
			downMap = 5;

		} else if (currentMap == 4) {
			leftMap = 1;
		} else if (currentMap == 2) {

			downMap = 1;
		} else if (currentMap == 3) {

			downMap = 1;
		}
		if (currentMap == 5) {

			upMap = 1;
		}

		if (leftMap == 0 && spawnX == 0)
			left = false;
		if (rightMap == 0 && spawnX == mapX)
			right = false;
		if (downMap == 0 && spawnY == mapY)
			down = false;
		if (upMap == 0 && spawnY == 0)
			up = false;

		if (e.getKeyCode() == KeyEvent.VK_UP && up == true) {
			spawnY = spawnY - 1;
			System.out.println("You went up.");
		}
		if (e.getKeyCode() == KeyEvent.VK_DOWN && down == true) {
			spawnY = spawnY + 1;
			System.out.println("You went down.");
		}
		if (e.getKeyCode() == KeyEvent.VK_RIGHT && right == true) {
			spawnX = spawnX + 1;
			System.out.println("You went right.");
		}
		if (e.getKeyCode() == KeyEvent.VK_LEFT && left == true) {
			spawnX = spawnX - 1;
			System.out.println("You went left.");
		}

		// RIGHT TO LEFT
		// LEFT TO RIGHT DONE
		if (boolRC == true && right == true) {
			spawnX = 0;
			lastX = spawnX;
			spawnY = spawnY;
			board = loadBoard(rightMap);
			px = 0;
			py = py;
			currentMap = rightMap;
		}

		if (boolLC == true && left == true) {
			spawnX = mapX;
			lastX = spawnX;
			spawnY = spawnY;
			board = loadBoard(leftMap);
			px = rightSide;
			py = py;
			currentMap = leftMap;
		}

		if (boolUC == true && up == true) {
			spawnY = mapY;
			lastY = spawnY;
			spawnX = spawnX;
			board = loadBoard(upMap);
			px = px;
			py = downSide;
			currentMap = upMap;
		}

		if (boolDC == true && down == true) {
			spawnY = 0;
			lastY = spawnY;
			spawnX = spawnX;
			board = loadBoard(downMap);
			px = px;
			py = 0;
			currentMap = downMap;
		}

		/** MAP SWITCHING **/
		/** MAP SWITCHING **/
		/** MAP SWITCHING **/

		String currX = Integer.toString(spawnX);
		String currY = Integer.toString(spawnY);
		System.out.println("Current/Last Y: " + currY + "/" + lastY);
		System.out.println("Current/Last X: " + currX + "/" + lastX + " - "
				+ board[spawnY][spawnX] + "\n\n");

		if (boolLC == false) {
			if (left == true) {
				if (e.getKeyCode() == KeyEvent.VK_LEFT) {
					left = true;
					px = px - 32;
					lastX = lastX - 1;
				}
			}
		} else {
			if (leftMap > 0)
				px = rightSide;
		}

		if (boolRC == false) {
			if (right == true) {
				if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
					right = true;
					px = px + 32;
					lastX = lastX + 1;
				}
			}
		} else {
			if (rightMap > 0)
				px = 0;
		}

		if (boolDC == false) {

			if (down == true) {
				if (e.getKeyCode() == KeyEvent.VK_DOWN) {
					down = true;
					py = py + 32;
					lastY = lastY + 1;

				}
			}
		} else {
			if (downMap > 0)
				py = 0;

		}

		if (boolUC == false) {
			if (up == true) {

				if (e.getKeyCode() == KeyEvent.VK_UP) {
					up = true;
					py = py - 32;
					lastY = lastY - 1;
				}
			}
		} else {
			if (upMap > 0)
				py = downSide;
		}

				Player player = players.get(username);
				player.setX(px);
player.setY(py);

if (myCommand == "move") {
		os.println(username + "|" + px + "|" + py + "|" + currentMap + "|move");
	}else if (myCommand == "chat"){
		os.println(username + "|1|Hello, world!|yes|chat");
	}

	player.setCommand(myCommand);
	System.out.println("my curernt map! : " + currentMap);


		repaint();

	}

	public void keyReleased(KeyEvent e) {

	} // ignore

	public void keyTyped(KeyEvent e) {
	} // ignore

	public void addInv(int e) {

		String iname = getItem(e)[0];

		String idesc = getItem(e)[1];
		int itypeOf = Integer.parseInt(getItem(e)[2]);
		int iattackAdd = Integer.parseInt(getItem(e)[3]);
		int idefenseAdd = Integer.parseInt(getItem(e)[4]);
		boolean icanSell = Boolean.parseBoolean(getItem(e)[5]);
		boolean icanEat = Boolean.parseBoolean(getItem(e)[6]);
		int iearnedCoins = Integer.parseInt(getItem(e)[7]);

		c.append("\nYou picked up a " + iname + ".");
		// for (String item : arr) list.add(item);
		list.add(iname);
		arr.add(iname);
	}

	public static String invShow(String e) {

		String desc = "None";

		if (e == "Flail") {
			desc = "A crushing blow to the head from this weapon can make BRAIN SLUSHIE!";
		}
		if (e == "Battleaxe") {
			desc = "Holding this weapon will make you smell like a man, man.";
		}

		return desc;

	}

	public static String[] getItem(int e) {

		String[] stats = new String[7];

		String name = "Null";
		String desc = "Nonexx";
		String typeOf = "0";
		String attackAdd = "0";
		String defenseAdd = "0";
		String canSell = "true";
		String canEat = "false";
		String earnedCoins = "0";

		if (e == 1) {

			name = "Flail";
			typeOf = "2";
			attackAdd = "2";
			earnedCoins = "5";
		}

		if (e == 2) {

			name = "Battleaxe";
			typeOf = "2";
			attackAdd = "4";
			earnedCoins = "10";
		}

		return new String[] { name, desc, typeOf, attackAdd, defenseAdd,
				canSell, canEat, earnedCoins };

	}

	public static void showInventory() {

		for (int i = 0; i < arr.size(); i++) {
			System.out.println(arr.get(i));
		}
	}

	public void paint(Graphics g) {

		for (row = 0; row < board.length; row++) {
			for (col = 0; col < board[row].length; col++) {
				int index = board[row][col];
				g.drawImage(tiles[index], 32 * col, 32 * row, this);

			}
		}

		try {
			for (Player player : players.values()) {
				System.out.println("++++++++++++++++++++++++++");
				System.out.println("current map: " + player.getMap());
				if (player.getUsername() == username) player.setMap(currentMap);
				if (player.getUsername() == username) player.setCommand(myCommand);
				if (player.getMap() == currentMap) {
					g.drawImage(player.getPlayerImage(), player.getX(), player.getY(), this);

				}
				System.out.println("Command-- " + player.getCommand() + " > " +player.getUsername() + " moved to X:" + player.getX() + " and Y: " + player.getY());

				System.out.println("++++++++++++++++++++++++++");
			}
		} catch (Exception dan) {
			System.out.println("No one is on.");
		}

		// qq
		/**
		 * for(int runx = 0;runx < 10;runx++) { g.drawImage(userImg[runx],
		 * userPX[runx], userPY[runx], this); }
		 **/

		if (drawFlail == true && currentMap == 1)
			g.drawImage(weapon[1], 32 * 4, 32 * 4, this);
		if (drawBattleaxe == true && currentMap == 3)
			g.drawImage(weapon[0], 32 * 3, 32 * 3, this);
		System.out.println(drawFlail);
	} // end paint method

	public void update(Graphics g) {
		paint(g);
	}

	public int[][] loadBoard(int map) {
		if (map == 1) {
			return new int[][] {
{ 7, 7, 7, 7, 7, 7, 13, 13, 13, 13, 7, 7, 7, 7, 7, 7
 },
{ 7, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 6
 },
{ 7, 13, 1, 13, 1, 13, 1, 13, 13, 13, 1, 1, 13, 13, 13, 6
 },
{ 7, 13, 1, 1, 1, 13, 1, 13, 13, 13, 1, 13, 13, 13, 13, 6
 },
{ 7, 13, 13, 1, 13, 13, 1, 13, 13, 13, 1, 13, 13, 13, 13, 6
 },
{ 7, 13, 1, 1, 1, 13, 1, 1, 1, 13, 1, 1, 1, 1, 13, 6
 },
{ 7, 13, 1, 13, 13, 13, 13, 13, 1, 13, 13, 1, 13, 13, 13, 6
 },
{ 7, 13, 1, 1, 13, 13, 13, 1, 1, 13, 13, 1, 13, 13, 13, 6
 },
{ 7, 13, 13, 13, 13, 13, 13, 1, 13, 13, 13, 1, 13, 13, 13, 6
 },
{ 7, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 6
 },
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6
 }
};
		}else if (map == 2) {
			return new int[][] { { 145, 145, 55, 145, 145, 55, 184, 163, 55, 163, 163, 55, 145, 181, 145, 145
			 },
			{ 145, 13, 145, 145, 166, 166, 166, 163, 163, 13, 13, 13, 13, 13, 13, 145
			 },
			{ 145, 13, 13, 163, 166, 166, 166, 163, 13, 13, 13, 13, 13, 13, 13, 163
			 },
			{ 145, 13, 13, 163, 166, 166, 166, 163, 13, 145, 145, 145, 145, 145, 13, 145
			 },
			{ 145, 13, 13, 163, 166, 166, 166, 163, 13, 145, 166, 166, 166, 145, 13, 145
			 },
			{ 145, 13, 13, 163, 163, 95, 163, 145, 13, 145, 166, 166, 166, 145, 13, 145
			 },
			{ 145, 13, 13, 13, 13, 13, 13, 13, 13, 166, 166, 166, 166, 145, 13, 145
			 },
			{ 145, 145, 13, 13, 13, 13, 13, 13, 13, 163, 145, 55, 145, 145, 13, 145
			 },
			{ 145, 145, 145, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 145
			 },
			{ 145, 145, 145, 145, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 145
			 },
			{ 145, 145, 145, 145, 145, 145, 13, 13, 13, 13, 13, 145, 145, 145, 145, 145
			 }
};
}

		return board;
	}

	public boolean blocked(int tx, int ty) {
		return BLOCKED_TILES.contains(board[ty][tx]);
	}

	public boolean isInBound(int r, int c) {
		return (r >= 0) && (r < 8) && (c >= 12) && (c < 1);
	}

} // end whole thing3

Open in new window

Avatar of CEHJ
CEHJ
Flag of United Kingdom of Great Britain and Northern Ireland image

>>if (username != getUser) {

should be

if (!username.equals(getUser)) {

Open in new window

Avatar of UrbanTwitch

ASKER

That looks promising ... but I am still geting the same messages. That did not do anything. But thanks for the try.
Make sure you're running recompiled code
you shouldn't need that if/else at all. just use the username from the player
>       public static String username;

worth getting rid of that, and instead use the Player instance ofr the current player

     private Player me;

you can initialise me in playerLogin()


           public void playerLogin() throws IOException {

                  Random roll = new Random();
                  int newNo = roll.nextInt(200);
                  // username = "Guest #" + roll.nextInt(110);
                  String username = getParameter("name");
                  c.append("$$$$Welcome to the game, " + username);

                  me = new Player();
                  mer.setUsername(username);
                  me.setPlayerImage(ImageIO.read(getClass().getResource("me.gif")));
                  me.setX(256);
                  me.setY(256);
                  me.setMap(1);
                  me.setCommand("move");
                  players.put(me.getUsername(), me);

                  repaint();

                  System.out.println(username + " was added. player: " + player);
                      os.println(player.getUsername() + "|" + player.getX() + "|" + player.getY() + "|" + player.getMap() + "|" + player.getCommand());

                  attack = 4;
                  defense = 5;
                  gold = 542;
                  level = 1;
                  exp = 53;

      }
If I get rid of the username string... a LOT will be wrong.

besides in the code you just gave me .. .it uses the username string ... i don't know if you caught that. :P
@CEHJ - Oh, I did. It looks like that should of work... but it did not. :(
> If I get rid of the username string... a LOT will be wrong.

like what?

> besides in the code you just gave me .. .it uses the username string ... i don't know if you caught that. :P


It uses the username string, but the value comes from the player
The username member var is not needed
> but the value comes from the player

thats not correct, what I meant to say was its a local var.
My point is that the username does not need to be a member var
The username variable in tileGen is the client side's username... so what do I do with it?
remove it and instead use the Player object (me.getUsername())
All that the username does is used to set and put the player from the client.
Ok. But I'll just set username = me.getUsername();
That look right?
I suppose I'll need to change
 os.println(player.getUsername() + "|" + player.getX() + "|" + player.getY() + "|" + player.getMap() + "|" + player.getCommand());

to
me.getX, me.getUsernaem, etc... hehe :P
OK so I did that and I get this whenever I move.

(this is from the tileGen console)
run() still going..
true
true
true
true
true
true
true
true
true
true
true
weka was added. player: Player@595e2ccd
++++++++++++++++++++++++++
current map: 1
Command-- move > weka moved to X:256 and Y: 256
++++++++++++++++++++++++++
true
++++++++++++++++++++++++++
current map: 1
Command-- move > weka moved to X:256 and Y: 256
++++++++++++++++++++++++++
true
PRESSEDmove
You went left.
Current/Last Y: 6/6
Current/Last X: 9/10 - 13


Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
        at tileGen.keyPressed(tileGen.java:777)
        at java.awt.Component.processKeyEvent(Component.java:6225)
        at java.awt.Component.processEvent(Component.java:6044)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
++++++++++++++++++++++++++      at java.awt.KeyboardFocusManager.redispatchEvent
(KeyboardFocusManager.java:1850)

current map: 1  at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Default
KeyboardFocusManager.java:712)

Command-- move > weka moved to X:256 and Y: 256 at java.awt.DefaultKeyboardFocus
Manager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:990)

++++++++++++++++++++++++++      at java.awt.DefaultKeyboardFocusManager.typeAhea
dAssertions(DefaultKeyboardFocusManager.java:855)

true    at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFoc
usManager.java:676)

        at java.awt.Component.dispatchEventImpl(Component.java:4502)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre
ad.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.
java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)

        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)


This is line 777 in tileGen: player.setX(px);

From this peice of code:
                        Player player = players.get(username);
                        player.setX(px);
player.setY(py);

What exactly would do this (when it works)?
you now have the current player details in the me variable
so you don't need to lookup the player anymore and that code becomes just:

me.setX(px);
me.setY(py);
The reason is that something somewhere the String username is being set to null. But yeah, I'll try tht.
you should not need a string username, the me var contains all the details of the current user
all the redundant vars you have introduce errors as they don't get updated correctly
So I should remove the setX(px) and setY(py)
and replace all isntance of username with me.getUsername()?
ASKER CERTIFIED SOLUTION
Avatar of Mick Barry
Mick Barry
Flag of Australia image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
and I leave this part alone, correct?

      public Player getPlayer(String username) {
            return players.get(username);
      }

no need to change anything there.
yes thats fine