java五子棋游戏源代码汇总

java五子棋游戏源代码汇总


2024年1月22日发(作者:)

package ;

import ;

import ;

import cs;

import ssException;

import t;

import vent;

import istener;

import edImage;

import ;

import ption;

import O;

import ;

import nPane;

public class FiveChessFrame extends JFrame implements MouseListener,Runnable {

// 获取屏幕宽度

int width = aultToolkit().getScreenSize().width;

// 获取屏幕长度

int height = aultToolkit().getScreenSize().height;

// 背景图片

BufferedImage bgimage = null;

// 保存棋子坐标

int x = 0;

int y = 0;

// 保存之前下過的全部棋子的座標

// 其中數據內容 0 表示 這個點並沒有棋子,1 表示這個點是黑子,表示這個點是

白點

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;

2

int whiteTime=0;

//保存时间信息

String blackMessage="无限制";

String whiteMessage="无限制";

public FiveChessFrame() {

// 設置標題

le("五子棋");

// 設置窗體大小

e(500, 500);

// 設置窗體出現位置

ation((width - 500) / 2, (height - 500) / 2);

// 大小不可變

izable(false);

// 關閉

aultCloseOperation(_ON_CLOSE);

// 顯示

ible(true);

//将窗体加入监听器

seListener(this);

();

d();

//刷新屏幕,防止游戏打开时 无法显示。

t();

try {

bgimage = (new File("F:/"));

} catch (IOException e) {

// TODO Auto-generated catch block

tackTrace();

}

}

public void paint(Graphics g) {

//双缓冲技术 防止画面闪烁

BufferedImage bi=new BufferedImage(500, 500,_INT_ARGB );

Graphics g2=Graphics();

age(bgimage, 3, 22, this);

t(new Font("宋体", , 20));

or();

ring("游戏信息:"+message, 120, 60);

t(new Font("华文行楷", 0, 18));

// 设置时间界面

ring("黑方时间:"+blackMessage, 28, 470);

ring(" 白方时间:"+whiteMessage, 250, 470);

for (int i = 0; i < 19; i++) {

// 画棋盘线

ne(13, 72 + 20 * i, 373, 72 + 20 * i);

ne(13 + 20 * i, 72, 13 + 20 * i, 432);

}

// 标注点位

al(71, 130, 4, 4);

al(71, 370, 4, 4);

al(311, 130, 4, 4);

al(311, 370, 4, 4);

al(191, 250, 5, 5);

al(71, 250, 4, 4);

al(311, 250, 4, 4);

al(191, 130, 4, 4);

al(191, 370, 4, 4);

// 繪製棋子

/*

* x= (x-13)/20*20+10; y=(y-72)/20*20+70; al(x-4, y-4, 10,10);

*/

// 繪製全部棋子

for (int i = 0; i < 19; i++) {

for (int j = 0; j < 19; j++) {

if (allChess[i][j] == 1) {

// 黑子

int tempX = i * 20 + 13;

int tempY = j * 20 + 73;

al(tempX - 7, tempY - 7, 14, 14);

}

if (allChess[i][j] == 2) {

// 繪製白子

int tempX = i * 20 + 13;

int tempY = j * 20 + 73;

or();

al(tempX - 7, tempY - 7, 14, 14);

or();

al(tempX - 7, tempY - 7, 14, 14);

}

}

}

age(bi,0,0,this );

}

@Override

public void mouseClicked(MouseEvent e) {

// TODO Auto-generated method stub

}

@Override

public void mousePressed(MouseEvent e) {

// TODO Auto-generated method stub

// n("X:"+());

// n("Y:"+());

if (canPlay == true) {

x = ();

y = ();

if (x >= 13 && x <= 373 && y >= 73 && y <= 433) {

x = (x - 13) / 20;

y = (y - 72) / 20;

if (allChess[x][y] == 0) {

// 判断现在要下什么颜色的棋子

if (isBlack == true) {

allChess[x][y] = 1;

isBlack = false;

message="轮到白方";

} else {

allChess[x][y] = 2;

isBlack = true;

message="轮到黑方";

}

// 判断这个棋子是否和其他棋子连成五个,即游戏结束

boolean Winflag = in();

if (Winflag == true) {

ssageDialog(this, "游戏结束"

+ (allChess[x][y] == 1 ? "黑方" : " 白方") +

"获胜");

canPlay = false;

}

// in();

} else {

ssageDialog(this, " 当前位置已经有子,请重新落

子!");

}

t();

}

}

// n(()+"---"+());

//点击 开始按钮

if(()>=404&&()<=472&&()>=74&&()<=104){

int result=nfirmDialog(this, "是否重新开始游戏?");

if(result==0){

//现在重新开始游戏

//重新开始游戏所需的操作,1.把棋盘清空 allcChess 这个数组中的数全部

归零;

//2 将游戏信息设置为 初始位置;

// 3 将下一步器=棋设置为 黑方开始;

for (int i=0;i<19;i++){

for(int j=0;j<19;j++){

allChess[i][j]=0;

}

}

}

//另一种方式 allChess= new int [19][19];

message="黑色先行";

isBlack=true ;

blackTime=maxTime;

whiteTime=maxTime;

if(maxTime>0){

blackMessage=maxTime/3600+":"

+(maxTime/60-maxTime/3600*60)+":"

+(maxTime-maxTime/60*60);

whiteMessage=maxTime/3600+":"

+(maxTime/60-maxTime/3600*60)+":"

+(maxTime-maxTime/60*60);

();

}else{

blackMessage="无限制";

whiteMessage="无限制";

}

t();

}

// 点击游戏设置

if(()>=404&&()<=472&&()>=124&&()<=154){

String input=putDialog("请输入游戏最大时间,(单位:分

钟),如果输入0,表示时间为无限制!");

try {

maxTime=nt(input)*60;

if(maxTime<0){

ssageDialog(this, "请输入正确信息,不允许

输入负数!");

}

if(maxTime==0){

int result= nfirmDialog(this, "设置完成,是否

重新开始游戏?");

"设置完成,

是否重新开始游戏?");

if(result==0){

for (int i=0;i<19;i++){

for(int j=0;j<19;j++){

allChess[i][j]=0;

}

}

//另一种方式 allChess= new int [19][19];

message="黑色先行";

isBlack=true ;

blackTime=maxTime;

whiteTime=maxTime;

blackMessage="无限制";

whiteMessage="无限制";

t();

}

}

if(maxTime>0){

int result= nfirmDialog(this,

if(result==0){

for (int i=0;i<19;i++){

for(int j=0;j<19;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);

();

输入负数!");

}

if(maxTime==0){

完成,是否

重新开始游戏?");

"设置完成,

是否重新开始游戏?");

int result= nfirmDialog(this, "设置 if(result==0){

for (int i=0;i<19;i++){

for(int j=0;j<19;j++){

allChess[i][j]=0;

}

}

//另一种方式 allChess= new int [19][19];

message="黑色先行";

isBlack=true ;

blackTime=maxTime;

whiteTime=maxTime;

blackMessage="无限制";

whiteMessage="无限制";

t();

}

}

if(maxTime>0){

int result= nfirmDialog(this,

if(result==0){

for (int i=0;i<19;i++){

for(int j=0;j<19;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);

();

int color = allChess[x][y];

/*

y 值

是否相同

* if (color == allChess[x + 1][y]) { count++; if (color == allChess[x +

* 2][y]) { count++; if (color == allChess[x + 3][y]) { count++; } } }

*/

// 通过循环未做棋子相连的判断

// 判断横向是否有5 个棋子相连,特点是 横纵坐标相同,即allChess[x][y] 中/*

* int i = 1; while (color == allChess[x + i][y]) { count++; i++; } i =

* 1; while (color == allChess[x - i][y]) ; { count++; i++; } if (count

* >= 5) { flag = true; }

*/

/*

* //縱方向的 int i2= 1; int count2=1; while (color == allChess[x][y+i2]){

* count2++; i2++; } i2=1; while (color==allChess[x][y-i2]);{ count2++;

* i2++; } if(count2>=5){ flag=true; } //判斷斜右上的左下 int i3= 1; int count3

* =1; while (color == allChess[x+i][y-i]){ count3++; i3++; } i3=1;

* while (color==allChess[x-i][y+i]);{ count3++; i3++; } if(count3>=5){

* flag=true; } //斜下左上右下 int i4= 1; int count4 =1; while (color ==

* allChess[x+i][y+i]){ count4++; i4++; } i4=1; while

* (color==allChess[x-i][y-i]);{ count4++; i4++; } if(count4>=5){

* flag=true; }

*/

// 判斷橫向

count = hess(1, 0, color);

if (count >= 5) {

flag = true;

} else {

// 判斷縱向

count = hess(0, 1, color);

if (count >= 5) {

flag = true;

} else {

// 判斷右上、左下

count = hess(1, -1, color);

if (count >= 5) {

flag = true;

} else {

// 判斷右下、左上

count = hess(1, 1, color);

if (count >= 5) {

flag = true;

}

}

}

}

return flag;

}

private int checkChess(int xChange, int yChange, int color) {

int count = 1;

int tempX = xChange;

int tempY = yChange;

while (x+xChange>=0&&x+xChange<=18&&y+yChange>=0&&y+yChange<=18&&

color == allChess[x + xChange][y + yChange]) {

count++;

if (xChange != 0)

xChange++;

if (yChange != 0){

if(yChange>0)

yChange++;

else{

yChange--;

}

}

}

xChange = tempX;

yChange = tempY;

while (x-xChange>=0&&x- xChange <= 18&&y

- yChange>= 0&&y-

yChange<=18&&

color == allChess[x - xChange][y - yChange]) {

count++;

if (xChange != 0)

xChange++;

if (yChange != 0){

if(yChange>0)

yChange++;

else{

yChange--;

}

}

}

return count;

}

@Override

public void mouseEntered(MouseEvent e) {

// TODO Auto-generated method stub

}

@Override

public void mouseExited(MouseEvent e) {

// TODO Auto-generated method stub

}

@Override

public void run() {

// TODO Auto-generated method stub

//判断是否有时间限制

if(maxTime>0){

while(true){

if(isBlack){

blackTime--;

if(blackTime==0){

ssageDialog(this, "黑方超時,游戏结束");

}

} else{

whiteTime--;

if(whiteTime==0){

ssageDialog(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);

t();

try {

(1000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

tackTrace();

}

// n(blackTime+"--"+whiteTime);

}

}

}

public static void main(String[] args) {

FiveChessFrame ff= new FiveChessFrame();

}

}

下面是一小段测试代码

package ;

import ;

import ;

import cs;

import t;

import vent;

import istener;

import edImage;

import ;

import ption;

import O;

import ;

public class Mychessframe extends JFrame implements MouseListener{

public Mychessframe(){

JFrame fr=new JFrame();

e(500, 500);

le("五子棋");

izable(false);

aultCloseOperation(_ON_CLOSE);

int width=aultToolkit().getScreenSize().width;

int height=aultToolkit().getScreenSize().height;

// n(width);

// n(height);

ation((width- 500)/2, (height-500)/2 );

seListener(this);

ible(true);

}

public void paint(Graphics g){

/*ring("五子棋游戏",40,40);*/

/*al(30,39,40,40);

al(100,40, 40,40);

*/

// ct(30,40,30,30);

// ct(70, 40,30,30);

// ne(30,80,30,20);

BufferedImage image= null;

try {

image=(new File("F:/") );

} catch (IOException e) {

// TODO Auto-generated catch block

tackTrace();

}

age(image,2,22,this);

ct(30,40,30,30);

ct(70, 40,30,30);

or();

t(new Font("宋体", 40,40));

ring("五子棋游戏",40,100);

}

@Override

public void mouseClicked(MouseEvent e) {

// TODO Auto-generated method stub

// n(" 鼠标点击");

// ssageDialog(this," 鼠标点击");

}

@Override

public void mousePressed(MouseEvent e) {

// TODO Auto-generated method stub

// n(" 鼠标按下");

// ssageDialog(this," 鼠标按下");

// n(" 鼠标点击位置X"+());

// n(" 鼠标点击位置Y"+());

}

@Override

public void mouseReleased(MouseEvent e) {

// TODO Auto-generated method stub

// n(" 鼠标松开");

// ssageDialog(this," 鼠标松开");

}

@Override

public void mouseEntered(MouseEvent e) {

// TODO Auto-generated method stub

// n(" 鼠标进入");

// ssageDialog(this," 鼠标进入");

}

@Override

public void mouseExited(MouseEvent e) {

// TODO Auto-generated method stub

// n(" 鼠标离开");

// ssageDialog(this," 鼠标离开");

}

FiveChessFrame ff= new FiveChessFrame();

}


发布者:admin,转转请注明出处:http://www.yc00.com/news/1705915353a1428012.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信