Java编程五子棋游戏源代码.doc
《Java编程五子棋游戏源代码.doc》由会员分享,可在线阅读,更多相关《Java编程五子棋游戏源代码.doc(34页珍藏版)》请在冰豆网上搜索。
![Java编程五子棋游戏源代码.doc](https://file1.bdocx.com/fileroot1/2022-10/7/4ebdaeb9-ed26-42a7-971d-b2b51ef37510/4ebdaeb9-ed26-42a7-971d-b2b51ef375101.gif)
//Java编程:
五子棋游戏源代码
importjava.awt.*;
importjava.awt.event.*;
importjava.applet.*;
importjavax.swing.*;
importjava.io.PrintStream;
importjavax.swing.JComponent;
importjavax.swing.JPanel;
/*
*main方法创建了ChessFrame类的一个实例对象(cf),
*并启动屏幕显示显示该实例对象。
**/
publicclassFiveChessAppletDemo{
publicstaticvoidmain(Stringargs[]){
ChessFramecf=newChessFrame();
cf.show();
}
}
/*
*类ChessFrame主要功能是创建五子棋游戏主窗体和菜单
**/
classChessFrameextendsJFrameimplementsActionListener{
privateString[]strsize={"20x15","30x20","40x30"};
privateString[]strmode={"人机对弈","人人对弈"};
publicstaticbooleaniscomputer=true,checkcomputer=true;
privateintwidth,height;
privateChessModelcm;
privateMainPanelmp;
//构造五子棋游戏的主窗体
publicChessFrame(){
this.setTitle("五子棋游戏");
cm=newChessModel
(1);
mp=newMainPanel(cm);
Containercon=this.getContentPane();
con.add(mp,"Center");
this.setResizable(false);
this.addWindowListener(newChessWindowEvent());
MapSize(20,15);
JMenuBarmbar=newJMenuBar();
this.setJMenuBar(mbar);
JMenugameMenu=newJMenu("游戏");
mbar.add(makeMenu(gameMenu,newObject[]{
"开局","棋盘","模式",null,"退出"
},this));
JMenulookMenu=newJMenu("视图");
mbar.add(makeMenu(lookMenu,newObject[]{
"Metal","Motif","Windows"
},this));
JMenuhelpMenu=newJMenu("帮助");
mbar.add(makeMenu(helpMenu,newObject[]{
"关于"
},this));
}
//构造五子棋游戏的主菜单
publicJMenumakeMenu(Objectparent,Objectitems[],Objecttarget){
JMenum=null;
if(parentinstanceofJMenu)
m=(JMenu)parent;
elseif(parentinstanceofString)
m=newJMenu((String)parent);
else
returnnull;
for(inti=0;iif(items[i]==null)
m.addSeparator();
elseif(items[i]=="棋盘"){
JMenujm=newJMenu("棋盘");
ButtonGroupgroup=newButtonGroup();
JRadioButtonMenuItemrmenu;
for(intj=0;jrmenu=makeRadioButtonMenuItem(strsize[j],target);
if(j==0)
rmenu.setSelected(true);
jm.add(rmenu);
group.add(rmenu);
}
m.add(jm);
}elseif(items[i]=="模式"){
JMenujm=newJMenu("模式");
ButtonGroupgroup=newButtonGroup();
JRadioButtonMenuItemrmenu;
for(inth=0;hrmenu=makeRadioButtonMenuItem(strmode[h],target);
if(h==0)
rmenu.setSelected(true);
jm.add(rmenu);
group.add(rmenu);
}
m.add(jm);
}else
m.add(makeMenuItem(items[i],target));
returnm;
}
//构造五子棋游戏的菜单项
publicJMenuItemmakeMenuItem(Objectitem,Objecttarget){
JMenuItemr=null;
if(iteminstanceofString)
r=newJMenuItem((String)item);
elseif(iteminstanceofJMenuItem)
r=(JMenuItem)item;
else
returnnull;
if(targetinstanceofActionListener)
r.addActionListener((ActionListener)target);
returnr;
}
//构造五子棋游戏的单选按钮式菜单项
publicJRadioButtonMenuItemmakeRadioButtonMenuItem(
Objectitem,Objecttarget){
JRadioButtonMenuItemr=null;
if(iteminstanceofString)
r=newJRadioButtonMenuItem((String)item);
elseif(iteminstanceofJRadioButtonMenuItem)
r=(JRadioButtonMenuItem)item;
else
returnnull;
if(targetinstanceofActionListener)
r.addActionListener((ActionListener)target);
returnr;
}
publicvoidMapSize(intw,inth){
setSize(w*20+50,h*20+100);
if(this.checkcomputer)
this.iscomputer=true;
else
this.iscomputer=false;
mp.setModel(cm);
mp.repaint();
}
publicbooleangetiscomputer(){
returnthis.iscomputer;
}
publicvoidrestart(){
intmodeChess=cm.getModeChess();
if(modeChess<=3&&modeChess>=1){
cm=newChessModel(modeChess);
MapSize(cm.getWidth(),cm.getHeight());
}else{
System.out.println("\u81EA\u5B9A\u4E49");
}
}
publicvoidactionPerformed(ActionEvente){
Stringarg=e.getActionCommand();
try{
if(arg.equals("Windows"))
UIManager.setLookAndFeel(
"com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
elseif(arg.equals("Motif"))
UIManager.setLookAndFeel(
"com.sun.java.swing.plaf.motif.MotifLookAndFeel");
else
UIManager.setLookAndFeel(
"javax.swing.plaf.metal.MetalLookAndFeel");
SwingUtilities.updateComponentTreeUI(this);
}catch(Exceptionee){}
if(arg.equals("20x15")){
this.width=20;
this.height=15;
cm=newChessModel(1