⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 enterapplet.java

📁 JAVA APPLET 五子棋游戏,JAVA编写,JBUILDER编译通过
💻 JAVA
字号:
package mychess;import java.awt.*;import java.awt.event.*;import java.applet.*;import java.awt.*;import java.awt.event.*;import java.awt.Graphics;import java.awt.event.MouseListener;import java.awt.event.WindowListener;import java.awt.event.MouseEvent;import java.awt.event.WindowEvent;public class enterapplet extends Applet{  public enterapplet() {  }  public void init() {    try {      jbInit();    }    catch(Exception e) {      e.printStackTrace();    }  }private void jbInit() throws Exception {chessframe frame=new chessframe();frame.setLocation(150,50);frame.show();}}class chessframe extends Frame implements MouseListener,WindowListener{int startx,starty,gridsize,mapsize;int chess[][];//记录棋盘数据Graphics myg;boolean playable=false;//判断游戏是否可玩。结束游戏后不许玩boolean nowinner=false;//判断游戏结束时是否有人胜出int count;//计步器.起始值1。奇数黑方下,赋值1,偶数白方下赋值2;//绘制棋盘的起始坐标(startx,starty),棋盘格子大小(50像素),棋盘大小(8*8格)//Image up,down,black,white,computer;Menu m2;Label lbb;  public chessframe() {    try {      jbInit();    }    catch(Exception e) {      e.printStackTrace();    }  }private void jbInit() throws Exception {this.setSize(340,420);this.setTitle("欢迎进入五子棋游戏!:-)");this.setBackground(Color.getHSBColor(12,23,34));this.setResizable(false);this.addMouseListener(this);this.addWindowListener(this);MenuBar md=new MenuBar();this.setMenuBar(md);Menu m=new Menu("游戏操作",true);md.add(m);MenuItem mm=new MenuItem("开始新游戏");m.add(mm);MenuItem mmx=new MenuItem("结束游戏");m.add(mmx);MenuItem mmm=new MenuItem("退出");m.add(mmm);m2=new Menu("设置棋盘",true);md.add(m2);MenuItem m21=new MenuItem("5x5");m2.add(m21);m21=new MenuItem("6x6");m2.add(m21);m21=new MenuItem("7x7");m2.add(m21);m21=new MenuItem("8x8");m2.add(m21);m21=new MenuItem("9x9");m2.add(m21);m21=new MenuItem("10x10");m2.add(m21);m21=new MenuItem("11x11");m2.add(m21);m21=new MenuItem("12x12");m2.add(m21);m21=new MenuItem("13x13");m2.add(m21);m21=new MenuItem("14x14");m2.add(m21);m21=new MenuItem("15x15");m2.add(m21);Menu m3=new Menu("关于",true);md.add(m3);MenuItem mm2=new MenuItem("游戏说明");m3.add(mm2);MenuItem mmm2=new MenuItem("关于作者");m3.add(mmm2);lbb=new Label("请你点击“游戏操作—开始新游戏!”");lbb.reshape(0,60,200,20);startx=10;starty=70;gridsize=40;mapsize=8;chess=new int[17][17];count=1;}public void paint(Graphics g){//Graphics2D g=(Graphics2D)gg;int i,j;g.setColor(Color.blue);for(i=0;i<=mapsize;i++)g.drawLine(startx,starty+gridsize*i,startx+gridsize*mapsize,starty+gridsize*i);for(i=0;i<=mapsize;i++)g.drawLine(startx+gridsize*i,starty,startx+gridsize*i,starty+gridsize*mapsize);for(i=1;i<=mapsize;i++) for(j=1;j<=mapsize;j++){ if(chess[i][j]==1){g.setColor(Color.black);//GradientPaint gradient=new GradientPaint(startx+(j-1)*gridsize+5,starty+(i-1)*gridsize+5,Color.black,startx+(j-1)*gridsize+35,starty+(i-1)*gridsize+35,Color.cyan,true); //g.setPaint(gradient); g.fillArc(startx+(j-1)*gridsize+5,starty+(i-1)*gridsize+5,gridsize-10,gridsize-10,0,360); } else if(chess[i][j]==2){ g.setColor(Color.blue);//g.setColor(new Color(160, 199, 255)); //GradientPaint gradient=new GradientPaint(startx+(j-1)*gridsize+5,starty+(i-1)*gridsize+5,Color.white,startx+(j-1)*gridsize+35,starty+(i-1)*gridsize+35,Color.pink,true);// g.setPaint(gradient); g.fillArc(startx+(j-1)*gridsize+5,starty+(i-1)*gridsize+5,gridsize-10,gridsize-10,0,360); }  }if(count%2==0){g.setColor(Color.blue); g.drawString("该蓝方下了!",10,70);}else {g.setColor(Color.black); g.drawString("该黑方下了!",size().width-70,70);}}public int judge(int i,int j,int pp){//判断五个棋子是否在一条直线上。(i:行;j:列。)//首先判断是否6个棋子在一条直线上,返回-1;然后判断是否5个棋子在一条直线上,返回1;//然后判断是否双三,返回-2;最后判断其他情况,返回0int x,y,l=0,r=0,u=0,d=0,lu=0,ld=0,ru=0,rd=0; for(x=i,y=j;;)  //judge left {y-=1;  if(y==0||chess[x][y]!=pp) break;  l+=1;} for(x=i,y=j;;)  //judge right {y+=1;  if(y==mapsize+1||chess[x][y]!=pp) break;  r+=1;} for(x=i,y=j;;)  //judge up {x-=1;  if(x==0||chess[x][y]!=pp) break;  u+=1;} for(x=i,y=j;;)  //judge down {x+=1;  if(x==mapsize+1||chess[x][y]!=pp) break;  d+=1;} for(x=i,y=j;;)  //judge leftup {x-=1;y-=1;  if(x==0||y==0||chess[x][y]!=pp) break;  lu+=1;} for(x=i,y=j;;)  //judge rightdown {x+=1;y+=1;  if(x==mapsize+1||y==11||chess[x][y]!=pp) break;  rd+=1;} for(x=i,y=j;;)  //judge leftdown {x+=1;y-=1;  if(x==mapsize+1||y==0||chess[x][y]!=pp) break;  ld+=1;} for(x=i,y=j;;)  //judge rightup {x-=1;y+=1;  if(x==0||y==11||chess[x][y]!=pp) break;  ru+=1;} if((r+l==4)||(u+d==4)||(lu+rd==4)||(ld+ru==4)) return(1); if((r+l>4)||(u+d>4)||(lu+rd>4)||(ld+ru>4))return(-1); //six in a row    //two three_in_a_row if((l+r==2)&&(u+d==2||lu+rd==2||ru+ld==2)) return(-2); if((u+d==2)&&(lu+rd==2||ld+ru==2)) return(-2); if((lu+rd==2)&&(ru+ld==2)) return(-2); return(0);}public boolean action(Event e,Object o){if(e.target instanceof MenuItem){ if((String)o=="5x5"){  mapsize=5;this.setSize(20+mapsize*gridsize,100+mapsize*gridsize);repaint();}if((String)o=="6x6"){  mapsize=6;this.setSize(20+mapsize*gridsize,100+mapsize*gridsize);repaint();}  if((String)o=="7x7"){  mapsize=7;this.setSize(20+mapsize*gridsize,100+mapsize*gridsize);repaint();}  if((String)o=="8x8"){  mapsize=8;this.setSize(20+mapsize*gridsize,100+mapsize*gridsize);repaint();}  if((String)o=="9x9"){  mapsize=9;this.setSize(20+mapsize*gridsize,100+mapsize*gridsize);repaint();}  if((String)o=="10x10"){  mapsize=10;this.setSize(20+mapsize*gridsize,100+mapsize*gridsize);repaint();}  if((String)o=="11x11"){  mapsize=11;this.setSize(20+mapsize*gridsize,100+mapsize*gridsize);repaint();}  if((String)o=="12x12"){  mapsize=12;this.setSize(20+mapsize*gridsize,100+mapsize*gridsize);repaint();}  if((String)o=="13x13"){  mapsize=13;this.setSize(20+mapsize*gridsize,100+mapsize*gridsize);repaint();}  if((String)o=="14x14"){  mapsize=14;this.setSize(20+mapsize*gridsize,100+mapsize*gridsize);repaint();}  if((String)o=="15x15"){  mapsize=15;this.setSize(20+mapsize*gridsize,100+mapsize*gridsize);repaint();} if((String)o=="开始新游戏"){ playable=true;m2.disable();remove(lbb); for(int i=0;i<=mapsize;i++)  for(int j=0;j<=mapsize;j++)chess[i][j]=0;count=1;repaint();}  if((String)o=="结束游戏"){ playable=false;  m2.enable(); for(int i=0;i<=mapsize;i++)  for(int j=0;j<=mapsize;j++)chess[i][j]=0;count=1;repaint();} if((String)o=="退出"){ exitdialog info=new exitdialog(this,"退出信息"); info.setLocation(300,200); info.show(); } if((String)o=="游戏说明"){ aboutgamedialog info=new aboutgamedialog(this,"About the game"); info.setLocation(300,200);info.show();} if((String)o=="关于作者"){ aboutmedialog info=new aboutmedialog(this,"About Me"); info.setLocation(300,200);info.show();} //System.out.print((String)o+"\n"); }return true;}public void mousePressed(MouseEvent e) {int x,y;if(playable){remove(lbb);x=e.getPoint().y;y=e.getPoint().x;x=(x-starty)/gridsize+1;y=(y-startx)/gridsize+1;//System.out.print("x="+x+",y="+y+"\n");if((x>0&&x<=mapsize)&&(y>0&&y<=mapsize)){if(chess[x][y]==0){ chess[x][y]=(count%2==1)?1:2;count+=1; repaint();}if(judge(x,y,(count%2==1)?2:1)==1){playable=false;nowinner=false;gameoverdialog info=new gameoverdialog(this,"Game Over!");info.setLocation(300,200);info.show();}if(count>mapsize*mapsize&&judge(x,y,(count%2==1)?2:1)!=1){playable=false;nowinner=true;gameoverdialog info=new gameoverdialog(this,"Game Over!");info.setLocation(300,200);info.show();}}}else {add(lbb);}}public  void mouseReleased(MouseEvent e) {}public  void mouseClicked(MouseEvent e) {}public  void mouseExited(MouseEvent e) {}public  void mouseEntered(MouseEvent e) {}public void windowDeactivated(WindowEvent e){}public void windowActivated(WindowEvent e){}public void windowDeiconified(WindowEvent e){}public void windowIconified(WindowEvent e){}public void windowClosed(WindowEvent e){}public void windowClosing(WindowEvent e){exitdialog info=new exitdialog(this,"退出信息");info.setLocation(300,200); info.show();}public void windowOpened(WindowEvent e){}}////////////////////////exitdialog////////////////////////////////////////class exitdialog extends Dialog{chessframe parent;Button ok,cancel;exitdialog(Frame frame,String title){super(frame,title,true);parent=(chessframe)frame;this.setSize(150,120);this.setResizable(false);this.setLayout(new FlowLayout());Label lb=new Label("确定要退出游戏吗?");add(lb);ok=new Button("确定");add(ok);cancel=new Button("取消");add(cancel);}public boolean action(Event e,Object o){if(e.target==ok){parent.dispose();}if(e.target==cancel){this.dispose();}return true;}public boolean handleEvent(Event e){if(e.id==Event.WINDOW_DESTROY)this.dispose();return super.handleEvent(e);}}////////////////////////about me////////////////////////////////////////class aboutmedialog extends Dialog{chessframe parent;aboutmedialog(Frame frame,String title){super(frame,title,true);parent=(chessframe)frame;this.setSize(200,220);this.setResizable(false);this.setLayout(new FlowLayout(FlowLayout.LEADING));Label lb=new Label("My name:胡桂林");add(lb);lb=new Label("My stuID:99381008");add(lb);lb=new Label("My Depart:电子学系99级");add(lb);lb=new Label("My Tel:010-62205830");add(lb);lb=new Label("My E-mail:hills_water@163.com");add(lb);}public boolean action(Event e,Object o){this.dispose();return true;}public boolean handleEvent(Event e){if(e.id==Event.WINDOW_DESTROY)this.dispose();return super.handleEvent(e);}}////////////////////////about game////////////////////////////////////////class aboutgamedialog extends Dialog{chessframe parent;aboutgamedialog(Frame frame,String title){super(frame,title,true);parent=(chessframe)frame;this.setSize(220,170);this.setResizable(false);this.setLayout(new FlowLayout(FlowLayout.CENTER));Label lb=new Label("游戏规则");add(lb);lb=new Label("先将己方五个棋子连续摆成一条");add(lb);lb=new Label("直线的一方胜出,无其他限制。");add(lb);}public boolean action(Event e,Object o){this.dispose();return true;}public boolean handleEvent(Event e){if(e.id==Event.WINDOW_DESTROY)this.dispose();return super.handleEvent(e);}}////////////////////////gameover////////////////////////////////////////class gameoverdialog extends Dialog{chessframe parent;gameoverdialog(Frame frame,String title){super(frame,title,true);parent=(chessframe)frame;this.setSize(220,100);this.setResizable(false);this.setLayout(new FlowLayout(FlowLayout.CENTER));if(parent.nowinner==false){String str=(parent.count%2==0)?"黑":"蓝";Label lb=new Label(str+"方胜出,恭喜你!");add(lb);}if(parent.nowinner){Label lb=new Label("对不起,无人胜出,继续努力呦!");add(lb);}parent.m2.enable();}public boolean action(Event e,Object o){this.dispose();return true;}public boolean handleEvent(Event e){if(e.id==Event.WINDOW_DESTROY)this.dispose();return super.handleEvent(e);}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -