package project;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
public class Els extends JFrame implements KeyListener, Runnable
{
public Els()
{
setSize(240, 320);
setUndecorated(true);
int H = (int) (this.getToolkit().getScreenSize().height);
int W = (int) (this.getToolkit().getScreenSize().width);
setLocation(W / 2 - 120, H / 2 - 160);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void paint(Graphics g)
{
super.paint(g);
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.darkGray.brighter().brighter());
// 绘制小框格
for (int m = 192; m <= 232; m += 10)
{
g2.drawLine(m, 52, m, 92);
}
for (int m = 52; m <= 92; m += 10)
{
g2.drawLine(192, m, 232, m);
}
// 绘制大框格
for (int m = 0; m <= 180; m += 15)
{
g2.drawLine(m, 0, m, 300);
}
for (int m = 0; m <= 300; m += 15)
{
g2.drawLine(0, m, 180, m);
}
// 将值不非0的格子涂黑
for (int i = 1; i < 13; i++)
{
for (int j = 0; j < 20; j++)
{
g2.setColor(Color.DARK_GRAY);
if (o[i][j] != 0)
g2.fillRect(15 * i - 13, 15 * j + 2, 13, 13);
}
}
// 在小框格中绘制下一个的模型
switch (nextMODE)
{
case 0:
g2.fillRect(204, 54, 8, 8);
g2.fillRect(204, 64, 8, 8);
g2.fillRect(204, 74, 8, 8);
g2.fillRect(204, 84, 8, 8);
break;
case 1:
g2.fillRect(194, 64, 8, 8);
g2.fillRect(204, 64, 8, 8);
g2.fillRect(214, 64, 8, 8);
g2.fillRect(224, 64, 8, 8);
break;
case 2:
g2.fillRect(214, 64, 8, 8);
g2.fillRect(214, 74, 8, 8);
g2.fillRect(214, 84, 8, 8);
g2.fillRect(204, 84, 8, 8);
break;
case 3:
g2.fillRect(204, 64, 8, 8);
g2.fillRect(204, 74, 8, 8);
g2.fillRect(214, 74, 8, 8);
g2.fillRect(224, 74, 8, 8);
break;
case 4:
g2.fillRect(204, 64, 8, 8);
g2.fillRect(214, 64, 8, 8);
g2.fillRect(204, 74, 8, 8);
g2.fillRect(204, 84, 8, 8);
break;
case 5:
g2.fillRect(204, 64, 8, 8);
g2.fillRect(214, 64, 8, 8);
g2.fillRect(224, 64, 8, 8);
g2.fillRect(224, 74, 8, 8);
break;
case 6:
g2.fillRect(204, 54, 8, 8);
g2.fillRect(204, 64, 8, 8);
g2.fillRect(204, 74, 8, 8);
g2.fillRect(214, 74, 8, 8);
break;
case 7:
g2.fillRect(204, 74, 8, 8);
g2.fillRect(214, 74, 8, 8);
g2.fillRect(224, 74, 8, 8);
g2.fillRect(224, 64, 8, 8);
break;
case 8:
g2.fillRect(204, 64, 8, 8);
g2.fillRect(214, 64, 8, 8);
g2.fillRect(214, 74, 8, 8);
g2.fillRect(214, 84, 8, 8);
break;
case 9:
g2.fillRect(204, 64, 8, 8);
g2.fillRect(214, 64, 8, 8);
g2.fillRect(224, 64, 8, 8);
g2.fillRect(204, 74, 8, 8);
break;
case 10:
g2.fillRect(204, 64, 8, 8);
g2.fillRect(204, 74, 8, 8);
g2.fillRect(214, 74, 8, 8);
g2.fillRect(214, 84, 8, 8);
break;
case 11:
g2.fillRect(204, 74, 8, 8);
g2.fillRect(214, 74, 8, 8);
g2.fillRect(214, 64, 8, 8);
g2.fillRect(224, 64, 8, 8);
break;
case 12:
g2.fillRect(214, 64, 8, 8);
g2.fillRect(214, 74, 8, 8);
g2.fillRect(204, 74, 8, 8);
g2.fillRect(204, 84, 8, 8);
break;
case 13:
g2.fillRect(204, 64, 8, 8);
g2.fillRect(214, 64, 8, 8);
g2.fillRect(214, 74, 8, 8);
g2.fillRect(224, 74, 8, 8);
break;
case 14:
g2.fillRect(204, 64, 8, 8);
g2.fillRect(214, 64, 8, 8);
g2.fillRect(204, 74, 8, 8);
g2.fillRect(214, 74, 8, 8);
break;
}
g2.setColor(Color.black);
g2.drawLine(180, 0, 180, 300);
g2.setColor(Color.DARK_GRAY);
g2.drawString("LEVEL", 194, 10);
g2.drawString("" + LEVEL, 210, 28);
g2.drawString("NEXT", 196, 45);
g2.drawString("SCORE", 193, 110);
g2.drawString("" + SCORE, 205, 130);
g2.drawString("Xiong", 205, 160);
g2.drawString("Xuan", 205, 180);
}
// 方块下落的方法
public void down()
{
Y++;
switch (MODE)
{
case 0:
o[X + 2][Y] = 1;
o[X + 2][Y + 1] = 1;
o[X + 2][Y + 2] = 1;
o[X + 2][Y + 3]++;
o[X + 2][Y - 1] = 0;
break;
case 1:
o[X][Y + 1]++;
o[X + 1][Y + 1]++;
o[X + 2][Y + 1]++;
o[X + 3][Y + 1]++;
o[X][Y] = 0;
o[X + 1][Y] = 0;
o[X + 2][Y] = 0;
o[X + 3][Y] = 0;
break;
case 2:
o[X + 2][Y] = 1;
o[X + 2][Y + 1] = 1;
o[X + 2][Y + 2]++;
o[X + 1][Y + 2]++;
o[X + 2][Y - 1] = 0;
o[X + 1][Y + 1] = 0;
break;
case 3:
o[X][Y] = 1;
o[X][Y + 1]++;
o[X + 1][Y + 1]++;
o[X + 2][Y + 1]++;
o[X][Y - 1] = 0;
// o[X][Y]=0;
o[X + 1][Y] = 0;
o[X + 2][Y] = 0;
break;
case 4:
o[X + 1][Y] = 1;
o[X + 2][Y]++;
o[X + 1][Y + 1] = 1;
o[X + 1][Y + 2]++;
o[X + 1][Y - 1] = 0;
o[X + 2][Y - 1] = 0;
break;
case 5:
o[X][Y]++;
o[X + 1][Y]++;
o[X + 2][Y] = 1;
o[X + 2][Y + 1]++;
o[X][Y - 1] = 0;
o[X + 1][Y - 1] = 0;
o[X + 2][Y - 1] = 0;
break;
case 6:
o[X + 1][Y] = 1;
o[X + 1][Y + 1] = 1;
o[X + 1][Y + 2]++;
o[X + 2][Y + 2]++;
o[X + 1][Y - 1] = 0;
// o[X+1][Y]=0;
// o[X+1][Y+1]=0;
o[X + 2][Y + 1] = 0;
break;
case 7:
o[X][Y + 1]++;
o[X + 1][Y + 1]++;
o[X + 2][Y + 1]++;
o[X + 2][Y] = 1;
o[X][Y] = 0;
o[X + 1][Y] = 0;
// o[X+2][Y]=0;
o[X + 2][Y - 1] = 0;
break;
case 8:
o[X + 1][Y]++;
o[X + 2][Y] = 1;
o[X + 2][Y + 1] = 1;
o[X + 2][Y + 2]++;
o[X + 1][Y - 1] = 0;
o[X + 2][Y - 1] = 0;
// o[X+2][Y]=0;
// o[X+2][Y+1]=0;
break;
case 9:
o[X + 1][Y] = 1;
o[X + 2][Y]++;
o[X + 3][Y]++;
o[X + 1][Y + 1]++;
o[X + 1][Y - 1] = 0;
o[X + 2][Y - 1] = 0;
o[X + 3][Y - 1] = 0;
// o[X+1][Y]=0;
break;
case 10:
o[X + 1][Y] = 1;
o[X + 1][Y + 1]++;
o[X + 2][Y + 1] = 1;
o[X + 2][Y + 2]++;
o[X + 1][Y - 1] = 0;
// o[X+1][Y]=0;
o[X + 2][Y] = 0;
// o[X+2][Y+1]=0;
break;
case 11:
o[X + 2][Y] = 1;
o[X + 3][Y]++;
o[X + 1][Y + 1]++;
o[X + 2][Y + 1]++;
o[X + 2][Y - 1] = 0;
o[X + 3][Y - 1] = 0;
o[X + 1][Y] = 0;
// o[X+2][Y]=0;
break;
case 12:
o[X + 1][Y + 1] = 1;
o[X + 2][Y + 1]++;
o[X + 1][Y + 2]++;
o[X + 2][Y] = 1;
o[X + 1][Y] = 0;
// o[X+2][Y]=0;
// o[X+1][Y+1]=0;
o[X + 2][Y - 1] = 0;
break;
case 13:
o[X + 1][Y]++;
o[X + 2][Y] = 1;
o[X + 2][Y + 1]++;
o[X + 3][Y + 1]++;
o[X + 1][Y - 1] = 0;
o[X + 2][Y - 1] = 0;
// o[X+2][Y]=0;
o[X + 3][Y] = 0;
break;
case 14:
o[X + 1][Y] = 1;
o[X + 2][Y] = 1;
o[X + 1][Y + 1]++;
o[X + 2][Y + 1]++;
o[X + 1][Y - 1] = 0;
o[X + 2][Y - 1] = 0;
// o[X+1][Y]=0;
// o[X+2][Y]=0;
break;
}
// 如果碰撞,则自动上升一格
for (int i = 0; i < 13; i++)
{
for (int j = 0; j < 21; j++)
{
if (o[i][j] == 2)
up();
}
}
}
// 方块上升的方法
public void up()
{
Y--;
switch (MODE)
{
case 0:
o[X + 2][Y]++;
o[X + 2][Y + 1] = 1;
o[X + 2][Y + 2] = 1;
o[X + 2][Y + 3] = 1;
o[X + 2][Y + 4]--;
break;
case 1:
o[X][Y + 1]++;
o[X + 1][Y + 1]++;
o[X + 2][Y + 1]++;
o[X + 3][Y + 1]++;
o[X][Y + 2]--;
o[X + 1][Y + 2]--;
o[X + 2][Y + 2]--;
o[X + 3][Y + 2]--;
break;
case 2:
o[X + 2][Y]++;
o[X + 2][Y + 1] = 1;
o[X + 2][Y + 2] = 1;
o[X + 1][Y + 2]++;
o[X + 2][Y + 3]--;
o[X + 1][Y + 3]--;
break;
case 3:
o[X][Y]++;
o[X][Y + 1] = 1;
o[X + 1][Y + 1]++;
o[X + 2][Y + 1]++;
o[X][Y + 2]--;
// o[X][Y]=0;
o[X + 1][Y + 2]--;
o[X + 2][Y + 2]--;
break;
case 4:
o[X + 1][Y]++;
o[X + 2][Y]++;
o[X + 1][Y + 1] = 1;
o[X + 1][Y + 2] = 1;
o[X + 1][Y + 3]--;
o[X + 2][Y + 1]--;
break;
case 5:
o[X][Y]++;
Els.rar_JAVA俄罗斯方块
版权申诉
63 浏览量
2022-09-14
17:46:02
上传
评论
收藏 3KB RAR 举报
寒泊
- 粉丝: 74
- 资源: 1万+
最新资源
- 基于matlab实现串口发送接收数据 可配置端口,波特率等 发送可选择ASCII方式或HEX方式
- matlab基于BP神经网络手写字母识别(单一).zip代码9
- 基于matlab实现编写的串口调试工具,数据接收部分采用中断方式,保证了实时的数据显示
- 基于matlab实现39节点电力系统合闸角调控过程中的机组和负荷的灵敏度计算.rar
- HBase数据库性能调优
- 原生微信小程序源码 - -首字母排序选择
- 基于QT+C++开发的保卫萝卜塔防游戏+源码(毕业设计&课程设计&项目开发)
- newapp.apk
- 项目申报管理系统论文Java项目
- 8数码、α-β搜索的博弈树算法编写一字棋游戏、Fisher线性分类器、感知器算法、SVM 分类器、卷积神经网络 CNN 框架
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈