JAVAGUI小游戏-基于UDP通信实现联机对战的井字棋

记得这是大二上学期时的一个作业,开发一款井字棋,记得当时放飞自我花了通宵搞出来了一个能联机对战的。
时隔一年多,如今整理电脑发现了这个项目代码,舍不得删,干脆写一个博客纪念一下吧。
虽说JAVAGUI早以过时,但是这个项目对于java初学者来说是很不错的,记得当时通过这个项目更加深刻理解到了面向对象程序设计,以及多线程网络编程的知识,收获颇大.

代码量稍微有点大,我就不全上代码了,后面我会给出Github地址

先看项目的目录结构(当时模仿Android的命名)每个页面对应一个Activity

JAVAGUI小游戏-基于UDP通信实现联机对战的井字棋_第1张图片
程序的入口是主函数,用于启动页面的类
Main.class

import java.net.SocketException;
public class Main {
    public static void main(String[] args) throws SocketException {
        new FirstActivity();
      // new SecondActivity();
       //new Thread(new GameActivity()).start();
        //new ThirdActivity();
       //new Dialog();
       // new FivethActivity();
       // new SixActivity();
    }
}

开始页面

JAVAGUI小游戏-基于UDP通信实现联机对战的井字棋_第2张图片

网络对战(在一个局域网中就可对战)

JAVAGUI小游戏-基于UDP通信实现联机对战的井字棋_第3张图片

在一台电脑上模拟了一下

JAVAGUI小游戏-基于UDP通信实现联机对战的井字棋_第4张图片
原理就是通过UDP通信发送坐标,然后另一方接收到消息后就刷新页面。(详细看代码吧)

人机对战(可选择难度,困难的难度几乎不可能赢)

JAVAGUI小游戏-基于UDP通信实现联机对战的井字棋_第5张图片
JAVAGUI小游戏-基于UDP通信实现联机对战的井字棋_第6张图片

github地址:

https://github.com/xiangyida/JAVAGUI-jingzhiqi

ps:当时在设计的过程中用到了类的继承,但还是不够完善,现在看来可以有更好的设计。感兴趣的同学可以去重新设计一下,比如棋盘可以写成一个基类,每个页面继承它等等。欢迎pull给我哦~

你可能感兴趣的:(其他)