IT教程 ·

基于Blazor写一个简朴的五子棋游戏

使用EventBus + Redis发布订阅模式提升业务执行性能

基于Blazor写一个简朴的五子棋游戏 IT教程 第1张

写这个五子棋游戏,实在重要目标是想尝试一下微软新作Blazor。Blazor关于那些搞.NET的程序员,又想做一些前端事情,真的挺友爱,不必一句JS便可搞定前端交互,美哉。如今已有很盛行的前端框架,如vue、react、angular等,微软出这个blazor框架,现在观察下来,在国外还满火的,国内就没什么声响了,一方面.net在国内影响原本也不大,另一方面搞.net的也怕被微软又给坑了,所以都是一种张望状况。

扯远了,回到正题,五子棋游戏,本质上照样个二维数组,值0示意空位,1示意黑子,2示意白子。

int[,] chess = new int[19,19];
chess[1,1] = 1;//黑子
chess[1,1] = 2;//白子

一切操纵也是对这个二维数组举行搜刮或赋值。实践起来差不多有四步。

画棋盘棋子

棋盘棋子由纯CSS编写,棋盘由 19x19个 div 组成。每一个div的:after :before 组成反正两条线条居中。棋子就是一个圆,加点径向渐变、暗影,看起来也差不多了。

怎样判赢

当用户在棋盘落子后,实在就是 int[x,y] = 1。基于此坐标,在反正撇揦4个方向上,找是不是有五个及以上的连子。假如找到就判赢,此局完毕。下边以横向为例。

//横方向
var i = 1;//向双方搜刮次数
var score = 1;//搜到的连子
var rightValid = true;//是不是还能往右搜刮
var leftValid = true;//是不是还能往左搜刮
while (i <= 5)
{
    var right = cell + i;//往右
    var left = cell - i;//往左
    if (rightValid && right < 19)//假如还能往右且没超越边境
    {
        if (chess[row, right] == chesspiece)//假如是连子
        {
            score++;//加1
            if (score >= 5) //假如已凌驾4个了,就判赢
                return true;
        }
        else //遇到空位或敌方棋子,中断搜刮
            rightValid = false; 
    }
    if (leftValid && left >= 0) //假如还能往左且没超越边境
    {
        if (chess[row, left] == chesspiece)
        {
            score++; //加1
            if (score >= 5)
                return true;
        }
        else //遇到空位或敌方棋子,中断搜刮
            leftValid = false;
    }
    i++;
}

怎样完成电脑走棋

走棋采用了遍历计分体式格局,即盘算每一个空位的分数,盘算划定规矩以下,分数由高究竟。

  • 能走死对方
  • 能走出活4连子(摆布无档子)
  • 能走出33
  • 能走出死4连子(个中一边被档住)
  • 能走出活3连子
  • 能走出死3连子(个中一边被档住)
  • 能走出2连子

战略

  • 斜线分数权重会高于直线。
  • 盘算空位分数时,也会盘算一个敌方在此位置的分数,假如敌方分数高于己方,会优先抢占该位置

这里对分数的盘算,还需继承调优。战略部份还应该加上跳子等状况。有时间再弄吧。

其他处置惩罚,

如疆场清算、谁先手等细节,这些都较为简朴。

   chess = new int[19,19];//从新实例化一下,即可消灭棋盘一切棋子。

 

有点长的博客:Redis不是只有get set那么简单

参与评论