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

📄 screen.java

📁 一个商业的J2ME音乐游戏
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
package djdance;

import javax.microedition.lcdui.*;
import java.util.*;
import java.io.*;
import javax.microedition.rms.*;
import javax.microedition.media.*;
import javax.microedition.midlet.*;


public class Screen extends Canvas
{

     private int cy=13;//k
	 
	 static final byte Easy = 1;
     static final byte Normal = 2;
     static final byte Hard = 3;
     static final byte TITLE=0;
     static final byte COVER1 = 1;
     static final byte COVER2 = 2;
     static final byte SELECTLEVEL = 3;
     static final byte SETTING = 4;
     static final byte TOP10 = 5;
     static final byte INSTRUCTIONS = 6;
     static final byte ABOUT = 7;
     static final byte GAMING = 8;
     static final byte GAMERESULT = 9;
     DJ dj;

     Data d1;
     GameThread gt;
     Random rand = new Random();


     static Image back1img,back2img,Bflash1,Bflash2,Cflash1,Cflash2,timeimg1,timeimg2,lifeimg;
     static Image ballimg,dieimg,numimg,messageimg1,messageimg2,messageimg3;
     static Image title1,title2,title3,menu0,menu1,menu2,menu3,overimg,passedimg,cr;
     static Image jindutiaoimg1,jindutiaoimg2,jindutiaoimg3,starimg,barimg,selectimg,selectimg0;

     Image offS;
     Graphics offg;


     byte gamestate;
     int  gametime;
     int  WD, HI;
     int  score;
     int  highscore[] = new int[3];
     byte  level;
     byte  GetLevel;
     byte  key;



     byte step;      //球的每一帧的步长
     int  ball[]=new int[6];            //每一帧要画的下落球数
     int  ballup[][]=new int[6][2];     //每一帧要画的上升球数
     //   ballup[0][0] 被反弹上去的球的索引值
     //   ballup[0][1]=0  球被慢速反弹上去     ballup[0][1]=1  球被快速反弹上去
     int  balldown[][]=new int[6][2];     //每一帧要画的上升球数
     int[] YY= { 10, 9, 9, 7, 7, 5, 5, 3, 3, 1, 1 , -1, -1, -3, -3, -5, -5, -7, -7, -9, -9, -10 };

     byte message;       //画提示信息的变量
     byte messagetime;   //画提示信息的帧数
     byte menuselect;    //主菜单选项的变量
     byte soundselect;   //游戏是否开启声音的变量
     int color;          //游戏纪录画面中球的帧变量

     int[] xx = { 192,237,282,327,372,417,462 };      //主菜单中用
     int[][] xy = new int[20][2];                 //游戏纪录中用

     boolean gamepause;    //游戏是否暂停的变量
     byte isover;          //游戏是否结束的变量
     boolean ispassed;     //游戏是否过关的变量

     int timexx;           //时间进度条的变量
     byte lifeball1;       //上层生命球的个数
     byte lifeball2;       //下层生命球的个数


     boolean flagstar=true;
     int starnum;      //高亮的星星个数
     int fenmu;        //lossed+good+great的个数
     int goodx;        //good进度条的变量
     int lossx;        //lossed进度条的变量
     int greatx;       //great进度条的变量

     int Numlossed;        //lossed的个数
     int Numgoods;         //goods的个数
     int Numgreats;        //greats的个数
     int Numcombo;         //最大连击数
     boolean  isaddball;   //是否增加球的变量

     Player sp;


     long GetTime1;
     long GetTime2;


     byte[][] dieturn;
     //dieturn[0][0]  第一列光盘是否旋转
     //dieturn[0][1]  第一列光盘是否是顺时针旋转
     //dieturn[0][2]  第一列光盘旋转的时间


     boolean isaddballup;    //是否增加上升的球
     byte selectp;
     byte clock;             //时钟指针的变量



     public Screen(DJ dj)
     {
         try
         {
            this.dj=dj;
			 setFullScreenMode(true);
             offS = Image.createImage(176, 204);
             offg = offS.getGraphics();

             d1=new Data();

             level = 1;
             d1.Init1(level);

             for(int i = 0; i < 20; i++)
             {
                 xy[i][0] = 66 * (i % 4 - 1);
                 xy[i][1] = 66 * (i / 4 - 1);
             }

             Init1();

             System.gc();

             gt=new GameThread(this);
             gt.showmenu=true;
             gt.start();

         }
         catch(Exception e) {  e.printStackTrace();   }
     }


     protected void paint(Graphics g)
     {
         
		 switch(gamestate)
         {
              case TITLE:
				   drawTitle(g);
			       
				   break;

			  //case COVER1:
                  // drawCover1(g);
                   //break;

              case COVER2:
                   drawCover2(g);
                   break;
          
              case SELECTLEVEL:
                   drawSelectLevel(g);
                   break;

              case SETTING:
                   drawSetting(g);
                   break;

              case TOP10:
                   drawTop10(g);
                   break;

              case GAMING:
                   if( !gamepause )
                       drawGame(g);
                   else
                       drawPause(g);
                   break;

              case GAMERESULT:
                   drawGameResult(g);
                   break;

         }


     }
    

  /*   void drawOffBack1(Graphics g)    //初始化菜单背景图
     {
          g.setColor(0x7b00ff);
          g.fillRect(0, 0, 19, HI);
          g.setColor(0x99ffca);
          g.fillRect(19, 0, 20, HI);
          g.setColor(0x51ff00);
          g.fillRect(39, 0, 18, HI);
          g.setColor(0xff9500);
          g.fillRect(57, 0, 119, HI);

          g.drawImage(cover1, 0, 4, 0);
          g.drawImage(cover2, WD / 2, 192, g.TOP|g.HCENTER);


     }*/
     void drawOffBack0(Graphics g)    //初始化标题背景图
     {
          g.setColor(0x009900);
          g.fillRect(0, 0, WD, 75);
          g.setColor(0xfffffff);
          g.fillRect(0, 75, WD, 178);
          g.setColor(0x009900);
          g.fillRect(0, 178, WD, HI);
          //g.setColor(0xff9500);
          //g.fillRect(57, 0, WD, HI);

          g.drawImage(title1, 0, 0, 0);
		  g.drawImage(title2, 0,97, 0);
		  g.drawImage(title3, 0,176, 0);
          //g.drawImage(cover2, WD / 2, 192, g.TOP|g.HCENTER);


     }

     
     public void drawTitle(Graphics g)
	{
		 drawOffBack0(g);
		 g.drawImage(menu0, 0, 186, 0);
		 g.drawImage(cr, 39, 3+160, 0);//wolf
	}


    /* void drawCover1(Graphics g)
     {
          drawOffBack1(g);
          
          setClipImage(g, xx[0],  88+12-cy, menu2, 0, 0, 31, 16);

          if(xx[0]>72)
             xx[0]-=15;

          setClipImage(g, xx[1], 104+12-cy, menu2, 31, 0, 31, 16);

          if(xx[1]>72)
             xx[1]-=15;

          setClipImage(g, xx[2], 120+12-cy, menu2, 62, 0, 31, 16);

          if(xx[2]>72)
             xx[2]-=15;

          setClipImage(g, xx[3], 136+12-cy, menu2, 93, 0, 31, 16);

          if(xx[3]>72)
             xx[3]-=15;

          setClipImage(g, xx[4], 152+12-cy, menu2, 124, 0, 30, 16);
		  

          if(xx[4]>72)
             xx[4]-=15;
          setClipImage(g, xx[5], 168+12-cy, menu2, 155, 0, 31, 16);

		  if(xx[5]>72)
             xx[5]-=15;
          else
             gamestate=COVER2;


     }*/


     void drawCover2(Graphics g)
     {
          /*drawOffBack1(g);
        
          g.drawImage(menu1,47,98+menuselect*16-cy,0);

          setClipImage(g, 72,  88+12-cy,  menu2, 0, 0, 31, 16);
          setClipImage(g, 72, 104+12-cy, menu2, 31, 0, 31, 16);
          setClipImage(g, 72, 120+12-cy, menu2, 62, 0, 31, 16);
          setClipImage(g, 72, 136+12-cy, menu2, 93, 0, 31, 16);
          setClipImage(g, 72, 152+12-cy, menu2, 124, 0, 30, 16);
          setClipImage(g, 73, 168+12-cy, menu2, 155, 0, 31, 16);

          setClipImage(g, 1, 188, menu3, 154, 0, 31, 16);     //退出
          setClipImage(g, 144, 188, menu3, 185, 0, 31, 16);   //确定
*/
          g.setColor(0xffffff);
		
//wolf		  g.fillRect(0,0,WD,HI);
	
	g.fillRect(0,0,WD,HI+10);//wolf	
		
		  g.setColor(128,128,128);
          g.drawLine(0, 20, WD, 20);
		  g.drawLine(0, HI-18, WD,HI-18);

//wolf		  setClipImage(g, 1, 188, menu3, 216, 0, 31, 16);       //返回
//wolf          setClipImage(g, 144, 188, menu3, 185, 0, 31, 16);     //确定

       setClipImage(g, 144, 188, menu3, 216, 0, 31, 16);       //返回 //wolf
       setClipImage(g, 1, 188, menu3, 185, 0, 31, 16);     //确定 //wolf


		  g.drawImage(menu1,50,30+menuselect*20,0);
          g.drawString("<菜单>",WD/2,1,g.TOP|g.HCENTER);
		  g.drawString("开始",WD/2,0+30,g.TOP|g.HCENTER);
		  g.drawString("设置",WD/2,20+30,g.TOP|g.HCENTER);
		  g.drawString("记录",WD/2,40+30,g.TOP|g.HCENTER);
		  g.drawString("帮助",WD/2,60+30,g.TOP|g.HCENTER);
		  g.drawString("关于",WD/2,80+30,g.TOP|g.HCENTER);
		  g.drawString("更新",WD/2,100+30,g.TOP|g.HCENTER);
         
     }



     void drawSelectLevel(Graphics g)
     {
          drawOffBack0(g);
          g.drawImage(selectimg0,0,143,0);//遮罩
          for(byte i = 0; i < 3; i++)
              setClipImage(g, 37 * (i + 1), 149, ballimg, 56, 0, 28, 28);

          if(gametime % 3 == 0)
              setClipImage(g, 37 * level, 149, ballimg, 84, 0, 28, 28);
          for(byte k = 0; k < 3; k++)
              setClipImage(g, 42 + 37 * k, 154, selectimg, 17 * k, 0, 17, 17);

          
    //wolf      setClipImage(g, 1, 188, menu3, 216, 0, 31, 16);       //返回
    //wolf      setClipImage(g, 144, 188, menu3, 185, 0, 31, 16);     //确定

     setClipImage(g, 144, 188, menu3, 216, 0, 31, 16);       //返回//wolf
     setClipImage(g, 1, 188, menu3, 185, 0, 31, 16);     //确定//wolf


     }



     void drawSetting(Graphics g)
     {
          g.setColor(0xFFFFFF);
          g.fillRect(0, 0, WD, HI);
          g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_SMALL));

          g.setColor(0x00ffFF);
          g.fillRect(0, 0, WD, 20);
          g.setColor(128,128,128);
          g.drawLine(0, 20, WD, 20);

          g.setColor(0,0,255);
          g.fillRect(0, 29, WD, 20);

          g.setColor(0);

          g.drawString("设置",WD/2,1,g.TOP|g.HCENTER);
          g.drawString("声音:",3,30,0);

          if(soundselect==1)
              g.drawString("开启",142,30,0);
          else
              g.drawString("关闭",142,30,0);


//wolf          g.drawString("返回", 3, 180, 0);
//wolf          g.drawString("更改", 142, 180, 0);

     g.drawString("返回", 142, 180, 0);//wolf
     g.drawString("更改", 3, 180, 0);  //wolf



     }


     void drawTop10(Graphics g)
     {
          for(int i=0;i<20;i++)
          {
              setClipImage(g,xy[i][0],xy[i][1],back2img,0,0,66,66);
              xy[i][0]++;
              xy[i][1]++;
          }

          if(xy[0][0]==0)
          {
             for(int i=0;i<20;i++)
             {
                 xy[i][0]-=66;
                 xy[i][1]-=66;
             }
          }


          setClipImage(g, 72, 20, menu2, 62, 0, 31, 16);

          for(byte i = 0; i < 3; i++)
          {
              setClipImage(g, 25, 60 + 40 * i, ballimg, 28 * ((color + i) % 4), 0, 28, 28);
              setClipImage(g, 30, 66 + 40 * i, selectimg, 17 * i, 0, 17, 17);
              drawscore2(g, 140, 67 + 40 * i, highscore[i]);
          }

          if(gametime%4==0)
              color=(color==10000)?0:(++color);


          //setClipImage(g, 144, 188, menu3, 216, 0, 31, 16);    //返回
//wolf          setClipImage(g, 3, 188, menu3, 216, 0, 31, 16);    //返回

 setClipImage(g, 144, 188, menu3, 216, 0, 31, 16);    //返回//wolf


     }

int bt=20;//wolf
     class InstructionsScreen extends Canvas
     {

           Screen scr;
           byte select;


           public InstructionsScreen(Screen s)
           {
               scr=s;
               select=0;
               setFullScreenMode(true);
           }


           public void paint(Graphics g)
           {

               g.setColor(0xFFFFFF);
               g.fillRect(0, 0, WD, HI);
               g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_SMALL));

               g.setColor(0x00ffFF);
               g.fillRect(0, 0, WD, 20);
               g.setColor(128,128,128);
               g.drawLine(0, 20, WD, 20);

               g.setColor(0);
               g.drawString("游戏帮助",WD/2,1,g.TOP|g.HCENTER);

⌨️ 快捷键说明

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