手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>Java技术>列表

以前用java写的贪吃蛇游戏

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

/*
*游戏的主画布类
*/
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);

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!