Java项目实现五子棋小游戏
时间:2022-01-30 11:21:37|栏目:JAVA代码|点击: 次
本文实例为大家分享了Java实现五子棋小游戏的具体代码,供大家参考,具体内容如下
项目名称
五子棋小游戏
项目描述
可以改变获胜棋子数,率先连成棋数的人获胜
代码实现
测试类
public class Test {
public static void main(String[] args) {
FiveChess fiveChess = new FiveChess();
fiveChess.start();
}
}
主类:实现主方法
public class FiveChess {
private static final int CheckerSize = 10;
private static final int successSize = 5;
private Chess[][] chess;
private int xPos;
private int yPos;
private boolean flag = true;
private Scanner scanner = new Scanner(System.in);
public FiveChess(){
chess = new Chess[CheckerSize][CheckerSize];
}
private void initCheck(){
for(int i=0;i<CheckerSize;i++){
for(int j=0;j<CheckerSize;j++){
chess[i][j] = new Chess("十");
}
}
}
private boolean judge(int xPos,int yPos){
//横向
if(yPos-1>=0 && chess[xPos][yPos].getValue().equals(chess[xPos][yPos-1].getValue()) ||
yPos+1<CheckerSize && chess[xPos][yPos].getValue().equals(chess[xPos][yPos+1].getValue())){
int count = 1;
for (int i = 1; i < successSize; i++) {
if (yPos - i >= 0 && chess[xPos][yPos - i].getValue().equals(chess[xPos][yPos].getValue())) {
count++;
} else {
break;
}
}
for (int i = 1; i < successSize; i++) {
if (yPos + i < CheckerSize &&
chess[xPos][yPos + i].getValue().equals(chess[xPos][yPos].getValue())) {
count++;
} else {
break;
}
}
return count >= successSize ? true : false;
}
//纵向
if (xPos-1>=0 && chess[xPos][yPos].getValue().equals(chess[xPos-1][yPos].getValue()) ||
xPos+1<CheckerSize && chess[xPos][yPos].getValue().equals(chess[xPos+1][yPos].getValue())){
int count = 1;
for (int i = 1; i < successSize; i++) {
if (xPos- i >= 0 && chess[xPos-i][yPos].getValue().equals(chess[xPos][yPos].getValue())) {
count++;
} else {
break;
}
}
for (int i = 1; i < successSize; i++) {
if (xPos + i < CheckerSize &&
chess[xPos+i][yPos].getValue().equals(chess[xPos][yPos].getValue())) {
count++;
} else {
break;
}
}
return count >= successSize ? true : false;
}
//正斜线
if (xPos-1>=0 && yPos-1>=0 && chess[xPos][yPos].getValue().equals(chess[xPos-1][yPos-1].getValue()) ||
xPos+1<CheckerSize && yPos+1<CheckerSize &&
chess[xPos][yPos].getValue().equals(chess[xPos+1][yPos+1].getValue())){
int count = 1;
for (int i = 1; i < successSize; i++) {
if (xPos - i >= 0 && yPos - i >= 0 &&
chess[xPos-i][yPos-i].getValue().equals(chess[xPos][yPos].getValue())) {
count++;
} else {
break;
}
}
for (int i = 1; i < successSize; i++) {
if (xPos + i < CheckerSize && yPos + i < CheckerSize &&
chess[xPos+i][yPos+i].getValue().equals(chess[xPos][yPos].getValue())) {
count++;
} else {
break;
}
}
return count >= successSize ? true : false;
}
//反斜线
if (xPos-1>=0 && yPos+1<CheckerSize &&
chess[xPos][yPos].getValue().equals(chess[xPos-1][yPos+1].getValue()) ||
xPos+1<CheckerSize && yPos-1>=0 &&
chess[xPos][yPos].getValue().equals(chess[xPos+1][yPos-1].getValue())){
int count = 1;
for (int i = 1; i < successSize; i++) {
if (xPos - i >= 0 && yPos + i<CheckerSize &&
chess[xPos-i][yPos+i].getValue().equals(chess[xPos][yPos].getValue())) {
count++;
} else {
break;
}
}
for (int i = 1; i < successSize; i++) {
if (xPos + i < CheckerSize && yPos - i >= 0 &&
chess[xPos+i][yPos-i].getValue().equals(chess[xPos][yPos].getValue())) {
count++;
} else {
break;
}
}
return count >= successSize ? true : false;
}
return false;
}
private void runChess(String run){
System.out.println("请输入"+run+"坐标:");
xPos = scanner.nextInt();
yPos = scanner.nextInt();
if(chess[xPos-1][yPos-1].getValue().equals("十")){
if(run.equals("黑棋")){
chess[xPos-1][yPos-1] = new Chess("●");
}
else if(run.equals("白棋")){
chess[xPos-1][yPos-1] = new Chess("?");
}
for(int i=0;i<CheckerSize;i++){
for (int j=0;j<CheckerSize;j++){
System.out.print(chess[i][j].getValue());
}
System.out.println();
}
if(judge(xPos-1,yPos-1)){
flag = false;
System.out.println(run+"获胜");
System.out.println("游戏结束,是否重玩");
String finish = scanner.next();
if (finish.equals("是")){
flag = true;
start();
}
else if (finish.equals("否")){
System.exit(0);
}
}
}else {
System.out.println("该处已存在棋子,请重新选择");
runChess(run);
}
}
public void start(){
initCheck();
System.out.println("请选择先走方:黑棋or白棋");
String run = scanner.next();
for(int i=0;i<CheckerSize;i++){
for (int j=0;j<CheckerSize;j++){
System.out.print(chess[i][j].getValue());
}
System.out.println();
}
while (flag) {
switch (run) {
case "黑棋":
runChess("黑棋");
run = "白棋";
break;
case "白棋":
runChess("白棋");
run = "黑棋";
break;
default:
}
}
}
}
结点类
public class Chess {
private String value;
public Chess(String value){
this.value = value;
}
public String getValue() {
return value;
}
}
更多有趣的经典小游戏实现专题,分享给大家:


阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机




