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

📄 mycanvas.java

📁 J2ME的拼图魔方游戏
💻 JAVA
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package com.puzzle.j2me;import javax.microedition.lcdui.Canvas;import javax.microedition.lcdui.Graphics;import javax.microedition.lcdui.Image;import java.util.Random;/** * * @author Paddy */public class MyCanvas extends Canvas{    public int[][] pics = new int[4][3];    public Image[] images = new Image[12];    public int step = 0;    public int spaceX = 2;    public int spaceY = 3;    public int spaceValue = 0;    public String[] imgSrc = new String[12];    public MyCanvas()    {        this.setFullScreenMode(true);        for (int i = 0; i < 4; i++)        {            for (int j = 0; j < 3; j++)            {                pics[i][j] = i * 3 + j + 1;            }        }        //pics[3][2] = 0;        Random rand = new Random();        for (int i = 0; i < 3; i++)        {            int x1 = rand.nextInt(3);            int y1 = rand.nextInt(3);            int x2 = rand.nextInt(3);            int y2 = rand.nextInt(3);            int n = pics[y1][x1];            pics[y1][x1] = pics[y2][x2];            pics[y2][x2] = n;        }        for (int i = 1; i <= 9; i++)        {            imgSrc[i] = "/img_r" + String.valueOf((i + 2) / 3) + "_c" + String.valueOf((i - 1) % 3 + 1) + ".png";            try            {                images[i] = Image.createImage(imgSrc[i]);            }            catch (Exception e)            {                //不做处理            }        }        try        {            images[10] = Image.createImage("/img_0.png");        }        catch (Exception e)        {            //不做处理        }    }    public void clearBackground(Graphics g)    {        int color = g.getColor();        g.setColor(0xffffff);        g.fillRect(0, 0, getWidth(), getHeight());        g.setColor(color);    }    public void paint(Graphics g)    {        clearBackground(g);        g.setColor(0x000000);        g.drawRect(1, 1, 237, 317);        g.drawLine(1, 80, 237, 80);        g.drawLine(1, 159, 237, 159);        g.drawLine(1, 238, 237, 238);        g.drawLine(80, 1, 80, 238);        g.drawLine(159, 1, 159, 317);        //根据pics数组和images数组的内容绘图到网格中        for (int i = 0; i < 3; i++)        {            for (int j = 0; j < 3; j++)            {                g.drawImage(images[pics[i][j]], j * 79 + 2, i * 79 + 2, Graphics.TOP | Graphics.LEFT);            }        }        g.drawImage(images[pics[3][2]], 160, 239, Graphics.TOP | Graphics.LEFT);        g.drawString("步数:", 20, 300, Graphics.BOTTOM | Graphics.LEFT);        g.setColor(0xcccccc);        g.fillRect(60, 280, 60, 20);        g.setColor(0xffff0f);        g.drawString(String.valueOf(step), 75, 300, Graphics.BOTTOM | Graphics.LEFT);    }    public void keyPressed(int keyCode)    {        switch (getGameAction(keyCode))        {            case RIGHT:                right();                break;            case LEFT:                left();                break;            case UP:                up();                break;            case DOWN:                down();                break;        }        repaint();        if(win())        {            down();            up();            left();            right();        }    }    //spaceX = 2;    //spaceY = 3    public void up()    {        if (spaceY < 2 || (spaceX == 2 && spaceY == 2))        {            pics[spaceY][spaceX] = pics[spaceY + 1][spaceX];            pics[spaceY + 1][spaceX] = 10;            spaceY++;            step++;        }    }    public void down()    {        if (spaceY > 0)        {            pics[spaceY][spaceX] = pics[spaceY - 1][spaceX];            pics[spaceY - 1][spaceX] = 10;            spaceY--;            step++;        }    }    public void left()    {        if (spaceX < 2)        {            pics[spaceY][spaceX] = pics[spaceY][spaceX + 1];            pics[spaceY][spaceX + 1] = 10;            spaceX++;            step++;        }    }    public void right()    {        if (spaceX > 0 && spaceY < 3 )        {            pics[spaceY][spaceX] = pics[spaceY][spaceX - 1];            pics[spaceY][spaceX - 1] = 10;            spaceX--;            step++;        }    }    public boolean win()    {        for(int i = 0; i < 4; i++)        {            for( int j = 0; j <3; j++)            {                if (pics[i][j] != i * 3 + j + 1)                return false;            }        }        return true;    }    }

⌨️ 快捷键说明

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