实验1 扫雷小游戏
1.答案:
【代码1】: new LinkedList();
【代码2】: list.add(block[i][j]) ;
【代码3】: list.size();
【代码4】: (Block)list.get(randomIndex);
【代码5】: list.remove(randomIndex);
2.模板代码
Block.java
public class Block
{ String name;
int number;
boolean boo=false;
public void setName(String name)
{ this.name=name;
}
public void setNumber(int n)
{ number=n;
}
public int getNumber()
{ return number;
}
public String getName()
{ return name;
}
boolean isMine()
{ return boo;
}
public void setIsMine(boolean boo)
{ this.boo=boo;
}
}
LayMines.java
import java.util.LinkedList;
public class LayMines
{ public void layMinesForBlock(Block block[][],int mineCount)
{ int row=block.length;
int column=block[0].length;
LinkedList list=【代码1】 //创建空链表list
for(int i=0;i<row;i++)
{ for(int j=0;j<column;j++)
{ 【代码2】 // list添加节点,其中的数据为block[i][j]
}
}
while(mineCount>0)
{ int size=【代码3】 // list返回节点的个数
int randomIndex=(int)(Math.random()*size);
Block b=【代码4】 // list返回索引为randomIndex的节点中的数据
b.setName("雷");
b.setIsMine(true);
【代码5】 //list删除索引值为randomIndex的节点
mineCount--;
}
for(int i=0;i<row;i++)
{ for(int j=0;j<column;j++)
{ if(block[i][j].isMine()){}
else
{ int mineNumber=0;
for(int k=Math.max(i-1,0);k<=Math.min(i+1,row-1);k++)
{ for(int t=Math.max(j-1,0);t<=Math.min(j+1,column-1);t++)
{ if(block[k][t].isMine())
mineNumber++;
}
}
block[i][j].setName(""+mineNumber);
block[i][j].setNumber(mineNumber);
}
}
}
}
}
BlockView.java
import java.awt.*;
public class BlockView extends Panel
{ Label blockName;
Button blockCover;
CardLayout card;
BlockView()
{ card=new CardLayout();
setLayout(card);
blockName=new Label();
blockCover=new Button();
add("cover",blockCover);
add("name",blockName);
}
public void setName(String name)
{ blockName.setText(name);
}
public String getName()
{ return blockName.getText();
}
public void seeBlockName()
{ card.show(this,"name");
validate();
}
public void seeBlockCover()
{ card.show(this,"cover");
validate();
}
public Button getBlockCover()
{ return blockCover;
}
}
MineFrame.java
import java.awt.*;
import java.awt.event.*;
public class MineFrame extends Frame implements ActionListener
{ Button reStart;
Block block[][];
BlockView blockView[][];
LayMines lay;
int row=10,colum=12,mineCount=22;
int colorSwitch=0;
Panel pCenter,pNorth;
public MineFrame()
{ reStart=new Button("重新开始");
pCenter=new Panel();
pNorth=new Panel();
pNorth.setBackground(Color.cyan);
block=new Block[row][colum];
for(int i=0;i<row;i++)
{ for(int j=0;j<colum;j++)
{ block[i][j]=new Block();
}
}
lay=new LayMines();
lay.layMinesForBlock(block,mineCount);
blockView=new BlockView[row][colum];
pCenter.setLayout(new GridLayout(row,colum));
for(int i=0;i<row;i++)
{ for(int j=0;j<colum;j++)