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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。