利用多线程和Socket实现猜拳游戏

本文介绍了如何使用Java实现一个基于多线程和Socket的猜拳游戏。游戏逻辑包括客户端输入选择并与服务器进行比较,服务器端随机生成选择并返回结果。文章提供了业务逻辑线程、客户端和服务器的实现代码,并提到了可以扩展的功能,如统计输赢次数。运行程序时,服务器持续运行等待客户端连接,客户端退出时服务器会显示提示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实例:猜拳游戏

猜拳游戏是指小时候玩的石头、剪刀、布的游戏。客户端与服务器的“较量”,服务器会自动随机产生出石头、剪刀或者布,客户端则由用户输入石头、剪刀、布之一,然后服务器通过比较告知比较结果。比如,客户端出石头,而服务器出的是剪刀,那么,服务器就会告知客户端,用户赢了。猜拳游戏也要制作一个多线程的程序,让多个客户端能够共同参与游戏。在该程序中,要包括猜拳的业务逻辑的线程类、客户端类、服务器类。

根据实例的要求,猜拳游戏的业务逻辑线程类的代码如下。

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代表平局
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值