public void action() throws Exception {
		if (isEnd) {
			return;
		}

		if (needStart) {
			updatePosition();
			if (FieldGame.isFreeFromBricks(id, pos_x, pos_y)) {
				writeMailbox(BrickGame.bluetooth_mailboxSystem, direction,
						BrickGame.bluetooth_mailboxGotIt);
				writeMailbox(BrickGame.bluetooth_mailboxSystem, move_power,
						BrickGame.bluetooth_mailboxGotIt);
				writeMailbox(BrickGame.bluetooth_mailboxSystem, rotate_power,
						BrickGame.bluetooth_mailboxGotIt);
				writeMailbox(BrickGame.bluetooth_mailboxSystem, gap,
						BrickGame.bluetooth_mailboxGotIt);
				writeMailbox(BrickGame.bluetooth_mailboxSystem, maxdegree,
						BrickGame.bluetooth_mailboxGotIt);
				writeMailbox(BrickGame.bluetooth_mailboxSystem, forward,
						BrickGame.bluetooth_mailboxGotIt);
				needStart = false;
			}
			downdatePosition();
			return;
		}

		if (direction == 0) {
			if (Status.is_win()) {
				writeMailbox(BrickGame.bluetooth_mailboxSystem, 0, -1);
				isEnd = true;
				return;
			}
			int newdirection = FieldGame.getMove(id);
			if (newdirection < 1 || newdirection > 4) {
				return;
			}
			direction = newdirection;
			writeMailbox(BrickGame.bluetooth_mailboxSystem, newdirection, -1);
			Gui.update();
		} else {
			receive_id();
		}

	}