⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 diamandcanvas.java

📁 俄罗斯方块的JAVA实现
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package russiandiamand;

import java.util.*;
import javax.microedition.lcdui.*;
import com.siemens.mp.game.*;

public class DiamandCanvas
    extends Canvas
    implements CommandListener, Runnable
{
    private Command newCommand = new Command("重玩", Command.SCREEN, 2);
    private Command highScoreCommand = new Command("高分", Command.SCREEN, 2);
    private Command aboutCommand = new Command("关于", Command.SCREEN, 2);

    final int orgin_x = 4;

    final int WIDTH_DIAMAND = 16;
    final int HIGHTH_DIAMAND = 20;

    final int SIZE_DIAMAND = 4;

    int[][] deadArray = new int[WIDTH_DIAMAND][HIGHTH_DIAMAND];
    int[][] liveArray;
    int[] livePos = new int[]{orgin_x, 0};

    int score = 0;

    boolean isRunning = true;
    boolean isPausing = false;

    Random random = new Random(Calendar.getInstance().getTime().getTime());

    int currentDiamand = Math.abs(random.nextInt()) % 19;
    int nextDiamand = Math.abs(random.nextInt()) % 19;;

    //0~0,1~4,5~8,9~12,13~14,15~16,17~18
    final int[][][] diamandArray =
        new int[][][]{
        //**
        //**
        {{1, 1, 0, 0},{1, 1, 0, 0},{0, 0, 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},{1, 1, 0, 0},{0, 1, 0, 0},{0, 0, 0, 0}},
        // *
        //***
        {{0, 1, 0, 0},{1, 1, 1, 0},{0, 0, 0, 0},{0, 0, 0, 0}},
        //*
        //**
        //*
        {{1, 0, 0, 0},{1, 1, 0, 0},{1, 0, 0, 0},{0, 0, 0, 0}},
        //**
        // *
        // *
        {{1, 1, 0, 0},{0, 1, 0, 0},{0, 1, 0, 0},{0, 0, 0, 0}},
        //  *
        //***
        {{0, 0, 1, 0},{1, 1, 1, 0},{0, 0, 0, 0},{0, 0, 0, 0}},
        //*
        //*
        //**
        {{1, 0, 0, 0},{1, 0, 0, 0},{1, 1, 0, 0},{0, 0, 0, 0}},
        //***
        //*
        {{1, 1, 1, 0},{1, 0, 0, 0},{0, 0, 0, 0},{0, 0, 0, 0}},
        //**
        //*
        //*
        {{1, 1, 0, 0},{1, 0, 0, 0},{1, 0, 0, 0},{0, 0, 0, 0}},
        //***
        //  *
        {{1, 1, 1, 0},{0, 0, 1, 0},{0, 0, 0, 0},{0, 0, 0, 0}},
        // *
        // *
        //**
        {{0, 1, 0, 0},{0, 1, 0, 0},{1, 1, 0, 0},{0, 0, 0, 0}},
        //*
        //***
        {{1, 0, 0, 0},{1, 1, 1, 0},{0, 0, 0, 0},{0, 0, 0, 0}},
        //**
        // **
        {{1, 1, 0, 0},{0, 1, 1, 0},{0, 0, 0, 0},{0, 0, 0, 0}},
        // *
        //**
        //*
        {{0, 1, 0, 0},{1, 1, 0, 0},{1, 0, 0, 0},{0, 0, 0, 0}},
        // **
        //**
        {{0, 1, 1, 0},{1, 1, 0, 0},{0, 0, 0, 0},{0, 0, 0, 0}},
        //*
        //**
        // *
        {{1, 0, 0, 0},{1, 1, 0, 0},{0, 1, 0, 0},{0, 0, 0, 0}},
        //****
        {{1, 1, 1, 1},{0, 0, 0, 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}},
    };

    final int leftMagin = 4;

    ExtendedImage extImg = new ExtendedImage(Image.createImage(104, 80));
    Image img = null;

    /** Constructor */
    public DiamandCanvas()
    {
        try
        {
            jbInit();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }

    /**
     * Component initialization
     * @throws java.lang.Exception
     */
    private void jbInit() throws Exception
    {
        // Set up this Displayable to listen to command events
        setCommandListener(this);
        // add the Exit command
        addCommand(new Command("退出", Command.EXIT, 1));
        addCommand(newCommand);
        addCommand(highScoreCommand);
        addCommand(aboutCommand);

        img = Image.createImage("russiandiamand/res/diamand.png");

        initLive();

        Thread thread = new Thread(this);
        thread.start();
    }

    public void run()
    {
        while (isRunning)
        {
            if (!isPausing)
            {
                handleDown();
                repaint();
            }
            try
            {
                Thread.sleep(333);
            }
            catch (InterruptedException ex)
            {
            }
        }
    };

    /**
     * Handle command events
     * @param command command
     * @param displayable displayable
     */
    public void commandAction(Command command, Displayable displayable)
    {
        if (command.getCommandType() == Command.EXIT)
        {
            if (score > Integer.parseInt(DiamandMIDlet.highScoreForm.getScore()))
            {
                DiamandMIDlet.highScoreForm.setScore("" + score);
            }
            DiamandMIDlet.quitApp();
        }
        else if (command == newCommand)
        {
            if (score > Integer.parseInt(DiamandMIDlet.highScoreForm.getScore()))
            {
                DiamandMIDlet.highScoreForm.setScore("" + score);
            }
            DiamandMIDlet.display.setCurrent(DiamandMIDlet.highScoreForm);
        }
        else if (command == highScoreCommand)
        {
            if (score > Integer.parseInt(DiamandMIDlet.highScoreForm.getScore()))
            {
                DiamandMIDlet.highScoreForm.setScore("" + score);
            }
            DiamandMIDlet.display.setCurrent(DiamandMIDlet.highScoreForm);
        }
        else if (command == aboutCommand)
        {
            Alert messageAlert = new Alert("消息", "版权所有,陈轶(2004), 版本: 0.1, 兼容西门子手机.", null, AlertType.INFO);
            DiamandMIDlet.display.setCurrent(messageAlert, this);
        }
    }

    protected void keyPressed(int keyCode)
    {
        if (!isRunning)
        {
            return;
        }
        int key = getGameAction(keyCode);

        switch(key)
        {
            case Canvas.KEY_NUM2 :
            case Canvas.UP:
                handleUp();
                updateUI();
                break;
            case Canvas.KEY_NUM4 :
            case Canvas.LEFT:
                handleLeft();
                updateUI();
                break;
            case Canvas.KEY_NUM6 :
            case Canvas.RIGHT:
                handleRight();
                updateUI();
                break;
            case Canvas.KEY_NUM8 :
            case Canvas.DOWN:
                handleDown();
                updateUI();
                break;
        }
    }

    /**
     * Required paint implementation
     * @param g Graphics
     */
    protected void paint(Graphics g)
    {
        updateUI();
    }

    public void handleUp()
    {
        if (canChange())
        {
            changeShape();
        }
    }

    public void handleDown()
    {
        if (canDown())
        {
            System.out.println("down");
            down();
        }
        else
        {
            System.out.println("!canDown");
            makeLiveToDeath();
            removeLine();
            if (canMakeNewLive())
            {
                initLive();
            }
            else
            {
                isRunning = false;
            }
        }
    }

    public void handleLeft()
    {
        if (canLeft())
        {
            left();
        }
    }

    public void handleRight()
    {
        if (canRight())
        {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -