设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 7835|回复: 14
打印 上一主题 下一主题

[原创发布] 【初级教学3】井字棋的做法(降低难度)

 关闭 [复制链接]

Lv3.寻梦者

梦石
0
星屑
1624
在线时间
1609 小时
注册时间
2007-8-28
帖子
3253

第3届短篇游戏大赛主流游戏组冠军第1届Title华丽大赛新人奖

跳转到指定楼层
1
发表于 2008-7-1 22:04:10 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
教学讨论QQ群 53535461  作业检查:亿万星辰 (群主)

作业的问题在群里问亿万就好了{/tp}
井字棋

上次似乎难了一些,明显导致作业量减少{/pz}
这次稍微简单一下。别把人都吓跑了,呵呵

这次就开始说棋类了。
一般来说,棋类都要建立一个2维数组来记录棋盘上的情况
例如拿围棋19×19为例子:
先建立一个棋盘
$qipan=[]
在左上角下一个子,就记录成$qipan[0][0]=1
玩家下棋就可以记录为1,默认为0,电脑下的为2
然后建立一个棋型的数组,对比棋型再来判断。

我们就先从规则最简单,棋盘最小的井子棋说起。
我记得有那个高人用3进制算法把这个巧妙的解决了。不过
这个游戏由于不大,想算法反而浪费时间。

规则
在棋盘里先后落子,横竖斜,有一方先连成线的赢。

由于还要考虑不会用脚本的。用事件来做讲解的例子。(其实还是脚本简单)
流程
首先要记录棋盘。
9个格,正好对应1到9的变量。初始化所有变量为0
记录敌我的下棋。我方是2,敌方是1
然后根据下棋的情况,把变量带入进去。(界面表示省略)
根据现在变量判断是否有人胜利。
没有的话继续下棋。

检查棋型的一般方法:
先从第一行开始,看第一个格是什么。也就是看是1,0,2的那个
记录当前变量=第一格的变量的值。
第二格是否与当前变量相同。不相同,放弃。没有胜负。相同的时候
继续检查第3格,看是否相同。不相同放弃。相同就是胜利。
按照这样检查所有横行,竖行和斜行就可以了。

(用for的话,几步就搞定了。)

我则用下面的办法:
1 2 3
4 5 6
7 8 9
这九个格对应变量如下

我方下子的变量值表
8 3 4
1 5 9
6 7 2

敌方下子的变量值表
80 30 40
10 50 90
60 70 20

例子:
原来所有的变量是0
我在左上角就记录为8,敌人则记录80

判断方法:
能整除10的就是敌方下的。
横竖斜相加,=15就是我胜利=150就是电脑胜利

这样的话胜利判断异常简单,至于为什么想到这个,问黄蓉去吧。(洛书)

再来简单的说一下敌人的ai(用条件分歧判断)
如果敌人先手
第一步下到5号格,如果下一步玩家没有走1379号格的话,弄死玩家吧。
如果后手,玩家没有下在5号格(不可能吧)那就下5格。
其他的情况基本上就是平局。

当然让电脑随机下在变量为0的格子里面也是行的。不过千万不要发布
会被骂的。{/gg}

最后在说说界面:
界面可以参考美兽的五子棋。
或者用事件也行,根据变量来显示不同的行走图。就像《踩雷子》小游戏那样
。总之利用2维数组来记录棋盘,通过对比棋型,和判断胜利是基本的方法。


作业:
做个井字棋。(事件脚本随便)
当然,你用文章来显示棋盘也是可以的。
两个礼拜后截止
“我推荐你一个游戏吧,avg的,剧情特感人”
“我擦,都是文字图片的游戏有啥好玩的,连个战斗都没有!”
“我推荐你一个游戏吧,rpg的,战斗也新颖”
“我擦,怎么米有作i弊器?“
”你不是喜欢战斗么?”
“不,我是剧情党!!”

继续阅读请点击
http://rpg.blue/blog-53316-10027.html

Lv3.寻梦者

梦石
0
星屑
1624
在线时间
1609 小时
注册时间
2007-8-28
帖子
3253

第3届短篇游戏大赛主流游戏组冠军第1届Title华丽大赛新人奖

2
 楼主| 发表于 2008-7-3 00:15:25 | 显示全部楼层
以下引用yangff于2008-7-2 10:45:04的发言:

Table.new(X,Y,Z)

我一猜就有人要用。
“我推荐你一个游戏吧,avg的,剧情特感人”
“我擦,都是文字图片的游戏有啥好玩的,连个战斗都没有!”
“我推荐你一个游戏吧,rpg的,战斗也新颖”
“我擦,怎么米有作i弊器?“
”你不是喜欢战斗么?”
“不,我是剧情党!!”

继续阅读请点击
http://rpg.blue/blog-53316-10027.html
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1624
在线时间
1609 小时
注册时间
2007-8-28
帖子
3253

第3届短篇游戏大赛主流游戏组冠军第1届Title华丽大赛新人奖

3
 楼主| 发表于 2008-7-9 22:35:17 | 显示全部楼层
以下引用身之察察于2008-7-7 22:15:38的发言:

报告老师,做的过程中发现似乎有个问题:

就是按照这个方法


我则用下面的办法:
1 2 3
4 5 6
7 8 9
这九个格对应变量如下

我方下子的变量值表
8 3 4
1 5 9
6 7 2

敌方下子的变量值表
80 30 40
10 50 90
60 70 20

例子:
原来所有的变量是0
我在左上角就记录为8,敌人则记录80

判断方法:
能整除10的就是敌方下的。
横竖斜相加,=15就是我胜利=150就是电脑胜利


如果,敌方下在第4格,我方下在第五格,第六格没有子

0  0  0
10 5  0
0  0  0
这样,第二排相加等于15,就会判断我方胜利了。
所以判断第二排得不得15时好像还应加个别的条件,比如第六格不得0什么的


[本贴由作者于 2008-7-7 22:20:00 最后编辑]


看来只有你是实践了。好欣慰啊。
这个做做就行。介绍个方法而已{/qiang}
“我推荐你一个游戏吧,avg的,剧情特感人”
“我擦,都是文字图片的游戏有啥好玩的,连个战斗都没有!”
“我推荐你一个游戏吧,rpg的,战斗也新颖”
“我擦,怎么米有作i弊器?“
”你不是喜欢战斗么?”
“不,我是剧情党!!”

继续阅读请点击
http://rpg.blue/blog-53316-10027.html
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1624
在线时间
1609 小时
注册时间
2007-8-28
帖子
3253

第3届短篇游戏大赛主流游戏组冠军第1届Title华丽大赛新人奖

4
 楼主| 发表于 2008-7-10 07:05:26 | 显示全部楼层
以下引用hitlerson于2008-7-6 23:24:59的发言:

期待的游戏王呢?

这个井字游戏。。。貌似第一步一定放中间,对方占角,我方占对边,好象没什么变化

游戏王你不是做出来了么{/gg}
“我推荐你一个游戏吧,avg的,剧情特感人”
“我擦,都是文字图片的游戏有啥好玩的,连个战斗都没有!”
“我推荐你一个游戏吧,rpg的,战斗也新颖”
“我擦,怎么米有作i弊器?“
”你不是喜欢战斗么?”
“不,我是剧情党!!”

继续阅读请点击
http://rpg.blue/blog-53316-10027.html
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-21 00:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表