java 简易扫雷_JAVA基础课程设计 简易扫雷

以下每行代码,文字均为原创,转载请注明出处.

程序一共分为7个文件,每个文件为一个类

文件名

功能描述

Test.java

测试类,包含main()函数

Mine.java

设计主界面,

Calmine.java

随机雷的位置.计算雷区点击后应该显示的数字

My_button.java

继承自button类,添加按钮的坐标x,y.

Num_Mine.java

雷数,包括用户以标记的雷数,标记正确的雷数,以及总雷数

ClickLone.java

鼠标左击处理

ClickRone.java

鼠标右击处理

Test.java

测试类,Mine()接受的三个参数分别为雷区的长,宽,总雷数

package mine_sweep;

public class Test {

public static void main(String[] args) {

// TODO Auto-generated method stub

new Mine(16,16,20);

}

}

Mine.java

继承自JFame类,采用BorderLayout()布局,.NORTH区域放置显示面板JPanel,提示用户以标记的雷数,.SOUTH区域放置雷区,采用GridLayout布局

用一个双重循环向雷区minepanel添加按钮,同时在buttons[]中储存该按钮的引用.

同时添加按钮监听器..在用户点击了右键后,负责更新标记的类数

package mine_sweep;

import java.awt.*;

import java.awt.event.*;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JTextArea;

@SuppressWarnings("serial")

public class Mine extends JFrame {

Integer rn;//用户已标记的雷数

Integer sn;//标记对的雷数

public Mine(int rows,int cols,int n)//雷区的行数,列数,雷数

{

My_button buttons[]=new My_button[rows*cols];//记录每个按钮的引用

Integer mine[]= new Integer[rows*cols];//每个位置的数字

Boolean ismine[]=new Boolean[rows*cols];//是否有雷的标志

new Calmine(mine,ismine,rows,cols,n);

this.setSize(500, 450);

this.setTitle("mine_sweep");

this.setLayout(new BorderLayout());

rn=new Integer(0);//用户标记的雷数

sn=new Integer(0);//标记对的雷数

JPanel showpanel=new JPanel();//设置控制面板

showpanel.setLayout(new FlowLayout(FlowLayout.LEFT));

JTextArea showArea=new JTextArea("sum of mine: "+n);

JTextArea showrmArea=new JTextArea("num of marked mine: "+rn.intValue());

showArea.setEditable(false);

showrmArea.setEditable(false);

showpanel.add(showrmArea );

showpanel.add(showArea);

this.add(showpanel,BorderLayout.NORTH);

JPanel minepanel=new JPanel();//设置雷区

minepanel.setLayout(new GridLayout(rows,cols));

minepanel.setSize(500, 450);

Mine t=this;

for(int i=0;i

{

for(int j=0;j

{

My_button btn=new My_button(i,j);

buttons[i*cols+j]=btn;

minepanel.add(buttons[i*cols+j] );

btn.setBackground(Color.blue);

btn.addMouseListener(new MouseAdapter()

{

public void mouseClick

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值