2019最新java实战开发俄罗斯方块项目实战

|____文档.xlsx
|____基础素材+开发文档.rar
|____俄罗斯方块教程36 发布.wmv
|____俄罗斯方块教程35 皮肤.wmv
|____俄罗斯方块教程34 加速.wmv
|____俄罗斯方块教程33 记分.wmv
|____俄罗斯方块教程32 暂停.wmv
|____俄罗斯方块教程31 线程.wmv
|____俄罗斯方块教程30 开始.wmv
|____俄罗斯方块教程29 消行.wmv
|____俄罗斯方块教程28 用户配置+.wmv
|____俄罗斯方块教程27 用户配置.wmv
|____俄罗斯方块教程26 Swing.wmv
|____俄罗斯方块教程25 反射+.wmv
|____俄罗斯方块教程24 配置+.wmv
|____俄罗斯方块教程23 背景.wmv
|____俄罗斯方块教程22 jdbc.wmv
|____俄罗斯方块教程21 对象流.wmv
|____俄罗斯方块教程20 接口.wmv
|____俄罗斯方块教程19 着色.wmv
|____俄罗斯方块教程18 值槽.wmv
|____俄罗斯方块教程17 数字.wmv
|____俄罗斯方块教程16 NEXT.wmv
|____俄罗斯方块教程15 堆积.wmv
|____俄罗斯方块教程14 旋转.wmv
|____俄罗斯方块教程13 移动.wmv
|____俄罗斯方块教程12 架构.wmv
|____俄罗斯方块教程11 控制.wmv
|____俄罗斯方块教程10 反射.wmv
|____俄罗斯方块教程09 配置.wmv
|____俄罗斯方块教程08 多态.wmv
|____俄罗斯方块教程07 继承.wmv
|____俄罗斯方块教程06 布局.wmv
|____俄罗斯方块教程05 封装.wmv
|____俄罗斯方块教程04 显示.wmv
|____俄罗斯方块教程03 素材.wmv
|____俄罗斯方块教程02 设计.wmv
|____俄罗斯方块教程01 分析.wmv
|____graphics
          |____window
          |____string
          |____game
          |____background
          |____view.jpg

 

 

下载地址:百度网盘

java项目-俄罗斯方块,供学习。 /** * File: GameCanvas.java * User: Administrator * Date: Dec 15, 2003 * Describe: 俄罗斯方块的每一个方块的绘制 */ import javax.swing.*; import javax.swing.border.EtchedBorder; //EtchedBorder为swing包中的突出或凹进的边框 import java.awt.*; /** * 画布类,内有<行数> * <列数>个方格类的实例。 * 继承JPanel类。 * ErsBlock线程类动态改变画布类的方格颜色,画布类通过 * 检查方格颜色来体现ErsBlock块的移动情况。 */ class GameCanvas extends JPanel { //默认的方块的颜色为桔黄色,背景颜色为黑色 private Color backColor = Color.black, frontColor = Color.orange; private int rows, cols, score = 0, scoreForLevelUpdate = 0; private ErsBox[][] boxes; private int boxWidth, boxHeight; //score:得分,scoreForLevelUpdate:上一次升级后的积分 /** * 画布类的第一个版本的构造函数 * @param rows int, 画布的行数 * @param cols int, 画布的列数 * 行数和列数以方格为单位,决定着画布拥有方格的数目 */ public GameCanvas(int rows, int cols) { this.rows = rows; this.cols = cols; //初始化rows*cols个ErsBox对象 boxes = new ErsBox[rows][cols]; for (int i = 0; i < boxes.length; i++) { for (int j = 0; j < boxes[i].length; j++) { boxes[i][j] = new ErsBox(false); } } //设置画布的边界 setBorder(new EtchedBorder( EtchedBorder.RAISED, Color.white, new Color(148, 145, 140))); } /** * 画布类的第二个版本的构造函数 * @param rows 与public GameCanvas(int rows, int cols)的rows相同 * @param cols 与public GameCanvas(int rows, int cols)的cols相同 * @param backColor Color, 背景色 * @param frontColor Color, 前景色 */ public GameCanvas(int rows, int cols, Color backColor, Color frontColor) { this(rows, cols); //调用第一个版本的构造函数 this.backColor = backColor; this.frontColor = frontColor; //通过参数设置背景和前景颜色 } /** * 设置游戏背景色彩 * @param backColor Color, 背景色彩 */ public void setBackgroundColor(Color backColor) { this.backColor = backColor; } /** * 取得游戏背景色彩 * @return Color, 背景色彩 */ public Color getBackgroundColor() { return backColor; } /** * 设置游戏方块色彩 * @param frontColor Color, 方块色彩 */ public void setBlockColor(Color frontColor) { this.frontColor = frontColor; } /** * 取得游戏方块色彩 * @return Color, 方块色彩 */ public Color getBlockColor() { return frontColor; } /** * 取得画布中方格的行数 * @return int, 方格的行数 */ public int getRows() { return rows; } /** * 取得画布中方格的列数 * @return int, 方格的列数 */ public int getCols() { return cols; } /** * 取得游戏成绩 * @return int, 分数 */ public int getScore() { return score; } /** * 取得自上一次升级后的积分 * @return int, 上一次升级后的积分 */ public int getScoreForLevelUpdate() { return scoreForLevelUpdate; } /** * 升级后,将上一次升级以来的积分清0 */ public void resetScoreForLevelUpdate() { scoreForLevelUpdate -= ErsBlocksGame.PER_LEVEL_SCORE; } /** * 得到某一行某一列的方格引用。 * @param row int, 要引用的方格所在的行 * @param col int, 要引用的方格所在的列 * @return ErsBox, 在row行col列的方格的引用 */ public ErsBox getBox(int row, int col) { if (row < 0 || row > boxes.length - 1 || col < 0 || col > boxes[0].length - 1) return null; return (boxes[row][col]); } /** * 覆盖JComponent类的函数,画组件。 * @param g 图形设备环境 * paint方法实际上把绘图的主要工作委派给paintComponent方法等方法 */ public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(frontColor); for (int i = 0; i < boxes.length; i++) { for (int j = 0; j < boxes[i].length; j++) { //用前景颜色或背景颜色绘制每个方块 g.setColor(boxes[i][j].isColorBox() ? frontColor : backColor); g.fill3DRect(j * boxWidth, i * boxHeight, boxWidth, boxHeight, true); } } } /** * 根据窗口的大小,自动调整方格的尺寸 */ public void fanning() { boxWidth = getSize().width / cols; boxHeight = getSize().height / rows; } /** * 当一行被游戏者叠满后,将此行清除,并为游戏者加分 * @param row int, 要清除的行,是由ErsBoxesGame类计算的 */ public synchronized void removeLine(int row) { for (int i = row; i > 0; i--) { for (int j = 0; j < cols; j++) boxes[i][j] = (ErsBox) boxes[i - 1][j].clone(); } score += ErsBlocksGame.PER_LINE_SCORE; scoreForLevelUpdate += ErsBlocksGame.PER_LINE_SCORE; repaint(); } /** * 重置画布,置积分为0 */ public void reset() { score = 0; scoreForLevelUpdate = 0; for (int i = 0; i < boxes.length; i++) { for (int j = 0; j < boxes[i].length; j++) boxes[i][j].setColor(false); } repaint(); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值