java五子棋游戏源代码J2SE.docx
- 文档编号:2257925
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:18
- 大小:19.90KB
java五子棋游戏源代码J2SE.docx
《java五子棋游戏源代码J2SE.docx》由会员分享,可在线阅读,更多相关《java五子棋游戏源代码J2SE.docx(18页珍藏版)》请在冰豆网上搜索。
java五子棋游戏源代码J2SE
packagegame.frame;
importjava.awt.Color;
importjava.awt.Font;
importjava.awt.Graphics;
importjava.awt.HeadlessException;
importjava.awt.Toolkit;
importjava.awt.event.MouseEvent;
importjava.awt.event.MouseListener;
importjava.awt.image.BufferedImage;
importjava.io.File;
importjava.io.IOException;
importjavax.imageio.ImageIO;
importjavax.swing.JFrame;
importjavax.swing.JOptionPane;
publicclassFiveChessFrameextendsJFrameimplementsMouseListener,Runnable{
//获取屏幕宽度
intwidth=Toolkit.getDefaultToolkit().getScreenSize().width;
//获取屏幕长度
intheight=Toolkit.getDefaultToolkit().getScreenSize().height;
//背景图片
BufferedImagebgimage=null;
//保存棋子坐标
intx=0;
inty=0;
//保存之前下過的全部棋子的座標
//其中數據內容0表示這個點並沒有棋子,1表示這個點是黑子,2表示這個點是白點
int[][]allChess=newint[19][19];
//标示当前是黑棋
booleanisBlack=true;
//标识当前游戏是否可以继续
booleancanPlay=true;
//提示信息
Stringmessage="黑方先行";
//保存最多拥有时间(秒)
intmaxTime=0;
//做倒计时的线程类
Threadt=newThread(this);
//保存黑白与白方的剩余时间
intblackTime=0;
intwhiteTime=0;
//保存时间信息
StringblackMessage="无限制";
StringwhiteMessage="无限制";
publicFiveChessFrame(){
//設置標題
this.setTitle("五子棋");
//設置窗體大小
this.setSize(500,500);
//設置窗體出現位置
this.setLocation((width-500)/2,(height-500)/2);
//大小不可變
this.setResizable(false);
//關閉
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//顯示
this.setVisible(true);
//将窗体加入监听器
this.addMouseListener(this);
t.start();
t.suspend();
//刷新屏幕,防止游戏打开时无法显示。
this.repaint();
try{
bgimage=ImageIO.read(newFile("F:
/background.jpg"));
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
publicvoidpaint(Graphicsg){
//双缓冲技术防止画面闪烁
BufferedImagebi=newBufferedImage(500,500,BufferedImage.TYPE_INT_ARGB);
Graphicsg2=bi.createGraphics();
g2.drawImage(bgimage,3,22,this);
g2.setFont(newFont("宋体",Font.BOLD,20));
g2.setColor(Color.black);
g2.drawString("游戏信息:
"+message,120,60);
g2.setFont(newFont("华文行楷",0,18));
//设置时间界面
g2.drawString("黑方时间:
"+blackMessage,28,470);
g2.drawString("白方时间:
"+whiteMessage,250,470);
for(inti=0;i<19;i++){
//画棋盘线
g2.drawLine(13,72+20*i,373,72+20*i);
g2.drawLine(13+20*i,72,13+20*i,432);
}
//标注点位
g2.fillOval(71,130,4,4);
g2.fillOval(71,370,4,4);
g2.fillOval(311,130,4,4);
g2.fillOval(311,370,4,4);
g2.fillOval(191,250,5,5);
g2.fillOval(71,250,4,4);
g2.fillOval(311,250,4,4);
g2.fillOval(191,130,4,4);
g2.fillOval(191,370,4,4);
//繪製棋子
/*
*x=(x-13)/20*20+10;y=(y-72)/20*20+70;g.fillOval(x-4,y-4,10,10);
*/
//繪製全部棋子
for(inti=0;i<19;i++){
for(intj=0;j<19;j++){
if(allChess[i][j]==1){
//黑子
inttempX=i*20+13;
inttempY=j*20+73;
g2.fillOval(tempX-7,tempY-7,14,14);
}
if(allChess[i][j]==2){
//繪製白子
inttempX=i*20+13;
inttempY=j*20+73;
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);
}
@Override
publicvoidmouseClicked(MouseEvente){
//TODOAuto-generatedmethodstub
}
@Override
publicvoidmousePressed(MouseEvente){
//TODOAuto-generatedmethodstub
//System.out.println("X:
"+e.getX());
//System.out.println("Y:
"+e.getY());
if(canPlay==true){
x=e.getX();
y=e.getY();
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="轮到黑方";
}
//判断这个棋子是否和其他棋子连成五个,即游戏结束
booleanWinflag=this.checkWin();
if(Winflag==true){
JOptionPane.showMessageDialog(this,"游戏结束"
+(allChess[x][y]==1?
"黑方":
"白方")+"获胜");
canPlay=false;
}
//this.checkWin();
}else{
JOptionPane.showMessageDialog(this,"当前位置已经有子,请重新落子!
");
}
this.repaint();
}
}
//System.out.println(e.getX()+"---"+e.getY());
//点击开始按钮
if(e.getX()>=404&&e.getX()<=472&&e.getY()>=74&&e.getY()<=104){
intresult=JOptionPane.showConfirmDialog(this,"是否重新开始游戏?
");
if(result==0){
//现在重新开始游戏
//重新开始游戏所需的操作,1.把棋盘清空allcChess这个数组中的数全部归零;
//2将游戏信息设置为初始位置;
//3将下一步器=棋设置为黑方开始;
for(inti=0;i<19;i++){
for(intj=0;j<19;j++){
allChess[i][j]=0;
}
}
}
//另一种方式allChess=newint[19][19];
message="黑色先行";
isBlack=true;
blackTime=maxTime;
whiteTime=maxTime;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 五子棋 游戏 源代码 J2SE