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

📄 gamecanvas.java.bak

📁 GOGOGO游戏源码
💻 BAK
📖 第 1 页 / 共 5 页
字号:
            }
            tileimagebuffer.setColor(0, 0, 0);
            tileimagebuffer.fillRect(0, 0, 128, faderypos);
            tileimagebuffer.fillRect(0, 128 - faderypos, 128, 128);
        }
        if(levelok > 0)
        {
            if(levelok == 90)
                if(musicopt == "YES" && level < 8)
                    PlaySound(4);
                else
                if(musicopt == "YES")
                    PlaySound(1);
            levelok--;
            if(faderypos < 68)
            {
                DrawText(tileimagebuffer, "LEVEL COMPLETED", screenX / 2, 50, 3);
                DrawText(tileimagebuffer, "SCORE ".concat(String.valueOf(String.valueOf(score))), screenX / 2, 60, 3);
            }
            if(faderypos == 68)
                if(level < 8)
                {
                    mode = 11;
                    textmode = 0;
                    level++;
                } else
                {
                    mode = 14;
                    textmode = 14;
                    level = 9;
                    faderdir = 2;
                    levelok = 0;
                }
        }
        g.setClip(0, 0, screenX, screenY);
        g.drawImage(tileimage, 0, 0, 20);
        if(keypressed == -7 && mode == 20 && pause != 0)
        {
            pause = 0;
            keypressed = 0;
        }
        if(keypressed == -7 && mode == 20)
        {
            pause = 1;
            keypressed = 0;
        }
        if(pause == 1)
        {
            DrawText(g, "PAUSE", screenX / 2, 50, 3);
            DrawText(g, "RESUME", 77, 117, 0);
        }
        if(keypressed == 42 && mode == 20 && pause == 0)
        {
            g.setColor(170, 0, 0);
            g.fillRoundRect(10, 10, screenX - 20, screenY - 20, 10, 10);
            g.setColor(255, 216, 0);
            g.drawRoundRect(12, 12, screenX - 25, screenY - 25, 5, 5);
            DrawText(g, "INVENTORY", screenX / 2, 20, 3);
            DrawText(g, "KEYS", 25, 40, 0);
            DrawText(g, "".concat(String.valueOf(String.valueOf(keys))), screenX - 32, 40, 1);
            DrawText(g, "LIVES", 25, 50, 0);
            DrawText(g, "".concat(String.valueOf(String.valueOf(lives))), screenX - 32, 50, 1);
            DrawText(g, "YINYANG", 25, 60, 0);
            DrawText(g, "".concat(String.valueOf(String.valueOf(diamant))), screenX - 32, 60, 1);
            DrawText(g, "POWER", 25, 70, 0);
            DrawText(g, "".concat(String.valueOf(String.valueOf(playerpower))), screenX - 32, 70, 1);
            DrawText(g, "SWORD", 25, 80, 0);
            DrawText(g, "".concat(String.valueOf(String.valueOf((swordpower + 1) * 5))), screenX - 32, 80, 1);
            DrawText(g, "LEVEL", 25, 90, 0);
            DrawText(g, String.valueOf(String.valueOf((new StringBuffer("")).append(level + 1))), screenX - 32, 90, 1);
        }
    }

    public void InitGFX()
    {
        LoadGFX();//导入图片
        LoadFont("font.png");//导入字母图片
        if(tileimagebuffer == null)
        {
            tileimage = Image.createImage(screenX, screenY);
            tileimagebuffer = tileimage.getGraphics();
            DGtileimagebuffer = DirectUtils.getDirectGraphics(tileimagebuffer);
            tileimagebuffer.setClip(0, 0, screenX, screenY);
        }
        if(offscreenbuffer == null)
        {
            offimage = Image.createImage(screenX + 16, screenY + 16);
            offscreenbuffer = offimage.getGraphics();
            DGoffscreenbuffer = DirectUtils.getDirectGraphics(offscreenbuffer);
            offscreenbuffer.setClip(0, 0, screenX + 16, screenY + 16);
        }//以上为了确定显示区域做准备
        iecom = bornSprite(0, 0, 0, 20, 0, 1, 0, 0, 0);
		//System.out.println(iecom);0
        logo = bornSprite(1, 0, 0, 20, 0, 1, 0, 0, 0);
		//System.out.println(logo);1
        door1 = bornSprite(14, 0, 0, 20, 0, 0, 0, 0, 0);
		//System.out.println(door1);2
        door2 = bornSprite(14, 0, 0, 20, 0, 0, 0, 0, 0);
		//System.out.println(door2);3
        extra = bornSprite(15, 0, 0, 3, 0, 0, 0, 0, 0);
		//System.out.println(extra);4
	//(int animnr, int xpos, int ypos, int anchor, int manipulation, int directpos, int spritetype, 
     		//int dat1, int dat2)
    }

    public void LoadGFX()
    {
        bobgfx = new Image[31];
        try
        {
            bobgfx[0] = Image.createImage("/iecom.png");
            bobgfx[3] = Image.createImage("/explo1.png");
            bobgfx[4] = Image.createImage("/explo2.png");
            bobgfx[5] = Image.createImage("/explo3.png");
            bobgfx[6] = Image.createImage("/standR.png");
            bobgfx[7] = Image.createImage("/jumpR.png");
            bobgfx[8] = Image.createImage("/attackR1.png");
            bobgfx[9] = Image.createImage("/attackR2.png");
            bobgfx[10] = Image.createImage("/runR1.png");
            bobgfx[11] = Image.createImage("/runR2.png");
            bobgfx[12] = Image.createImage("/up1.png");
            bobgfx[13] = Image.createImage("/duckenR.png");
            bobgfx[15] = Image.createImage("/key.png");
            bobgfx[16] = Image.createImage("/energy.png");
            bobgfx[17] = Image.createImage("/coin.png");
            bobgfx[18] = Image.createImage("/yinyang.png");
            bobgfx[19] = Image.createImage("/fire1.png");
            bobgfx[20] = Image.createImage("/fire2.png");
            bobgfx[21] = Image.createImage("/fire3.png");
            bobgfx[22] = Image.createImage("/burner.png");
            bobgfx[24] = Image.createImage("/bat1.png");
            bobgfx[25] = Image.createImage("/bat2.png");
        }
        catch(IOException e)
        {
            System.err.println("ERROR: GFX LOADING ".concat(String.valueOf(String.valueOf(e))));
        }
    }

    public void InitScores()
    {
        try
        {
            HighScore = RecordStore.openRecordStore("Scores", true);//建立Scores的recordStore 如果没有则新建
            if(HighScore.getNumRecords() == 0)//如果是新建的RS 则按下列规则初始化
            {
                playerName = "NINJA";
                score = 5000;
                AddHighScore();//将记录添加到RS中
                playerName = "SCHMUSI";
                score = 4000;
                AddHighScore();
                playerName = "ELMO";
                score = 3000;
                AddHighScore();
                playerName = "NNOIZ";
                score = 2000;
                AddHighScore();
                playerName = "INDY";
                score = 1000;
                AddHighScore();
                playerName = "KID";
                score = 500;
                AddHighScore();
                score = 0;
                playerName = "       ";
                GetHighScore();
            } else
            {
                GetHighScore();//从RS中取得记录
            }
        }
        catch(Exception exception) { }
        score = 0;
        playerName = ".......";
    }

    public void InsertScore()
    {
        for(int isx = 0; isx < 6; isx++)
        {
            if(score <= highscorepoints[isx])
                continue;
            for(int isx2 = 5; isx2 > isx; isx2--)
            {
                highscorepoints[isx2] = highscorepoints[isx2 - 1];
                highscoreplayers[isx2] = highscoreplayers[isx2 - 1];
            }

            highscorepoints[isx] = score;
            highscoreplayers[isx] = playerName;
            score = 0;
        }

        for(int isx = 1; isx < 7; isx++)
            try
            {
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                DataOutputStream os = new DataOutputStream(baos);
                os.writeUTF(highscoreplayers[isx - 1]);
                os.writeInt(highscorepoints[isx - 1]);
                os.close();
                byte data[] = baos.toByteArray();
                HighScore.setRecord(isx, data, 0, data.length);
                baos.close();
            }
            catch(Exception exception) { }

    }

    public void GetHighScore()//从RS中取得记录并相应的放到highscoreplayers和highscorepoints[6备用
    {
        for(int hsi = 1; hsi < 7; hsi++)
            try
            {
                byte data[] = HighScore.getRecord(hsi);
                DataInputStream is = new DataInputStream(new ByteArrayInputStream(data));
                highscoreplayers[hsi - 1] = is.readUTF();
                highscorepoints[hsi - 1] = is.readInt();
                is.close();
            }
            catch(Exception exception) { }

    }

    public void AddHighScore()//将记录添加到RS中
    {
        try
        {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            DataOutputStream os = new DataOutputStream(baos);
            os.writeUTF(playerName);
            os.writeInt(score);
            os.close();
            byte data[] = baos.toByteArray();
            int id = HighScore.addRecord(data, 0, data.length);
            baos.close();
        }
        catch(Exception exception) { }
    }

    public void InitSpriteMaster()
    {
    	//System.out.println(anzahlsprites); //60
        sprites = new int[anzahlsprites][10];
        for(i = 0; i < anzahlsprites; i++)
            sprites[i][0] = -1;

    }

    public int bornSprite(int animnr, int xpos, int ypos, int anchor, int manipulation, int directpos, int spritetype, 
            int dat1, int dat2)
    {
        int SpriteNr = -1;
        spritecount = 0;
		//System.out.println(anzahlsprites);//60
        for(i = 0; i < anzahlsprites; i++)
        {
            if(sprites[i][0] == -1)
            {
            //	System.out.println(2);
                sprites[i][0] = 0;
                sprites[i][1] = animnr;
                sprites[i][2] = xpos;
                sprites[i][3] = ypos;
                sprites[i][4] = anchor;
                sprites[i][5] = manipulation;
                sprites[i][6] = directpos;
                sprites[i][7] = spritetype;
                sprites[i][8] = dat1;
                sprites[i][9] = dat2;
                SpriteNr = i;
                i = anzahlsprites;
		//这样的话调用几次就是几 很巧妙
            }
            spritecount++;//5
        }
		//System.out.println(SpriteNr);
        return SpriteNr;
    }

    public void MoveEnemies()
    {
        for(int ee = 0; ee < anzahlsprites; ee++)
        {
            if(sprites[ee][0] != 1 && sprites[ee][0] != -99)
                continue;
            if(sprites[ee][7] >= 500 && sprites[ee][7] < 510)
            {
                if(getSpriteXpos(player) + 8 >= getSpriteXpos(ee) - 8 && getSpriteXpos(player) + 8 <= getSpriteXpos(ee) + 8 && getSpriteYpos(player) > getSpriteYpos(ee) && getSpriteYpos(player) < getSpriteYpos(ee) + sprites[ee][8] + 16 && sprites[ee][7] == 500)
                    sprites[ee][7] = 501;
                if(sprites[ee][7] == 501)
                {
                    if(GetIcon(sprites[ee][2], sprites[ee][3] - 8) != 104)
                        setSpritePos(ee, getSpriteXpos(ee), getSpriteYpos(ee) + 4);
                    else
                        sprites[ee][7] = 502;
                } else
                if(GetIcon(sprites[ee][2], sprites[ee][3] + 8) != 103)
                    setSpritePos(ee, getSpriteXpos(ee), getSpriteYpos(ee) - 1);
                else
                    sprites[ee][7] = 500;
                setSpritePos(ee, getSpriteXpos(ee) - 8, getSpriteYpos(ee) - 8);
                if(checkkollision(player, ee, 9, 8) == 1 && playerlostlive == 0 && playerflashing == 0)
                {
                    if(playerjumps == 0 && playerONlift == 0 && playerfalling == 0)
                    {
                        lastplayerxpos = playerXpos;
                        lastplayerypos = playerYpos;
                        lastscrollx = scrollX;
                        lastscrolly = scrollY;
                    }
                    PlayerDead();
                }
                setSpritePos(ee, getSpriteXpos(ee) + 8, getSpriteYpos(ee) + 8);
            }
            if(sprites[ee][7] >= 600 && sprites[ee][7] < 610)
            {
                if(getSpriteXpos(player) + 8 >= getSpriteXpos(ee) - 8 && getSpriteXpos(player) + 8 <= getSpriteXpos(ee) + 8 && getSpriteYpos(player) < getSpriteYpos(ee) && getSpriteYpos(player) > getSpriteYpos(ee) - sprites[ee][8] && sprites[ee][7] == 600)
                    sprites[ee][7] = 601;
                if(sprites[ee][7] == 601)
                {
                    if(GetIcon(sprites[ee][2], sprites[ee][3] + 8) != 106)
                        setSpritePos(ee, getSpriteXpos(ee), getSpriteYpos(ee) - 4);
                    else
                        sprites[ee][7] = 602;
                } else
                if(GetIcon(sprites[ee][2], sprites[ee][3] - 8) != 105)
                    setSpritePos(ee, getSpriteXpos(ee), getSpriteYpos(ee) + 1);
                else
                    sprites[ee][7] = 600;
                setSpritePos(ee, getSpriteXpos(ee) - 8, getSpriteYpos(ee) - 8);
                if(checkkollision(player, ee, 9, 8) == 1 && playerlostlive == 0 && playerflashing == 0)
                {
                    if(playerjumps == 0 && playerONlift == 0 && playerfalling == 0)
                    {

⌨️ 快捷键说明

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