GithubHelp home page GithubHelp logo

xiewei10 / gobangproject Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dadahua/gobangproject

0.0 2.0 0.0 13.07 MB

大华五子棋(已上架),该项目主要用到MutipeerConnectivity框架,用蓝牙或者局域网二人近场五子棋对战。

License: MIT License

Objective-C 100.00%

gobangproject's Introduction

GoBangProject

大华五子棋(已上架),该项目主要用到MutipeerConnectivity框架,用蓝牙或者局域网二人近场五子棋对战。

一.项目介绍

1.地址:

iTunes下载 :大华五子棋

github地址:GobangProject

优酷操作视频:如何操作

2.效果图:

近场五子棋对战.gif

3.简介:

该项目主要用到MutipeerConnectivity框架,用蓝牙或者局域网二人近场五子棋对战。

二.思路介绍

大概说下思路,具体看代码实现。

1.画棋盘及落点

这个可以去慕课网看看这个视频:五子棋,里面有详细的讲解,我对里面的进行了部分优化。比如怎么判断两点之间到底触摸的哪个点。

2.悔棋,重来

每个点都是一个对象,让后把对象放数组里面,进行删去,或者重置。

3.人机模式

AI简介.png

这里的AI(人工智能)比较简单,这个算法可深可浅,此项目就是比较浅的,深的可以去看算法,此项目AI的大体思路是:

  • 先便利棋盘上面的点,找到AI的棋子有活四,死四的点,既下一步能形成5个点的落子点,找到就直接在此点落子。

  • 如果没找到,就遍历玩家活四,或者死四的点,并在此进行落点进行防守,虽然活四没法防守。

  • 然后这两个点都没找到的话,就直接找AI有形成活三,或者死三的点,进行落子进攻。

  • 如果没找到,就找用户能形成活三,死三的点进行防守。就这样简单的进行交互。

4.人人模式

人人连机主要用Multipeer Connectivity框架进行近场通讯,现在有黑白玩家想要连接。

  • 那么双方必须打开蓝牙或者连接同一WiFi,接着至少要有一个设备作为浏览器(browser),用来搜寻其他设备;

  • 第二个设备必须是可发现的,它要声明它在这里,并且它想要与别的设备连接。换句话说,第二个设备需要宣传自己。 一般来说,两个设备都要宣传自己,但至少要有一个能浏览其他设备,从而建立连接。

  • 接受邀请后双方建立连接。然后他们就可以基于session会话来传递数据消息数据(包括文本、图像以及可以转换为NSData对象的任何其他数据),流数据,资源数据。

  • 此项目只需要传递消息数据即可。收到数据的代理方法默认会是在子线程上面,所以如果要更新UI等操作要用GCD线程回调到主线程上面来,否则会造成线程异常的情况。

  • 传递的数据有棋子位置,棋子颜色,催促信号,语言文字等。为此我制定了简单的协议来区别这些数据。否则没有一套基本的标准,应用没办法判定这串数据是否是语言文字,还是棋子位置或者信号等。通讯协议表如下表所示。

数据类型 头部 内容 例子
语言文字 ~ 文字 ~你吃饭了吗?
黑子位置 black 棋子x,y坐标 black0705
白子位置 white 棋子x,y坐标 white0705
催促 quikly quikly
悔棋 undo undo

三.用到的三方和借鉴

感谢下面作者 1.LLSwitch 2.SFDraggableDialogView 3.慕课网五子棋

四.结语

如果能对你有帮助,就给个star或赞鼓励下,有什么没明白的欢迎留言交流。

gobangproject's People

Contributors

dadahua avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.