俄罗斯方块 java_java代码实现俄罗斯方块

本文介绍了如何使用Java编程实现经典的俄罗斯方块游戏。游戏支持键盘操作,包括左右移动、变换造型和加速下落。代码中详细展示了游戏逻辑和各种形状的设计,以及游戏界面的绘制。游戏还包括计分系统和游戏结束条件。文章提供了GamePanel类和GameFrame类的主要代码实现,帮助读者了解整个游戏的工作原理。
摘要由CSDN通过智能技术生成

本文实例为大家分享了java实现俄罗斯方块的具体代码,供大家参考,具体内容如下

俄罗斯方块设计思想

俄罗斯方块都从小玩到大吧,什么规则大家都知道了吧,以前感觉那玩意贼好玩,但是就是老赢不了,现在学会了自己写一个天天练!

键盘操作:

左键:左移; 右键:右移;

上键:变换造型 下键:加速下掉(没毛病吧,没有继续整)

任意一行的方块满格,这一行就消除,消除一行方块得10分,目前小主我还没有设置关卡,各位喜欢的宝宝们可以自己设置关卡哦;

那么那些方块的造型到底从哪里来的呢,那就是我们自己设计的,常见的几种造型就是:I型,T型,L型,田字格型等等吧,自己个加呗!

那么到底咋整的咧?其实啊就是一个4*4的数组,当然了你开心设计n*n也可以,你牛皮你说了算!

那么下面举了一个例子,用来告诉你们为啥你们看见的造型可以变换的原因就是这样提前设计好,0为空,1为填充格,这样你就可以在你的游戏里面凹造型了!

1e4b23d59b97248f6af72bf1ef394723.png

算了:直接放图先看代码运行结果吧:

c51c17d86ebdd5da72e24d4bae30fb1f.png

喜欢吗?喜欢就直接做吧,可能代码写的不够好,请各位大神多多包涵,我回头也会多总结,会不断更新代码的;

GamePanel类:游戏界面类,整个方块掉落和显示,游戏的逻辑斯洛都在这个类里面实现;

package tetris;

import java.awt.Graphics;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import java.util.Random;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.Timer;

public class GamePanel extends JPanel implements KeyListener{

private int mapRow = 21;

private int mapCol = 12;

private int mapGame[][] = new int[mapRow][mapCol];//开辟一个二维数组空间,用来存放我们的地图信息

private Timer timer;

private int score = 0;//记录成绩

Random random = new Random();

private int curShapeType = -1;

private int curShapeState = -1;//设置当前的形状类型和当前的形状状态

private int nextShapeType = -1;

private int nextShapeState = -1;//设置下一次出现的方块组的类型和状态

private int posx = 0;

private int posy = 0;

private final int shapes[][][] = new int[][][]{

//T字形按逆时针的顺序存储

{

{0,1,0,0, 1,1,1,0, 0,0,0,0, 0,0,0,0},

{0,1,0,0, 1,1,0,0, 0,1,0,0, 0,0,0,0},

{1,1,1,0, 0,1,0,0, 0,0,0,0, 0,0,0,0},

{0,1,0,0, 0,1,1,0, 0,1,0,0, 0,0,0,0}

},

//I字形按逆时针的顺序存储

{

{0,0,0,0, 1,1,1,1, 0,0,0,0, 0,0,0,0},

{0,1,0,0, 0,1,0,0, 0,1,0,0, 0,1,0,0},

{0,0,0,0, 1,1,1,1, 0,0,0,0, 0,0,0,0},

{0,1,0,0, 0,1,0,0, 0,1,0,0, 0,1,0,0}

},

//倒Z形按逆时针的顺序存储

{

{0,1,1,0, 1,1,0,0, 0,0,0,0, 0,0,0,0},

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值