当前位置:  技术问答>java相关

求助:谁能告诉我俄罗斯方块的算法和编制思路?谢谢

    来源: 互联网  发布时间:2015-04-20

    本文导语:  如题!!!!! | import java.awt.*; import java.awt.event.*; import java.applet.*; /*     TRTRIS GAME     WRITE BY DELFAN     EMAIL : webmaster@delfan.com     URL : http://www.delfan.com     经典"俄罗斯方块...

如题!!!!!

|
import java.awt.*;
import java.awt.event.*;
import java.applet.*;

/*
    TRTRIS GAME
    WRITE BY DELFAN
    EMAIL : webmaster@delfan.com
    URL : http://www.delfan.com

    经典"俄罗斯方块"游戏
    作者 : DELFAN
    EMail : webmaster@delfan.com
    主页 : http://www.delfan.com

    版本信息:
    2002.01.13 基本完成

    请任何时候都保留以上信息.谢谢!
*/


public class tetris extends Applet implements Runnable
{
    Thread thread;
    private Image offImg; // 缓冲图象
    private Graphics offG; // 缓冲


    final int BaseX = 20;
    final int BaseY = 20;
    final int BlockSize = 20;  // 每个块的大小

    //
    //  定义游戏中出现的信息
    //
    final String INFO_READY = "S键 开始游戏";
    final String INFO_PAUSE = "P键 继续游戏";
    final String INFO_GAMEOVER = "游戏结束 任意键继续";

    byte SHAPE[][][][] = // [造型索引][旋转索引][4][坐标]
    {
        {  // 造型一
          {{ 0, 0},{ 1, 0},{ 0, 1},{ 1, 1}}, // 旋转一  [][]....
          {{ 0, 0},{ 1, 0},{ 0, 1},{ 1, 1}}, // 旋转二  [][]....
          {{ 0, 0},{ 1, 0},{ 0, 1},{ 1, 1}}, // 旋转三  ........
          {{ 0, 0},{ 1, 0},{ 0, 1},{ 1, 1}}  // 旋转四  ........
        },
        {  // 造型二
          {{-1, 0},{ 0, 0},{ 0, 1},{ 1, 1}}, // 旋转一              []
          {{ 0,-1},{ 0, 0},{-1, 0},{-1, 1}}, // 旋转二  []()      []()
          {{-1, 0},{ 0, 0},{ 0, 1},{ 1, 1}}, // 旋转三    [][]    []
          {{ 0,-1},{ 0, 0},{-1, 0},{-1, 1}}  // 旋转四
        },
        {  // 造型三
          {{ 1, 0},{ 0, 0},{ 0, 1},{-1, 1}}, // 旋转一            []
          {{ 0,-1},{ 0, 0},{ 1, 0},{ 1, 1}}, // 旋转二    ()[]    ()[]
          {{ 1, 0},{ 0, 0},{ 0, 1},{-1, 1}}, // 旋转三  [][]        []
          {{ 0,-1},{ 0, 0},{ 1, 0},{ 1, 1}}  // 旋转四
        },
        {  // 造型四
          {{ 0, 0},{ 1, 0},{ 2, 0},{ 0, 1}}, // 旋转一                       []    []
          {{ 0,-2},{ 0,-1},{ 0, 0},{ 1, 0}}, // 旋转二  ()[][]    []()   [][]()    []
          {{-2, 0},{-1, 0},{ 0, 0},{ 0,-1}}, // 旋转三  []          []             ()[]
          {{-1, 0},{ 0, 0},{ 0, 1},{ 0, 2}}  // 旋转四              []
        },
        {  // 造型五
          {{-2, 0},{-1, 0},{ 0, 0},{ 0, 1}}, // 旋转一            []
          {{ 0, 0},{ 1, 0},{ 0, 1},{ 0, 2}}, // 旋转二  [][]()    []   []       ()[]
          {{ 0,-1},{ 0, 0},{ 1, 0},{ 2, 0}}, // 旋转三      []  []()   ()[][]   []
          {{ 0,-2},{ 0,-1},{ 0, 0},{-1, 0}}  // 旋转四                          []
        },
        {  // 造型六
          {{-1, 0},{ 0, 0},{ 1, 0},{ 0, 1}}, // 旋转一
          {{ 0,-1},{ 0, 0},{ 0, 1},{ 1, 0}}, // 旋转二    []     []                []
          {{-1, 0},{ 0, 0},{ 1, 0},{ 0,-1}}, // 旋转三  []()[]   ()[]    []()[]  []()
          {{-1, 0},{ 0, 0},{ 0,-1},{ 0, 1}}  // 旋转四           []        []      []
        },
        {  // 造型六
          {{ 0,-1},{ 0, 0},{ 0, 1},{ 0, 2}}, // 旋转一  []
          {{-1, 0},{ 0, 0},{ 1, 0},{ 2, 0}}, // 旋转二  ()   []()[][]
          {{ 0,-1},{ 0, 0},{ 0, 1},{ 0, 2}}, // 旋转三  []
          {{-1, 0},{ 0, 0},{ 1, 0},{ 2, 0}}  // 旋转四  []
        }
    };

    //
    //  定义游戏中使用的变量
    //
    final int[] Speeds = {60,50,40,30,20,15,10,5,3,1};  // 速度值定义

    byte[][] Ground = new byte[10][20];  // 在 10 X 20 的场地游戏,预留顶部放置方块的空间一格
    byte[][] NextShape = new byte[4][2]; // 存放下块造型
    int CurrentX;                   // 当前X左边
    int CurrentY;                   // 当前Y坐标
    int CurrentShapeIndex;          // 当前造型索引
    int CurrentTurnIndex;           // 当前旋转索引
    int CurrentColorIndex;          // 当前造型色彩索引
    int NextShapeIndex;             // 下块出现的造型的索引
    int GameSpeed = 0;              // 游戏速度
    int SpeedVar = 0;               // 延时计数
    int FlashSpeed = 60;            // 信息提示闪烁速度
    int FlashVar = 0;               // 闪烁延时计数
    int ClearTotalLine = 0;         // 消掉的总行数


    Color[] Colors = {Color.black,Color.red,Color.green,Color.blue,Color.magenta,Color.yellow,Color.orange,Color.pink};

    //
    //   定义游戏中出现的状态
    //
    final int READY = 0;
    final int GAMING = 1;
    final int PAUSE = 2;
    final int GAMEOVER = 3;
    private int CurrentMode = READY ;   // 游戏状态变量

    String InfoStr = new String(INFO_READY);

    public void init()
    {
        offImg = createImage(getSize().width, getSize().height); // 创建缓冲图象大小
        offG = offImg.getGraphics();
        setBackground(Color.black);
    }

    public void MakeNextShape()
    {
        NextShapeIndex = (int)(Math.random()*70) /10;
        NextShape = SHAPE[NextShapeIndex][0];
    }

    public void ClearGround()  // 清除场地
    {
        for(int i=0; i

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 伙伴算法 求助
  • 100分求助 能不能提供一些有关图像分割的算法和实现代码!谢谢
  • 求助:内容过滤算法
  • 求助:FIFO的基本算法问题
  • 回声抵消算法在LINUX ARM上跑的调度问题求助
  • 高分求助高分求助高分求助高分求助高分求助高分求助
  • 怎样读取HZK24S前十区的内容啊???求助求助
  • 紧急求助!紧急求助!
  • 【求助】iplanet问题,求助高手解答!
  • 菜鸟求助,solaris下计算问题求助
  • 【求助】SOS紧急求助..............极为简单的问题...跪求....
  • 高分求助啊!求助SUSE 10.0 不能上网.
  • 急急急急急急急啊,紧急求助啊!!!!!满分求助啊!!!!!!
  • 求助:linux下 vim的配置(高分求助)
  • red hat怎么安装gcc啊!总是出错,求助求助啊!!!yum源怎么改啊!!
  • 求助~~求助 ~~linux文件读写问题
  • 求助:信号 --13 进程中断
  • 求助,安装了红帽子后进不了
  • 新装linux求助
  • linux的 iptables问题求助
  • (高分求助)请问,那里有软件开发的<设计文档>
  • 一个简单的问题,高分求助!!!
  • 紧急求助:Unix下给文件夹重命名用什么命令?谢谢!!!!
  • VJ的一个问题,高分求助,熟悉VJ得请进!
  • 高分求助


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3