怎么制作一个五子棋网页游戏手机游戏

五子棋的算法和思路是来源自园友二十四画生的一个帖子,地址如下,在此感谢。
/esshs/archive//129824.html
我只是在算法上稍加改进,并从c#代码移植到javascript和html上。
五子棋是中国的传统休闲益智小游戏,规则不是太复杂,我们可以通过写一个五子棋来锻炼编码的思路和风格,提高基本功能力。上次花很大功夫写的正则解析引擎也是这个目的,但关注度比较低,希望这个小五子棋游戏能得到稍微多一些的关注,这次也没有用高深的技术,熟悉html,javascript和jquery就可以了。
首先从高层进行设计,分成棋盘界面类,棋子管理类,AI类,五子棋规则类,界面帮助类等几个模块,模块间要有明确的分层关系,高层模块调用低层模块,模块之间的调用关系也要明确,降低耦合,模块对外暴露的接口在同一个抽象层次上,
StoneRule主要负责检查当前棋局的状态,是否出现了某方赢棋,黑子出现禁手,平局等状态,ChessboardState枚举表示棋局的各种状态。 由于正规五子棋的禁手规则判断比较复杂,我这里判断三三禁手,四四禁手和长连禁手规则比较简单,只要形成两个或者两个以上的活三,活四就算禁手,不考虑太深层次的规则,如看起来是活三,其实对方可以堵的情况。所以也许和正规的规则有些出入,但一般选手使用是不影响的。
StoneAI可以根据当前棋局和电脑的颜色来自动计算出电脑下一步该走哪儿,内部有一个Check方法来给棋盘上每一个没下子的空位进行评分,评分最高的就是电脑要走的下一步棋的位置。评分这个规则在二十四画生的博客里有介绍,大概意思就是假设这个空位放上电脑方的棋子后,电脑方连成的最大棋子数是多少,连成的棋子越多,评分越高,这属于进攻措施。然后再假如电脑不在这个空位放子的话,对方放子的话,对方连成的最大棋子数是多少,连成的棋子数越高,评分越高,这属于防守措施。 我在评分的时候加了改进,如果放子后连成3个,需要两边都有空位才给加分,否则两边已经堵上了,即使电脑走了这个子也不可能连成五个,而连成4个子的话,至少要有一边有空位,否则最终也连不成5个。
Chessboard表示一个棋盘,主要是UI表现层,有画棋盘,在某点上画棋子,移除某点上的棋子(撤销或悔棋),重置等操作,这些都是用jquery操作Dom完成的。
UIHelper是界面辅助类,比如向用户显示信息,捕捉用户的开始游戏按钮和棋盘的点击事件等。
StoneManager类是整体的驱动类,由它来操控协调其它的类一起工作,init()用来初始化棋盘,Start()开始一个新的回合,以及处理人下子和电脑自动下子。
从上面可以看出每个类都有自己明确的职责,而且调用关系也很明显。
开局:浏览器打开的时候执行StoneManager.Init()去初始化棋局和绘制棋盘, 用户点击开始游戏按钮后,进行开始状态,默认是人先手,电脑后手,先手永远是黑子,这是既定规则,开始后棋盘要Reset,把已有的棋子清空。
人落子:人点击棋盘后,UIHelper类会捕捉到,并执行StoneManager的PersonDownStone方法,人落完子后,检查棋局状态,是否赢棋或者出现禁手,平局等。然后是电脑落子,StoneManager会调用StoneAI类去询问下一步该在哪儿落子,然后去落子,落完子后也要重新检查棋盘状态。
赢棋:当检查棋盘出现某方赢棋后,StoneManager会调用UIHelper通知用户某方赢棋,并调用Chessboard.Reset重新开局。
以下是游戏的在线演示,欢迎大家试用,点击下面的“运行代码”按钮。有人说有360浏览器和TT浏览器打不开,我提供了一个本地压缩包下载:
&style type="text/css"&
padding: 0
&div id="canvas"&
&div id="buttons"&
&input type="button" value="帮助" id="btnTest" /&
&input type="button" value="开始游戏" id="btnStart" /&
Views(...) Comments()1:06:23【 转载互联网】 作者: &&|&责编:李强
&&& &为了解决用户可能碰到关于"JAVA小游戏五子棋中想加入一个倒计时器,每回合玩家有20秒下棋时间,求如何实现?"相关的问题,突袭网经过收集整理为用户提供相关的解决办法,请注意,解决办法仅供参考,不代表本网同意其意见,如有任何问题请与本网联系。"JAVA小游戏五子棋中想加入一个倒计时器,每回合玩家有20秒下棋时间,求如何实现?"相关的详细问题如下:例如,黑子回合,黑方有20秒下棋时间,黑方在规定时间下完,白方重新有20秒下棋时间,任何一方超时未操作判负,这个功能该怎么实现?用Timer吗供礌垛啡艹独讹扫番激?最好能详细一点。===========突袭网收集的解决方案如下===========
解决方案1:用线程&间隔1s&private&Thread&playerT//&玩家时间所对应的线程private&Thread&robotT//&机器人时间所对应的线程private&int&playerTime&=&1800;//&玩家的总时间&30*60,&30分钟//&初始化-玩家时间所对应的线程playerThread&=&new&Thread(new&Runnable()&{&&&&public&void&run()&{//&相执行start方法时该线程启动&&&&while&(true)&{&&&&try&{&&&&&&&nb供礌垛啡艹独讹扫番激&&&&playerThread.sleep(1000);//&线程睡一秒钟&&&&}&catch&(Exception&e)&{&&&&e.printStackTrace();&&&&}&&&&playerTime--;//&玩家时间减一秒钟&&&&canvas.repaint();//&绘制窗囗&&&&if&(playerTime&==&0)&{//&如果玩家的时间用完了,表示玩家输&&&&isGameBegin&=&//&游戏没有开始&&&&isGameOver&=&//&游戏结束&&&&canvas.repaint();//&绘制窗囗&&&&JOptionPane.showMessageDialog(null,&&机器人赢了!&);&&&&}&&&&}&&&&}}});解决方案2:谢谢!解决方案3:new Thread(){public void run(){int i = 20;while(true){i--;try{Thread.sleep(1000);}ca供礌垛啡艹独讹扫番激tch(Exception e)}if(黑/白子有操作){i=20;重置}if(i&0){//时间到i=20;//重置//惩罚}}}.start();解决方案4:timer中的taskTimer解决方案5:使用Timer类计时
================可能对您有帮助================
问:例如,黑子回合,黑方有20秒下棋时间,黑方在规定时间下完,白方重新有2...答:用线程 间隔1s private Thread playerT// 玩家时间所对应的线程private Thread robotT// 机器人时间所对应的线程private int playerTime = 1800;// 玩家的总时间 30*60, 30分钟// 初始化-玩家时间所对应的线程playerThread = new Th...===========================================问:例如,黑子回合,黑方有20秒下棋时间,黑方在规定时间下完,白方重新有2...答:在窗口上随便丢个Timer1,设置其Interval =1000;Enabled =False 再在合适的位置放个Label1用来显示时间 这句放最前面声明那里:Public xxx As Long, yyy As Boolean 把下面代码贴进去: Private Sub Timer1_Timer() Dim a As String xxx = xxx - 1 ...===========================================问:例如,黑子回合,黑方有20秒下棋时间,黑方在规定时间下完,白方重新有2...答:是打包的直接运行 是源码找工具编译运行。===========================================问:(1) 可以人机对战。 (2) 可以双人对战 (3) 可以设置单步超时(例如超时...答:import java.awt.*; import java.awt.event.*; class ChessPad extends Panel implements MouseListener,ActionListener { int x = -1, y = -1, chessColor = 1; Button button = new Button("重新开局"); TextField text_1 = new TextField("请...===========================================问:需要有正常的图形界面,不用太好,用于结课交作品, 谢谢各位了答:直接上程序吧: //wuziqi.java import java.applet.A import java.awt.B import java.awt.C import java.awt.CheckboxG import java.awt.C import java.awt.G import java.awt.L import java.awt.ev...===========================================问:可以选择黑白棋,可以决定先后走,废话的就免了,我急着用,先谢谢了,...答:留个邮箱吧。我给你发一份。我自己做的。比你说的要复杂些。===========================================问:的算法)主要运用控制台输入坐标来实现。后期学习了GUI(用户图形界面)...答:import java.util.Spublic class FiveChessGame {public static void display(char[][] arr) {// 图形显示函数System.out.print(" ");for (char i = '0'; i = 5) {return 1;}} else {count = 0;}}count = 0;if (a &= b) {int j = 0;for (...===========================================问:的算法)主要运用控制台输入坐标来实现。后期学习了GUI(用户图形界面)...答:百度搜“魔乐五子棋”,有视频教程===========================================问:我需要的是完整的程序代码,希望回答人能给一个可以很好运行的,至少2人...答:这是我在书上看到的。 package day17. import java.util.A public class GoBangGame { public static final char BLANK='*'; public static final char BLACK='@'; public static final char WHITE='O'; public static final int M...===========================================可用于会议、培训、讲座中PowerPoint幻灯片播放自动倒计时,支持手动/自动、全屏、拖放、快捷设定、时间不足闪烁提醒等。Janus倒计时软件采用半透明浮动小窗...===========================================
Private Sub Timer1_Timer()
SetTime = SetTime - 1
If SetTime = 0 Then
MsgBox "时间到"
text1里面输入倒计时时间(秒),command1开始倒计时===========================================写一个Timer1.start();就会每秒(你可以设成每分每小时..)都调用一下,你在写一个全局变量int i = 60;在Timer事件中写一个i--;就会每秒(你可以设成每分每小时..)减一个;倒计时就O...=========================================== 用time()函数.可以根据Python版本查查具体函数说明控制时间==========================================='一个标签,两个按钮,一个计时器。 '标签显示时间,按钮一控制秒表,按钮二清零。 Dim m As Integer, s As Integer, ms As Integer, flag As Boolean Private Sub Command1_Click() ...===========================================需要计时器控件,你拖进一个timer计时器控件设置下属性和方法,试试===========================================五子棋大师游戏礼包
五子棋大师
更新时间:
下载:107,540次
平台:Android
安卓系统五子棋大师游戏礼包
各大游戏运营网站游戏礼包发放的消息是不是都让玩家们怦然心动呢?因为游戏礼包能赠送给玩家有用的道具或者经验值,或者金币等大礼,所以很多玩家可谓趋之若鹜呀,尤其是游戏新手,刚上手游戏时总希望有礼包的辅助。不过,最终要打赢游戏还是要靠实力呀。推荐一款好游戏。
请选择品牌
请选择机型系统
小贴士:建议您想先设置机型,设置后您就直接浏览全部适合您手机的游戏,下载使用更放心。
九游()是手机游戏下载第一门户,提供最新安卓安卓系统下载、礼包、激活码,最好玩的五子棋大师攻略,欢迎访问与玩家交流。
一款精致的五子棋游戏。 1. 支持人机对弈,人人对弈,蓝牙、Wi-Fi联机对弈。 2. 人机对弈可选择从新手到大师的多个难度级别,高级别的电脑棋力极强。 3. 提供 13*13、15*15、17*17、19*19 四种大小的棋盘。 4. 棋盘可以随意放大、缩小,并支持滑屏操作。 5. 对局时能够自动存盘,游戏退出后不会丢失对局进度。 6. 蓝牙联机对弈如果出现连接失败的情况,请尝试在蓝牙设置中先进行配对或者换个人创建游戏。 7. Wi-Fi联机对弈需要双方接入同一个无线局域网。 8. 当您通过了各个级别的考验,必将成为五子棋的顶尖高手!
点击查看更多
您可能还想关注:
看了五子棋大师游戏礼包的用户还看了:
关于安卓系统
Android一词的本义指“机器人”,同时也是Google于日宣布的基于Linux平台的开源手机操作系统的名称,主要使用于便携设备,如智能手机和平板电脑。该平台由操作系统、中间件、用户界面和应用软件组成。 专区提供最新手机游戏免费下载。
Android系统最初由安迪·鲁宾(Andy Rubin)开发制作,最初主要支持手机,后来更逐渐拓展到平板电脑及其他领域上。安卓系统手机用户可通过九游下载。您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
五子棋手机网络对战游戏的设计与实现(有源程序代码).doc29页
本文档一共被下载:
次 ,您可免费全文在线阅读后下载本文档
文档加载中...广告还剩秒
需要金币:100 &&
你可能关注的文档:
··········
··········
源程序代码等全套设计联系QQ
各专业都有
分类号:TP311.1 U D C:D
成都信息工程学院
五子棋手机网络对战游戏的设计与实现
论文作者姓名: 肖松
申请学位专业: 网络工程
申请学位类别: 工学学士
指导教师姓名(职称): 李晓岗(高级工程师)
论文提交日期: 2007 年 6 月 8日
五子棋手机网络对战游戏的设计与实现
在现代社会中,手机及其它无线设备越来越多的走进普通老百姓的工作和生活。
随着3G技术的普及与应用,基于Java开发的软件在手机上的使用非常的广泛,手机增值服务的内容也是越来越多,对丰富人们的生活内容、提供快捷的资讯起着不可忽视的作用。
本文基于J2ME技术,以计算机网络游戏的运行流程为基础,分模块开发一款网络五子棋游戏软件。
本文对以下几点内容做了重点研究和探讨:
系统整体结构。
根据设计目标,结合普通网络游戏的运行流程,给出了系统总体设计方案,并探讨了系统设计时需要用到的关键技术。
手机MIDP客户端的实现。
MIDP客户端是游戏的唯一客户端,主要功能包括连接服务器进行身份验证、进行游戏并不断的与服务器交换数据。
后台系统的设计与实现。
后台用来处理与数据库的互联来验证用户身份、处理由客户端发送过来的数据。
由于受到客观条件的限制,本系统的测试是在三星手机模拟器上完成的,但它仍不失具一定的实用价值。
关键词:J2ME;手机游戏;servlet
The design and implementation of gobang battle cell phone network games
In modern society, more and more cell phones and other wireless devices come into the work and life of ordinary people
With the popularization and application of the 3rd Generation of Digital communication
technology,the developm
正在加载中,请稍后...《五子棋》游戏设计方案
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
《五子棋》游戏设计方案
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口

我要回帖

更多关于 五子棋网页游戏 的文章

 

随机推荐