用JAVA写的俄罗斯方块

用JAVA写的俄罗斯方块,刚学,参考了CSDN里的代码,写的很乱。一共2类。N键开始,P暂停,R重新开始,空格变形。7个方块随机。一次消除4行可以打开提示功能,简化版。

用JAVA写的俄罗斯方块_第1张图片

 

类1

package maozifangkuai;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class GamePanel extends JPanel {
	private static final long serialVersionUID = 1L;
	Block block = null;// 方块
	Block nextblock = null;// 下一个方块
	GameThread gamethread = new GameThread();// 线程实例化
	ArrayList datas = new ArrayList<>();// 7方块样式
	ArrayList blocks = new ArrayList<>();// 7个图案存4个块的集合
	ArrayList nextblocks = new ArrayList<>();// 下一个图案存4个块的集合
	ArrayList clearblocks = new ArrayList<>();// 待消除块的行号集合
	static JFrame frame = null;// 主Frame
	static int width = 600;// 窗体宽度
	static int height = 900;// 方块活动高度
	int blockwidth = 30;// 格子宽度
	int tempno = width / 2 / blockwidth;
	int row = width / blockwidth;// 列
	int col = height / blockwidth;// 行
	static int frameheight = height + 40;// 窗体高度
	int score = 0;// 分数
	int fourscore = 0;// 分数
	int modelcount = 0;// 方块计数
	int modeltype = 0;// 方块样式
	int gamespeed = 400;// 游戏速度
	int hitcount = 0;
	boolean doublehit = false;
	boolean leftflag = true;// 左移布尔
	boolean rightflag = true;// 右移布尔
	boolean downflag = true;// 下落布尔
	boolean gameflag = false;// 游戏布尔
	boolean hit = false;// 碰撞布尔
	boolean canrotate = false;// 旋转布尔

	Block[][] blockStack = new Block[row][col];// 存储落地的方块

	public static void main(String[] args) {
		frame = new JFrame();
		frame.setTitle("N=Start,P=Pause,R=Restart");// 设置标题
		frame.setSize(width + 17, frameheight);// 设定尺寸
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 点击关闭按钮是关闭程序
		frame.setResizable(false); // 不允许修改界面大小
		frame.getContentPane().setBackground(new Color(0, 100, 0, 255));// 背景色
		GamePanel gamepanel = new GamePanel();// GamePanel实例化
		frame.add(gamepanel);// GamePanel加入容器
		frame.setVisible(true);// 可视
	}

	public GamePanel() {
		this.setOpaque(false);// 设置透明
		this.setBounds(0, 0, width, frameheight);// 设置位置,大小
		datainit();// 方块样式初始化
		createKeyListener();// 监听
		nextblock = new Block(0, 0, this);
		init();// 方块初始化
		gamethread.start();// 线程开始
	}

	// 方块有7个形状可以随机
	void datainit() {
		int[][] data1 = { { -1, 0 }, { 0, 0 }, { 1, 0 }, { 1, 1 } };
		datas.add(data1);
		int[][] data2 = { { -1, 0 }, { 0, 0 }, { 1, 0 }, { 2

你可能感兴趣的:(java,开发语言)