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

📄 mycanvas.java

📁 一个商业的赌博老虎机游戏
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
/*
GameName:老虎机
modfiy date:05-10-25
author:关文柏
*/

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


public class MyCanvas extends Canvas implements Runnable
{
	private Thread thread;				//a thread instance
	private boolean pause;				//control the pause stat
	Image anjian;
	Image anjian1;
	Image exit;
    Image back;
	private Main main;					//the Main class instance
	private static int gameMode;			//control the game state
	private int		modeTemp;			//temp mode variabe
	private Font font;					//the font using in game
	private Random ran = new Random();		//produce the random number
	private Image[] img;				//the image resourcele
	private static Graphics g;			//the game graphics object. draw picture
	private static Image buffer;		//a buffer image to show the game graphics
	private int scX,scY;				//the coordinate of the game screen
	private int screenW = 128;
    private int screenH = 160;		//hold the game screen size
	private int proInt;					//the process indicate counter
	private int helppages = 1;			//help pages control variable
	private int aboutpages=1;

	private final int LEFT = 0;			//set softlabel left or right
	private final int RIGHT = 1;

		
	private byte[]		reelOffs;		//
    private boolean[]	reelStop;	    //
	private byte[][]	reel;			//
	private boolean[]	df;				//
	private boolean		dSelect;		//
    private int			mSelect;		//in title menu control variable
	private int			mSelect1;		// in game menu control variable
	private int			selectMenu;		//in game menu control temp variable


    private int			lcBG;			//in game top background color
	private boolean		sf;				//SoundSwitch
	private int			sumGame;	
    private int			sumBig;		
    private int			sumReg;
	private byte[]		moveY;		//	
    private byte[]		charID;		//	
    private byte[]		moveFlg;
	private int			money;		//	
    private int			svmoney;	//	
    private long		smoney;
	private boolean     Auto;		//control the automatic state
	
	private boolean		press;		//control automatic temp variable
	private long       autotime;

	//private int			monsetup;	//money temp;

	private byte		DlgFlg;
	private boolean		DrawFlg;
	private int			ngame;
	private int			reach;
	private int			reachCnt;
	private byte		Ltype;
	private int			AcNotice;
	private int			sstep;
	private int			ExInt;
	private int			BnsWnd;
	private	byte		setup;

	private byte		frameCnt;
	private int			AcPrize;
	private long		LKeyTm;	
	private int[]		share = {	300, 300, 100,  10,   8,  2,  3,  0,  4 };




	//----------------------------gameMode introduce--------------------
	//gameMode = 0; draw process indicate screen
	//gameMode = 1; title screen
	//gameMode = 2; help screen
	//gameMode = 3; about screen
	//gameMode = 4; gaming screen
	//gameMode = 5; gaming menu
	//gameMode = 6; gaming next screen
	//gameMode = 7; exit game
	//gameMode = 8; pause state
	//------------------------------------------------------------------

	//---------------------------key-------------------------------------
	private int keySoft_1 = -6;
	private int keySoft_2 = -7;
	private int keySoft_select = -5;
	private int key_up = -1;
	private int key_down = -2;
	private int key_left = -3;
	private int key_right = -4;
	private int key_1 = 49;
	private int key_2 = 50;
	private int key_3 = 51;
	private int key_4 = 52;
	private int key_5 = 53;
	private int key_6 = 54;
	private int key_7 = 55;
	private int key_8 = 56;
	private int key_9 = 57;
	private int key_0 = 48;
	private int key_star = 42;
	private int key_pod = 35;
	//-------------------------------------------------------------------
	
	private String[] simg = 
	{
		"reel_red7","reel_blue7","reel_bar","reel_orange","reel_bell",
        "reel_cherry","reel_replay","corsol_r","corsol_u","corsol_d",
        "icon_1_on","icon_1_off","icon_2_on","icon_2_off","icon_3_on",
        "icon_3_off","base_2","kakuzou_up","kakuzou_u","kakuzou_n",
        "kakuzou_d","num_0","num_1","num_2","num_3",
        "num_4","num_5","num_6","num_7","num_8",
        "num_9","info_bonus","title","lisence","puzou_n","risu_n"
	};			//the image string array



	public MyCanvas(Main main)		//constructor
	{
		this.main = main;
		init();		
		setFullScreenMode(true);			//full screen
		start();


		

	}
	public void start()		//start the thread in this class
	{
		thread = new Thread(this);
		thread.start();

	}

	public void run()		//run of thread
	{
		int timecont = 0;		//control the when automatic state  press the key 
		

		
		if(gameMode == 0)
		{
			loadResource();
			RMSaccess(0);
		}
		if(gameMode > 0)
		{
			for(;;)
			{
						

				//System.out.println(Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory() );
				
				
				if(gameMode == 1)		//title screen
				{
				}else if(gameMode == 2) //help screen
				{
				}else if(gameMode == 3) //about screen
				{
				}else if(gameMode == 4)	//gaming screen
				{
					if(++timecont > 10)
					{
						timecont = 0;
						press = !press;
					}
					
					long		thisFrameTm;
					long		nextFrameTm = 0;
					int			i;
					
					thisFrameTm = System.currentTimeMillis();
					if( thisFrameTm < nextFrameTm )	continue;
					if( gameMode == 4 )	nextFrameTm = thisFrameTm + 1000/20;
					else			nextFrameTm = thisFrameTm + 1000/60;
					frameCnt++;
					frameCnt &= 127;

					if(Auto)		//the auto state
					{	

							autoState();			
									
						
					}
					

					if( DlgFlg == 0 )
					{
						

							 for( i=0; i<3; i++ )
							{
									if( !reelStop[i] )
									{
                                      df[1]=true;
                                      if( --reelOffs[i] < 0 )		reelOffs[i] += 21;
									}
									if( moveFlg[i] <= sstep )
									{
										if( moveY[i] < 12 )
										{	moveY[i] += 4;	df[2]=true;	}
										else{			moveY[i] = 12;			}
									}
							}
						
					 }

					 try
						{
						repaint();
						serviceRepaints();
						Thread.sleep(100);
					}catch(Exception ex){ex.printStackTrace();}
				
				}else if(gameMode == 5)	//gaming menu
				{
					
				}
				else if(gameMode == 6)	//gaming next screen
				{
				}else if(gameMode == 7)	//exit game
				{
					main.exit();
					break;
				}else if(gameMode == 8)		//pause state
				{
				}

				

			}
		}
		

	}
	public void paint(Graphics gg)		//paint method of Canvas class
	{
		if(gameMode == 0)
		{
			gg.setColor(0);
			gg.fillRect(0,0,screenW,screenH);
			drawProcess(gg);
			if(proInt == 100)
			gameMode++;
		}
		if(gameMode != 0 )
		{
			drawGame();
			gg.drawImage(buffer,0,0,0);		//draw the buffer image

		}
	}
	public void drawGame()				//draw game graphics
	{

		if(gameMode == 1)		//title screen
		{
			 g.setColor(getColorOfRGB(110,110,250) );
             g.fillRect( 0, 0, 128, 160 );	
			 g.setColor(getColorOfRGB(255,255,107) );
             g.fillRect( scX, scY+30,		160, 10 );//zyy   老虎机上下的条
             g.fillRect( scX, scY+72,	160, 10 );//zyy
             drawImage(g, img[32],		scX+28, scY+38 );		//title picture   //zyy
             drawImage(g, img[33],		scX+22, scY+136);	//hudson software logo
             drawImage(g, img[7],		scX+23, scY+80 + mSelect*20 );		//yellow arrowhead
			 drawStr(g, "开始游戏",	scX+48+8, scY+81, getColorOfRGB(255,255,255), getColorOfRGB(64,64,64) );
             drawStr(g, "  帮助",	scX+53+8, scY+100, getColorOfRGB(255,255,255), getColorOfRGB(64,64,64) );
             drawStr(g, "  关于",	scX+53+8, scY+119,getColorOfRGB(255,255,255), getColorOfRGB(64,64,64) );

			 setSoftLabel(LEFT,"确定");
			 setSoftLabel(RIGHT,"退出");
			
		}else if(gameMode == 2)		//help screen
		{
			drawHelpScreen();		

		}else if(gameMode == 3)		//about screen
		{
			drawAboutScreen();
		}else if((gameMode == 4)||(gameMode == 5)||(gameMode == 6))	//in game or in gaming menu or the next screen
		{
			int		i;
            int		tmp;  
			
			

            if( DrawFlg )
			{
                 g.setColor(getColorOfRGB(0,0,0) );
                 g.fillRect( 0, 0, getWidth(), getHeight() );
                 DrawFlg = false;
                 df[0]=df[1]=df[2]=true;
            }
			if( df[0] )
			{
                  if(DlgFlg == 0)	
				  df[0]=false;                       
                  drawImage(g, img[16],		scX, scY );		// base_2.png
					for( i=0; i<3; i++ )
					{
                        if(reelStop[i]){
						drawImage(g, img[11 + i*2 ],	scX+39 + i*32, scY+142 );		//icon_1_off.png icon_2_off.png icon_3_off.png
						}
                        else	{		
						drawImage(g, img[10  + i*2 ],	scX+39 + i*32, scY+142 ); //icon_1_on.png icon_2_on.png icon_3_on.png
						}
                    }
			int		dev;
			dev = 1000;
            for( i=0; i<4; i++ )
			{
                 tmp = (ngame / dev) % 10;
                 drawImage(g, img[21 + tmp],	scX+28 + i*6, scY+126 );//zyy   16
                 dev /= 10;
              }

			 dev = 100000000;
            for( i=0; i<9; i++ )
			{
                 tmp = (money / dev) % 10;
                 drawImage(g, img[21 + tmp],	scX+90 + i*6, scY+126 );//zyy   90
                 dev /= 10;
            }
			if( reach != 0 && reachCnt == 0 )
			{
                 g.setColor( getColorOfRGB(255,168,84) );
                 g.fillRect( scX,     scY+51, 9, 26 );
                 g.fillRect( scX+131, scY+50, 9, 27 );
            }
       }

        
       if( df[1] )
		{
            df[1]=false;
            for( i=0; i<3; i++ )
			{
                drawImage(g, img[ reel[ 0 ][ (reelOffs[0]+i)%21 ] ],	scX+27, scY+56 + i*20 );
                drawImage(g, img[ reel[ 1 ][ (reelOffs[1]+i)%21 ] ],	scX+65, scY+56 + i*20 );
                drawImage(g, img[ reel[ 2 ][ (reelOffs[2]+i)%21 ] ],	scX+103, scY+56 + i*20 );
            }

          if( reelStop[0] == true && reelStop[1] == true && reelStop[2] == true )
		  {
               g.setColor( getColorOfRGB(255,0,0) );
               switch( Ltype )
			   {
                   case 7:  Ltype = 1;
                   case 0:
                   case 1:
                   case 2:
                   g.drawLine( scX+30, scY+65 + Ltype*20,		scX+128, scY+65 + Ltype*20 );
                   break;
                   case 5:	     g.drawLine( scX+30, scY+65,	scX+128, scY+65 );
                   case 3:		g.drawLine( scX+30, scY+61,	scX+128, scY+112 );	break;
                   case 6:		g.drawLine( scX+30, scY+108,	scX+128, scY+108 );
                   case 4:		g.drawLine( scX+30, scY+112,	scX+128, scY+61 );	break;
               }
          }
       }
       if( df[2] && DlgFlg == 0 )
	   {
              g.setColor( lcBG );
              g.fillRect( scX+24, scY, 112, 40+8 );
			 switch( AcNotice )
			{
                  case 1:
                  case 2:
                  if( sstep == 1 )
				  {
                       g.setColor( getColorOfRGB(107,105,115) );
                       g.fillRect( scX+24, scY   , 112, 40 );
                       g.setColor( getColorOfRGB(132,134,148) );
                       g.fillRect( scX+24, scY+8 , 112, 24 );
                       g.setColor( getColorOfRGB(189,190,189) );
                       g.fillRect( scX+24, scY+16, 112, 8 );
                       drawImage(g, img[17],	scX+55, scY+12 );//zyy   45    10
                  }

                 case 3:
                 case 30:
                 case 31:
                 case 32:
                 case 33:
                 case 4:
                 for( i=0; i<3; i++ )
				 {
					 if( moveFlg[i] <= sstep )
					 {
                           drawImage(g, img[ charID[i] ],	scX+34+i*30, scY+moveY[i]+4 );
                     }
                 }
                 break;
				 case 0:
                  drawImage(g, img[19], scX+34, scY+moveY[0] );
                  drawImage(g, img[19], scX+64, scY+moveY[1] );
                  drawImage(g, img[19], scX+94, scY+moveY[2] );
                break;
           }

           if( ExInt == 10 )
		   {
                 g.setColor( getColorOfRGB(0,0,0) );
                 g.fillRect( scX+24,				scY,	BnsWnd, 40 );
                 g.fillRect( scX+24 + 112-BnsWnd, scY,	BnsWnd, 40 );
           }else if( ExInt == 11 )
		   {
                 tmp = (frameCnt/4)%2;
                 g.setColor(getColorOfRGB(0,0,0) );
                 g.fillRect( scX+24, scY, 112, 40 );
                 drawImage(g, img[31],	scX+35, scY  );
                 drawImage(g, img[18+tmp],	scX+28, scY+20 );
                 drawImage(g, img[18+tmp],	scX+103, scY+20 );
                 if( BnsWnd != 0 )
				 {
                       g.fillRect( scX+24, scY,	BnsWnd, 40 );
                       g.fillRect( scX+24 + 112-BnsWnd, scY,	BnsWnd, 40 );
                 }
                                        df[2]=true;
            }

           g.setColor(getColorOfRGB(0,0,0));
           g.fillRect( scX+24, scY-20, 112, 20 );

		 df[2]=false;

         if( gameMode == 6 )		//the next  state
		   {
             // drawStr(g,  "倍数设定", scX+30, scY+25, getColorOfRGB(255,255,255), getColorOfRGB(64,64,64) );
              drawStr(g,  "倍数设定"+ "  "+" " + (setup+1)+" 倍", scX+25, scY+30, getColorOfRGB(255,255,255), getColorOfRGB(64,64,64) );
              return;
           }


		if( Auto )				//the auto state
		{
				//drawStr(g,  "按#号键",	scX+24, scY,  getColorOfRGB(255,255,255), getColorOfRGB(64,64,64) );
               // drawStr(g,  "解除自动",	scX+24, scY+15, getColorOfRGB(255,255,255), getColorOfRGB(64,64,64) );
			    drawImage(g,  anjian1,	scX+33, scY+35 );
        }
		 else
			{
				//drawStr(g,  "按#号键",	scX+24, scY,  getColorOfRGB(255,255,255), getColorOfRGB(64,64,64) );
				//drawStr(g,  "开始自动",	scX+24, scY+15, getColorOfRGB(255,255,255), getColorOfRGB(64,64,64) );
				 drawImage(g,  anjian,	scX+33, scY+35 );
			}
		}

⌨️ 快捷键说明

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