哪位大神会用Java做儿童五子棋基础入门 入门的就行 有偿

&nbsp>&nbsp
&nbsp>&nbsp
&nbsp>&nbsp
初学java--五子棋
摘要:&&其实五子棋呢主要包括三部分:五子棋棋盘和下棋子等关于Swing界面的应用;然后就是计算输赢的算法;最后就是人机对战的人工智能。刚刚开始做的时候是老老实实的画的棋盘,通过后来的学习知道了其实棋盘是可以找合适的棋盘图片粘贴的,目前还没找到想要的。。。。。。画棋盘就是一个循环画线的过程://画格子的方法privatevoiddrawchessbosrd(java.awt.Graphicsg){//设置线条颜色g.setColor(java.awt.Color
&& 其实五子棋呢主要包括三部分:五子棋棋盘和下棋子等关于Swing界面的应用;然后就是计算输赢的算法;最后就是人机对战的人工智能。刚刚开始做的时候是老老实实的画的棋盘,通过后来的学习知道了其实棋盘是可以找合适的棋盘图片粘贴的,目前还没找到想要的。。。。。。画棋盘就是一个循环画线的过程: //画格子的方法private void drawchessbosrd(java.awt.Graphics g){//设置线条颜色g.setColor(java.awt.Color.BLACK);//循环画横线for(int i=0;i&Config.H_LINE;i++){g.drawLine(Config.X, Config.Y+i*Config.SIZE, Config.X+(Config.S_LINE-1)*Config.SIZE, Config.Y+i*Config.SIZE);}//循环画竖线for(int i=0;i&Config.S_LINE;i++){g.drawLine(Config.X+i*Config.SIZE, Config.Y, Config.X+i*Config.SIZE, Config.Y+(Config.S_LINE-1)*Config.SIZE);}}
&现在呢,棋盘有了,我们就需要在鼠标点击的格子交叉处下棋子,刚开始的棋子也是在窗体上得到一个画板然后画一个实心圆......后来学会了在那交叉点上画一个棋子的图片,图片怎么看上去也比一个平面圆有立体感啊!画图片的之前当然的计算出交叉点的坐标,这样才能在离点击的最近的地方画图片: //点击鼠标得到坐标 int x1=e.getX(); int y1=e.getY();//计算离鼠标点击地点最近的一个交叉点 if((x1-Config.X)%Config.SIZE&Config.SIZE/2){ j=(x1-Config.X)/Config.SIZE; }else if((x1-Config.X)%Config.SIZE&Config.SIZE/2){ j=(x1-Config.X)/Config.SIZE+1; }else{ j=(x1-Config.X-Config.SIZE/2)/Config.SIZE; } if((y1-Config.Y)%Config.SIZE&Config.SIZE/2){ i=(y1-Config.Y)/Config.SIZE; }else if((y1-Config.Y)%Config.SIZE&Config.SIZE/2){ i=(y1-Config.Y)/Config.SIZE+1; }else{ i=(y1-Config.Y-Config.SIZE/2)/Config.SIZE; } //开始下棋子,只能在没有下棋子的地方下 if(data[i][j]==0){ if(count==1){//在交叉点下黑子 //在交叉点画一个圆 URL url=this.getClass().getResource(&b.png&);//根据url创建图片对象ImageIcon imageb=new ImageIcon(url);g.drawImage(imageb.getImage(),(Config.X + j * Config.SIZE) - Config.CHESS/ 2, (Config.Y + i * Config.SIZE)- Config.CHESS / 2, Config.CHESS, Config.CHESS,back); count++; } }else{//在交叉点下白子 //在交叉点画一个圆 URL url=this.getClass().getResource(&w.png&);//根据url创建图片对象ImageIcon imagew=new ImageIcon(url);g.drawImage(imagew.getImage(),(Config.X + j * Config.SIZE) - Config.CHESS/ 2, (Config.Y + i * Config.SIZE)- Config.CHESS / 2, Config.CHESS, Config.CHESS,back); count--;} } }
&现在呢,棋子画上去了,我们就要判断一下输赢了。判断输赢的条件就是五子连珠,一颗棋子周围大家都知道有八个方向,所以呢就要向八个方向判断一下是否有相同的棋子,如果有就继续判断,一直到某个方向上有五颗相同的棋子,让程序输出一下输赢了就ok咯。判断输赢的方法大致都是一样的: public boolean horizontalWin(int r,int c) {//定义一个计数器,默认等于,当前下的棋子int count = 1;boolean state =//循环遍历数组,此处是遍历当前行的每一个单元格,现在是往右边判断for(int j=c+1;j&chesses[r].j++){//判断当前数组中的元素是否想等if(chesses[r][j] == chesses[r][c])//相等计数器加1count++;//不相等,则退出循环}//循环遍历数组,此处是遍历当前行的每一个单元格,现在是往左边判断for(int j=c-1;j&0;j--){//判断当前数组中的元素是否想等if(chesses[r][j] == chesses[r][c])//相等计数器加1count++;//不相等,则退出循环}//如果统计的数据大于4,就表示已经五颗相同颜色的棋子连在一起了,表示已经赢了if(count & 4)//状态修改为true.state =//}//返回状态}
&不同的是每个方向的循环方式不一样而已,当有五颗棋子连珠的时候,就可以显示输赢了,显示之后当然要清空棋盘: if(win.erectWin(i,j)||win.horizontalWin(i, j)||win.leftObliqueWin(i, j)||win.rightObliqueWin(i, j)){ javax.swing.JOptionPane.showMessageDialog(null,&黑子赢了(*^__^*) & );for(int i=0;i&data.i++){for(int j=0;j&data[i].j++){data[i][j]=0;}}paint(g); }
&然而这时的五子棋还有很多不完善,比如:重绘等等,所以我们在下棋子的时候一定要用一个东西来保存当前棋子的信息,这个东西可以是二维数组,也可以是自定义队列,有了保存棋子的东西,那么重绘也就很简单了。如果我们想保存某一局棋局的时候,就需要用到文件保存了,吧当前棋局的所有信息存入一个文件中,读取的按照信息进行重绘: public void savefile(int[][] data) {//保存的文件名String filename=&src//cn//tan//lesson6//chess&;try {//新建输出流对象FileWriter fw = new FileWriter(filename);//循环输出数据for(int i=0;i&data.i++){for(int j=0;j&data[i].j++){fw.write(data[i][j]+&/t&);}fw.write(&/r/n&);}//强制写入并关闭流对象fw.flush();fw.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
&打开文件时的方法: open.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {String command=e.getActionCommand();if(command.equals(&打开文件&)){String s = &&;//读取文件文件名String fielname=&src//cn//tan//lesson6//chess&;try {//新建输入流对象FileReader fr=new FileReader(fielname);BufferedReader br=new BufferedReader(fr);int [][] set=new int[12][12];for(int i=0;i&set.i++){ s=br.readLine(); String value[]=s.split(&/t&);// paint(g); for(int j=0;j&set.j++){//得到第i行j列的元素值 int m=Integer.parseInt(value[j]); data[i][j]=m; if(m==1){//设置颜色g.setColor(java.awt.Color.WHITE);//画棋子URL url=this.getClass().getResource(&w.png&);//根据url创建图片对象ImageIcon imagew=new ImageIcon(url);g.drawImage(imagew.getImage(),(Config.X + j * Config.SIZE) - Config.CHESS/ 2, (Config.Y + i * Config.SIZE)- Config.CHESS / 2, Config.CHESS, Config.CHESS,back);} if(m==2){//设置颜色//g.setColor(java.awt.Color.BLACK);//画棋子URL url=this.getClass().getResource(&b.png&);//根据url创建图片对象ImageIcon imageb=new ImageIcon(url);g.drawImage(imageb.getImage(),(Config.X + j * Config.SIZE) - Config.CHESS/ 2, (Config.Y + i * Config.SIZE)- Config.CHESS / 2, Config.CHESS, Config.CHESS,back);} } }fr.close();br.close();}catch (FileNotFoundException e1) {e1.printStackTrace();} catch (IOException e1) {e1.printStackTrace();}}}});
&当然还有其他的比如重新开始、悔棋等功能就不再一一列举代码咯......至于人机对战仍在思索ing
以上是的内容,更多
的内容,请您使用右上方搜索功能获取相关信息。
若你要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内给你回复。
云服务器 ECS
可弹性伸缩、安全稳定、简单易用
&40.8元/月起
预测未发生的攻击
&24元/月起
为您提供0门槛上云实践机会
你可能还喜欢
你可能感兴趣
阿里云教程中心为您免费提供
初学java--五子棋相关信息,包括
的信息,所有初学java--五子棋相关内容均不代表阿里云的意见!投稿删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内答复
售前咨询热线
支持与服务
资源和社区
关注阿里云
Internationaljava五子棋思路求教_百度知道
java五子棋思路求教
刚学了1个星期的java 老师留了一个project 做一个五子棋游戏 求大神指导一些思路 不要求代码 最好能详细一些
我有更好的答案
五子棋游戏, 个人觉的你老师让你们做这个,主要是要测试一下你们 对java基础的学习效果,可能还有一些面向对象的理解。棋子,棋盘应该是2个对象,可以写成2个class。黑棋,白棋都是棋子, 所以他们应该是棋子的子类。棋盘应该能表示坐标,已经落下的棋子,以及空的棋位,判断胜负棋子应该能表示棋子所在坐标,颜色。。。。。所涉及到的知识,主要在java绘图。 &
java中棋盘的实现是要用代码画图么?
棋盘你可以放一个带格子的图片,下的时候要在上面绘制棋子
坐标要怎么跟图片对应起来啊。
比如 {{0,0,0,0,0,1},{0,0,2,0,0,1},{2,0,2,0,0,1},{0,0,0,0,0,1},{0,0,0,0,0,1},{0,0,0,0,0,1}}代表一个6*6的棋盘。 如果一个棋子的直径是10像素, 那你的棋盘可以是长宽为110( 10 * 6 + 10 * 5) 的正方形, 然后数组的[0][0]代表棋盘的 上角的位置,以此类推。 1,2代表棋子的颜色。 0表示这个位置没有棋子。
绘图的时候,用当前棋子在数组中的index就能代表位置。比如 第三行第一列,他的坐标就是2,0.
绘图的时候,x坐标是0, y坐标 40.(棋子的中心位置)
采纳率:41%
先画棋盘。用制表符画要输输入一组坐标,可以定位到你话的棋盘的某一个位置,把那个位置的制表符换成黑子活白子(也在制表符里)判断成子情况
我定义了两个数组来确定坐标,可是棋盘上的线要怎么对应我定义的坐标上啊?
数组的数组会不会呢?String[][],然后就有所有的坐标位置了
用一个二维数组就能表示一个棋盘了,里面制表符来代表棋盘,不追求美观的话全用“┿”表示就行。然后用一个“●”符号表示黑子,用一个“○”符号表示黑子。每下一个字有相应的符号代替“┿”。 每下一颗字都用循环判断是否已经连续五个位置都已经有相同的棋子。要判断水平、垂直、左斜和右斜四个方向。如果还没有胜方就每个回合都用循环把棋盘打印出来。
数组如何和棋盘联系起来呀
你们老师比我们老师还坑。。。
其他1条回答
为您推荐:
其他类似问题
您可能关注的内容
五子棋的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。博客分类:
五子棋程序实现了判赢,禁手,复盘,低级AI(判断还存在许多问题,欢迎指正),继续游戏,夜间模式,悔棋等基本功能
代码可研究不可复制粘贴。
禁手的定义:是为了限制黑方的先手优势而设定的一种比赛规则
禁手的分类:三三禁手(黑棋一子落下同时形成两个或两个以上的活三,此子必须为两个活三共同的构成子)、四四禁手(黑棋一子落下同时形成两个或两个以上的冲四或活四)、长连禁手(黑棋一子落下形成一个或一个以上的长连)。
构成禁手的基本子力要素:活三(本方再走一着可以形成活四的三)、活四(有两个点可以成五的四)、冲四(只有一个点可以成五的四)、长连(在棋盘上的阳线和阴线任意一条线上,形成的5个以上同色棋子不间隔的相连)
关于禁手的规定:黑方五连与禁手同时形成,禁手失效,黑方胜
具体规则参见附件
程序说明:
0表示空位,1表示黑子,-1表示白子,chesses[15][15]保存的棋盘的当前棋局
本程序的长连禁手是和判赢一起判断的,判赢算法中会返回当前下子的位置四周有几颗同颜色子相连,如果是黑子并且长度大于5则为长连禁手。
代码举例:
* 计算横向是否 5颗相同颜色的子相连
* @param r 当前下子的横坐标
* @param c 当前下子的纵坐标
public static int checkRow(int r, int c) {
int count = 1;
for (int j = c + 1; j & COLS; j++) {
if (chesses[r][c] == chesses[r][j]) {
for (int j = c - 1; j &= 0; j--) {
if (chesses[r][c] == chesses[r][j]) {
public static boolean longlink(int r, int c) {
if (chesses[r][c] == 1) {
return (SuanFa.checkRow(r, c) & 5 || SuanFa.checkxiezuo(r, c) & 5
|| SuanFa.checkCol(r, c) & 5 || SuanFa.checkxieyou(r, c) & 5);
三三禁手和四四禁手类似,但是四四禁手有一些特殊情况。这里一44禁手为例进行说明
首先,判断禁手,并不需要扫描整个棋盘,只需要扫描当前落子的周围关键位置,比如放了棋子在chesses[r][c]的位置,横向只需要扫描chesses[r-4][c-4]到[r+4][c+4]的位置。选择好范围之后,从[r-4][c-4]开始,每次扫描连续的5个位置看是否构成活四或者重四(三三禁手只有活三),由于采用1,-1来计数,可以直接这样判断:
if (chesses[r][j] + chesses[r][j + 1] + chesses[r][j + 2]+ chesses[r][j + 3] +chesses[r][j + 4] == 4)
如果这5个连续位置相加为4,必然是4个黑子和一个空位。(用1,2标记棋盘黑白子处理相对来说麻烦一点,但原理是一样的,多加几个判断即可。)
依次从各个方向找完之后,我们可以用count来记录找到了几个满足条件的活四或者冲四或者活三。
如果找到两个,已经构成禁手,立即结束查找。
但是,如果你理解了以上过程,你就会发现,现在的情况只能判断特定的一些禁手情况。这里我用图片进行说明:
图片1中这类型禁手已经可以进行判断了,(4,5)为最后一颗黑色落子,他会从(4,5)位置为焦点进行扫描,横向竖向都已经扫到了活三。但是2中的这种情况,以(7,10)进行扫描的话无法扫描出(6,X)横向的活三。
所以在扫描过程中,还需要对(7,10)周围的(6,10)进行扫描,如果以(6,10)为焦点也扫描到了活三,这个时候也是三三禁手。
这里用一个层次来标记一下,方便递归来查找。int cenci=1;如果是SetChesses设置的棋子,那么他的cenci=1;如果是SetChesses设置的棋子为焦点扫描到的活三,活四,冲四,那么该方向其余元素(6,10),(8,10)的层次cenci=0;这样,就不会一直扫描下去。
在这里又出现一个问题,即便用cenci来记录了要找周围元素的活四等等,以(6,10)为例,(6,10)会找到横着的活三,也会找到竖着的活三,这样,竖着的就算重复了,这是非常不合理的,所以得用一个变量标记一下方向,对于层次为0的我们只要找其余三个方向。
活四中还有几种特例:比如:
此处(5,6)构成了四四禁手(三三禁手没有这样的特例),由于这种类型的禁手很少,所以在程序中单独列举出来进行判断。
活四判断代码参考如下:
public static int Four(int r, int c, int cenci, char direction) {
if (chesses[r][c] == 1) {
int i, j, count4 = 0;
if (cenci == 1) {
// 判断横向四
for (j = 0; j & 11; j++) {
if (chesses[r][j] + chesses[r][j + 1] + chesses[r][j + 2]
+ chesses[r][j + 3] + chesses[r][j + 4] == 4) {
for (int k = 0; k & 5; k++) {
if (chesses[r][j + k] == 1) {
count4 += Four(r, j + k, 0, 'a');
if (count4 & 1) {
// 判断纵向四
for (i = 0; i & 11; i++) {
if (chesses[i][c] + chesses[i + 1][c] + chesses[i + 2][c]
+ chesses[i + 3][c] + chesses[i + 4][c] == 4) {
for (int k = 0; k & 5; k++) {
if (chesses[i + k][c] == 1) {
count4 += Four(i + k, c, 0, 'b');
if (count4 & 1) {
// 判断“\”向四
if (c & r) {
for (i = 0, j = c - i & (11 - c + r); i++, j++) {
if (chesses[i][j] + chesses[i + 1][j + 1]
+ chesses[i + 2][j + 2] + chesses[i + 3][j + 3]
+ chesses[i + 4][j + 4] == 4) {
for (int k = 0; k & 5; k++) {
if (chesses[i + k][j + k] == 1) {
count4 += Four(i + k, j + k, 0, 'c');
if (count4 & 1) {
for (i = r - c, j = 0; i & 11; i++, j++) { // 判断“\”向“活三”
if (chesses[i][j] + chesses[i + 1][j + 1]
+ chesses[i + 2][j + 2] + chesses[i + 3][j + 3]
+ chesses[i + 4][j + 4] == 4) {
for (int k = 0; k & 5; k++) {
if (chesses[i + k][j + k] == 1) {
count4 += Four(i + k, j + k, 0, 'c');
if (count4 & 1) {
if (r + c & 15) {
for (i = r + c, j = 0; i &= 4; i--, j++) { // 判断“/”向“活三”
if (chesses[i][j] + chesses[i - 1][j + 1]
+ chesses[i - 2][j + 2] + chesses[i - 3][j + 3]
+ chesses[i - 4][j + 4] == 4) {
for (int k = 0; k & 5; k++) {
if (chesses[i - k][j + k] == 1) {
count4 += Four(i - k, j + k, 0, 'd');
if (count4 & 1) {
for (i = 14, j = r + c - 14; j & 11; i--, j++) { // 判断“/”向“活三”
if (chesses[i][j] + chesses[i - 1][j + 1]
+ chesses[i - 2][j + 2] + chesses[i - 3][j + 3]
+ chesses[i - 4][j + 4] == 4) {
for (int k = 0; k & 5; k++) {
if (chesses[i - k][j + k] == 1) {
count4 += Four(i - k, j + k, 0, 'd');
if (count4 & 1) {
if (count4 & 1) {
if (direction != 'a') {
// 判断横向四
for (j = 0; j & 11; j++) {
if (chesses[r][j] + chesses[r][j + 1]
+ chesses[r][j + 2] + chesses[r][j + 3]
+ chesses[r][j + 4] == 4) {
if (direction != 'b') {
// 判断纵向四
for (i = 0; i & 11; i++) {
if (chesses[i][c] + chesses[i + 1][c]
+ chesses[i + 2][c] + chesses[i + 3][c]
+ chesses[i + 4][c] == 4) {
if (direction != 'c') {
// 判断“\”向四
if (c & r) {
for (i = 0, j = c - i & (11 - c + r); i++, j++) {
if (chesses[i][j] + chesses[i + 1][j + 1]
+ chesses[i + 2][j + 2]
+ chesses[i + 3][j + 3]
+ chesses[i + 4][j + 4] == 4) {
for (i = r - c, j = 0; i & 11; i++, j++) { // 判断“\”向“活三”
if (chesses[i][j] + chesses[i + 1][j + 1]
+ chesses[i + 2][j + 2]
+ chesses[i + 3][j + 3]
+ chesses[i + 4][j + 4] == 4) {
if (direction != 'd') {
if (r + c & 15) {
for (i = r + c, j = 0; i &= 4; i--, j++) { // 判断“/”向“活三”
if (chesses[i][j] + chesses[i - 1][j + 1]
+ chesses[i - 2][j + 2]
+ chesses[i - 3][j + 3]
+ chesses[i - 4][j + 4] == 4) {
for (i = 14, j = r + c - 14; j & 11; i--, j++) { // 判断“/”向“活三”
if (chesses[i][j] + chesses[i - 1][j + 1]
+ chesses[i - 2][j + 2]
+ chesses[i - 3][j + 3]
+ chesses[i - 4][j + 4] == 4) {
// 横向特殊四四
if (c & 2 && c & 12 && chesses[r][c - 3] == 1
&& chesses[r][c - 2] == 0 && chesses[r][c - 1] == 1
&& chesses[r][c + 3] == 1 && chesses[r][c + 2] == 0
&& chesses[r][c + 1] == 1) {
} else if (c & 2 && c & 11 && chesses[r][c - 3] == 1
&& chesses[r][c - 2] == 1 && chesses[r][c - 1] == 0
&& chesses[r][c + 4] == 1 && chesses[r][c + 3] == 1
&& chesses[r][c + 2] == 0 && chesses[r][c + 1] == 1) {
} else if (c & 3 && c & 11 && chesses[r][c - 4] == 1
&& chesses[r][c - 3] == 1 && chesses[r][c - 2] == 1
&& chesses[r][c - 1] == 0 && chesses[r][c + 4] == 1
&& chesses[r][c + 3] == 1 && chesses[r][c + 2] == 1
&& chesses[r][c + 1] == 0) {
} else if (c & 3 && c & 11 && chesses[r][c - 4] == 1
&& chesses[r][c - 3] == 1 && chesses[r][c - 2] == 0
&& chesses[r][c - 1] == 1 && chesses[r][c + 4] == 1
&& chesses[r][c + 3] == 1 && chesses[r][c + 2] == 0
&& chesses[r][c + 1] == 1) {
// 纵向特殊四四
if (r & 2 && r & 12 && chesses[r - 3][c] == 1
&& chesses[r - 2][c] == 0 && chesses[r - 1][c] == 1
&& chesses[r + 3][c] == 1 && chesses[r + 2][c] == 0
&& chesses[r + 1][c] == 1) {
} else if (r & 2 && r & 11 && chesses[r - 3][c] == 1
&& chesses[r - 2][c] == 1 && chesses[r - 1][c] == 0
&& chesses[r + 4][c] == 1 && chesses[r + 3][c] == 1
&& chesses[r + 2][c] == 0 && chesses[r + 1][c] == 1) {
} else if (r & 3 && r & 11 && chesses[r - 4][c] == 1
&& chesses[r - 3][c] == 1 && chesses[r - 2][c] == 1
&& chesses[r - 1][c] == 0 && chesses[r + 4][c] == 1
&& chesses[r + 3][c] == 1 && chesses[r + 2][c] == 1
&& chesses[r + 1][c] == 0) {
} else if (r & 3 && r & 11 && chesses[r - 4][c] == 1
&& chesses[r - 3][c] == 1 && chesses[r - 2][c] == 0
&& chesses[r - 1][c] == 1 && chesses[r + 4][c] == 1
&& chesses[r + 3][c] == 1 && chesses[r + 2][c] == 0
&& chesses[r + 1][c] == 1) {
// "\"向特殊四四
if (c & 2 && c & 12 && r & 2 && r & 12
&& chesses[r - 3][c - 3] == 1 && chesses[r - 2][c - 2] == 0
&& chesses[r - 1][c - 1] == 1 && chesses[r + 3][c + 3] == 1
&& chesses[r + 2][c + 2] == 0 && chesses[r + 1][c + 1] == 1) {
} else if (c & 2 && c & 11 && r & 2 && r & 11
&& chesses[r - 3][c - 3] == 1 && chesses[r - 2][c - 2] == 1
&& chesses[r - 1][c - 1] == 0 && chesses[r + 4][c + 4] == 1
&& chesses[r + 3][c + 3] == 1 && chesses[r + 2][c + 2] == 0
&& chesses[r + 1][c + 1] == 1) {
} else if (c & 3 && c & 11 && r & 3 && r & 11
&& chesses[r - 4][c - 4] == 1 && chesses[r - 3][c - 3] == 1
&& chesses[r - 2][c - 2] == 1 && chesses[r - 1][c - 1] == 0
&& chesses[r + 4][c + 4] == 1 && chesses[r + 3][c + 3] == 1
&& chesses[r + 2][c + 2] == 1 && chesses[r + 1][c + 1] == 0) {
} else if (c & 3 && c & 11 && r & 3 && r & 11
&& chesses[r - 4][c - 4] == 1 && chesses[r - 3][c - 3] == 1
&& chesses[r - 2][c - 2] == 0 && chesses[r - 1][c - 1] == 1
&& chesses[r + 4][c + 4] == 1 && chesses[r + 3][c + 3] == 1
&& chesses[r + 2][c + 2] == 0 && chesses[r + 1][c + 1] == 1) {
// "/"向特殊四四
// 101 1 101
if (c & 2 && c & 12 && r & 2 && r & 12
&& chesses[r - 3][c + 3] == 1 && chesses[r - 2][c + 2] == 0
&& chesses[r - 1][c + 1] == 1 && chesses[r + 3][c - 3] == 1
&& chesses[r + 2][c - 2] == 0 && chesses[r + 1][c - 1] == 1) {
// 110 1 1011
else if (c & 3 && c & 12 && r & 3 && r & 11
&& chesses[r - 3][c + 3] == 1 && chesses[r - 2][c + 2] == 1
&& chesses[r - 1][c + 1] == 0 && chesses[r + 4][c - 4] == 1
&& chesses[r + 3][c - 3] == 1 && chesses[r + 2][c - 2] == 0
&& chesses[r + 1][c - 1] == 1) {
else if (c & 3 && c & 11 && r & 3 && r & 11
&& chesses[r - 4][c + 4] == 1 && chesses[r - 3][c + 3] == 1
&& chesses[r - 2][c + 2] == 1 && chesses[r - 1][c + 1] == 0
&& chesses[r + 4][c - 4] == 1 && chesses[r + 3][c - 3] == 1
&& chesses[r + 2][c - 2] == 1 && chesses[r + 1][c - 1] == 0) {
else if (c & 3 && c & 11 && r & 3 && r & 11) {
if (chesses[r - 4][c + 4] == 1 && chesses[r - 3][c + 3] == 1
&& chesses[r - 2][c + 2] == 0
&& chesses[r - 1][c + 1] == 1
&& chesses[r + 4][c - 4] == 1
&& chesses[r + 3][c - 3] == 1
&& chesses[r + 2][c - 2] == 0
&& chesses[r + 1][c - 1] == 1) {
函数调用如下:
* 判赢有禁手
* @param r 最后一次下子的行数
* @param c 最后一次下子的列数
public boolean JudgeWinWithJinshou(int r, int c) {
if (Main.count == -1) {// 白子
if (SuanFa.beFive(r, c)) {
javax.swing.JOptionPane.showMessageDialog(mu, "白子赢了!!");
ReDisplayChesseBoard();
} else if (Main.count == 1) {// 黑子
if (SuanFa.Five(r, c)) {// 五子
javax.swing.JOptionPane.showMessageDialog(mu, "黑子赢了!!");
ReDisplayChesseBoard();
} else if (SuanFa.LiveThree(r, c, 1, 'e') & 1) {
javax.swing.JOptionPane.showMessageDialog(mu, "三三禁手!黑子输了!!");
ReDisplayChesseBoard();
} else if (SuanFa.Four(r, c, 1, 'e') & 1) {
javax.swing.JOptionPane.showMessageDialog(mu, "四四禁手!黑子输了!!");
ReDisplayChesseBoard();
} else if (SuanFa.longlink(r, c)) {// 长连
javax.swing.JOptionPane.showMessageDialog(mu, "长连禁手!黑子输了!!");
ReDisplayChesseBoard();
下载次数: 21
浏览: 44458 次
很棒的代码呢,学习了很多^_^
简直不能直视啊
第一天用oracle也不看这样的文章了
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'五子棋游戏都会玩,但你会用java实现吗五子棋游戏都会玩,但你会用java实现吗北桦玛瑙百家号下面是我用java编写的一个贪吃蛇游戏源代码.我个人是比较喜欢玩游戏的,所以学习编程二年多了,很想做个游戏程序,由于能力有限,一直没能做好,后来突然看同学在手机上玩“贪吃蛇”,故想做出来,其一是因为此游戏界面容易设计,算法也比较简单,今天我就把我程序的代码和算法介绍一下,顺便把程序界面皮肤设计说一下......如果想要更多的企业求职加分项目,案例,可以来一下我的群java实现五子棋小游戏需要文档版源码来我的群本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。北桦玛瑙百家号最近更新:简介:北桦,玛瑙,千种玛瑙万种玉。作者最新文章相关文章}

我要回帖

更多关于 五子棋入门与提高 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信