iOS简易蓝牙对战五子棋游戏设计思路之二——核心棋盘逻辑与胜负判定算法(一)

简介: iOS简易蓝牙对战五子棋游戏设计思路之二——核心棋盘逻辑与胜负判定算法

iOS简易蓝牙对战五子棋游戏设计思路之二——核心棋盘逻辑与胜负判定算法


一、引言


   上一篇博客我们介绍了在开发一款蓝牙对战五子棋游戏中核心的蓝牙通讯框架的设计与编写,本篇博客将来完成独立的棋盘逻辑与胜负判定算法。上篇博客地址如下:


五子棋游戏中和核心通讯类设计:http://my.oschina.net/u/2340880/blog/644432


二、棋盘中独立棋格的设计


   我们知道,五子棋游戏的棋盘是由横纵交叉的两组平行线组成,每一个横纵线的交点即是棋盘上可以落子的点。因此,在设计棋盘前,我们可以先来设计创建棋盘上每一个独立的落子点,这里称之为棋格,在iOS中,可以使用UIButton类来进行棋格的设计。


   创建一个类,命名为TipButton作为棋格类,实现其头文件如下:


TipButton.h


#import <UIKit/UIKit.h>

@interface TipButton : UIButton

//标记此瓦片是否已经落子 0 空 1 己方落子 2 敌方落子

@property(nonatomic,assign)int hasChess;

//落子 BOOL类型的参数 决定是己方还是敌方

-(void)dropChess:(BOOL)isMine;

//设置白子或者黑子

@property(nonatomic,assign)BOOL isWhite;

//瓦片编号

@property(nonatomic,assign)int index;

@end

实现.m文件如下:


#import "TipButton.h"

@implementation TipButton

- (instancetype)initWithFrame:(CGRect)frame

{

   self = [super initWithFrame:frame];

   if (self) {

       [self creatView];

   }

   return self;

}

-(void)creatView{

   //创建横竖两条线

   UIView * line1 = [[UIView alloc]initWithFrame:CGRectMake(self.frame.size.width/2-0.25, 0, 0.5, self.frame.size.height)];

   line1.backgroundColor = [UIColor grayColor];

   [self addSubview:line1];

 

   UIView * line2 = [[UIView alloc]initWithFrame:CGRectMake(0, self.frame.size.height/2-0.25, self.frame.size.width, 0.5)];

   line2.backgroundColor = [UIColor grayColor];

   [self addSubview:line2];

}


-(void)dropChess:(BOOL)isMine{

   UIView * view = [[UIView alloc]initWithFrame:CGRectMake(self.frame.size.width/2-5, self.frame.size.height/2-5, 10, 10)];

   view.layer.masksToBounds = YES;

   view.layer.cornerRadius = 5;

   UIColor * myColor;

   UIColor * otherColor;

   if (_isWhite) {

       myColor = [UIColor whiteColor];

       otherColor = [UIColor blackColor];

   }else{

       myColor = [UIColor blackColor];

       otherColor = [UIColor whiteColor];

   }

   if (isMine) {

       view.backgroundColor = myColor;

       self.hasChess = 1;

   }else{

       view.backgroundColor = otherColor;

       self.hasChess = 2;

   }

   [self addSubview:view];

 

}

@end

目录
相关文章
|
29天前
3秒的你对战“它”有没有胜算——quicksort
3秒的你对战“它”有没有胜算——quicksort
26 0
|
8月前
|
存储 人工智能 算法
五子棋简易AI算法1
基本思想 设置不同连接方式的权值并进行存储
241 1
|
8月前
|
存储 人工智能 算法
【五子棋实战】第2章 博弈树负值极大alpha-beta剪枝算法(二)
  博弈树(Game Tree)是博弈论中的一个概念,用于表示博弈过程中的各种可能走法和对应的结果。它是树结构,树的每个节点表示游戏的一个状态,每个节点的子节点表示在该状态下可能的下一步行动。
135 0
|
8月前
|
人工智能 算法 决策智能
【五子棋实战】第2章 博弈树负值极大alpha-beta剪枝算法(一)
市面上比较常用的五子棋算法是博弈树极大极小值alpha-beta剪枝算法,该算法可以分成四个部分来讲解,它们是环环相扣的:博弈树 - 极大极小值搜索 - 负值极大法 - alpha&beta剪枝 。
314 0
|
8月前
|
人工智能 算法 前端开发
【五子棋实战】第3章 算法包装成第三方接口
【五子棋实战】第3章 算法包装成第三方接口
|
1月前
|
移动开发 小程序 API
uniapp通过蓝牙传输数据 (ios)
uniapp通过蓝牙传输数据 (ios)
66 1
|
1月前
|
存储 算法 JavaScript
Java入门高频考查算法逻辑基础知识3-编程篇(超详细18题1.8万字参考编程实现)
解决这类问题时,建议采取下面的步骤: 理解数学原理:确保你懂得基本的数学公式和法则,这对于制定解决方案至关重要。 优化算法:了解时间复杂度和空间复杂度,并寻找优化的机会。特别注意避免不必要的重复计算。 代码实践:多编写实践代码,并确保你的代码是高效、清晰且稳健的。 错误检查和测试:要为你的代码编写测试案例,测试标准的、边缘情况以及异常输入。 进行复杂问题简化:面对复杂的问题时,先尝试简化问题,然后逐步分析和解决。 沟通和解释:在编写代码的时候清晰地沟通你的思路,不仅要写出正确的代码,还要能向面试官解释你的
41 0
|
1月前
|
人工智能 算法
【算法】深入理解 Prolog:逻辑编程的奇妙世界
【算法】深入理解 Prolog:逻辑编程的奇妙世界
46 0
|
10月前
|
机器学习/深度学习 传感器 算法
【航迹】基于MN逻辑算法实现航迹关联和卡尔曼滤波外推附matlab代码
【航迹】基于MN逻辑算法实现航迹关联和卡尔曼滤波外推附matlab代码
|
8月前
|
存储 算法 C语言
《信任的进化》游戏简易版逻辑算法的实现(C语言)
《信任的进化》游戏简易版逻辑算法的实现(C语言)