📄 client.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 + -