效果图
先来看一下效果图:
功能
悔棋,和棋不做详细说明。
胜场数在效果展示中有相关。
背景可以根据自己的喜好在文件夹中更换,改变背景图片。
落子和触发功能按键时伴有音效。
运行环境说明
编码时使用IDE: eclipse 2020-03
JDK 版本: JDK 1.8
源码
Board
import java.util.Stack;
import java.applet.Applet;
import java.applet.AudioClip;
import java.io.*;
import java.net.*;
class Previous{
int x;
int y;
Previous(int x,int y)
{
this.x=x;
this.y=y;
}
}
public class Board
{
int sum=1;
int chess[][];
int step[][];
//创建一个栈用来存放每一步的走式;
Stack<Previous> all;
public Board() {
chess=new int [15][15];
step=new int[15][15];
all=new Stack<>();
}
//检查是否能放棋子
boolean CheckPut(int x,int y) {
if(chess[x][y]==0) return true;
return false;
}
//判断输赢
public int CanWin(int x,int y,int clr) { //根据五子棋规则,黑子先手,则应该有clr=1为黑棋,clr=2为白棋
int win=0;
//横向判断输赢
for(int i=x-4;i<x+5;i++) {
if(i<0) continue; //左右两边出界
if(i>14) break;
if(chess[i][y]==clr) win++;
else win=0;
if(win==5) return clr;
}
win=0;
//纵向判断
for(int j=y-4;j<y+5;j++) {
if(j<0) continue;
if(j>14) break;
if(chess[x][j]==clr) win++;
else win=0;
if(win==5) return clr;
}
win=0;
//副对角线判断
for(int i=x-4,j=y+4;i<x+5&&j>y-5;i++,j--) {
if(i<0||j<0||i>14||j>14) continue;
if(chess[i][j]==clr) win++;
else win=0;
if(win==5) return clr;
}
win=0;
//主对角线判断
for(int i=x-4,j=y-4;i<x+5&&j<y+5;i++,j++) {
if(i<0||j<0) continue;
if(i>14||j>14) break;
if(chess[i][j]==clr) win++;
else win=0;
if(win==5) return clr;
}
return 0;
}
//此处下棋,并检查下棋后是否胜利
public int ChessHere(int x,int y,int clr) {
if(CheckPut(x,y)) {
step[x][y]=sum++;
chess[x][y]=clr;
Previous p=new Previous(x,y);
all.push(p);
return CanWin(x,y,clr); //检查此时是否胜利
}
else return -1; //CanWin中return 0,在后面会有条件判断
}
//获取棋盘当前落子状态
public int[][] GetChess(){
return chess;
}
//获取步数
public int[][] GetStep(){
return step;
}
//重开
public void ReStart() {
for(int i=0;i<15;i++) {
for(int j=0;j<15;j++) {
chess[i][j]=0;
//step[i][j]=0; //步数置零与否都可
}
}
all.clear();
sum=1;
}
//悔棋
public void Regret() {
if(all.isEmpty()) return ;
Previous c=all.pop();
chess[c.x][c.y]=0;
}
public void Music(String s)
{
try {
File f;
URI uri;
URL url;
AudioClip music;
f = new File("src/"+s+".wav");
uri = f.toURI();
url = uri.toURL();
music = Applet.newAudioClip(url);
music.play();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} //解析地址
}
}
还有一个 Game , 组合即可
源文件
需要的话点击,迷宫 五子棋 源码 + 报告
笔者邮箱: lzzy604@126.com
对您有帮助的话,就点赞,评论支持一下作者吧。
有疑问看这里
有疑问的话,请在评论区留言或私信笔者。