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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。