winformgdi+小游戏算法讲解——接上篇格子类小游戏珍惜记忆

小游戏的算法就是就是对游戏规则的抽象。一切事物皆可以成抽象成数学语言,程序语言。对游戏而言首先要明确定义游戏规则,一般我们在向他人讲述一个游戏规则时都很随意。比如五子棋我们就会说一句“连成五个子就行了”。其他的就靠人们通常的理解,和我们之间基本的默契了,但是当我写游戏就要把游戏规则高度精确的定义出来。

首先要能够用比较严谨的语言将规则表述清楚这个很重要。

下面我就有相对精确的语言把五子棋的规则给定义出,来并且说出每句的必要性;

1.棋盘:五子棋的棋盘是15*15的方格组成。棋子必须落在格点上

注释:15*15这个的必要性就是让五子棋有个适当的终结以免五子棋无穷的下下去,他对我们的影响就是:

即使你有4个子了但是到达了边界你还是没赢;由于这个规则就影响了你的落子,和你的策略;

对于程序:来说就是如果你鼠标点击了棋盘之外的点视为无效操作可以继续走。

如你点击的不是刚好在格点上就视为你点了离你鼠标位置最近的格点

2.棋子:就是黑子和白子棋子到时要求不大如果非要说一个的话就是棋子的直径要<=格子的边长

在程序中的体现就是注意下素材和算法关系不大

3.落子:一局棋中一个玩家只能使用一种颜色的棋子,双方交替落子一次只能落一子,两个棋子不能落在同一位置

对于程序:点击棋盘,如果你点击的那个部位超出界限,或对应的格点上已有棋子,或者对方尚未落子,则视为无效点击,可继续落子

3.赢:就是如果有经过玩家最后一次落子位置水平,竖直,与水平线成45度角,与水平线成135度角,这四条直线上又连续5个同色的棋子连续就是之中间没有中间没有空格点也没有异色的子

如果你能对一个游戏描述的像上面的那样那你基本上就可以根据游戏规则自己设计算法了而不是贴别人现成的

首先我解释下下面这个方法的参数:

int[,]winarr:就是记录棋盘上所有格点上落子情况的数组无子为0,黑子为1,白子为2

Pointluozi:这个只得是棋盘上最后落下的那个子的坐标。intx:代表的是棋盘上最后落地是黑子1,还是白子2

对于人人对战的来说核心的算法就是

inta,intb,intA,intB:代表目前棋盘的有效范围分别就是最左最上最右最下

有效范围:就是包含所有已经落子区域的最小矩形因为我这个五子棋做的是有AI的为了减小在棋盘上检索的范围就只检索这个有效范围

如果你不想考虑这些就a=0,b=0,a=14,b=14;

boolwin(int[,]winarr,Pointluozi,inta,intb,intA,intB,intx){

//这两个for指的就是所有的行和列for(introw=a;row<=A;row++){for(intcolum=b;colum<=B;colum++){

//4个if指的就是经过最后落子位置的4条线为什么要弄最后落子经过的4条线呢因为这样大大缩小了检索的范围

//我是怎吗让这4个if里面的直线经过最后的落子呢这个其实就是一个简单高中学的数学的一次函数的知识

//row==luozi.X就保障了该直线上所有的点都和最后落子在同一行4个if()中写包含luozi的都是为了保障该线经过落子

if(row==luozi.X&&colum+4<=B&&winarr[row,colum]==x&&winarr[row,colum+4]==x&&winarr[row,colum+1]==x&&winarr[row,colum+2]==x&&winarr[row,colum+3]==x)returntrue;if(colum==luozi.Y&&row+4<=A&&winarr[row,colum]==x&&winarr[row+4,colum]==x&&winarr[row+1,colum]==x&&winarr[row+2,colum]==x&&winarr[row+3,colum]==x)returntrue;if(colum+row==luozi.X+luozi.Y&&row-4>=a&&colum+4<=B&&winarr[row,colum]==x&&winarr[row-4,colum+4]==x&&winarr[row-1,colum+1]==x&&winarr[row-2,colum+2]==x&&winarr[row-3,colum+3]==x)returntrue;if(row-colum==luozi.X-luozi.Y&&row+4<=A&&colum+4<=B&&winarr[row,colum]==x&&winarr[row+4,colum+4]==x&&winarr[row+1,colum+1]==x&&winarr[row+2,colum+2]==x&&winarr[row+3,colum+3]==x)returntrue;}

}returnfalse;}

或许有人认为这个方法有些麻烦因为为了缩小检索的范围我多弄了好多参数。如果不考虑这些的话仅用一个数组参数就OK了

这些代码核心就是4个if只要你认真弄懂1一个if的含义其他的都差不多我个人认为此方法的代码已经够短了对于5子棋判断输赢而且方法也比较好减少了至少一半的运算量如果你有其他好的方法可以贴出来交流下

对于人人对战的五子棋来说核心的算法就是我上面贴出来的判断输赢关于联机下五子棋如果你学了协议方面的东西就不用我多说了相信你会做的如果你对界面的绘制有问题请看我的上一篇如果你想了解五子棋的AI制作也就是做人机对战的五子棋我将在下一篇中讲解

上面的问题我讲的比较细致下面我就直接贴出几个其他游戏的核心算法来供大家参考

先来个简单的启发下新手的思维其实很多事物都是可以用程序表达的如果你经常能把自己周围的事物也程序的眼光去看待相信你的编程会有极大的提高下面我就有一个程序描述出石头剪刀布这个游戏

enumCaiQuan//这就是个枚举定义了石头,剪刀,布{ShiTou,//石头值为0枚举类型的值默认等于他出现的次序从0开始JianDao,//剪刀值为1Bu//布值为2}

intwin(CaiQuanA,CaiQuanB)//此方法就是石头剪刀布的规则参数为A的出招,和B的出招{if(A==B)//A,B出招相同返回0return0;elseif((int)A-(int)B==1||(int)A-(int)B==2)//A胜返回1这个规律是我总结的石头剪刀布就那么几种情况很好总结return1;elsereturn-1;//没胜没平自然就是输了输了返回-1}//这个算法游戏规则大家都很清楚根据游戏规则直接转化成代码的就需要列举所有的对阵情况而我写的代码是从所有对阵情况的总结

下面在贴练练看的算法好像没写注释等有空我把他们一个一个给大家细细讲解给对这方面有兴趣的朋友一个学习的帮助

练练看连连看中基本上就一个算法就是他的消除算法如下

//线面这个方法是练练看的消除需要用到的

///

///返回一条从A1点到B1点之间这条线端上的点是否有可通行//////nt[,]map就是记录地图上所有信息的2为数组-1代表无图片其余值个对应一张图片///线段的一个端点///另一个///指的是这A1和B1是在横坐标相同还是纵坐标相同///是否可通行publicboolISxiao(int[,]map,PointA1,PointB1,boolXY){if(XY){if(A1.Y>B1.Y){for(inti=B1.Y;i<=A1.Y;i++){if(map[A1.X,i]!=-1&&newPoint(A1.X,i)!=point1&&newPoint(A1.X,i)!=point2){returnfalse;}}}else{for(inti=A1.Y;i<=B1.Y;i++){if(map[A1.X,i]!=-1&&newPoint(A1.X,i)!=point1&&newPoint(A1.X,i)!=point2){returnfalse;}}}

}else{if(A1.X>B1.X){for(inti=B1.X;i<=A1.X;i++){if(map[i,A1.Y]!=-1&&newPoint(i,A1.Y)!=point1&&newPoint(i,A1.Y)!=point2){returnfalse;}}}else{for(inti=A1.X;i<=B1.X;i++){if(map[i,A1.Y]!=-1&&newPoint(i,A1.Y)!=point1&&newPoint(i,A1.Y)!=point2){returnfalse;}}}}returntrue;}

}

这个方法我写的比较长如果你见到更好的算法请发我研究下

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

本来想多帖几个小游戏的算法呢可我的其他的小游戏的算法没整理好直接用的群居变量没用参数贴出来不好看

THE END
1.连连看游戏推荐大全连连看消消乐下载免费连连看游戏作为最经典的连线对决玩法,带给玩家最特色的自由色彩连线之举,玩家可以可以自由组合特色的方形和道具,结合灵动清晰的画面感,带给你指尖上特色的休闲玩法体验,有喜欢的话可以选择单机100手游网下载!http://m.danji100.com/k/lianliankan
2.连连看连连看安卓下载攻略连连看规则简单容易上手,游戏速度节奏快,画面清晰可爱,游戏主要有三种模式:传统模式、冒险模式和挑战模式: 一、传统模式:连连看经典的玩法,固定时间内消除完所有的小动物就算过关。 二、冒险模式:一个全新的分图闯关模式,分别有紫金森林、狂狼海滩、冰风溪谷和炼狱峡谷地图,每种地图中玩法各不相同。1、紫金森林,......http://g.mi.com/game/62244085
3.连连看挑战游戏合集连连看挑战游戏大全连连看挑战游戏是一个集合了多种连连看类型的小游戏的专题合集,旨在通过丰富的图案和多样的游戏模式,提升玩家的观察力、记忆力以及快速决策的能力。玩家需要在限定时间内,找到并消除所有匹配的图案对,同时尽可能地获得高分。这个合集包含了各种主题和难度级别,适合各个年龄段...https://www.golue.com/zt/v1120867/
4.宠物连连看2011,宠物连连看2011小游戏,4399小游戏www.4399.com点击选择相同的图片,如果图片之间可以通过不超过三条的线段连击,且不穿过其他图片,即可消除。 如何开始 点击“PLAY GAME”,然后点击“开始PLAY”即可 游戏目标 限定时间内消除所有图片 请记住本站网址4399.com,点击收藏4399,方便下次再玩。 《宠物连连看2011》小游戏由4399用户提供。http://www.4399.net/flash/42154.htm
5.宠物连连看2011小游戏,宠物连连看2011在线玩,2436小游戏宠物连连看2011小游戏,游戏介绍:http://www.2436.cn/game/63528_play.html
6.宠物连连看2011版小游戏大全,宠物连连看2011版相关游戏7k7k小游戏宠物连连看2011版搜索结果为您提供宠物连连看2011版的小游戏大全,宠物连连看2011版小游戏推荐,宠物连连看2011版最新游戏,最多人玩的宠物连连看2011版游戏,宠物连连看2011版游戏专题,宠物连连看2011版游戏全集,宠物连连看2011版相关游戏https://so.7k7k.com/game/%E5%AE%A0%E7%89%A9%E8%BF%9E%E8%BF%9E%E7%9C%8B2011%E7%89%88/
7.连连看小游戏大全44399小游戏连连看3366小游戏连连看连连看小游戏大全免费提供44399小游戏连连看,爱情连连看,3366小游戏连连看,宠物连连看3.1,宠物连连看2.5,水果连连看3.0,果蔬连连看43999,水果连连看小游戏,7k7k小游戏连连看专题,连连看小游戏等,连连看小游戏全集。https://www.45575.com/llk/
8.宠物连连看2011版益智小游戏介绍:宠物连连看2011版小游戏:点击选择相同的图片,如果图片之间有不超过两个拐角,即可消除。共12更多>> 操作说明: [鼠标左键]:点击选择相同的图片,如果图片之间有不超过两个拐角,即可消除; 如何开始: 点击[开始PLAY]开始游戏 标签:中文游戏 宠物连连看 http://wan.rising.cn/xyx/game-40177-5.aspx
9.宠物连连看2011逗游小游戏为你提供最新的宠物连连看2011小游戏,免费下载宠物连连看2011小游戏,并同时提供最新宠物连连看2011小游戏操作方法,助你顺利闯关。在线免费玩宠物连连看2011小游戏,马上来逗游小游戏吧,玩游戏其实可以很轻松!https://www.doyo.cn/flash/game/552841
10.盘点2010十大最受欢迎的小游戏近年来,尤其是到了年轮来到2011年以后,国内游戏市场一片萎靡不振。但是在游戏市场不景气的大环境下,小游戏网站却做的风生水起,一片欣欣向荣的景象。在2010年最受玩家欢迎的小游戏有哪些呢? 10.特种任务 就像每个女孩心中都有一个公主梦,每个男孩心中也都有一个将军梦,指挥千军万马,驰骋沙场,即使马革裹尸,也不枉...http://www.360doc.com/content/11/0302/14/5483652_97451092.shtml
11.方向连连看下载方向连连看单机小游戏下载游戏语言:中文 游戏大小:1.1M 更新时间:2011-06-02 09:11 发行时间: 游戏类型:经典 游戏标签:方向连连看休闲游戏益智游戏 方向连连看下载是一款休闲类的连连看小游戏,图标是一些方向,指向4面8方,而且容量超小,是上班一族休闲的好游戏! 但是我个人感觉 背景设计不怎么样,没有《超级连连看》设计的漂亮,所以喜欢这类...https://www.fxxz.com/yx/19031.html
12.宠物连连看特别版宠物连连看特别版小游戏类型:益智小游戏_益智小游戏大全|大小:303K|时间:2011-06-07 标签: 可爱宠物宠物连连看益智连连看 游戏等级: 5分游戏人气:199 游戏介绍: 欢迎您光临 43999游戏我们给您带来的是宠物连连看特别版小游戏,以下是我们对宠物连连看特别版的攻略介绍和游戏说明,祝您玩的开心愉快 ...http://www.43999yx.com/yizhi/9121.htm
13.连连看[FLASH版本]上传者:fei323时间:2011-08-23 Flash小游戏连连看 Flash小游戏开发成本低,开发方便已经有很多游戏开发者专业从事Flash小游戏开发,开发Flash小游戏技术门槛低,需要的是创意。这也是Flash小游戏能够获得良好用户体验的根本原因。许多有想法有创意的年轻人投身于Flash游戏的开发当中,创造出了趣味十足的flash小游戏。 https://www.iteye.com/resource/weixin_41790183-10398651
14.夺宝连连看夺宝连连看游戏在线玩游戏介绍: 夺宝连连看对于大多数玩家来说应该是一款很古老的游戏了,这款游戏对画面进行了一些优化,是的画面更加细腻,但愿你能喜欢。标签:闯关游戏连连看游戏休闲游戏 大小:675.2KB游戏目标: 在限定时间内,成功的消除掉所有的图标即可过关!游戏评论: 已有0条游戏评论不错我也来说两句... 休闲小游戏排行榜 1疯狂保姆...https://www.973.com/p71123
15.车标连连看软件下载车标连连看应用软件专题车标连连看游戏大全专题,为您提供车标连连看 4399、宠物连连看3.1、车标连连看单机版下载等内容。更多车标连连看游戏大全内容,请到华军软件园车标连连看游戏大全专题!http://www.onlinedown.net/zt/23144/
16.游戏设计毕业论文15篇(40页)以游戏设汁的视角来看,游戏玩家丰富的认知经验和感官体验的结合.才能创造令 人投入的心流体验。譬如,众所周知的棋牌类策略小游戏《扫雷》是玩家根据认知经验去完 成的游戏活动,游戏过程中所产生紧张或兴奋的心理情绪正是玩家的感官体验。对于游戏设 计师来说,满足玩家的沉浸体验还需要明确以下几点:游戏的目标是什么?https://max.book118.com/html/2021/0524/7163034111003124.shtm
1.连连看达人下载连连看达人最新版下载连连看达人app下载极速连连看 安卓版 休闲益智|5.73MB 果蔬连连看HD 安卓版 休闲益智|5.28MB 小鬼连连看 安卓版 休闲益智|11.94MB 手势连连看 TV版 TV版 休闲益智|5.87MB 女神连连看 安卓版 休闲益智|7.18MB 连连看单机小游戏 安卓版 休闲益智|3.07MB 动物连连看 苹果版 休闲益智|15.27MB 宠物连连看2017 苹果版 休闲益智...https://shouyou.3dmgame.com/zt/41536_game/
2.连连看小游戏大全有哪些推荐有意思的连连看手游排行榜2024这是一款画面非常炫酷的精彩连连看手游,游戏的背景和画风炫酷拉风,丰富绝伦精彩曼妙,令玩家在娱乐玩耍的过程中,拥有前所未有的畅快满足体验。此外,作为一款连连看小游戏,这款游戏中的画面音效都充满了萌趣感,视觉体验也非常炫酷,各种新颖华丽的神奇道具,也充满了新鲜感,挑战起来真的相当快乐。喜爱闯关的玩家朋友一定能在...https://www.benxiaotu.com/article-1617.html
3.免费连连看游戏推荐——探索最佳精品连连看游戏合集!连连看游戏是一种经典的消除类益智游戏,以其简单的玩法和轻松的游戏节奏,深受玩家喜爱。随着手游市场的不断发展,越来越多的连连看游戏涌现出来,而其中一些精品游戏更是提供了免费的游玩体验。哪些连连看游戏不仅好玩,还能免费下载体验呢?本文将为大家推荐几款免费的精品连连看游戏,让你在休闲时光中享受无限乐趣。 免费...http://m.lao-sun.com/texe/30430.html
4.耐玩的连连看游戏有哪些2024有趣的连连看游戏盘点除了普通的连线游戏之外,还有小程序跳一跳、消灭星星、俄罗斯方块等多种休闲玩法。 高速下载 优先九游APP下载 3、《英文连连看》 连连看游戏,类型比较丰富,英语连连看不仅可以从中获得欢乐,也能学习各种英语知识,很多孩子对于英语单词并不是特别了解,想要记住也觉得是一件非常困难的事情,英语连连看来帮忙。游戏中有很多...https://www.9game.cn/news/10631262.html
5.2024年不可错过的热门连连看游戏排行榜嘿,大家伙,今儿个我来跟你们唠唠,好玩的连连看游戏都有哪些哈。2024年啦,这些游戏越来越多,咱们人也爱玩。我这个老太婆闲下来也爱玩几局,挺有意思的。好嘛,咱就不废话了,直接给你们说几个好玩的吧。 趣味果蔬连连看这个游戏可好玩了,图案都是水果蔬菜,颜色鲜艳,画面清楚,还特别适合咱这些老年人玩。上手简单,...https://game.888pu.cn/post/43056.html
6.连连看小游戏大全经典连连看小游戏把两张一样的牌,用三跟以下的线连起来,这就是连连看。17yy【连连看】小游戏大全,收录大量经典好玩的连连看小游戏。在这里,简单,却不缺乏挑战,道具、连击、多样的地图,让你永远不会玩腻。而且连连看需要的不仅仅是眼力,更需要细心哦。17yy连连看小游戏大全,不断满足https://www.17yy.com/s/lianliankan/index.html
7.连连看小游戏3499连连看小游戏3499连连看小游戏大全最新小游戏 ·放到桌面 ·收藏3499小游戏 推荐小游戏 | 最新小游戏 | 最多人玩 果蔬连连看 2010-01-05 喜羊羊与灰太狼连连看 2011-05-19 宠物连连看经典版2 2014-06-09 天天星连萌电脑版 2014-07-07 姐姐的连盟部落 2014-08-29 熊大熊二连连看 ...https://www.3499.co/tag/144/
8.扫雷连连看c#连连看c#入门c#基础c#小游戏c#连连看 c#入门 c#基础 c#小游戏 5星· 超过95%的资源需积分: 1755 浏览量2009-10-15上传805KBRAR 扫雷是一个宽益智游戏,对于大多数电脑玩家和普通朋友来说,扫雷可能是电脑入门游戏之一。 编这个游戏主要是练习可视化开工具的一些基本操作,下面说一下这个游戏的思想和难点。如果大家在玩的时候发现错误,或者有什...https://download.csdn.net/download/wanggang421338916/1745294
9.安卓连连看单机版下载手机连连看小游戏大全经典的安卓手机连连看游戏想必大多数玩家们都接触过,界面清新简洁,操作简单,老少皆宜,适合茶余饭后玩的小游戏,而且这类游戏题材多种多样,让你玩不腻,难怪腾讯新出的天天爱消除,天天连萌会这么火爆了,此次本站为您提供最新最好玩的手机连连看游戏下载,你可以下载试玩一下,好玩的话可以推荐给朋友们哦。点击...https://m.qqtn.com/k/azllkyx
10.宠物连连看经典版水果连连看经典版游戏有bug 玩到有时候会卡死,只能重新下载游戏解决,有一次玩到最后剩三个方块,就卡死了,重启都解决不了,希望可以优化一下至少退出游戏后可以重新玩吧。 刘郭咪 , 29/03/2017 没有时间限制更好。 没有时间限制更好。 ritaren2011 , 28/11/2020 太费眼睛 不能暂停,老重新来不胜其烦 茶马水 ,...https://apps.apple.com/cn/app/connect-the-pets/id1115580863?l=fr&see-all=reviews
11.2024年十款必备连连看软件人气排行榜昆虫连连看游戏 1.01 官方 软件分类:单机游戏大小:1.76 MB时间:2011-11-08 软件介绍:昆虫连连看是一款非常好玩、界面漂亮的连连看小游戏。 立即查看 5.韩国厨房连连看 1.0 韩国厨房连连游戏是一款非常有趣的厨房连连游戏。在游戏中,玩家需要通过连线来完成各种厨房场景中的食物和调料的匹配。游戏画面精美,操作简单,适合...https://app.zol.com.cn/jiqiao/158589.html