?? 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 + -