java实现简易五子棋游戏

所属分类: 软件编程 / java 阅读数: 65
收藏 0 赞 0 分享

本文实例为大家分享了java实现简易五子棋游戏的具体代码,供大家参考,具体内容如下

编写一个简易五子棋,棋盘在控制台中绘制,棋盘每- - 个点都有对应的坐标,下棋者输
入对应坐标落棋子,运行效果如图所示。两位数字表示的坐标中,第-一个数字表示横坐标,

第二个数字表示纵坐标,运行结果如图所示。

代码:

package Test;

import java.util.Scanner;

public class Test4 {
public static void main(String[] args) {
int flag = 0; //偶数玩家一操作,奇数玩家二操作
int works=0; //判断是否胜利,若胜利则为4
int works_x=0; //胜利时最后一步的x值
int works_y=0; //胜利时最后一步的y值

 String list[][] = start(); //棋盘的生成,和显示
 for (int i = 0; i < list.length; i++) {
 for (int j = 0; j < list[i].length; j++) {
 System.out.print(list[i][j]);
 }
 System.out.println();
 }

 while (true) { //循环操作和显示结果,胜利时跳出
 Scanner sc = new Scanner(System.in);
 System.out.print("位置:");
 String temp = sc.next(); //棋手输入的x值和y值(此方法中为0-9的数)
 int x = Integer.parseInt(temp.substring(0,1));
 int y = Integer.parseInt(temp.substring(1));
 
 if (flag % 2 == 0){//玩家一操作,此位置为" - "时可操作,否则重新输入
 if (list[x+1][y+1]==" - ")
 list[x+1][y+1] = " O ";
 else
 flag--;
 }
 else{  //玩家二操作,此位置为" - "时可操作,否则重新输入
 if (list[x+1][y+1]==" - ")
 list[x+1][y+1] =" X ";
 else
 flag--;
 }
 flag++; //每次操作成功+1,下一玩家操作
 
 for (int i = 0; i < list.length; i++) {//显示操作结果
 for (int j = 0; j < list[i].length; j++) {
 System.out.print(list[i][j]);
 ///*
 if (list[i][j]!=" - "){//判断是否胜利,只有非“ - ”时判断
  if(work(list,i,j)==4){
  works=work(list,i,j);
  works_x=x;
  works_y=y;
  }
 }
 //*/
 }
 System.out.println();
 }
 
 if(works!=0){//最后值为“ O ”时,玩家一胜出;最后值为“ X ”时,玩家二胜出。
 if(list[works_x][works_y]==" O ")
 System.out.println("玩家一胜出");
 else
 System.out.println("玩家二胜出");
 System.out.println("结束");
 break;
 }
 }
}

public static String[][] start() { //生成一个10*10的空棋盘
 String list[][] = new String[11][11];
 for (int i = 0; i < list.length; i++) {
 for (int j = 0; j < list[i].length; j++) {
 if(i == 0 && j==0)
 list[i][j] = " ";
  else if (i == 0 && j!=0)
 list[i][j] = " "+(j-1)+" ";
 else if (j==0 && i!=0)
 list[i][j] = " "+(i-1)+" ";
 else
 list[i][j] = " - ";
 }
 }
 return list;
}

public static int work(String list[][],int x,int y) {//判断是否胜利
 //if(x-5>0 || y-5>0 ||x+5<list.length ||y+5<list[x].length)
 int temp=0;
 if(x-4>0 ){
 if(y-4>0 ){  //左上角是否五子连线
 for(int i=0;i<4;i++){
 if (list[x][y]==list[x-5+i][y-5+i])
  temp++;
 else
  break;
 }
 }
 else if(y+4<list[x].length){//右上角是否五子连线
 for(int i=0;i<4;i++){
 if (list[x][y]==list[x-4+i][y+4-i])
  temp++;
 else
  break;
 }
 }
 else{
 for(int i=0;i<4;i++){ //正上角是否五子连线
 if (list[x][y]==list[x-4+i][y])
  temp++;
 else
  break;
 }
 }
 }
 else if(x+4<list.length ){ //左下角是否五子连线
 if(y-4>0 ){
 for(int i=0;i<4;i++){
 if (list[x][y]==list[x+4-i][y-4+i])
  temp++;
 else
  break;
 }
 }
 else if(y+4<list[x].length){//右下角是否五子连线
 for(int i=0;i<4;i++){
 if (list[x][y]==list[x+4-i][y+4-i])
  temp++;
 else
  break;
 }
 }
 else{
 for(int i=0;i<4;i++){ //正下角是否五子连线
 if (list[x][y]==list[x+4-i][y])
  temp++;
 else
  break;
 }
 }
 }
 else{
 if(y-4>0 ){
 for(int i=0;i<4;i++){ //正左角是否五子连线
 if (list[x][y]==list[x][y-4+i])
  temp++;
 else
  break;
 }
 }
 else if(y+4<list[x].length){//正右角是否五子连线
 for(int i=0;i<4;i++){
 if (list[x][y]==list[x][y+4-i])
  temp++;
 else
  break;
 }
 }
 }
 return temp;
 }

}

更多有趣的经典小游戏实现专题,分享给大家:

C++经典小游戏汇总

python经典小游戏汇总

python俄罗斯方块游戏集合

JavaScript经典游戏 玩不停

java经典小游戏汇总

javascript经典小游戏汇总

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

利用MultipartFile实现文件上传功能

这篇文章主要为大家详细介绍了利用MultipartFile实现文件上传功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Java编程实现NBA赛事接口调用实例代码

这篇文章主要介绍了Java编程实现NBA赛事接口调用实例代码,具有一定参考价值,需要的朋友可以了解下。
收藏 0 赞 0 分享

Java编程之双重循环打印图形

这篇文章主要介绍了Java编程之双重循环打印图形,属于Java编程基础练习部分,具有一定参考价值,需要的朋友可以了解下。
收藏 0 赞 0 分享

java基础学习JVM中GC的算法

这篇文章主要介绍了java基础学习JVM中GC的算法,通过图文加深对GC算法思路的理解。
收藏 0 赞 0 分享

Java编程Post数据请求和接收代码详解

这篇文章主要介绍了Java编程Post数据请求和接收代码详解,涉及enctype的三种编码,post与get等相关内容,具有一定参考价值,需要的朋友可以了解下。
收藏 0 赞 0 分享

Retrofit+Rxjava实现文件上传和下载功能

这篇文章主要介绍了Retrofit+Rxjava实现文件上传和下载功能,文中提到了单文件上传和多文件上传及相关参数的请求,需要的朋友参考下吧
收藏 0 赞 0 分享

Retrofit+Rxjava下载文件进度的实现

这篇文章主要介绍了Retrofit+Rxjava下载文件进度的实现,非常不错,具有参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

java检查服务器的连通两种方法代码分享

这篇文章主要介绍了java检查服务器的连通两种方法代码分享,涉及ping的介绍以及检查服务器连通的两种方法代码示例,具有一定参考价值,需要的朋友可以了解下。
收藏 0 赞 0 分享

Java/Android 获取网络重定向文件的真实URL的示例代码

本篇文章主要介绍了Java/Android 获取网络重定向文件的真实URL的示例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

java并发编程之同步器代码示例

这篇文章主要介绍了java并发编程之同步器代码示例,分享了相关代码,具有一定参考价值,需要的朋友可以了解下。
收藏 0 赞 0 分享
查看更多