java GUI实现五子棋游戏
本文实例为大家分享了java实现五子棋游戏GUI,供大家参考,具体内容如下
引用包
//{CynthiaZhang}
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.border.LineBorder;
importjavax.swing.JOptionPane;
importjavax.swing.ImageIcon;
importjava.awt.Image;
importcom.sun.image.codec.jpeg.*;
前期预设
//extendsJApplet{
//Indicatewhichplayerhasaturn,initiallyitistheXplayer
privatecharwhoseTurn='X';
finalintSIZE=15;
staticbooleanISOVER=false;
//Createandinitializecells
privatefinalCell[][]cell=newCell[SIZE][SIZE];
//Createandinitializeastatuslabel
privatefinalJLabeljlblStatus=newJLabel("X'sturntoplay",JLabel.CENTER);
设置背景板
//InitializeUI
@Override
publicvoidinit(){
//Panelptoholdcells
JPanelp=newJPanel();
p.setLayout(newGridLayout(SIZE,SIZE,0,0));
for(inti=0;i
主要框架段落
//Thismainmethodenablestheapplettorunasanapplication
publicstaticvoidmain(String[]args){
//Createaframe
JFrameframe=newJFrame("TicTacToe");
//Createaninstanceoftheapplet
Homework8applet=newHomework8();
//Addtheappletinstancetotheframe
frame.getContentPane().add(applet,BorderLayout.CENTER);
//Invokeinit()andstart()
applet.init();
applet.start();
//Displaytheframe
frame.setSize(600,600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
判断是否满了
//Determineifthecellsarealloccupied
publicbooleanisFull(){
for(inti=0;i
判断是否赢了
和八皇后有点像,可以考虑那种数组优化四个方向,这里比较懒
//Determineiftheplayerwiththespecifiedtokenwins
publicbooleanisWon(chartoken){
intwinNum=5;//definethemaxnumforarule
for(intindexX=0;indexX=0){
booleanflag=true;
for(intx=indexX,y=indexY;x
设置棋子
//Aninnerclassforacell
publicclassCellextendsJPanelimplementsMouseListener{
//Tokenusedforthiscell
privatechartoken='';
publicCell(){
setBorder(newLineBorder(Color.black,1));//Setcell'sborder
addMouseListener(this);//Registerlistener
}
//Thegettermethodfortoken
publicchargetToken(){
returntoken;
}
//Thesettermethodfortoken
publicvoidsetToken(charc){
token=c;
repaint();
}
导入图片
//Paintthecell
@Override
publicvoidpaintComponent(Graphicsg){
if(token=='X'){
ImageIconicon=newImageIcon("C:\\Users\\Lenovo\\Desktop\\Black.png");
Imageimage=icon.getImage();
g.drawImage(image,0,0,35,35,this);
}elseif(token=='O'){
ImageIconicon=newImageIcon("C:\\Users\\Lenovo\\Desktop\\White.png");
Imageimage=icon.getImage();
g.drawImage(image,0,0,35,35,this);
}
super.paintComponents(g);
}
游戏结束的锁定与弹窗
//Handlemouseclickonacell
@Override
publicvoidmouseClicked(MouseEvente){
if(ISOVER)return;//ifgameisover,anyissueshouldbeforbidden
intresponse=-1;
if(token=='')//Ifcellisnotoccupied
{
if(whoseTurn=='X')//IfitistheXplayer'sturn
{
setToken('X');//Settokeninthecell
whoseTurn='O';//Changetheturn
jlblStatus.setText("TheWhite'sTurn");//Displaystatus
if(isWon('X')){
jlblStatus.setText("TheBlackWon!TheGameIsOver!");
response=JOptionPane.showConfirmDialog(null,"TheBlackWon!TheGameIsOver!\n"
+"Doyouwanttoquit?","提示",JOptionPane.YES_NO_OPTION);
ISOVER=true;
if(response==0)System.exit(0);//choose"Yes"thanquit;
}
}elseif(whoseTurn=='O')//IfitistheOplayer'sturn
{
setToken('O');//Settokeninthecell
whoseTurn='X';//Changetheturn
jlblStatus.setText("TheBlack'sTurn");//Displaystatus
if(isWon('O')){
jlblStatus.setText("TheWhiteWon!TheGameIsOver!");
response=JOptionPane.showConfirmDialog(null,"TheWhiteWon!TheGameIsOver!\n"
+"Doyouwanttoquit?","提示",JOptionPane.YES_NO_OPTION);
ISOVER=true;
if(response==0)System.exit(0);//choose"Yes"thanquit;
}
}
if(isFull()){
jlblStatus.setText("PlainGame!TheGameIsOver!");
response=JOptionPane.showConfirmDialog(null,"PlainGame!TheGameIsOver!\n"
+"Doyouwanttoquit?","提示",JOptionPane.YES_NO_OPTION);
ISOVER=true;
if(response==0)System.exit(0);//choose"Yes"thanquit;
}
}
}
其他棋子信息
@Override
publicvoidmousePressed(MouseEvente){
//TODO:implementthisjava.awt.event.MouseListenermethod;
}
@Override
publicvoidmouseReleased(MouseEvente){
//TODO:implementthisjava.awt.event.MouseListenermethod;
}
@Override
publicvoidmouseEntered(MouseEvente){
//TODO:implementthisjava.awt.event.MouseListenermethod;
}
@Override
publicvoidmouseExited(MouseEvente){
//TODO:implementthisjava.awt.event.MouseListenermethod;
}
}
}
图片显示
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。