Java套接字编程示例(猜拳游戏)

package appendix_b;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class Demo2 {
public static void main(String[] args) {
try {
System.out.println("正在连接服务器。。。");

//创建Socket对象,链接本机端口8001
Socket socket = new Socket("127.0.0.1",8001);

//由系统设备构造 BufferedReader
InputStreamReader is1 = new InputStreamReader(System.in);
BufferedReader bin = new BufferedReader(is1);

//由Socket对象得到输出流,并构造PrintWriter对象
PrintWriter sout = new PrintWriter(socket.getOutputStream(),true);



//由Socket对象得到输入流,并构造BufferedReader
InputStreamReader is2 =new InputStreamReader(socket.getInputStream());
BufferedReader sin = new BufferedReader(is2);

System.out.println("正确的链接了服务器");
System.out.println();

String msg;

//接收服务器端的游戏说明文字
msg = sin.readLine();
System.out.println(msg);
msg = sin.readLine();
System.out.println(msg);
msg = sin.readLine();
System.out.println(msg);

//从标准流中接受用户的输入
msg = bin.readLine();
//将用户的输入传给服务器
sout.println(msg);

//等待服务器的响应,并将结果输出
//接收服务器的选择
msg = sin.readLine();
System.out.println(msg);

//接受客户端的选择
msg = sin.readLine();
System.out.println(msg);

//接受游戏结果
msg = sin.readLine();
System.out.println(msg);

sout.close();
sin.close();
socket.close();

} catch (Exception e) {
e.printStackTrace();
}
}
}

//
package appendix_b;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random;

public class Demo3 {
public static void main(String[] args) {
try {
ServerSocket server = null;

//监听本机的端口
server = new ServerSocket(8001);
//对应客户端的socket
Socket socket = null;
System.out.println("等待客户端的连接。。。");
//接收客户端对8001端口的连接
socket = server.accept();
System.out.println("客户端正在连接!");

//获取socket的输入流
InputStreamReader is1 = new InputStreamReader(socket.getInputStream());
BufferedReader sin = new BufferedReader(is1);

//获取socket的输出流
PrintWriter sout = new PrintWriter(socket.getOutputStream(),true);

//获取标准输入流
InputStreamReader is2 = new InputStreamReader(System.in);
BufferedReader bin = new BufferedReader(is2);

String msg;

//输出游戏的提示
sout.println("开始新的游戏,请选择你的出拳:");
sout.println("1,剪刀,2,石头,3,布");
sout.println("");

//接受客户端的输入
msg = sin.readLine();

//构造服务器的选择
Random r = new Random();
String tempmsg = null;

tempmsg = String.valueOf((r.nextInt(3)+1));

//判断服务器的选择
if(tempmsg.equals("1"))
{
sout.println("服务器选的是:剪刀");
}
if(tempmsg.equals("2"))
{
sout.println("服务器选的是:石头");
}
if(tempmsg.equals("3"))
{
sout.println("服务器选的是:布");
}

//判断客户端的选择
if(msg.equals("1"))
{
sout.println("你选的是:剪刀");
}
if(msg.equals("2"))
{
sout.println("你选的是:石头");
}
if(msg.equals("3"))
{
sout.println("你选的是:布");
}

//判断是谁胜
if((tempmsg.equals("1") && msg.equals("2"))||
(tempmsg.equals("2") && msg.equals("3"))||
(tempmsg.equals("3") && msg.equals("1")))
{
sout.print("你赢了!");
}else if(tempmsg.equals(msg))
{
sout.println("平局");
}
else
{
sout.println("你输了!");
}

//关闭对策
sout.close();
sin.close();
socket.close();
server.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
//
package appendix_b;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random;

public class Demo4 extends Thread{

Socket socket;

public Demo4(Socket socket1)
{
this.socket = socket1;
}

public static void main(String[] args) {
try {
ServerSocket server = null;

//监听本机的端口
server = new ServerSocket(8001);

int clientCount = 1;

//循环接受客户端的链接
while(true)
{
Socket socket = null;
System.out.println("等待着"+clientCount+"客户端的链接。。。");

//接收客户端对8001端口的连接
socket = server.accept();
System.out.println("客户端正确连接");

//启动一个新的线程来处理客户端
Demo4 thread = new Demo4(socket);
thread.start();
clientCount++;
}
} catch (Exception e) {
e.printStackTrace();
}
}

//运行游戏的方法
public void run()
{
try {

//获取socket的输入流
InputStreamReader is1 = new InputStreamReader(socket.getInputStream());
BufferedReader sin = new BufferedReader(is1);

//获取socket的输出流
PrintWriter sout = new PrintWriter(socket.getOutputStream(),true);



String msg;

//输出游戏的提示
sout.println("开始新的游戏,请选择你的出拳:");
sout.println("1,剪刀,2,石头,3,布");
sout.println("");

//接受客户端的输入
msg = sin.readLine();

//构造服务器的选择
Random r = new Random();
String tempmsg = null;

tempmsg = String.valueOf((r.nextInt(3)+1));


//判断服务器的选择
if(tempmsg.equals("1"))
{
sout.println("服务器选的是:剪刀");
}
if(tempmsg.equals("2"))
{
sout.println("服务器选的是:石头");
}
if(tempmsg.equals("3"))
{
sout.println("服务器选的是:布");
}

//判断客户端的选择
if(msg.equals("1"))
{
sout.println("你选的是:剪刀");
}
if(msg.equals("2"))
{
sout.println("你选的是:石头");
}
if(msg.equals("3"))
{
sout.println("你选的是:布");
}

//判断是谁胜
if((tempmsg.equals("1") && msg.equals("2"))||
(tempmsg.equals("2") && msg.equals("3"))||
(tempmsg.equals("3") && msg.equals("1")))
{
sout.print("你赢了!");
}else if(tempmsg.equals(msg))
{
sout.println("平局");
}
else
{
sout.println("你输了!");
}

//关闭对策
sout.close();
sin.close();
socket.close();

} catch (Exception e) {
e.printStackTrace();
}

}
}
//

这是一个简单的猜拳游戏,通过socket实现客户端与服务器的交互。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完全原创的一个java俄罗斯方块游戏,实现了网络对战、道具使用、背景音乐播放、音效播放等功能。但网络对战和道具使用部分尚有些小问题,仍需要测试,因为没时间做了,发上来供大家下载,如果哪位有兴趣,想一起研究,可发邮件至lijiangui2002@163.com 类列表: backgroundmusic.java背景音乐播放类 blockcanvas.java方块类 bomp.java炸弹类(炸弹的消行规则是坠毁所占行数的方块) control.java主类 createdialog.java对话框类 data.java游戏与地图数据接口 gamecontrol.java游戏控制类 imagecapture.java图像采集与发送类 imageshow.java图像接收与显示类 jframe.java界面GUI类 nextpanel.java下一个方块画布类 soundeffect.java音效播放类 -------------------------------------------------------------------- 说明,内含编译好的j可执行jar程序,在正确安装jre的计算机上双击游戏程序即可运行,如果没有正确安装jre,可以编译游戏源文件运行。游戏主类为control.java ---------------------------------- 最初开发时,我把它定义一个比较有创意的游戏,但是最终因为没有时间而作罢,我的目的是游戏能够利用道具进行网络对攻,以增加游戏的趣味性。因为时间,我只设计出一种道具——炸弹,更糟糕的是,这唯一的一种道具都没有实现网络对攻, 只能随机地出现,这是让我很遗憾的地方。所以,哪位朋友对这个游戏有兴趣的话,咱们可以共同研究研究

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值