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

📄 mainscreen.java

📁 经典学习源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * MainScreen.java * * Created on November 11, 2003, 12:14 PM */import javax.microedition.lcdui.*;import java.util.*;import java.io.*;/** * * @author  kobi-kr * @version */public class MainScreen extends Canvas implements CommandListener {    private int x1, x2, x3, x4, y1, y4;    private int counter = 0, keyStatus = 0;    private int meX, meY, compX, compY, xBall, yBall, ballDir, ballOwner = 0, xBallOwner = 0, yBallOwner = 0, compMode = 0, BallAfterTimer = 1;    private int myScore = 0, compScore = 0, clockMinute = 2, clockSecond = 0, compYDirection = 0;    private int deltaX = 0, oldY = 0, doneY = 0;    private int timerStatus = 1, delay = 0, freeBallX, freeBallY, case3Mode = 1, delay2 = 0;    private Timer timer;    private Timer timerCounter;    private Image offscreen = null;    private TestMidletMIDlet parent;    private Command pauseCommand = new Command("Pause", Command.STOP, 1);    private Image screenShot, compPlayer, mePlayer, tinyBall;    int myWidth, myHeight;    int offsetWidth, offsetHeight;    private int originalY;    private int[] deltaY = {0, 2, 5, 7, 9, 11, 12, 14, 15, 16, 17, 18, 19, 19, 20, 20, 20, 20, 20, 20, 19, 18, 17, 17, 15, 14, 13, 11, 9, 7, 5};    private int finishGame = 0;            /**     * constructor     */    public MainScreen(TestMidletMIDlet parent) {        this.parent = parent;        myWidth = 128;        myHeight = 128;        meX = myWidth* 3 / 16;        meY = myHeight * 3 / 4;        compX = myWidth* 13 / 16;        compY = myHeight * 3 / 4;        xBall = meX + 8;        yBall = 3;        offsetWidth = (this.getWidth() - myWidth) / 2;        offsetHeight = (this.getHeight() - myHeight) / 2;        try {            screenShot = Image.createImage("/Images/screenShot.png");        }        catch(IOException e) {}        try {            compPlayer = Image.createImage("/Images/compPlayer.png");        }        catch(IOException e) {}        try {            mePlayer = Image.createImage("/Images/mePlayer.png");        }        catch(IOException e) {}        try {            tinyBall = Image.createImage("/Images/tinyBall.png");        }        catch(IOException e) {}        addCommand(pauseCommand);        setCommandListener(this);    }        /**     * Handles command actions     */    public void commandAction(Command c, Displayable d) {        if (c == pauseCommand) {            stopTimer();            parent.setCurrent("MainMenu");            timerStatus = 0;        }    }        /**     * paints the screen     */    public void paint(Graphics g) {                Graphics saved = g;        String clockMinuteStr = new String();        String clockSecondStr = new String();                       if (offscreen != null) {            g = offscreen.getGraphics();        }                // cleans the screen        g.setColor(255, 255, 255);    	g.fillRect(0, 0, this.getWidth(), this.getHeight());                // define corners of field        x1 = myWidth*3/16;        x2 = myWidth*13/16;        x3 = myWidth - 2;        x4 = 2;        y1 = myHeight * 1 / 2;        y4 = myHeight - 1;                // draw solid background        g.setColor(255, 255, 255);        g.fillRect(offsetWidth, offsetHeight, myWidth, myHeight);        g.setColor(0, 0, 0);        g.drawImage(screenShot, offsetWidth, offsetHeight, 0);                // draw Scores        g.fillRect(offsetWidth + myWidth / 4, offsetHeight + myHeight / 8, myWidth /  2, myHeight / 4);        g.setColor(255, 255, 255);        g.drawRect(offsetWidth + myWidth / 4, offsetHeight + myHeight / 8, myWidth /  2, myHeight / 4);        clockMinuteStr = String.valueOf(clockMinute);        clockSecondStr = String.valueOf(clockSecond);        if (clockMinuteStr.length() == 1)            clockMinuteStr = "0" + clockMinuteStr;        if (clockSecondStr.length() == 1)            clockSecondStr = "0" + clockSecondStr;        g.drawString(":", offsetWidth + myWidth / 2, offsetHeight + 15, Graphics.TOP|Graphics.LEFT);        g.drawString(clockMinuteStr, offsetWidth + myWidth / 2 - 15, offsetHeight + 17, Graphics.TOP|Graphics.LEFT);        g.drawString(clockSecondStr, offsetWidth + myWidth / 2 + 5, offsetHeight + 17, Graphics.TOP|Graphics.LEFT);        g.drawString(String.valueOf(myScore), offsetWidth + myWidth / 2 - 25, offsetHeight + 32, Graphics.TOP|Graphics.LEFT);        g.drawString(String.valueOf(compScore), offsetWidth + myWidth / 2 + 20, offsetHeight + 32, Graphics.TOP|Graphics.LEFT);            // paint player me        g.drawImage(mePlayer, offsetWidth + meX, offsetHeight + meY - 19, 0);                        // paint Computer Player        g.drawImage(compPlayer, offsetWidth + compX, offsetHeight + compY - 19, 0);                //paintBall        g.drawImage(tinyBall, offsetWidth + xBall, offsetHeight + freeBallY - yBall, 0);                        if (g != saved) {            saved.drawImage(offscreen, 0, 0, Graphics.LEFT | Graphics.TOP);        }                    }        // calculate move    private void myMove2()    {        //BallAfterTimer++;        Random rnd = new Random();        delay++;        //delay2++;                // define me Coordinates        switch(keyStatus) {            // up            case Canvas.KEY_NUM2:                meY--;                if (meY < y1)                    meY = y1;                break;            // down            case Canvas.KEY_NUM8:                meY++;                if (meY > y4)                    meY = y4;                break;            // right            case Canvas.KEY_NUM6:                meX++;                if ((x2 + x3) / 2 < meX) {                    meX = (x2 + x3) / 2;                }                if (ballOwner == 0 && compMode != 5)                    xBall = meX + 8;                break;            // left            case Canvas.KEY_NUM4:                meX--;                if ((x1 + x4) / 2 > meX) {                    meX = (x1 + x4) / 2;                }                if (ballOwner == 0 && compMode != 5)                    xBall = meX + 8;                break;            // fire            case Canvas.KEY_NUM5:                if (compMode == 2) {                    originalY = freeBallY;                    compMode = 5;                }                break;            default:                /////        }                //compMode = compMode;        switch (compMode) {            /*              *free ball jumps             */            case 1:                ballJump();                                // decides who gets the ball                // computer gets the ball                if (Math.abs(xBall - compX) <= 21 && Math.abs(freeBallY - compY) <= 5) {                    case3Mode = 1;                    compMode = 3;                    delay = 0;                }                // me kidnaps the ball                if (Math.abs(meX - xBall) <= 21 && Math.abs(meY - freeBallY) <= 5) {                    compMode = 2;                    delay = 0;                    delay2 = 0;                }                                                // calculate comp moves                if (compY > freeBallY) {                    compY--;                }                if (compY < freeBallY) {                    compY++;                }                if (compX > xBall) {                    compX--;                 }                if (compX < xBall) {                    compX++;                }                compCheckBorders();                break;            /*             *the ball is at me player             */            case 2:                xBall = meX + 6;                freeBallY = meY;                ballOwner = 0;                delay2++;                ballJump();                // computer steals the ball                if (Math.abs(meX - compX) <= 21 && Math.abs(meY - compY) <= 5 && delay >= 10) {                    case3Mode = 1;                    compMode = 3;                    delay = 0;                    delay2 = 0;                }                if (delay2 > 30) {                    if (Math.abs(meX + 20 - compX) > Math.abs(meY - compY)) {                        if (compX > meX + 20)                             compX--;                        else                            compX++;                    }                    else {                        if (compY > meY)                            compY--;                        else                            compY++;                    }                    // check borders for comp players                    compCheckBorders();                }                break;            /*             *the ball is at computer player             */            case 3:                xBall = compX - 3;                freeBallY = compY;                ballOwner = 1;                ballJump();                // me kidnaps the ball                if (Math.abs(meX - compX) <= 21 && Math.abs(meY - compY) <= 5 && delay >= 5) {                    compMode = 2;                    delay = 0;                    delay2 = 0;                }                // computes computer player                switch (case3Mode)                {                // go back from player                case 1:                    compX++;                    if (compX > meX + 29) {                        case3Mode = 2;                    }                    break;                // go side from player                case 2:                    if (compY < myHeight * 3 / 4) {                        compY++;                        compYDirection = 1;                        case3Mode = 3;                    }                    else {                        compY--;                        compYDirection = 0;                        case3Mode = 3;                    }                    break;                // continue go side                case 3:                    if (compYDirection == 1 && compY <= meY + 15) {                        compY++;                        if (compY > y4)                            compY = y4;                    }                    else if (compYDirection == 0 && compY >= meY - 15) {                        compY--;                        if (compY < y1)                            compY = y1;                    }                    else {                        case3Mode = 4;                    }                    break;                // go forward                case 4:                    if (compX > myWidth * 11 / 32) {                        compX--;                    }                    else if (compX < myWidth * 1 / 4 - 3) {                        compX++;                    }                    else {                        originalY = freeBallY;                        compMode = 6;                    }                    break;                // finaly throw the ball                case 5:                    case3Mode = 1;                    originalY = freeBallY;                    compMode = 6;                    yBall = 9;                    deltaX = 1;                    break;                default:                    //                }                

⌨️ 快捷键说明

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