以前用java写的贪吃蛇游戏

2008-02-23 09:23:28来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

/*
*游戏的主画布类
*/
import Javax.Swing.*;
import java.awt.*;

public class GameCanvas extends JPanel
{
private int rows = 30, cols = 30;
private int boxWidth, boxHeight;
private Color bgColor = Color.darkGray,
snakeColor = Color.GREEN;
private boolean [][]colorFlags;
private static GameCanvas instance = null;
/*
*构造函数私有,使用单例模式,其他类共享一个实例
*/
private GameCanvas()
{
colorFlags = new boolean[rows][cols];
for(int i = 0; i < colorFlags.length; i )
for(int j = 0; j<colorFlags[i].length; j )
colorFlags[i][j] = false;
}
/*
*获得GameCanvas的实例
*/
public static GameCanvas getCanvasInstance()
{
if(instance == null)
instance = new GameCanvas();
return instance;
}
/*
*设置面板画布的行数
*/
public void setRows(int rows)
{
this.rows = rows;
}
/*
*得到画布方格的行数
*/
public int getRows()
{
return rows;
}
/*
*设置画布方格的列数
*/
public void setCols(int cols)
{
this.cols = cols;
}
/*
* 得到面板方格的列数
*/
public int getCols()
{
return cols;
}
/*
*绘图类,在画布上绘图
*/
public void paintComponent(Graphics g)
{
super.paintComponent(g);

fanning();
for(int i = 0; i < colorFlags.length; i )
for(int j = 0; j < colorFlags[i].length; j )
{
Color color = colorFlags[i][j] ? snakeColor : bgColor;
g.setColor(color);
g.fill3DRect(j * boxWidth, i * boxHeight, boxWidth, boxHeight,true);
}
}
/*
*画布重置,恢复画布的原始状态
*/
public void reset()
{
for(int i = 0; i < colorFlags.length; i )
for(int j = 0; j<colorFlags[i].length; j )
colorFlags[i][j] = false;
repaint();
}
/*
*根据窗口大小调整方格的大小
*/
public void fanning()
{
boxWidth = getSize().width / cols;
boxHeight = getSize().height / rows;
}
/*
* 获取画布(row,col)位置颜色的值
*/
public boolean getColorFlag(int row, int col)
{
return colorFlags[row][col];
}
/*
* 设置画布(row,col)位置颜色的值
*/
public void setColorFlag(int row, int col, boolean colorFlag)
{
colorFlags[row][col] = colorFlag;
}
}
/*
*蛇的节点类,保存当前节点所在的(row,col)坐标值
*(同时也被用作食物类,因为食物所要保存的信息和此相同,没有再设)
*/
public class SnakeNode
{
private int row,col;

/*
*构造函数
*/
public SnakeNode(int row,int col)
{
this.row = row;
this.col = col;
}

/*
* 设置该节点所在的行
*/
public void setRow(int row)
{
this.row = row;
}

/*
* 获得该节点所在的行
*/
public int getRow()
{
return row;
}

/*
* 设置该节点所在的列
*/
public void setCol(int col)
{
this.col = col;
}

/*
* 返回该节点所在的列
*/
public int getCol()
{
return col;
}
}
/*
*游戏的主画布类
*/
import javax.swing.*;
import java.awt.*;

public class GameCanvas extends JPanel
{
private int rows = 30, cols = 30;
private int boxWidth, boxHeight;
private Color bgColor = Color.darkGray,
snakeColor = Color.GREEN;
private boolean [][]colorFlags;
private static GameCanvas instance = null;
/*
*构造函数私有,使用单例模式,其他类共享一个实例
*/
private GameCanvas()
{
colorFlags = new boolean[rows][cols];
for(int i = 0; i < colorFlags.length; i )
for(int j = 0; j<colorFlags[i].length; j )
colorFlags[i][j] = false;
}
/*
*获得GameCanvas的实例
*/
public static GameCanvas getCanvasInstance()
{
if(instance == null)
instance = new GameCanvas();
return instance;
}
/*
*设置面板画布的行数
*/
public void setRows(int rows)
{
this.rows = rows;
}
/*
*得到画布方格的行数
*/
public int getRows()
{
return rows;
}
/*
*设置画布方格的列数
*/
public void setCols(int cols)
{
this.cols = cols;
}
/*
* 得到面板方格的列数
*/
public int getCols()
{
return cols;
}
/*
*绘图类,在画布上绘图
*/
public void paintComponent(Graphics g)
{
super.paintComponent(g);

fanning();
for(int i = 0; i < colorFlags.length; i )
for(int j = 0; j < colorFlags[i].length; j )
{
Color color = colorFlags[i][j] ? snakeColor : bgColor;
g.setColor(color);
g.fill3DRect(j * boxWidth, i * boxHeight, boxWidth, boxHeight,true);

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:以前用java写的计算器程序

下一篇:【J2ME】 Debug 笔记(二)