、游戏效果

Java网络编程联机3D坦克大战

在这里插入图片描述
在这里插入图片描述

二、游戏涉及知识
服务器端运用了 IO、线程、网络、面向对象、异常 的内容,
客户端使用 unity3d引擎进行开发
、天气
在这里插入图片描述

三、服务器设计思路
1.实例化Socket服务器,并指定端口号
2.主线程循环监听多个客户端的连接,并将每个客户端连接保存在集合中
3.启动接收数据子线程对象,每建立一个连接,则启动一个子线程来处理数据的广播

四、服务器代码
package test0813.tank.server;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Vector;

/**

  • 3D坦克大战服务器
    */
    public class TankServer {

    //创建一个存储客户端连接socket的集合
    static Vector sockets = new Vector<>();

    public static void main(String[] args) {

     TankServer tankServer = new TankServer();tankServer.init();
    

    }

    //初始化服务器
    private void init() {

     try {//1.实例化Socket服务器,并指定端口号ServerSocket server = new ServerSocket(7777);System.out.println("服务器已启动,等待客户端连接中...");//2.主线程循环监听多个客户端的连接,并将每个客户端连接保存在集合中while(true){//接收客户端连接Socket socket = server.accept();//将此连接保存在集合中sockets.add(socket);System.out.println("当前socket:" + socket);System.out.println("客户端连接数据:" + sockets.size());//3.启动接收数据子线程对象,每建立一个连接,则启动一个子线程来处理数据的广播new RecvTankServerThread(socket).start();}} catch (IOException e) {e.printStackTrace();}
    

    }

    //向所有客户端广播发送数据
    public void broadCast(byte[] data,Socket self,int length){

     //遍历sockets集合,并从每一个集合中获取输出流,将数据广播给其他客户端for (Socket tempSocket : sockets) {if(tempSocket != self){try {OutputStream os = tempSocket.getOutputStream();os.write(data,0,length);} catch (IOException e) {e.printStackTrace();}}}
    

    }

    //接收数据子线程
    class RecvTankServerThread extends Thread {

     private Socket socket;public RecvTankServerThread(Socket socket){this.socket = socket;}public void run(){try {//从socket中获取流InputStream is = socket.getInputStream();//定义字节数组,作为装字节数据的容器byte[] data = new byte[1024];//循环读取while(true){//定义有效长度int length = is.read(data);//收到数据,广播给其他客户端broadCast(data,socket,length);}} catch (IOException e) {e.printStackTrace();}}
    

    }
    }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
五、项目下载
https://download.csdn.net/download/qq_33591873/12710603

ava联网3D坦克大战(网络编程)2020相关推荐

  1. Unity学习回忆--3D坦克大战

    2023年LPL春季赛季后赛正在火热进行中,你们心中的总冠军是哪支队伍呢?作为热爱游戏的程序猿,一起来聊聊你那些有意义的游戏开发经历吧! 前言 还记得大一的时候第一次接触编程,为了手写一个hello, ...

  2. 3D坦克大战游戏源码

    3D坦克大战游戏源码,该游戏是基于xcode 4.3,ios sdk 5.1开发.在xcode4.3.3上完美无报错.兼容ios4.3-ios6.0 ,一款ios平台上难得的3D坦克大战游戏源码,有2 ...

  3. js版 3D坦克大战 V0.5

    欢迎体验js版的 3D坦克大战 V0.5 测试地址:http://121.199.29.66:88/. 目前只支持新版本的的chrome浏览器,有时同时进入的玩家较多,暂没有分房间,导致偶尔会较卡,请 ...

  4. unity学习3D坦克大战(六)

    Unity 3D坦克大战案列学习(五) 实现相机视野的跟随 using UnityEngine; using System.Collections; /// <summary> /// 控 ...

  5. unity学习3D坦克大战(一)

    Unity 3D坦克大战案列学习(一) 实现坦克移动和转向 using UnityEngine; using System.Collections; public class TankMovement ...

  6. unity学习3D坦克大战(四)

    Unity 3D坦克大战案列学习(四) 实现控制特效存在的时间 using UnityEngine; using System.Collections; /// <summary> /// ...

  7. unity学习3D坦克大战(五)

    Unity 3D坦克大战案列学习(五) 实现坦克的生命值和伤害机制 using UnityEngine; using System.Collections; using UnityEngine.UI; ...

  8. 【Unity】3D坦克大战入门级别开发

    坦克大战核心功能是坦克移动和转向.发射子弹等简单的逻辑. 坦克移动和转向: void FixedUpdate(){//v 垂直方向就是世界z轴float v = Input.GetAxis(" ...

  9. 【Three.js】web版 3D坦克大战

    基于 three.js 开发的web版坦克大战 基础部分介绍 光源 坐标 履带印和爆炸灰烬 波纹 音效 玩家初始护盾 地图元素 升级提示 坦克 敌人逻辑 玩法介绍 敌人种类 道具种类 性能优化 移动碰 ...

最新文章

  1. ASP.NET C# 生成静态页面简单方法
  2. 字节跳动学习笔记:java多线程实现原理
  3. 【笨嘴拙舌WINDOWS】字符类型与字符串
  4. python调用系统api_Python调用系统底层API播放wav文件的方法
  5. 判断两线段是否相交——快速排斥与跨立实验
  6. 10道python面试题,每题10分,你能的多少分!(内附python教程)
  7. XCODE---个人常用快捷键整理
  8. windows 远程连接mongo_MongoDB 在windows服务器安装部署与远程访问配置
  9. 别人改出了新BUG,怎么看?
  10. C#实现office文档转换为PDF或xps
  11. 为富人服务,挣富人的钱
  12. Comparative Molecular Analysis of Gastrointestinal Adenocarcinomas
  13. v40能升级鸿蒙系统,荣耀v40可以升级鸿蒙系统吗 荣耀共有14款机型可升级
  14. 显卡显存测试u盘 mats_影驰RTX 2080 Ti HOF Plus显卡评测:披坚执锐的性能王冠守护者...
  15. 云计算,经济危机下爆发
  16. 基于matlab的光学薄膜特性分析,基于matlab的光学薄膜特性分析.doc
  17. 企业信息化有什么价值?如何实现?
  18. 高版本Word保存为97-2003版本公式变图片问题
  19. 【DockerFile构建自定义镜像实操出现问题解决方案Failed to download metadata for repo ‘appstream‘: IPv4 forwarding disa】
  20. centos8安装nfs服务器

热门文章

  1. python 小说cms系统_狂雨小说cms开源系统附安装教程-狂雨小说CMS系统(外加一套采集规律)下载两款优化版-西西软件下载...
  2. 20220310在MT6739的android8.1下增加VT设备tty1
  3. html鼠标悬停直线变粗,鼠标悬停或经过对象时CSS样式变化设置
  4. 京东金融大数据竞赛猪脸识别(3)- 图像特征提取之二
  5. oracle 10g oem地址,Oracle 10g: The Top 20 Features for DBA-OEM
  6. 中国各地男人之最的分析
  7. 【MM小贴士】从 purchase 到 payment 全流程演示
  8. 最新s1 ROM下载汇总
  9. 如何在电脑端安装手机驱动程序
  10. echarts-员工看板排版设计