java五子棋代码结尾 java写五子棋

求一个简单的JAVA五子棋代码?。?网上复制的别来了!以下是现写的 实现java五子棋代码结尾了两人对战自己复制后运行把 没什么难度 类名 Games
import java.util.Scanner;
public class Games {
private String board[][];
private static int SIZE = 17;
private static String roles = "A玩家";
//初始化数组
public void initBoard() {
board = new String[SIZE][SIZE];
for (int i = 0; iSIZE; i) {
for (int j = 0; jSIZE; j) {
//if(i==0){
//String str = "";
//str= j "";
//board[i][j]= str;
//}else if(i!=0j==0){
//String str = "";
//str= i "";
//board[i][j]= str;
//}else{
board[i][j] = "╋";
//}
}
}
}
//输出棋盘
public void printBoard() {
for (int i = 0; iSIZE; i) {
for (int j = 0; jSIZE; j) {
System.out.print(board[i][j]);
}
System.out.println();
}
}
//判断所下棋子位置是否合理
public boolean isOk(int x, int y) {
boolean isRight = true;
if (x = 16 || x1 || y = 16 | y1) {
//System.out.println("输入错误java五子棋代码结尾,请从新输入");
isRight = false;
}
if (board[x][y].equals("●") || board[x][y].equals("○")) {
isRight = false;
}
return isRight;
}
//判断谁赢了
public void whoWin(Games wz) {
// 从数组挨个查找找到某个类型的棋子就从该棋子位置向右,向下,斜向右下 各查找5连续的位置看是否为5个相同的
int xlabel;// 记录第一次找到某个棋子的x坐标
int ylabel;// 记录第一次找到某个棋子的y坐标
// ●○╋
// 判断人是否赢了
for (int i = 0; iSIZE; i) {
for (int j = 0; jSIZE; j) {
if (board[i][j].equals("○")) {
xlabel = i;
ylabel = j;
// 横向找 x坐标不变 y坐标以此加1连成字符串
String heng = "";
if (i5SIZEj5SIZE) {
for (int k = j; kj5; k) {
heng= board[i][k];
}
if (heng.equals("○○○○○")) {
System.out.println(roles "赢了java五子棋代码结尾!您输了!");
System.exit(0);
}
// 向下判断y不变 x逐增5 连成字符串
String xia = "";
for (int l = j; li5; l) {
xia= board[l][j];
// System.out.println(xia);
}
if (xia.equals("○○○○○")) {
System.out.println(roles "赢了!您输了!");
System.exit(0);
}
// 斜向右下判断
String youxia = "";
for (int a = 1; a = 5; a) {
youxia= board[xlabel][ylabel];
}
if (youxia.equals("○○○○○")) {
System.out.println(roles "赢了!您输了!");
System.exit(0);
}
}
}
}
}
// 判断电脑是否赢了
for (int i = 0; iSIZE; i) {
for (int j = 0; jSIZE; j) {
if (board[i][j].equals("●")) {
xlabel = i;
ylabel = j;
// 横向找 x坐标不变 y坐标以此加1连成字符串
String heng = "";
if (j5SIZEi5SIZE) {
for (int k = j; kj5; k) {
heng= board[i][k];
}
if (heng.equals("●●●●●")) {
System.out.println(roles "赢输了!您输了!");
System.exit(0);
}
// 向下判断y不变 x逐增5 连成字符串
String xia = "";
for (int l = i; li5; l) {
xia= board[l][ylabel];
// System.out.println(xia);
}
if (xia.equals("●●●●●")) {
System.out.println(roles "赢了!您输了!");
System.exit(0);
}
// 斜向右下判断
String youxia = "";
for (int a = 1; a = 5; a) {
youxia= board[xlabel][ylabel];
}
if (youxia.equals("●●●●●")) {
System.out.println(roles "赢了!您输了!");
System.exit(0);
}
}
}
}
}
}
public static void main(String[] args) {
Games wz = new Games();
Scanner sc = new Scanner(System.in);
wz.initBoard();
wz.printBoard();
while (true) {
System.out.print("请" roles "输入X,Y坐标,必须在0-15范围内,xy以空格隔开,输入16 16结束程序");
int x = sc.nextInt();
int y = sc.nextInt();
if (x == SIZEy == SIZE) {
System.out.println("程序结束");
System.exit(0);
}
if (xSIZE || x0 || ySIZE | y0) {
System.out.println("输入错误,请从新输入");
continue;
}
//如果roles是A玩家 就让A玩家下棋,否则就让B玩家下棋 。
if (wz.board[x][y].equals("╋")roles.equals("A玩家")) {
wz.board[x][y] = "○";
wz.printBoard();
//判断输赢
wz.whoWin(wz);
}else if(wz.board[x][y].equals("╋")roles.equals("B玩家")){
wz.board[x][y] = "●";
wz.printBoard();
//判断输赢
wz.whoWin(wz);
} else {
System.out.println("此处已经有棋子,从新输入");
continue;
}
if(roles.equals("A玩家")){
roles = "B玩家";
}else if(roles.equals("B玩家")){
roles = "A玩家";
}
}
}
}
急?。。?Java五子棋源代码注释package org.liky.game.frame;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class FiveChessFrame extends JFrame implements MouseListener, Runnable {
// 取得屏幕的宽度
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
// 取得屏幕的高度
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
// 背景图片
BufferedImage bgImage = null;
// 保存棋子的坐标
int x = 0;
int y = 0;
// 保存之前下过的全部棋子的坐标
// 其中数据内容 0: 表示这个点并没有棋子,1: 表示这个点是黑子,2:表示这个点是白子
int[][] allChess = new int[19][19];
// 标识当前应该黑棋还是白棋下下一步
boolean isBlack = true;
// 标识当前游戏是否可以继续
boolean canPlay = true;
// 保存显示的提示信息
String message = "黑方先行";
// 保存最多拥有多少时间(秒)
int maxTime = 0;
// 做倒计时的线程类
Thread t = new Thread(this);
// 保存黑方与白方的剩余时间
int blackTime = 0;
int whiteTime = 0;
// 保存双方剩余时间的显示信息
String blackMessage = "无限制";
String whiteMessage = "无限制";
public FiveChessFrame() {
// 设置标题
this.setTitle("五子棋");
// 设置窗体大小
this.setSize(500, 500);
// 设置窗体出现位置
this.setLocation((width - 500) / 2, (height - 500) / 2);
// 将窗体设置为大小不可改变
this.setResizable(false);
// 将窗体的关闭方式设置为默认关闭后程序结束
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 为窗体加入监听器
this.addMouseListener(this);
// 将窗体显示出来
this.setVisible(true);
t.start();
t.suspend();
// 刷新屏幕,防止开始游戏时出现无法显示的情况.
this.repaint();
String imagePath = "" ;
try {
imagePath = System.getProperty("user.dir") "/bin/image/background.jpg" ;
bgImage = ImageIO.read(new File(imagePath.replaceAll("\\\\", "/")));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void paint(Graphics g) {
// 双缓冲技术防止屏幕闪烁
BufferedImage bi = new BufferedImage(500, 500,
BufferedImage.TYPE_INT_RGB);
Graphics g2 = bi.createGraphics();
g2.setColor(Color.BLACK);
// 绘制背景
g2.drawImage(bgImage, 1, 20, this);
// 输出标题信息
g2.setFont(new Font("黑体", Font.BOLD, 20));
g2.drawString("游戏信息:"message, 130, 60);
// 输出时间信息
g2.setFont(new Font("宋体", 0, 14));
g2.drawString("黑方时间:"blackMessage, 30, 470);
g2.drawString("白方时间:"whiteMessage, 260, 470);
// 绘制棋盘
for (int i = 0; i19; i) {
g2.drawLine(10, 7020 * i, 370, 7020 * i);
g2.drawLine(1020 * i, 70, 1020 * i, 430);
}
// 标注点位
g2.fillOval(68, 128, 4, 4);
g2.fillOval(308, 128, 4, 4);
g2.fillOval(308, 368, 4, 4);
g2.fillOval(68, 368, 4, 4);
g2.fillOval(308, 248, 4, 4);
g2.fillOval(188, 128, 4, 4);
g2.fillOval(68, 248, 4, 4);
g2.fillOval(188, 368, 4, 4);
g2.fillOval(188, 248, 4, 4);
/*
* //绘制棋子 x = (x - 10) / 20 * 2010 ; y = (y - 70) / 20 * 2070 ;
* //黑子 g.fillOval(x - 7, y - 7, 14, 14); //白子 g.setColor(Color.WHITE) ;
* g.fillOval(x - 7, y - 7, 14, 14); g.setColor(Color.BLACK) ;
* g.drawOval(x - 7, y - 7, 14, 14);
*/
// 绘制全部棋子
for (int i = 0; i19; i) {
for (int j = 0; j19; j) {
if (allChess[i][j] == 1) {
// 黑子
int tempX = i * 2010;
int tempY = j * 2070;
g2.fillOval(tempX - 7, tempY - 7, 14, 14);
}
if (allChess[i][j] == 2) {
// 白子
int tempX = i * 2010;
int tempY = j * 2070;
g2.setColor(Color.WHITE);
g2.fillOval(tempX - 7, tempY - 7, 14, 14);
g2.setColor(Color.BLACK);
g2.drawOval(tempX - 7, tempY - 7, 14, 14);
}
}
}
g.drawImage(bi, 0, 0, this);
}
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
/*
* System.out.println("X:" e.getX()); System.out.println("Y:" e.getY());
*/
if (canPlay == true) {
x = e.getX();
y = e.getY();
if (x = 10x = 370y = 70y = 430) {
x = (x - 10) / 20;
y = (y - 70) / 20;
if (allChess[x][y] == 0) {
// 判断当前要下的是什么颜色的棋子
if (isBlack == true) {
allChess[x][y] = 1;
isBlack = false;
message = "轮到白方";
} else {
allChess[x][y] = 2;
isBlack = true;
message = "轮到黑方";
}
// 判断这个棋子是否和其他的棋子连成5连,即判断游戏是否结束
boolean winFlag = this.checkWin();
if (winFlag == true) {
JOptionPane.showMessageDialog(this, "游戏结束,"
(allChess[x][y] == 1 ? "黑方" : "白方")"获胜!");
canPlay = false;
}
} else {
JOptionPane.showMessageDialog(this, "当前位置已经有棋子 , 请重新落子!");
}
this.repaint();
}
}
/* System.out.println(e.getX()" -- "e.getY()); */
// 点击 开始游戏 按钮
if (e.getX() = 400e.getX() = 470e.getY() = 70
e.getY() = 100) {
int result = JOptionPane.showConfirmDialog(this, "是否重新开始游戏?");
if (result == 0) {
// 现在重新开始游戏
// 重新开始所要做的操作: 1)把棋盘清空,allChess这个数组中全部数据归0.
// 2) 将 游戏信息: 的显示改回到开始位置
// 3) 将下一步下棋的改为黑方
for (int i = 0; i19; i) {
for (int j = 0; j19; j) {
allChess[i][j] = 0;
}
}
// 另一种方式 allChess = new int[19][19];
message = "黑方先行";
isBlack = true;
blackTime = maxTime;
whiteTime = maxTime;
if (maxTime0) {
blackMessage = maxTime / 3600":"
(maxTime / 60 - maxTime / 3600 * 60)":"
(maxTime - maxTime / 60 * 60);
whiteMessage = maxTime / 3600":"
(maxTime / 60 - maxTime / 3600 * 60)":"
(maxTime - maxTime / 60 * 60);
t.resume();
} else {
blackMessage = "无限制";
whiteMessage = "无限制";
}
this.canPlay = true;
this.repaint();
}
}
// 点击 游戏设置 按钮
if (e.getX() = 400e.getX() = 470e.getY() = 120
e.getY() = 150) {
String input = JOptionPane
.showInputDialog("请输入游戏的最大时间(单位:分钟),如果输入0,表示没有时间限制:");
try {
maxTime = Integer.parseInt(input) * 60;
if (maxTime0) {
JOptionPane.showMessageDialog(this, "请输入正确信息,不允许输入负数!");
}
if (maxTime == 0) {
int result = JOptionPane.showConfirmDialog(this,
"设置完成,是否重新开始游戏?");
if (result == 0) {
for (int i = 0; i19; i) {
for (int j = 0; j19; j) {
allChess[i][j] = 0;
}
}
// 另一种方式 allChess = new int[19][19];
message = "黑方先行";
isBlack = true;
blackTime = maxTime;
whiteTime = maxTime;
blackMessage = "无限制";
whiteMessage = "无限制";
this.canPlay = true;
this.repaint();
}
}
if (maxTime0) {
int result = JOptionPane.showConfirmDialog(this,
"设置完成,是否重新开始游戏?");
if (result == 0) {
for (int i = 0; i19; i) {
for (int j = 0; j19; j) {
allChess[i][j] = 0;
}
}
// 另一种方式 allChess = new int[19][19];
message = "黑方先行";
isBlack = true;
blackTime = maxTime;
whiteTime = maxTime;
blackMessage = maxTime / 3600":"
(maxTime / 60 - maxTime / 3600 * 60)":"
(maxTime - maxTime / 60 * 60);
whiteMessage = maxTime / 3600":"
(maxTime / 60 - maxTime / 3600 * 60)":"
(maxTime - maxTime / 60 * 60);
t.resume();
this.canPlay = true;
this.repaint();
}
}
} catch (NumberFormatException e1) {
// TODO Auto-generated catch block
JOptionPane.showMessageDialog(this, "请正确输入信息!");
}
}
// 点击 游戏说明 按钮
if (e.getX() = 400e.getX() = 470e.getY() = 170
e.getY() = 200) {
JOptionPane.showMessageDialog(this,
"这个一个五子棋游戏程序 , 黑白双方轮流下棋,当某一方连到五子时,游戏结束 。");
}
// 点击 认输 按钮
if (e.getX() = 400e.getX() = 470e.getY() = 270
e.getY() = 300) {
int result = JOptionPane.showConfirmDialog(this, "是否确认认输?");
if (result == 0) {
if (isBlack) {
JOptionPane.showMessageDialog(this, "黑方已经认输,游戏结束!");
} else {
JOptionPane.showMessageDialog(this, "白方已经认输,游戏结束!");
}
canPlay = false;
}
}
// 点击 关于 按钮
if (e.getX() = 400e.getX() = 470e.getY() = 320
e.getY() = 350) {
JOptionPane.showMessageDialog(this,
"本游戏由MLDN制作,有相关问题可以访问");
}
// 点击 退出 按钮
if (e.getX() = 400e.getX() = 470e.getY() = 370
e.getY() = 400) {
JOptionPane.showMessageDialog(this, "游戏结束");
System.exit(0);
}
}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
private boolean checkWin() {
boolean flag = false;
// 保存共有相同颜色多少棋子相连
int count = 1;
// 判断横向是否有5个棋子相连,特点 纵坐标 是相同 , 即allChess[x][y]中y值是相同
int color = allChess[x][y];
/*
* if (color == allChess[x 1][y]) { count; if (color ==
* allChess[x 2][y]) { count; if (color == allChess[x 3][y]) {
* count; } } }
*/
// 通过循环来做棋子相连的判断
/*
* int i = 1; while (color == allChess[xi][y0]) { count; i; }
* i = 1; while (color == allChess[x - i][y - 0]) { count; i; } if
* (count = 5) { flag = true; } // 纵向的判断 int i2 = 1 ; int count2 = 1 ;
* while (color == allChess[x0][yi2]) { count2; i2; } i2 = 1;
* while (color == allChess[x - 0][y - i2]) { count2; i2; } if
* (count2 = 5) { flag = true ; } // 斜方向的判断(右上左下) int i3 = 1 ; int
* count3 = 1 ; while (color == allChess[xi3][y - i3]) { count3;
* i3; } i3 = 1; while (color == allChess[x - i3][yi3]) { count3;
* i3; } if (count3 = 5) { flag = true ; } // 斜方向的判断(右下左上) int i4 =
* 1 ; int count4 = 1 ; while (color == allChess[xi4][yi4]) {
* count4; i4; } i4 = 1; while (color == allChess[x - i4][y - i4]) {
* count4; i4; } if (count4 = 5) { flag = true ; }
*/
// 判断横向
count = this.checkCount(1, 0, color);
if (count = 5) {
flag = true;
} else {
// 判断纵向
count = this.checkCount(0, 1, color);
if (count = 5) {
flag = true;
} else {
// 判断右上、左下
count = this.checkCount(1, -1, color);
if (count = 5) {
flag = true;
} else {
// 判断右下、左上
count = this.checkCount(1, 1, color);
if (count = 5) {
flag = true;
}
}
}
}
return flag;
}
// 判断棋子连接的数量
private int checkCount(int xChange, int yChange, int color) {
int count = 1;
int tempX = xChange;
int tempY = yChange;
while (xxChange = 0xxChange = 18yyChange = 0
yyChange = 18
color == allChess[xxChange][yyChange]) {
count;
if (xChange != 0)
xChange;
if (yChange != 0) {
if (yChange0)
yChange;
else {
yChange--;
}
}
}
xChange = tempX;
yChange = tempY;
while (x - xChange = 0x - xChange = 18y - yChange = 0
y - yChange = 18
color == allChess[x - xChange][y - yChange]) {
count;
if (xChange != 0)
xChange;
if (yChange != 0) {
if (yChange0)
yChange;
else {
yChange--;
}
}
}
return count;
}
public void run() {
// TODO Auto-generated method stub
// 判断是否有时间限制
if (maxTime0) {
while (true) {
if (isBlack) {
blackTime--;
if (blackTime == 0) {
JOptionPane.showMessageDialog(this, "黑方超时,游戏结束!");
}
} else {
whiteTime--;
if (whiteTime == 0) {
JOptionPane.showMessageDialog(this, "白方超时,游戏结束!");
}
}
blackMessage = blackTime / 3600":"
(blackTime / 60 - blackTime / 3600 * 60)":"
(blackTime - blackTime / 60 * 60);
whiteMessage = whiteTime / 3600":"
(whiteTime / 60 - whiteTime / 3600 * 60)":"
(whiteTime - whiteTime / 60 * 60);
this.repaint();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(blackTime" -- "whiteTime);
}
}
}
}
跪求JAVA五子棋源代码很sb的电脑五子棋:
import java.io.*;
import java.util.*;
public class Gobang {
// 定义一个二维数组来充当棋盘
private String[][] board;
// 定义棋盘的大小
private static int BOARD_SIZE = 15;
public void initBoard() {
// 初始化棋盘数组
board = new String[BOARD_SIZE][BOARD_SIZE];
// 把每个元素赋为"╋" , 用于在控制台画出棋盘
for (int i = 0; iBOARD_SIZE; i) {
for (int j = 0; jBOARD_SIZE; j) {
// windows是一行一行来打印的 。坐标值为(行值, 列值)
board[i][j] = "╋";
}
}
}
// 在控制台输出棋盘的方法
public void printBoard() {
// 打印每个数组元素
for (int i = 0; iBOARD_SIZE; i) {
for (int j = 0; jBOARD_SIZE; j) {
// 打印数组元素后不换行
System.out.print(board[i][j]);
}
// 每打印完一行数组元素后输出一个换行符
System.out.print("\n");
}
}
// 该方法处理电脑下棋:随机生成2个整数,作为电脑下棋的坐标 , 赋给board数组 。
private void compPlay() {
// 构造一个随机数生成器
Random rnd = new Random();
// Random类的nextInt(int n))方法:随机地生成并返回指定范围中的一个 int 值,
// 即:在此随机数生成器序列中 0(包括)和 n(不包括)之间均匀分布的一个int值 。
int compXPos = rnd.nextInt(15);
int compYPos = rnd.nextInt(15);
// 保证电脑下的棋的坐标上不能已经有棋子(通过判断对应数组元素只能是"╋"来确定)
while (board[compXPos][compYPos].equals("╋") == false) {
compXPos = rnd.nextInt(15);
compYPos = rnd.nextInt(15);
}
System.out.println(compXPos);
System.out.println(compYPos);
// 把对应的数组元素赋为"○" 。
board[compXPos][compYPos] = "○";
}
// 该方法用于判断胜负:进行四次循环扫描 , 判断横、竖、左斜、右斜是否有5个棋连在一起
private boolean judgeWin() {
// flag表示是否可以断定赢/输
boolean flag = false;
// joinEle:将每一个横/竖/左斜/右斜行中的元素连接起来得到的一个字符串
String joinEle;
// 进行横行扫描
for (int i = 0; iBOARD_SIZE; i) {
// 每扫描一行前,将joinEle清空
joinEle = "";
for (int j = 0; jBOARD_SIZE; j) {
joinEle= board[i][j];
}
// String类的contains方法:当且仅当该字符串包含指定的字符序列时,返回true 。
if (joinEle.contains("●●●●●")) {
System.out.println("您赢啦!");
flag = true;
// 停止往下继续执行,提前返回flag 。
// 如果执行了这个return,就直接返回该方法的调用处;
// 不会再执行后面的任何语句,包括最后那个return语句 。
// (而break仅仅是完全跳出这个for循环,还会继续执行下面的for循环 。)
return flag;
} else if (joinEle.contains("○○○○○")) {
System.out.println("您输啦!");
flag = true;
// 提前返回flag
return flag;
}
}
// 进行竖行扫描
for (int i = 0; iBOARD_SIZE; i) {
joinEle = "";
for (int j = 0; jBOARD_SIZE; j) {
// 竖行的元素是它们的列值相同
joinEle= board[j][i];
}
if (joinEle.contains("●●●●●")) {
System.out.println("您赢啦!");
flag = true;
return flag;
} else if (joinEle.contains("○○○○○")) {
System.out.println("您输啦!");
flag = true;
return flag;
}
}
// 进行左斜行扫描
for (int i = -(BOARD_SIZE - 2); iBOARD_SIZE - 1; i) {
joinEle = "";
for (int j = 0; jBOARD_SIZE; j) {
int line = ij;
// 只截取坐标值没有越界的点
if (line = 0line15) {
joinEle= board[j][line];
}
}
if (joinEle.contains("●●●●●")) {
System.out.println("您赢啦!");
flag = true;
return flag;
} else if (joinEle.contains("○○○○○")) {
System.out.println("您输啦!");
flag = true;
return flag;
}
}
// 进行右斜行扫描
for (int i = 1; i2 * (BOARD_SIZE - 1); i) {
joinEle = "";
for (int j = 0; jBOARD_SIZE; j) {
int line = i - j;
if (line = 0line15) {
joinEle= board[j][line];
}
}
if (joinEle.contains("●●●●●")) {
System.out.println("您赢啦!");
flag = true;
return flag;
} else if (joinEle.contains("○○○○○")) {
System.out.println("您输啦!");
flag = true;
// 最后这个return可省略
}
}
// 确保该方法有返回值(如果上面条件都不满足时)
return flag;
}
public static void main(String[] args) throws Exception, IOException {
Gobang gb = new Gobang();
gb.initBoard();
gb.printBoard();
// BufferedReader类:带缓存的读取器————从字符输入流中读取文本,并缓存字符 。可用于高效读取字符、数组和行 。
// 最好用它来包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和 InputStreamReader) 。
// 下面构造一个读取器对象 。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 定义输入字符串
String inputStr = null;
// br.readLine():每当在键盘上输入一行内容按回车,刚输入的内容将被br(读取器对象)读取到 。
// BufferedReader类的readLine方法:读取一个文本行 。
// 初始状态由于无任何输入,br.readLine()会抛出异常 。因而main方法要捕捉异常 。
while ((inputStr = br.readLine()) != null) {
// 将用户输入的字符串以逗号(,)作为分隔符,分隔成2个字符串 。
// String类的split方法,将会返回一个拆分后的字符串数组 。
String[] posStrArr = inputStr.split(",");
// 将2个字符串转换成用户下棋的坐标
int xPos = Integer.parseInt(posStrArr[0]);
int yPos = Integer.parseInt(posStrArr[1]);
// 校验用户下棋坐标的有效性,只能是数字 , 不能超出棋盘范围
if (xPos15 || xPos1 || yPos15 || yPos1) {
System.out.println("您下棋的坐标值应在1到15之间 , 请重新输入!");
continue;
}
// 保证用户下的棋的坐标上不能已经有棋子(通过判断对应数组元素只能是"╋"来确定)
// String类的equals方法:比较字符串和指定对象是否相等 。结果返回true或false 。
if (gb.board[xPos - 1][yPos - 1].equals("╋")) {
// 把对应的数组元素赋为"●" 。
gb.board[xPos - 1][yPos - 1] = "●";
} else {
System.out.println("您下棋的点已有棋子,请重新输入!");
continue;
}
// 电脑下棋
gb.compPlay();
gb.printBoard();
// 每次下棋后,看是否可以断定赢/输了
if (gb.judgeWin() == false) {
System.out.println("请输入您下棋的坐标,应以x,y的格式:");
} else {
// 完全跳出这个while循环,结束下棋
break;
}
}
}
}
JAVA五子棋程序代码分析(1)楼主要是觉得看的不舒服可以拷到记事本里看~import java.applet.*;import java.awt.*;import java.awt.event.*;import java.applet.Applet;import java.awt.Color; //这一段import就不说了,下面要用到的就import进来public class wuziqi extends Applet implements ActionListener,MouseListener,MouseMotionListener,ItemListener//继承Applet表明是个applet,后面的接口必须要实现每个接口的所有方法{int color_Qizi=0;//旗子的颜色标识 0:白子 1:黑子int intGame_Start=0;//游戏开始标志 0未开始 1游戏中int intGame_Body[][]=new int[16][16]; //设置棋盘棋子状态 0 无子 1 白子 2 黑子Button b1=new Button("游戏开始");Button b2=new Button("重置游戏"); //两个按钮Label lblWin=new Label(" "); //这个label用来显示最后输赢信息的,先留空Checkbox ckbHB[]=new Checkbox[2]; //用来表明选择黑气或白棋先走的checkboxCheckboxGroup ckgHB=new CheckboxGroup(); //两个checkbox必须放在同一个checkboxgroup里才能做到单选public void init() //初始化 , 堆砌界面{setLayout(null); //不设布局管理器addMouseListener(this); //将本类作为鼠标事件的接口响应鼠标动作add(b1); //将事先定义好的第一个按钮添加入界面b1.setBounds(330,50,80,30); //设置第一个按钮左上角的位置和大小b1.addActionListener(this); //将本类作为按钮事件的接口响应按钮动作add(b2); //将事先定义好的第二个按钮添加进去b2.setBounds(330,90,80,30); /设置第二个按钮左上角的位置和大小b2.addActionListener(this); //将本类作为按钮事件的接口响应按钮动作ckbHB[0]=new Checkbox("白子先",ckgHB,false); //new一个checkboxckbHB[0].setBounds(320,20,60,30); //设置左上角位置和大小ckbHB[1]=new Checkbox("黑子先",ckgHB,false); //new第二个checkboxckbHB[1].setBounds(380,20,60,30); //设置左上角位置和大小add(ckbHB[0]); //将第一个checkbox加入界面add(ckbHB[1]); //将第二个checkbox加入界面ckbHB[0].addItemListener(this); //将本类作为其事件接口来响应选中动作ckbHB[1].addItemListener(this); //将本类作为其事件接口来响应选中动作add(lblWin); //将标签加入界面lblWin.setBounds(330,130,80,30); //设置标签的左上角位置和大小Game_start_csh(); //调用游戏初始化}public void itemStateChanged(ItemEvent e) //ItemListener接口中的方法,必须要有{if (ckbHB[0].getState()) //选择黑子先还是白子先{color_Qizi=0; //白棋先}else{color_Qizi=1; //黑棋先}}public void actionPerformed(ActionEvent e) //ActionListener接口中的方法 , 也是必须的{Graphics g=getGraphics(); //这句话貌似可以去掉,g是用来画图或者画界面的if (e.getSource()==b1) //如果动作的来源是第一个按钮{Game_start(); //游戏开始}else //否则{Game_re(); //游戏重新开始}}public void mousePressed(MouseEvent e){} //MouseListener接口中的方法,用不到所以留个空,但一定要有public void mouseClicked(MouseEvent e) //鼠标单击时{Graphics g=getGraphics(); //获得画笔int x1,y1;x1=e.getX(); //单击处的x坐标y1=e.getY(); //单击处的y坐标if (e.getX()20 || e.getX()300 || e.getY()20 || e.getY()300) //在棋盘范围之外{return; //则这是不能走棋的,直接返回}//下面这两个if和两个赋值的作用是将x和y坐标根据舍入原则修改成棋盘上格子的坐标if (x1 10){x1 =20;}if(y1 10){y1 =20;}x1=x1/20*20;y1=y1/20*20;set_Qizi(x1,y1); //在棋盘上画上一个棋子}public void mouseEntered(MouseEvent e){} //MouseListener接口中的方法,用不到所以留个空,但一定要有public void mouseExited(MouseEvent e){} //MouseListener接口中的方法,用不到所以留个空,但一定要有public void mouseReleased(MouseEvent e){} //MouseListener接口中的方法,用不到所以留个空,但一定要有public void mouseDragged(MouseEvent e){} //MouseListener接口中的方法 , 用不到所以留个空,但一定要有public void mouseMoved(MouseEvent e){} //MouseListener接口中的方法,用不到所以留个空 , 但一定要有public void paint(Graphics g) //重绘和applet程序装载的时候会调用这个绘制的过程{draw_qipan(g); //画棋盘}
【java五子棋代码结尾 java写五子棋】java五子棋代码结尾的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java写五子棋、java五子棋代码结尾的信息别忘了在本站进行查找喔 。

    推荐阅读