java

位置:IT落伍者 >> java >> 浏览文章

Java实现扫雷(2)


发布日期:2023年09月20日
 
Java实现扫雷(2)

*/

//清楚原来的方形

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;

}

}

               

上一篇:Java重写和重载

下一篇:数据压缩格式Java语言应用程序设计方法