欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-18 23:48:04
...

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

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

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

JAVAGUI小游戏-基于UDP通信实现联机对战的井字棋
程序的入口是主函数,用于启动页面的类
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通信实现联机对战的井字棋

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

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

在一台电脑上模拟了一下

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

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

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

github地址:

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

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