!高分跪下求帮忙写一个简单小程序的JAVA课程设计报告(详细!!)
导入javax . swing . *;
导入Java . awt . *;
导入Java . awt . event . *;
公共类连连看实现ActionListener
{
JFrame主机;//主面板
容器thisContainer
JPanel centerPanel,southPanel,northPanel//子面板
JButton diamonds button[][]= new JButton[6][5];//游戏按钮数组
JButton exitButton,resetButton,newlyButton//退出、重新排序和重新启动按钮
JLabel fractional able = new JLabel(" 0 ");//分数标签
JButton firstButton,secondButton//分别记录两次选中的按钮。
int grid[][]= new int[8][7];//存储游戏按钮的位置
静态布尔表达式信息=假;//判断按钮是否被选中。
int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV//游戏按钮的位置坐标
int i,j,k,n;//消除方法控制
public void init(){
MainFrame = new JFrame(“JKJ连连看”);
this container = mainframe . getcontentpane();
this container . set layout(new BorderLayout());
center panel = new JPanel();
south panel = new JPanel();
north panel = new JPanel();
thisContainer.add(centerPanel," Center ");
thisContainer.add(southPanel," South ");
thisContainer.add(northPanel," North ");
center panel . set layout(new GridLayout(6,5));
for(int cols = 0;cols & lt6;cols++){
for(int rows = 0;行数& lt5;rows++ ){
diamonds button[cols][rows]= new JButton(string . value of(grid[cols+1][rows+1]);
菱形按钮[列][行]。addActionListener(this);
center panel . add(diamonds button[cols][rows]);
}
}
exit button = new JButton(" exit ");
exit button . addactionlistener(this);
reset button = new JButton(" regroup ");
reset button . addactionlistener(this);
NewlyButton=new JButton("再来一局");
newly button . addactionlistener(this);
south panel . add(exit button);
south panel . add(reset button);
south panel . add(newly button);
fraction lable . settext(string . value of(integer . parse int(fraction lable . gettext())));
north panel . add(fractional able);
mainframe . set bounds(280100500450);
mainframe . set visible(true);
}
public void randomBuild() {
int randoms,cols,rows
for(int twins = 1;双胞胎& lt=15;双胞胎++) {
randoms =(int)(math . random()* 25+1);
for(int like = 1;相似& lt=2;like++) {
cols =(int)(math . random()* 6+1);
rows =(int)(math . random()* 5+1);
while(grid[cols][rows]!=0) {
cols =(int)(math . random()* 6+1);
rows =(int)(math . random()* 5+1);
}
this . grid[cols][rows]= randoms;
}
}
}
公共空隙率(){
fraction lable . settext(string . value of(integer . parse int(fraction lable . gettext())+100));
}
公共void reload() {
int save[]= new int[30];
int n=0,cols,rows
int grid[][]= new int[8][7];
for(int I = 0;我& lt=6;i++) {
for(int j = 0;j & lt=5;j++) {
if(this.grid[i][j]!=0) {
save[n]= this . grid[I][j];
n++;
}
}
}
n = n-1;
this.grid = grid
while(n & gt;=0) {
cols =(int)(math . random()* 6+1);
rows =(int)(math . random()* 5+1);
while(grid[cols][rows]!=0) {
cols =(int)(math . random()* 6+1);
rows =(int)(math . random()* 5+1);
}
this . grid[cols][rows]= save[n];
n-;
}
mainframe . set visible(false);
pressInformation = false//此处按钮点击信息必须归类为初始。
init();
for(int I = 0;我& lt6;i++){
for(int j = 0;j & lt5;j++ ){
if(grid[I+1][j+1]= = 0)
菱形按钮[i][j]。set visible(false);
}
}
}
public void estimate even(int placeX,int placeY,JButton bz) {
if(pressInformation==false) {
x = placeX
y = placeY
second msg = grid[x][y];
secondButton = bz
pressInformation = true
}
否则{
x0 = x;
y0 = y;
fristMsg = secondMsg
firstButton = secondButton
x = placeX
y = placeY
second msg = grid[x][y];
secondButton = bz
if(frist msg = = second msg & amp;& amp秒按钮!=firstButton){
肖();
}
}
}
Public void xiao() {//相同情况下可以消除吗?仔细分析,不是笔记。
if((x0 = = x & amp;& amp(y0 = = y+1 | | y0 = = y-1))| |((x0 = = x+1 | | x0 = = x-1)& amp;& amp(y0 = = y)){//判断它们是否相邻。
移除();
}
否则{
for(j = 0;j & lt7;j++ ) {
If (grid[x0][j]==0){ //确定第一个按钮行中的哪个按钮为空。
如果(y & gtJ) {//如果第二个按钮的Y坐标大于空按钮的Y坐标,则第一个按钮在第二个按钮的左边。
for(I = y-1;我& gt= j;I-){//判断第二个按钮左边到第一个按钮中间是否有按钮。
if (grid[x][i]!=0) {
k = 0;
打破;
}
else { k = 1;} //K=1表示通过了第一次验证。
}
if (k==1) {
line passone();
}
}
if(y & lt;J){ //如果第二个按钮的Y坐标小于空按钮的Y坐标,则第一个按钮在第二个按钮的右边。
for(I = y+1;我& lt= j;I++ ){ //判断第二个按钮左边到第一个按钮中间是否有按钮。
if (grid[x][i]!=0){
k = 0;
打破;
}
else { k = 1;}
}
if (k==1){
line passone();
}
}
if (y==j ) {
line passone();
}
}
if (k==2) {
if (x0==x) {
移除();
}
如果(x0 & ltx) {
for(n = x0;n & lt= x-1;n++ ) {
if (grid[n][j]!=0) {
k = 0;
打破;
}
if(grid[n][j]= = 0 & amp;& ampn==x-1) {
移除();
}
}
}
如果(x0 & gtx) {
for(n = x0;n & gt= x+1;n - ) {
if (grid[n][j]!=0) {
k = 0;
打破;
}
if(grid[n][j]= = 0 & amp;& ampn==x+1) {
移除();
}
}
}
}
}
for(I = 0;我& lt8;I++) {//列
if (grid[i][y0]==0) {
if(x & gt;i) {
for(j = x-1;j & gt= I;j - ) {
if (grid[j][y]!=0) {
k = 0;
打破;
}
else { k = 1;}
}
if (k==1) {
rowPassOne();
}
}
if(x & lt;i) {
for(j = x+1;j & lt= I;j++ ) {
if (grid[j][y]!=0) {
k = 0;
打破;
}
else { k = 1;}
}
if (k==1) {
rowPassOne();
}
}
if (x==i) {
rowPassOne();
}
}
if (k==2){
if (y0==y) {
移除();
}
如果(y0 & lty) {
for(n = y0;n & lt= y-1;n++ ) {
if (grid[i][n]!=0) {
k = 0;
打破;
}
if(grid[I][n]= = 0 & amp;& ampn==y-1) {
移除();
}
}
}
如果(y0 & gty) {
for(n = y0;n & gt= y+1;n - ) {
if (grid[i][n]!=0) {
k = 0;
打破;
}
if(grid[I][n]= = 0 & amp;& ampn==y+1) {
移除();
}
}
}
}
}
}
}
公共void linePassOne(){
如果(y0 & gtJ){ //第一个按钮在同一行,空按钮在左边。
for(I = y0-1;我& gt= j;I-){//判断第一个按钮和左侧空按钮之间是否有按钮。
if(网格[x0][i]!=0) {
k = 0;
打破;
}
else { k = 2;} //K=2表示第二次验证已经通过。
}
}
如果(y0 & ltJ){ //第一个按钮在第一个按钮和第二个按钮之间。
for(I = y0+1;我& lt= j;i++){
if(网格[x0][i]!=0) {
k = 0;
打破;
}
else { k = 2;}
}
}
}
public void rowPassOne(){
如果(x0 & gti) {
for(j = x0-1;j & gt= I;j - ) {
if (grid[j][y0]!=0) {
k = 0;
打破;
}
else { k = 2;}
}
}
如果(x0 & lti) {
for(j = x0+1;j & lt= I;j++ ) {
if (grid[j][y0]!=0) {
k = 0;
打破;
}
else { k = 2;}
}
}
}
公共void remove(){
first button . set visible(false);
second button . set visible(false);
分数();
pressInformation = false
k = 0;
网格[x0][y0]= 0;
grid[x][y]= 0;
}
public void action performed(action event e){
if(e . getsource()= = newly button){
int grid[][]= new int[8][7];
this.grid = grid
random build();
mainframe . set visible(false);
pressInformation = false
init();
}
if(e.getSource()==exitButton)
system . exit(0);
if(e.getSource()==resetButton)
重载();
for(int cols = 0;cols & lt6;cols++){
for(int rows = 0;行数& lt5;rows++ ){
if(e . getsource()= = diamonds button[cols][rows])
estimateEven(列+1,行+1,diamonds button[列][行]);
}
}
}
公共静态void main(String[] args) {
连连看llk =新连连看();
llk . randombuild();
llk . init();
}
}
//旧的998行
//新增318行
参考资料:
/question/36439800.html?fr=qrl3