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

📄 client.java

📁 使用Java 编制的小游戏
💻 JAVA
字号:
/*目的设计一个文字型个人冒险游戏,客户端控制一个人物对象的行为,
 * 然后服务器端根据发送来的行为,对人物的属性 等等发生改变,反馈给玩家,
 * 玩家随时可以查询人物的属性状态,同时达到一个服务器的目标;
 *开始服务器随即生成一张地图,里面中间各个位子有不同的敌人,或者宝物,
 *可以增加玩家属性等等,最后目的是找到并打倒一个boss,
 * 
 * 
 * 
 * 
 */

import java.io.*;
import java.net.*;

public class Client {

	private Socket s;

	private DataInputStream in;

	private DataOutputStream out;

	private BufferedReader bin;

	StringBuffer sb;

	String str = "";// 客户端请求信息;

	Client() {
		try {

			s = new Socket(InetAddress.getByName(null), Server.PORT);
			in = new DataInputStream(s.getInputStream());
			out = new DataOutputStream(s.getOutputStream());

			bin = new BufferedReader(new InputStreamReader(System.in));
			sb = new StringBuffer();

			System.out.println(in.readUTF());
			mapInput();// 利用方法来封装一个地图输入选择大小的任务;

			str = in.readUTF();
			System.out.println(str);// 显示服务器端传来的选择难度文字;
			nanduInput();
			str = in.readUTF();
			System.out.println(str);

			str = bin.readLine();// 角色姓名

			out.writeUTF(str);

			str = in.readUTF();// 读取生成信息;

			System.out.println(str);

		} catch (UnknownHostException e) {

			e.printStackTrace();
		} catch (IOException e) {

			e.printStackTrace();
		}

	}

	void mapInput() {
		try {
			String str2;// 输入输出的前后时间;一个流字符串的前后到达;
			do {

				str = bin.readLine();

				out.writeUTF(str);// 输入大小;
				str2 = in.readUTF();// 接受反馈

				System.out.println(str2);// 地图大小或者是提醒重新输入;

			} while (str2.equals("重新输入"));
		} catch (IOException e) {

			e.printStackTrace();
		}

	}

	void nanduInput() {
		try {
			String str2;// 输入输出的前后时间;一个流字符串的前后到达;
			do {

				str = bin.readLine();

				out.writeUTF(str);// 输入难度;
				str2 = in.readUTF();// 接受反馈一个读写就是一个阻塞,如果流中没有数据的话,会等到有数据来的时候;

				System.out.println(str2);// 难度大小或者是提醒重新输入

			} while (str2.equals("重新输入"));
		} catch (IOException e) {

			e.printStackTrace();
		}

	}

	void play() {

		System.out.println("请进行游戏,当输入exit退出");

		try {
			str = in.readUTF();
		} catch (IOException e1) {

			e1.printStackTrace();
		}
		System.out.println(str);// 输出游戏初始化后服务器传来的提示信息;
		String stri = "";

		try {
			while ((!(stri = bin.readLine()).equals("exit"))) {// 这里条件不能出错,否则服务器就会读取不到数字;
				// 提示输入移动步伐;
				/*
				 * out.flush(); out.writeUTF(str);// 输入移动方向,传送给服务器;
				 * System.out.println("我在移動中"); str = in.readUTF();//
				 * 读取服务器反馈,移动到的目前位置; System.out.println(str);
				 * 
				 * str = in.readUTF();// 读取该地点发生的事件,显示给用户;
				 * 
				 * System.out.println(str);
				 * 
				 * strue=in.readUTF();//读取TRUE;
				 * 
				 * System.out.println(strue);
				 */
				out.writeUTF(stri);
				while (!(str = in.readUTF()).equals("false")) {
					System.out.println(str);

					if (str.equals("很好") || str.equals("输入不正确,请重新输入"))// 当一次移动事件结束,或者输入错误的时候,就要重新移动,输入移动方向了;
						break;
				}
				// if ((str.equals("false")))//取消这里可以让游戏能有重新来过的机会;
				// break;

			}
			out.writeUTF(stri);

			s.close();

		} catch (IOException e) {

			e.printStackTrace();
		}

	}

	public static void main(String[] args) {

		Client c = new Client();
		c.play();

	}

}

⌨️ 快捷键说明

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