java利用多线程和利用多线程和Socket实现猜拳游戏实现猜拳游戏
主要为大家详细介绍了java利用多线程和Socket实现猜拳游戏,文中示例代码介绍的非常详细,具有一定的参考
价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了利用多线程和Socket实现猜拳游戏的具体代码,供大家参考,具体内容如下
实例:猜拳游戏
猜拳游戏是指小时候玩的石头、剪刀、布的游戏。客户端与服务器的“较量”,服务器会自动随机产生出石头、剪刀或者布,客
户端则由用户输入石头、剪刀、布之一,然后服务器通过比较告知比较结果。比如,客户端出石头,而服务器出的是剪刀,那
么,服务器就会告知客户端,用户赢了。猜拳游戏也要制作一个多线程的程序,让多个客户端能够共同参与游戏。在该程序
中,要包括猜拳的业务逻辑的线程类、客户端类、服务器类。
根据实例的要求,猜拳游戏的业务逻辑线程类的代码如下。
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Random;
/**
* @author MNH
* @version 1.0
* @project Name: JavaSenior
* @file Name: PlayThread
* @desc 功能描述
* @date 2020/8/19
* @time 8:53
* @by IDE: IntelliJ IDEA
*/
public class PlayThread implements Runnable{
Socket s;
InputStream is=null;
OutputStream os=null;
public PlayThread(Socket s){
this.s=s;
}
@Override
public void run() {
try {
is = s.getInputStream();
os = s.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
DataInputStream dis = new DataInputStream(is);
Random rd = new Random(3);//0代表石头,1代表剪刀,2代表布
while (true) {
int random = rd.nextInt();
int number = dis.readInt();
if (number == 3) {
System.out.println("客户端退出");
break;
}
int rs = -1;//1代表获胜,2代表失败,3代表平局
if (random == 0) {
if (number == 1) {
rs = 2;
} else if (number == 2) {
rs = 1;
} else {
rs = 3;
}
} else if (random == 1) {
if (number == 0) {
rs = 1;
} else if (number == 2) {
rs = 2;
} else {
rs = 3;
}
} else {
if (number == 0) {
rs = 2;