谁能帮我做一个JAVA游戏代码?

第一个类,服务器主线程类。

包src//定义一个包来存储JAVA文件。

导入Java . io . *;//导入JAVA包,iostream包。

导入Java . net . *;//导入JAVA包、网络应用包

公共类socket server扩展thread {//server main thread,负责为每个请求连接的客户端分配一个服务线程。

ServerSocket服务器;//定义一个对象

Public SocketServer() {//这个类的午餐构造函数负责初始化服务器,监听端口6000。

Try {//捕捉异常块。

server = new server socket(6000);//实例化该对象

}

Catch(IOException e) {//捕获流异常。

system . exit(0);//程序退出

}

this . start();//启动主线程

}

主线程的公共void run() {//线程体

Try {//捕捉异常块。

While(TRUE) {//这里为TRUE,表示一直监听端口6000可以。

套接字client = server . accept();//为每个请求创建一个套接字。

服务ss =新服务(客户端);//为每个套接字建立一个服务线程。参考第二类,即服务类。

}

}

Catch(IOException e) {//捕获异常的块。

system . exit(1);//程序退出

}

}

public static void MAIN(string[]args){//服务器程序入口,MAIN方法。

new socket server();//这里直接创建一个主线程对象,因为初始化是写在无参数的构造函数里,所以这里直接启动主线程。

}

}

第二类:服务器的服务线程类。

包src//定义一个包来存储JAVA类。

导入Java . io . *;//与上一个类相同

导入Java . net . *;//与上一个类相同

公共类服务扩展线程{//这是为每个请求提供服务的服务线程类。

字符串数据;//定义一个字符串

BufferedReader输入;//输入流

PrintStream输出;//输出流

套接字客户端;//定义一个套接字

Public Service(Socket SOCKET) {//定义一个参数化的构造函数,通过传入的Socket对象服务请求。这是主线程调用的方法。

客户端=套接字;//将传递的参数给刚刚定义的对象。

Try {//捕捉异常块。

inputs = new buffered reader(new InputStreamReader(client

。getInputStream()));//获取输入流

outputs = new PrintStream(client . get output stream());//获取输出流

} catch (IOException e) {

}

this . start();//启动服务线程。开始服务客户。

}

public void run() {// thread的主方法体。

尝试{

While (true) {//表示始终监听端口。

data = inputs . readline();//从输入流中读取客户发送的消息,并将其赋给DATA。

int RES =(int)(math . random()* 3);// 1是石头2剪刀3。布系统随机生成三个数字,分别代表游戏的三种打卡状态。

If (data == null)//如果读取的数据为空,则不继续下一步操作。

打破;

Else {//如果读取的内容不为空,则进行比较。

if(RES = = 0 & amp;& amp《石头》。等于(数据)) (

Data = "电脑也是石头,也扯平了!!";

} else if(RES = = 0 & amp;& amp“剪刀”。等于(数据)) (

Data = "电脑是石头,电脑赢了!!";

} else if(RES = = 0 & amp;& amp“布”。等于(数据)) (

Data = "电脑是一块石头。恭喜你,你赢了!!";

} else if(RES = = 1 & amp;& amp《石头》。等于(数据)) (

Data = "电脑是剪刀。恭喜你,你赢了!!";

} else if(RES = = 1 & amp;& amp“剪刀”。等于(数据)) (

Data = "电脑也是剪刀,扯平了!!";

} else if(RES = = 1 & amp;& amp“布”。等于(数据)) (

Data = "电脑是剪刀,电脑赢了!!";

} else if(RES = = 2 & amp;& amp《石头》。等于(数据)) (

Data = "电脑是布,电脑赢了!!";

} else if(RES = = 2 & amp;& amp“剪刀”。等于(数据)) (

Data = "电脑是布。恭喜你,你赢了!!";

} else if(RES = = 2 & amp;& amp“布”。等于(数据)) (

Data = "电脑也是布,还扯平了!!";

}

否则{

Data = "电脑不知道你的打卡";

}

outputs.println(数据);//通过输出流将比较结果发送给客户端。

}

}

} catch (IOException e) {

}

尝试{

client . close();//关闭服务

} catch (IOException e) {

}

}

}

第三,客户端类。

包src//与上一个类相同

导入Java . io . *;//与上一个类相同

导入Java . net . *;//与上一个类相同

公共类Client {//客户端类

public static void MAIN(string[]args){//客户端程序入口,MAIN方法。

字符串数据;//定义一个字符串

Socket client = null//定义套接字

BufferedReader输入= null//输入流

BufferedReader key = null//输入流

PrintStream输出= null//输出流

尝试{

client = new Socket("localhost ",6000);//客户端程序开始通过端口6000联系服务器,端口与服务器一致。

inputs = new buffered reader(new InputStreamReader(client . getinputstream()));//获取输入流

outputs = new PrintStream(client . get output stream());//获取输出流

key = new buffered reader(new InputStreamReader(system . in));//用于接收用户要发送给客户端的字符串。

}

catch(IOException e) {

System.out.println("不能与服务器连接");

}

尝试{

while(true) {

system . out . println("-");

System.out.print("请打孔:石头/剪刀/布");

data = key . readline();//读取用户输入的字符串。

outputs.println(数据);//将读取的字符串发送到服务器。

system . out . println(" ECHO:"+inputs . readline());//返回服务器的结果,打印到控制台。

}

}

catch(IOException e) {

system . out . println(" ERROR IO ");

}

尝试{

client . close();

}

catch(IOException e) {

System.out.println("无法关闭");

}

}

}

运行的方法是先启动主线程类。然后启动客户端类。然后在客户端输入一个锤子,剪刀或者布,然后回车,服务器会根据判断返回游戏的结果。重复这个过程。可以和服务器多次打卡竞争。

呵呵,这次应该够详细了。有不明白的可以继续补充。o(∩_∩)o...