谁帮我做个JAVA小游戏代码
帮我做个JAVA小游戏,网络版的有服务器端和客户端就成,能连接上就型,剪子包袱锤的就行,要有代码能让我看懂,最好是每句都有......谢谢了端口随便写8080啊什么都无所...
帮我做个JAVA小游戏,网络版的
有服务器端和客户端就成,能连接上就型,剪子包袱锤的就行,
要有代码能让我看懂,最好是每句都有......谢谢了
端口随便写 8080啊 什么都无所谓
大哥..注释....
注释太少了.....最好每行都带注释.....
继续等待中... 展开
有服务器端和客户端就成,能连接上就型,剪子包袱锤的就行,
要有代码能让我看懂,最好是每句都有......谢谢了
端口随便写 8080啊 什么都无所谓
大哥..注释....
注释太少了.....最好每行都带注释.....
继续等待中... 展开
4个回答
展开全部
第一个类,服务器主线程类。
package src;//定义一个包,存放JAVA文件。
import java.io.*;//导入JAVA包,输入输出流包
import java.net.*;//导入JAVA包,网络应用包
public class SocketServer extends Thread {//服务器主线程,负责为每个发出请求连接的客户端分配一个服务线程。
ServerSocket server;//定义一个对象
public SocketServer() { //该类的午餐构造方法,负责初始化服务器,监听6000端口
try {//捕捉异常的块
server = new ServerSocket(6000);//实例化对象
}
catch(IOException e) {//捕捉流异常
System.exit(0);//程序退出
}
this.start();//启动主线程
}
public void run() {//主线程的线程体
try {//捕捉异常的块
while(true) {//这里为TRUE,表示一直监听6000端口可
Socket client = server.accept();//为每个请求建立一个SOCKET
Service ss = new Service(client);//为每个SOCKET建立一个服务线程。 这里参考第二个类,SERVICE类
}
}
catch(IOException e) {//捕捉异常的块
System.exit(1);//程序退出
}
}
public static void main(String[] args) {//服务器程序入口,MAIN方法
new SocketServer();//这里直接创建一个主线程对象,因为初始化写再无参构造函数里面,所以这里直接就启动主线程了。
}
}
第二各类:服务器的服务线程类。
package src;//定义一个包,存放JAVA类
import java.io.*;//同上一个类
import java.net.*;//同上一个类
public class Service extends Thread {//这是服务于每个请求的服务线程类。
String data;//定义一个字符串
BufferedReader inputs;//输入流
PrintStream outputs;//输出流
Socket client;//定义一个SOCKET
public Service(Socket socket) {//定义有参构造方法,通过传入的SOCKET对象来为某一个请求服务。这里就是主线程调用的方法。
client = socket;//将传递过来的参数给刚定义的这个对象.
try {//捕捉异常的块
inputs = new BufferedReader(new InputStreamReader(client
.getInputStream()));//获取输入流
outputs = new PrintStream(client.getOutputStream());//获取输出流
} catch (IOException e) {
}
this.start();//启动服务线程。开始对客户服务。
}
public void run() {//线程的主要方法体
try {
while (true) {//表示一直侦听端口
data = inputs.readLine();//从输入流中读取客户发来的消息,并赋值给DATA
int res = (int) (Math.random() * 3);// 1是石头2是剪刀3布 系统随机生成三个数字,分别表示游戏的三个出拳状态
if (data == null)//如果读取到的数据是空值,就不再继续下一步操作。
break;
else {//如果读取到的不是空,则进行比较
if (res == 0 && "石头".equals(data)) {
data = "电脑也是石头,打平了!!";
} else if (res == 0 && "剪刀".equals(data)) {
data = "电脑是石头,电脑赢了!!";
} else if (res == 0 && "布".equals(data)) {
data = "电脑是石头,恭喜,你赢了!!";
} else if (res == 1 && "石头".equals(data)) {
data = "电脑是剪刀,恭喜,你赢了!!";
} else if (res == 1 && "剪刀".equals(data)) {
data = "电脑也是剪刀,打平了!!";
} else if (res == 1 && "布".equals(data)) {
data = "电脑是剪刀,电脑赢了!!";
} else if (res == 2 && "石头".equals(data)) {
data = "电脑是布,电脑赢了!!";
} else if (res == 2 && "剪刀".equals(data)) {
data = "电脑是布,恭喜,你赢了!!";
} else if (res == 2 && "布".equals(data)) {
data = "电脑也是布,打平了!!";
}
else {
data = "电脑不认识你出的拳";
}
outputs.println(data);//将比较的结果通过输出流发给客户端。
}
}
} catch (IOException e) {
}
try {
client.close();//关闭服务
} catch (IOException e) {
}
}
}
第三个,客户端类。
package src;//同上一个类
import java.io.*;//同上一个类
import java.net.*;//同上一个类
public class Client {//客户端类
public static void main(String[] args) {//客户端程序入口,MAIN方法
String data;//定义字符串
Socket client = null;//定义SOCKET
BufferedReader inputs = null;//输入流
BufferedReader key = null;//输入流
PrintStream outputs = null;//输出流
try {
client = new Socket("localhost",6000);//客户程序启动通过6000端口和服务器联系,和服务器保持端口一致。
inputs = new BufferedReader(new InputStreamReader(client.getInputStream()));//获取输入流
outputs = new PrintStream(client.getOutputStream());//获取输出流
key = new BufferedReader(new InputStreamReader(System.in));//用于接收用户要发送给客户端的字符串。
}
catch(IOException e) {
System.out.println("CAN NOT CONN WITH SERVER");
}
try {
while(true) {
System.out.println("----------------------------");
System.out.print("请出拳:石头/剪刀/布 ");
data = key.readLine();//读取用户输入的字符串。
outputs.println(data);//将读取的字符串发送给服务器。
System.out.println("ECHO: " + inputs.readLine());//返回服务器的结果并打印到控制台。
}
}
catch(IOException e) {
System.out.println("ERROR IO");
}
try {
client.close();
}
catch(IOException e) {
System.out.println("can not close it");
}
}
}
运行的方法是先启动主线程类。然后启动客户端类。并再客户端一方输入 锤子,或 剪刀 或 布 ,然后回车,服务器会根据判断返回游戏的结果。这个过程反复执行。可以多次出拳和服务器较量。
呵呵,这次应该够详细了,不明白的可以继续补充。o(∩_∩)o...
package src;//定义一个包,存放JAVA文件。
import java.io.*;//导入JAVA包,输入输出流包
import java.net.*;//导入JAVA包,网络应用包
public class SocketServer extends Thread {//服务器主线程,负责为每个发出请求连接的客户端分配一个服务线程。
ServerSocket server;//定义一个对象
public SocketServer() { //该类的午餐构造方法,负责初始化服务器,监听6000端口
try {//捕捉异常的块
server = new ServerSocket(6000);//实例化对象
}
catch(IOException e) {//捕捉流异常
System.exit(0);//程序退出
}
this.start();//启动主线程
}
public void run() {//主线程的线程体
try {//捕捉异常的块
while(true) {//这里为TRUE,表示一直监听6000端口可
Socket client = server.accept();//为每个请求建立一个SOCKET
Service ss = new Service(client);//为每个SOCKET建立一个服务线程。 这里参考第二个类,SERVICE类
}
}
catch(IOException e) {//捕捉异常的块
System.exit(1);//程序退出
}
}
public static void main(String[] args) {//服务器程序入口,MAIN方法
new SocketServer();//这里直接创建一个主线程对象,因为初始化写再无参构造函数里面,所以这里直接就启动主线程了。
}
}
第二各类:服务器的服务线程类。
package src;//定义一个包,存放JAVA类
import java.io.*;//同上一个类
import java.net.*;//同上一个类
public class Service extends Thread {//这是服务于每个请求的服务线程类。
String data;//定义一个字符串
BufferedReader inputs;//输入流
PrintStream outputs;//输出流
Socket client;//定义一个SOCKET
public Service(Socket socket) {//定义有参构造方法,通过传入的SOCKET对象来为某一个请求服务。这里就是主线程调用的方法。
client = socket;//将传递过来的参数给刚定义的这个对象.
try {//捕捉异常的块
inputs = new BufferedReader(new InputStreamReader(client
.getInputStream()));//获取输入流
outputs = new PrintStream(client.getOutputStream());//获取输出流
} catch (IOException e) {
}
this.start();//启动服务线程。开始对客户服务。
}
public void run() {//线程的主要方法体
try {
while (true) {//表示一直侦听端口
data = inputs.readLine();//从输入流中读取客户发来的消息,并赋值给DATA
int res = (int) (Math.random() * 3);// 1是石头2是剪刀3布 系统随机生成三个数字,分别表示游戏的三个出拳状态
if (data == null)//如果读取到的数据是空值,就不再继续下一步操作。
break;
else {//如果读取到的不是空,则进行比较
if (res == 0 && "石头".equals(data)) {
data = "电脑也是石头,打平了!!";
} else if (res == 0 && "剪刀".equals(data)) {
data = "电脑是石头,电脑赢了!!";
} else if (res == 0 && "布".equals(data)) {
data = "电脑是石头,恭喜,你赢了!!";
} else if (res == 1 && "石头".equals(data)) {
data = "电脑是剪刀,恭喜,你赢了!!";
} else if (res == 1 && "剪刀".equals(data)) {
data = "电脑也是剪刀,打平了!!";
} else if (res == 1 && "布".equals(data)) {
data = "电脑是剪刀,电脑赢了!!";
} else if (res == 2 && "石头".equals(data)) {
data = "电脑是布,电脑赢了!!";
} else if (res == 2 && "剪刀".equals(data)) {
data = "电脑是布,恭喜,你赢了!!";
} else if (res == 2 && "布".equals(data)) {
data = "电脑也是布,打平了!!";
}
else {
data = "电脑不认识你出的拳";
}
outputs.println(data);//将比较的结果通过输出流发给客户端。
}
}
} catch (IOException e) {
}
try {
client.close();//关闭服务
} catch (IOException e) {
}
}
}
第三个,客户端类。
package src;//同上一个类
import java.io.*;//同上一个类
import java.net.*;//同上一个类
public class Client {//客户端类
public static void main(String[] args) {//客户端程序入口,MAIN方法
String data;//定义字符串
Socket client = null;//定义SOCKET
BufferedReader inputs = null;//输入流
BufferedReader key = null;//输入流
PrintStream outputs = null;//输出流
try {
client = new Socket("localhost",6000);//客户程序启动通过6000端口和服务器联系,和服务器保持端口一致。
inputs = new BufferedReader(new InputStreamReader(client.getInputStream()));//获取输入流
outputs = new PrintStream(client.getOutputStream());//获取输出流
key = new BufferedReader(new InputStreamReader(System.in));//用于接收用户要发送给客户端的字符串。
}
catch(IOException e) {
System.out.println("CAN NOT CONN WITH SERVER");
}
try {
while(true) {
System.out.println("----------------------------");
System.out.print("请出拳:石头/剪刀/布 ");
data = key.readLine();//读取用户输入的字符串。
outputs.println(data);//将读取的字符串发送给服务器。
System.out.println("ECHO: " + inputs.readLine());//返回服务器的结果并打印到控制台。
}
}
catch(IOException e) {
System.out.println("ERROR IO");
}
try {
client.close();
}
catch(IOException e) {
System.out.println("can not close it");
}
}
}
运行的方法是先启动主线程类。然后启动客户端类。并再客户端一方输入 锤子,或 剪刀 或 布 ,然后回车,服务器会根据判断返回游戏的结果。这个过程反复执行。可以多次出拳和服务器较量。
呵呵,这次应该够详细了,不明白的可以继续补充。o(∩_∩)o...
展开全部
楼上的回答很强大.学习中..应该可以截题了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上的楼上强悍!java初学者飘过,目前还看不懂~~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这种N人都有
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |