*/
//清楚原来的方形
public void clearoldretangle(GraphicsD ggint cint r)
{
if(hasclickbomb)
diamonds[r][c]clickshow(gg r c);
else
{
if(!diamonds[r][c]isOpened())
diamonds[r][c]draw(gg r c);
else
diamonds[r][c]clickshow(gg r c);
}
}
/*
//清除原来的圆形
public void clearOval(GraphicsD ggint cint r)
{
if(c<col && r<row)
{
for(int y=r;y<r+&&y<row;y++)
{
if(y<)continue;
for(int x=c;x<c+&&x<col;x++)
{
if(x>=)
{
if(hasclickbomb)
diamonds[y][x]clickshow(gg y x);
else
{
if(!diamonds[y][x]isOpened())
diamonds[y][x]draw(gg y x);
else
diamonds[y][x]clickshow(gg y x);
}
}
}
}
}
}
*/
//设置炸弹
public void buildBombInMap()
{
int x=y=;
for(int i=;i<bombcount;)
{
x=(int)(Mathrandom()*col);
y=(int)(Mathrandom()*row);
if(!diamonds[y][x]isbomb())
{
diamonds[y][x]setbomb();
i++;
}
}
countRoundBomb();//计算炸弹
}
//计算附近的炸弹
public void countRoundBomb()
{
for(int i=;i<row;i++)
{
for(int j=;j<col;j++)
{
if(diamonds[i][j]isbomb())
continue;
else
{
//开始计算每个附近的炸弹
int count=;
for(int k=i;k<i+ && k<row;k++)
{
if(k<)continue;
for(int l=j;l<j+ && l<col;l++)
{
if(l>=)
{
if(diamonds[k][l]isbomb())
count++;
}
}
}
if(count!=)
diamonds[i][j]setShowByte(StringvalueOf(count));
}
}
}
}
//踩中地雷后全部显示
public void showAllDiamonds(int roint co)
{
GraphicsD gg=(GraphicsD)thisgetGraphics();
ggsetRenderingHint(RenderingHintsKEY_ANTIALIASING RenderingHintsVALUE_ANTIALIAS_ON);
for(int r=;r<row;r++)
{
for(int c=;c<col;c++)
{
if(!diamonds[r][c]isbomb())
diamonds[r][c]setFillColor(Colorwhite);
else if(diamonds[r][c]isbomb())
diamonds[r][c]setFillColor(Colorred);
diamonds[r][c]clickshow(gg r c);
}
}
}
//重载paint
public void paint(Graphics g)
{
GraphicsD gg=(GraphicsD)g;
ggsetRenderingHint(RenderingHintsKEY_ANTIALIASING RenderingHintsVALUE_ANTIALIAS_ON);
for(int y=;y<row;y++)
{
for(int x=;x<col;x++)
{
if(hasclickbomb)
diamonds[y][x]clickshow(gg y x);
else
{
if(!diamonds[y][x]isOpened())
diamonds[y][x]draw(gg y x);
else
diamonds[y][x]clickshow(gg y x);
}
}
}
ggdispose();
}
}
Diamondsjava文件
import javaawtBasicStroke;
import javaawtColor;
import javaawtGraphics;
import javaawtGraphicsD;
import javaawtRenderingHints;
/**
* 单元方格类
* @author dragon
*
*/
public class Diamonds
{
private Color fillcolor=ColordarkGray;
private Color rimcolor=Colorblue;
private boolean bomb=false;
private String showbyte=;
private int diamondWidth=;
private boolean opened=false;
private boolean signbomb=false;
public Diamonds(Color cint width)
{
thisrimcolor=c;
thisdiamondWidth=width;
}
public Diamonds(int width)
{
thisdiamondWidth=width;
}
/**
* 设置是否被标记为炸弹
* dragon
*Sep
* @param b
*/
public void setSignBomb(boolean b)
{
thissignbomb=b;
}
public boolean isSignBomb()
{
return thissignbomb;
}
/**
* 设置方格的边长
* dragon
*Sep
* @param width
*/
public void setDiamondWidth(int width)
{
thisdiamondWidth=width;
}
/**
* 返回当前方格的字符串
* dragon
*Sep
* @return
*/
public String getShowByte()
{
return thisshowbyte;
}
/**
* 设置方格的字符串
* dragon
*Sep
* @param b
*/
public void setShowByte(String b)
{
showbyte=b;
}
/**
* 复位
*/
public void reset()
{
fillcolor=ColorDARK_GRAY;
rimcolor=Colorblue;
thissignbomb=false;
bomb=false;
showbyte=;
opened=false;
}
/**
* 判断方格是否已经被打开
*/
public boolean isOpened()
{
return thisopened;
}
/**
* 打开该方格
*/
public void Opened()
{
thisopened=true;
}
/**
* 判断是否是炸弹
*/
public boolean isbomb()
{
return bomb;
}
/**
* 设置为炸弹
*/
public void setbomb()
{
thisbomb=true;
}
/**
* 点击时的显示函数
*/
public void clickshow(GraphicsD ggint rint c)
{
ggsetStroke(new BasicStroke(f));
if(bomb)
{
if(opened)
thisfillcolor=Colorred;
ggsetColor(thisfillcolor);
ggfillRect(c*diamondWidth r*diamondWidth diamondWidth diamondWidth);
ggsetColor(thisrimcolor);
ggdrawRect(c*diamondWidth r*diamondWidth diamondWidth diamondWidth);
ggsetColor(Colorblack);
ggdrawOval(c*diamondWidth+diamondWidth/ r*diamondWidth+diamondWidth/ diamondWidth/ diamondWidth/);
}
else
{
ggsetColor(thisfillcolor);
ggfillRect(c*diamondWidth r*diamondWidth diamondWidth diamondWidth);
ggsetColor(thisrimcolor);
ggdrawRect(c*diamondWidth r*diamondWidth diamondWidth diamondWidth);
ggsetColor(Colorblack);
ggdrawString(showbyte c*diamondWidth+diamondWidth/ r*diamondWidth+diamondWidth*/);
}
}
/**
* 绘画单元格
*/
public void draw(GraphicsD ggint rint c)
{
ggsetStroke(new BasicStroke(f));
ggsetColor(thisfillcolor);
ggfillRect(c*diamondWidth r*diamondWidth diamondWidth diamondWidth);
ggsetColor(thisrimcolor);
ggdrawRect(c*diamondWidth r*diamondWidth diamondWidth diamondWidth);
}
/**
* 设置边框颜色
*/
public void setRimColor(Color c)
{
rimcolor=c;
}
/**
* 设置填充颜色
*/
public void setFillColor(Color c)
{
thisfillcolor=c;
}
}