• 大小: 61KB
    文件类型: .7z
    金币: 2
    下载: 0 次
    发布日期: 2024-02-05
  • 语言: Java
  • 标签:

资源简介

实现了幻影效果(预示方块位置)、消行效果、声音效果、方块不同颜色显示、底部生长方块、方块难度级别控制、方块下移自动加速。 界面上有主方块图基、下个方块、分数、所消行数、开始游戏、停止游戏、暂停游戏、继续游戏、重新开始游戏。 代码简单易懂,注释完整清楚,只有一个了类文件TetrisFrame.java,代码量非常少。 有bug或看不懂的地方可以通过邮箱告诉我,本人邮箱地址为: 845684080@qq.com

资源截图

代码片段和文件信息

package tetris;

import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.LayoutManager;
import java.awt.Paint;
import java.awt.Polygon;
import java.awt.Rectangle;
import java.awt.Stroke;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.geom.RoundRectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Collection;
import java.util.HashMap;
import java.util.linkedList;
import java.util.List;
import java.util.Map;
import java.util.Random;

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
import javax.swing.UIManager;

import sun.audio.AudioData;
import sun.audio.AudioDataStream;
import sun.audio.AudioPlayer;
import sun.audio.AudioStream;

/**
 * 俄罗斯方法主窗体

 * 暂未实现: 声音开关设置、能穿透的方块、炸弹方块、机关枪(能喷射点)、排行榜、新最高分记录提示、 游戏开始动画,游戏over动画

 * 
 * @note:有时间再写,先写到这基本就行啦

 * 
 * @author Tang
 * 
 */
@SuppressWarnings({ “serial“ “rawtypes“ “restriction“ })
public class Tetrisframe extends Jframe {

public static void main(String[] args) {
try {
UIManager.setLookAndFeel(com.sun.java.swing.plaf.windows.WindowsLookAndFeel.class.getName());
} catch (Exception e) {
e.printStackTrace();
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Tetrisframe tetrisframe = new Tetrisframe();
tetrisframe.setVisible(true);
}
});
}

public static Random random = new Random();

/**
 * 单元格大小(单位:像素)
 */
private int cellSize = 30;
/**
 * 方块图基的行数
 */
private int rows = 20;
/**
 * 方块图基的列数
 */
private int cols = 10;

private Color windowBackground = new Color(100 100 100);

/**
 * 方块图基的背景
 */
private Color plotBackground = Color.WHITE;

/**
 * 下个方块的背景
 */
private Color nextBackground = windowBackground;

/**
 * 方块中的每个小方块的渐变色的上面起始颜色
 */
private Color blockCellTopColor = Color.WHITE;
/**
 * 当前方块中的每个小方块的边框颜色
 */
private Color blockCellBorderColor = Color.GRAY;

/**
 * 虚拟方块的每个小方块的边框颜色
 */
private Color vertualBlockCellBorderColor = new Color(128 128 128 20);

/**
 * 方块图基的中的网格线颜色,网格线是用来分割行与列
 */
private Color plotGridColor = Color.LIGHT_GRAY;
/**
 * 方块图基的中的网格线规则器,网格线是用来分割行与列
 */
private Stroke plotGridStroke = new BasicStroke(0.

评论

共有 条评论