java实现最简单的五子棋,用java做一个五子棋小游戏

  java实现最简单的五子棋,用java做一个五子棋小游戏

  00-1010I。主界面二。功能概述三。代码第四部分。部分效果显示。本例分享了java实现简单五子棋游戏的具体代码,供大家参考。具体内容如下

  

目录

1、登录界面;2、游戏选择界面;3、五子棋下棋界面

 

  它们之间的逻辑关系是通过登录界面登录跳转到游戏选择界面,再通过游戏选择界面进入五子棋下棋界面。

  

一、主要界面

1、登录界面:

 

  a、设置一定的布局并添加一些组件;b、点击登录按钮,确定账号和密码是否正确,如果正确,则登录成功,否则会弹出窗口提示账号或密码输入错误;c、在窗口中添加一个按钮,点击该按钮后关闭当前窗口,第三次输入错误后弹出提示并关闭登录界面。

  a .添加背景图片;b .在背景面板上增加游戏选择按钮;c、通过游戏选择按钮跳转到相应的游戏。

  2、游戏选择界面:

  (1)画一个16*16的棋盘。

  (2)黑白棋依次走棋,走棋的位置在交叉点,同一位置只能走一步棋。

  (3)黑白计数器

  (4)重绘功能,在拖动和改变窗口大小时保持之前的棋盘棋子和计数显示。

  (5)按钮:开始游戏、重新开始、后悔棋、回放游戏、存档、读取文件、退出游戏等功能。

  (6)判断自己是赢是输。当且仅当五个相同颜色的棋子连在一起,你就赢了。当六个或更多相同颜色的棋子连在一起时,你不会赢。

  

二、功能概况

3、五子棋下棋界面:

 

  导入javax . swing . *;//导入swing包导入java.awt.*的所有类和接口;//导入awt包的所有类和接口//密码:123账号:123公共类go bang ui扩展jframe实现go bang config { private static final image bgimg=new image icon( c : users zyx pictures camera roll 17 . JPEG )。getimage();字体f=新字体(楷书,字体。平原,30);//楷体,字号30//main函数入口public static void main(string[]args){ log in CX=new log in();cx。UI();} int[][]数组=new int[16][16];//实例化一个二维对象数组来存储棋子信息。0代表没有棋,1代表黑,2代表白;如果我们不给出一个初始值,默认的初始值将是0 public void initgobangui(){ this . settitle( gobang );this.setSize(1200,850);//以像素为单位设置窗体的大小this . setlocationrelativeto(null);//设置窗体相对于组件的中心位置。null表示窗体相对于屏幕的中心位置this . setdefaultcloseoperation(3);//设置表单维度DM1=New Dimension (200,0)的关闭操作;//设置JPanel dimension的大小dm2=new dimension (140,50);//设置JButton dimension的大小dm3=new dimension (170,110);//设置JLabel JPanel jp=new JPanel()的大小;jp . set background(color . light gray);//设置面板JPanel的背景色jp . setpreferredsize(dm1);this.add(jp,BorderLayout。东);//通过边框布局JLabel jl=new JLabel( )将面板添加到表单的右侧;JL . setpreferredsize(dm3);jp . add(JL);String[] name={ 开始游戏,重新开始,后悔棋,游戏播放,存档,读取文件,退出游戏 };JButton[]button=new JButton[7];//依次为(in)添加五个按钮组件

  t i=0;i<name.length;i++) {            button[i]=new JButton(name[i]);            button[i].setPreferredSize(dm2);            jp.add(button[i]);        }        //设置窗体的背景颜色        Container con=this.getContentPane();            con.setBackground(Color.darkGray) ;        this.setVisible(true);        // 从当前窗体获取画笔并通过构造方法传入监听类对象中        Graphics gr=this.getGraphics();         GoBangListener goBangListener = new GoBangListener(gr);         //给按钮组件添加动作监听方法         for(int i=0;i<name.length;i++) {          button[i].addActionListener(goBangListener);            }            // 给窗体添加鼠标监听方法        this.addMouseListener(goBangListener);        goBangListener.go=this;        }                @Override    public void paint(Graphics g) {    // 先调用父类绘制窗体的方法        super.paint(g);    //绘制背景图片    g.drawImage(bgimg,X,Y,columns*SIZE,rows*SIZE,null);    // 绘制棋盘    for (int i = 0; i <= rows; i++) {    g.drawLine(X,Y+i*SIZE,X+columns*SIZE,Y+i*SIZE);//画横线    }    for(int j=0;j<=columns;j++) {    g.drawLine(X+j*SIZE,Y,X+j*SIZE,Y+rows*SIZE);//画竖线    }    //黑白棋的落子数    g.setColor(Color.darkGray);    g.fillRect( X*2+columns*SIZE, Y*11/4,SIZE*5/2, 3*SIZE);    g.setColor(Color.ORANGE);    g.setFont(f);    g.drawString("黑棋:"+GoBangListener.m, 2*X+columns*SIZE, Y*10/3);    g.drawString("白棋:"+GoBangListener.n, 2*X+columns*SIZE,Y*13/3);     g.setFont(f);//设置字体    //遍历二维数组,画出已赋值的对应位置的黑白棋        for(int j=0;j<=columns;j++) {            for(int i=0;i<=rows;i++) {            if(Array[i][j]==1) {                g.setColor(Color.BLACK);                g.fillOval(j*SIZE+X-SIZE/2, i*SIZE+Y-SIZE/2, SIZE, SIZE);             }else if(Array[i][j]==2){                g.setColor(Color.WHITE);                g.fillOval(j*SIZE+X-SIZE/2, i*SIZE+Y-SIZE/2, SIZE, SIZE);             }        }    }        } }2.GoBangListener类:

  

import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.ActionListener;import javax.swing.*; public class GoBangListener implements ActionListener,MouseListener,GoBangConfig {        int chessX;        //列索引    int chessY;        //行索引    int flag=0;        //黑白棋轮流标记    int count=0;    //记录落子顺序    int ct,flag1,m1,n1,q,w;        //用作存档操作    GoBangUI go;    String name;    String name1="";        //用于开始游戏操作    JTextField jt;    JPasswordField jp;    JFrame jf;         JFrame j = new JFrame();     JFrame j1 = new JFrame();    int i=3;        //允许登录失败的次数    static int m=0,n=0;        //记录黑白各自的落子数    private Graphics g;    public GoBangListener() {}    GoBangListener(Graphics g) {        this.g=g;    }    GBstore[] gbs=new GBstore[16*16];        //储存棋子的落子顺序和位置信息     public void actionPerformed(ActionEvent e) {             name=e.getActionCommand();                if(e.getActionCommand().equals("退出游戏")) {            j.dispose();    j1.dispose();    go.dispose();        }                          if(e.getActionCommand().equals("开始游戏")) {                name1=e.getActionCommand();            }else {                if(e.getActionCommand().equals("重新开始")e.getActionCommand().equals("再来一局")) {                    w=count;                    count=0;                    m=0;                    n=0;                    flag=0;                    for(i=0;i<w;i++) {                        go.Array[gbs[count+i].chessy][gbs[count+i].chessx]=0;                    }                    j.dispose();                    j1.dispose();                    go.repaint();                }        if(e.getActionCommand().equals("悔棋")) {            if(count!=0) {            if(flag==0) {            go.Array[gbs[count-1].chessy][gbs[count-1].chessx]=0;            n--;                        go.repaint();            count--;                    flag++;                    }else if(flag==1) {                go.Array[gbs[count-1].chessy][gbs[count-1].chessx]=0;                go.repaint();                m--;                count--;                flag--;            }        }}        if(e.getActionCommand().equals("棋局回放")) {            if(gbs[count]!=null) {            if(flag==0) {                go.Array[gbs[count].chessy][gbs[count].chessx]=1;                m++;                                go.repaint();                count++;                            flag++;                        }else if(flag==1) {                    go.Array[gbs[count].chessy][gbs[count].chessx]=2;                    go.repaint();                    n++;                    count++;                    flag--;                }        }}        if(e.getActionCommand().equals("存档")) {            flag1=flag;            ct=count;            m1=m;            n1=n;        }        if(e.getActionCommand().equals("读档")) {            q=count-ct;                                count=ct;            m=m1;            n=n1;        if(flag!=0) {            flag=0;        }            for(int i=0;i<count;i++) {                            if(flag==0) {                go.Array[gbs[i].chessy][gbs[i].chessx]=1;                    flag++;                    }else if(flag==1) {                go.Array[gbs[i].chessy][gbs[i].chessx]=2;                            flag--;                    }}            for(i=0;i<q;i++) {                go.Array[gbs[count+i].chessy][gbs[count+i].chessx]=0;            }                            flag=flag1;            go.repaint();        }            }         if(name.equals("登录")) {             if(jt.getText().equals("123")&&jp.getText().equals("123")) {                 GameselectUI ui=new GameselectUI();                 ui.selectUI();            jf.dispose();            } else if(i>1) {                 JFrame lg1 = new JFrame();                    lg1.setSize(400,200);                    lg1.setDefaultCloseOperation(3);                    lg1.setLocationRelativeTo(null);                    JPanel jp1 = new JPanel();                    JPanel jp2 = new JPanel();                    JPanel jp3 = new JPanel();                                                        Dimension dm = new Dimension(0,50);                    JLabel jl = new JLabel("账号或密码输入错误,您还有"+(i-1)+"次机会");                    jl.setFont(new Font("华文仿宋",Font.BOLD,18));  //华文仿宋,加粗,18号字体                                        jp2.add(jl);                    jp1.setPreferredSize(dm);                    lg1.add(jp1,BorderLayout.NORTH);                    lg1.add(jp2,BorderLayout.CENTER);                    lg1.add(jp3,BorderLayout.SOUTH);                    JButton jb = new JButton("确定");                                        jp3.add(jb);                    lg1.add(jp3,BorderLayout.SOUTH);                        jb.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e)    {lg1.dispose();}});                        lg1.setVisible(true);                                                        }else if(i==1) {                       &n      

	  
	  
	  
	  
	  
	  
        

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: