【基于Java+Swing

本文分享了一款Java实现的俄罗斯方块游戏,玩家可以自定义游戏颜色、难度、背景音乐等设置。游戏源代码包括Version.java和GameCanvas.java,展示了游戏界面和画布的实现,支持方块颜色和速度调整等功能。
摘要由CSDN通过智能技术生成

----------- 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 ------------------------------------------------------------

下面是游戏的几个效果展示:

我玩儿的菜哈,各位见谅~~

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

[](()(2)游戏设置


为何颜色不一样呢?因为是可以自定义游戏中方块的颜色、游戏难度、游戏背景音乐、游戏中方块落下的速度、方块是否自动上升、游戏背景图片…:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

其余界面这里不再展示~~

[](()(二)源代码实例

=======================================================================

Version.java

package view;

import javax.swing.*;

import javax.swing.event.*;

import java.awt.*;

public class Version extends JDialog{

JLabel jl1=new JLabel("CSDN博客 ");

JLabel jl2=new JLabel(“作者: 追光者♂”);

JLabel jl3=new JLabel(“俄罗斯方块8.0”);

JPanel jp=new JPanel();

public Version(JFrame j,String s,boolean b){

super(j,s,b);

this.setBounds(400, 120, 200, 200);

this.setVisible(true);

this.setResizable(false);

jp.setLayout(new GridLayout(3, 1));

jp.add(jl1);

jp.add(jl2);

jp.add(jl3);

this.add(jp);

}

}

GameCanvas.java

package view;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.util.Random;

import javax.swing.JPanel;

import javax.swing.border.EtchedBorder;

import model.Block;

import model.Box;

public class GameCanvas extends JPanel {

private Color backColor = Color.GRAY, frontColor = Color.orange;

private int rows, cols, score = 0, scoreForLevelUpdate = 0;

private Box[][] boxes;

private int boxWidth=25, boxHeight=25;

private boolean gameOver=false;

public boolean pau=false;

/**

  • 画布类的构造函数

  • @param rows int, 画布的行数

  • @param cols int, 画布的列数

  • 行数和列数决定着画布拥有方格的数目

*/

public GameCanvas(int rows, int cols) {

this.rows = rows;

this.cols = cols;

this.setOpaque(false);

boxes = new Box[rows][cols];

for (int i = 0; i < boxes.length; i++) {

for (int j = 0; j < boxes[i].length; j++) {

boxes[i][j] = new Box(false);

}

}

setBounds(0, 0, 300, 500);//设置相对位置坐标

setBorder(new EtchedBorder(

EtchedBorder.RAISED, Color.white, new Color(148, 145, 140)));

}

/**

  • 画布类的构造函数

  • @param rows 与public GameCanvas(int rows, int cols)同

  • @param cols 与public GameCanvas(int rows, int 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;

}

/**

  • 得到某一行某一列的方格引用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值