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

📄 test1.java

📁 一个我自己编的手机游戏的原码
💻 JAVA
字号:
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import java.io.*;
import java.util.*;

public class Test1 extends MIDlet implements CommandListener
{
	private Command exitCommand;
	private Command redoCommand;
	private Command seleCommand;
	private Command beginCommand;
	private Command saveCommand;
	
	private List lbEx;
	private Command seleItemCommand;
	
	private MainCanvas myCanvas;
	
	private int intLevel = 1;

	public Test1()
	{
		String [] SeleArray = {"第一级","第二级","第三级"};
		
		exitCommand = new Command("退出",Command.EXIT,1);
		redoCommand = new Command("重新玩",Command.SCREEN,2);
		seleCommand = new Command("选择等级",Command.SCREEN,2);
		saveCommand = new Command("保存游戏",Command.SCREEN,3);
		myCanvas = new MainCanvas();
		myCanvas.addCommand(exitCommand);
		myCanvas.addCommand(redoCommand);
		myCanvas.addCommand(seleCommand);
		myCanvas.addCommand(saveCommand);
		myCanvas.setCommandListener(this);
		
		seleItemCommand = new Command("确定",Command.SCREEN,1);
		lbEx = new List("选择级别:",List.EXCLUSIVE,SeleArray,null);
		lbEx.addCommand(seleItemCommand);
		lbEx.setCommandListener(this);
	}

	protected void startApp() throws MIDletStateChangeException
	{
		Display.getDisplay(this).setCurrent(myCanvas);
		myCanvas.drawLogo();
	}

	protected void pauseApp()
	{
	}

	protected void destroyApp(boolean p1)
	{
		myCanvas = null;
	}

	public void commandAction(Command c,Displayable d)
	{
		if(c==exitCommand)
		{
			destroyApp(false);
			notifyDestroyed();
		}
		else if(c==redoCommand)
		{
			myCanvas.drawLogo();
		}
		else if(c==seleCommand)
		{
			Display.getDisplay(this).setCurrent(lbEx);
		}
		else if(c==seleItemCommand)
		{
			intLevel = lbEx.getSelectedIndex()+1;
			System.out.println(intLevel);
			Display.getDisplay(this).setCurrent(myCanvas);
			myCanvas.init(intLevel,false);
			myCanvas.draw(true);
		}
		else if(c==saveCommand)
		{
			
		}
	}

	public class MainCanvas extends Canvas
	{
		private Graphics bg;
		private Image buf,backImg,logoImg;
		private int Fees=0;
		private int OldBlockNum=100;
		private boolean ifShowMessage,hasPassed;
						
		private int black  = 0x000000;
		private int white  = 0xffffff;
		private int red    = 0xff0000;
		private int lime   = 0x00ff00;
		private int blue   = 0x0000ff;
		private int yellow = 0xffff00;
		private int cyan   = 0x00ffff;
		private int fuchsia= 0xff00ff;
		private int maroon = 0x800000;
		private int green  = 0x008000;
		private int navy   = 0x800080;

		private int idxColor[] = {white,black,red,lime,blue,yellow,cyan,fuchsia,
		maroon,green,navy};

		private byte intShow[][];
		private int intShowColor[][];

		private int allTop =5,allLeft =5;
		private int Box_Color=green;
		private int BlockHeight=8,BlockWidth=8;
		private int curCol,curRow ;
		private int ColorNum;
		private int BackImgSum = 5;
				
		public int curLevel;

		private boolean hasShowLogo = false;
		
		Random rand = new Random();

		public MainCanvas()
		{
			int canvasWidth = getWidth();
			int canvasHeight= getHeight();
			//Create the buf
			buf = Image.createImage(canvasWidth,canvasHeight);
			bg = buf.getGraphics();

			intShow = new byte [10][10];
			intShowColor = new int [10][10];
			curLevel = 1;
			init(curLevel,false);
		}

		public void init(int intLevel,boolean ifGoOn)
		{
			
			int intBackImgID = 1;
			
			OldBlockNum=100;
			
			if(ifGoOn == false)
				Fees = 0;
			
			hasPassed = false;
			
			
			if(intLevel==1)
			{
				ColorNum=5;
			}
			else
			{
				if(intLevel==2)
				{
					ColorNum=6;
				}
				else
					ColorNum=7;
			}
			
			for(int i=0;i<10;i++)
				for(int j=0;j<10;j++)
				{
					intShow[i][j] = 1;
					intShowColor[i][j] = idxColor[1+Math.abs(rand.nextInt())%ColorNum];
				}
			curCol = 1;
			curRow = 1;
			curLevel = intLevel;
			
			//Creat the backImg
			intBackImgID = 1+Math.abs(rand.nextInt())%BackImgSum;
			try{
				backImg = Image.createImage("/images/A"+intBackImgID+".png");
			}catch(IOException e)
			{
				backImg = null;
			}
		}
		
		

		public void paint(Graphics g)
		{
			g.drawImage(buf,0,0,Graphics.TOP|Graphics.LEFT);
		}


		public void saveGame()
		{
			
		}

		public void drawLogo()
		{
			bg.setColor(white);
			bg.fillRect(0,0,getWidth(),getHeight());
			
			try{
				logoImg = Image.createImage("/images/B1.png");
			}catch(IOException e)
			{
				backImg = null;
			}
			if(backImg!=null)
			{
				bg.drawImage(logoImg,(getWidth()-logoImg.getWidth())/2,0,Graphics.TOP|Graphics.LEFT);
			}
			
			hasShowLogo = false;
			
			repaint();
		}

		public void draw(boolean ifShowMsg)
		{
			//draw somw Block
			drawBackgroup(red);
			
			//draw backgroup
			if(backImg!=null)
				bg.drawImage(backImg,allLeft,allTop,Graphics.TOP|Graphics.LEFT);
			
			//draw blocks
			for(int i=0;i<10;i++)
				for(int j=0;j<10;j++)
					if(intShow[i][j] == 1)
						drawBlock(j+1,i+1,intShowColor[i][j],0xff00ff);

			//draw moveable box
			drawMoveBlock(curCol,curRow,Box_Color,black);

			//draw Message
			drawMessage(ifShowMsg);
			
			repaint();
		}

		private void drawMessage(boolean ifShowMessage)
		{
			int BlockNum = 0;
			
			if(ifShowMessage)
			{
				BlockNum = BlockSum();
				Fees = Fees + (OldBlockNum - BlockNum) ;
				OldBlockNum = BlockNum;
			}
			
			bg.drawString("得分:",103,10,Graphics.TOP|Graphics.LEFT);
			bg.drawString(""+Fees,108,40,Graphics.TOP|Graphics.LEFT);
		}
		
		private void drawEndMessage(boolean ifPassed)
		{
			
		}
		
		private void drawBackgroup(int Color)
		{
			bg.setColor(white);
			bg.fillRect(0,0,getWidth(),getHeight());

			bg.setColor(Color);
			bg.drawRect(0,0,BlockWidth*10+10,BlockHeight*10+10 );
		}

		/*********************
		 *功能:画一个方块
		 *Col - 方块所在的列号(1-10)  Row - 方块所在的行号 (1-10)
		 *inColor - 方块内部颜色值
		 *outColor - 方块边框颜色值
		 ********************/
		private void drawBlock(int Col,int Row,int inColor,int outColor)
		{
			int x,y;
			x = allTop + (Col-1) * BlockHeight;
			y = allLeft + (Row-1) * BlockWidth;
			//fill a rect
			bg.setColor(inColor);
			bg.fillRect(x,y,BlockWidth,BlockHeight);
			//draw a Rect
			bg.setColor(outColor);
			bg.drawRect(x,y,BlockWidth,BlockHeight);
		}

		/*********************
		 *画可移动的方块
		 *Col - 方块所在的列号(1-10)  Row - 方块所在的行号 (1-10)
		 *inColor - 方块内部颜色值
		 *outColor - 方块边框颜色值
		 ********************/
		private void drawMoveBlock(int curCol,int curRow,int inColor,int outColor)
		{
			int x,y;
			x = allTop + (curCol-1) * BlockHeight;
			y = allLeft + (curRow-1) * BlockWidth;
			//draw a Rect
			bg.setColor(outColor);
			bg.drawRect(x,y,BlockWidth,BlockHeight);
			bg.drawRect(x-2,y-2,BlockWidth+4,BlockHeight+4);
		}

		// curRow = 0-9 , curCol = 0-9
		private int delBlock(int curRow,int curCol,int hasDelNum)
		{
		
			int i,k;
			int deletedNum,d1,d2,d3,d4;
			int curColor;
			
			curColor = intShowColor[curRow][curCol];
			deletedNum = 1;
			intShow[curRow][curCol] = 0;
			intShowColor[curRow][curCol] = 0;
			d1=0;d2=0;d3=0;d4=0;
			
			hasDelNum = hasDelNum + 1;
			
			k=curCol;
			for(i=curCol+1;i<10;i++)
			{
				if((intShow[curRow][i] == 1)&&(intShowColor[curRow][i]==curColor)&&(i==k+1))
				{
					k=i;
					//deletedNum = deletedNum + delBlock(curRow,i,deletedNum);
					d1 =  hasDelNum + delBlock(curRow,i,hasDelNum);
				}
				else
				{
					continue;
				}
			}

			k=curCol;
			for(i=curCol-1;i>=0;i--)
			{
				if((intShow[curRow][i] == 1)&&(intShowColor[curRow][i]==curColor)&&(i==k-1))
				{
					k=i;
					//deletedNum = deletedNum + delBlock(curRow,i,deletedNum);
					d2 = hasDelNum + delBlock(curRow,i,hasDelNum);
				}
				else
				{
					continue;
				}
			}

			k=curRow;
			for(i=curRow+1;i<10;i++)
			{
				if((intShow[i][curCol] == 1)&&(intShowColor[i][curCol]==curColor)&&(i==k+1))
				{
					k=i;
					//deletedNum = deletedNum + delBlock(i,curCol,deletedNum);
					d3 = hasDelNum + delBlock(i,curCol,hasDelNum);
				}
				else
				{
					continue;
				}
			}
			
			k=curRow;
			for(i=curRow-1;i>=0;i--)
			{
				if((intShow[i][curCol] == 1)&&(intShowColor[i][curCol]==curColor)&&(i==k-1))
				{
					k=i;
					//deletedNum = deletedNum + delBlock(i,curCol,deletedNum);
					d4 = hasDelNum + delBlock(i,curCol,hasDelNum);
				}
				else
				{
					continue;
				}
			}
						
			deletedNum = deletedNum + d1+d2+d3+d4;
			
			if(deletedNum == 1)
			{
				if(hasDelNum == 1)
				{
					intShow[curRow][curCol] = 1;
					intShowColor[curRow][curCol] = curColor;
				}
				return 0;
			}
			else
				return deletedNum;
		}

		private int BlockSum()
		{
			int i,j;
			int BlockSum1=0;
			for(i=0;i<10;i++)
				for(j=0;j<10;j++)
					if(intShow[i][j]==1)
						BlockSum1 = BlockSum1 + 1;
			return BlockSum1;
		}
		
		private boolean hasSameBlock()
		{
			int i,j;
			byte m,n;
			
			boolean hasBlock1 = false;
			
			//check rows
			for(i=0;i<10;i++)
				for(j=0;j<9;j++)
					if(intShow[i][j]==intShow[i][j+1])
					{
						hasBlock1 = true;
						continue;
					}
			//check cols
			for(j=0;j<10;i++)
				for(i=0;i<9;i++)
					if(intShow[i][j]==intShow[i+1][j])
					{
						hasBlock1 = true;
						continue;
					}
			
			return hasBlock1;
		}

		private void packAll()
		{
			int i;

			for(i=0;i<10;i++)
			{
				packCol(i);
			}
			for(i=0;i<10;i++)
			{
				packRow(i);
			}
		}

		//curRow = 0-9
		private void packRow(int curRow)
		{
			int i,j;

			int k;
			for(i=0;i<10;i++)
			{
				k=0;
				if(intShow[curRow][i]==0)
				{
					for(j=i+1;j<10;j++)
					{
						if(intShow[curRow][j]==1)
							k=k+1;
						intShow[curRow][j-1] = intShow[curRow][j];
						intShowColor[curRow][j-1] = intShowColor[curRow][j];
					}
					intShow[curRow][9]=0;
					intShowColor[curRow][9]=0;
					if (k>0)
						if(intShow[curRow][i]==0)i--;
				}
			}
		}

		//curCol = 0-9
		private void packCol(int curCol)
		{
			int i,j,k;
			for(i=9;i>=0;i--)
			{
				k=0;
				if(intShow[i][curCol]==0)
				{
					for(j=i-1;j>=0;j--)
					{
						if (intShow[j][curCol]==1)
							k=k+1;
						intShow[j+1][curCol] = intShow[j][curCol];
						intShowColor[j+1][curCol] = intShowColor[j][curCol];
					}
					intShow[0][curCol] = 0;
					intShowColor[0][curCol]=0;

					if(k>0)
						if(intShow[i][curCol]==0)
							i++;
				}
			}

		}

		protected void KeyPressed(int keyCode)
		{
		}

		protected void keyReleased(int keyCode)
		{
			int action = getGameAction(keyCode);
			int hasDeletedNum;

			if(hasShowLogo)
			{
				System.out.println("Do Now");
				if(!hasPassed)
				{
					System.out.println("hasPassed:"+hasPassed);
					switch(action)
					{
						case UP: 	//-1
							curRow = curRow - 1;
							if (curRow < 1) curRow = 1;
							ifShowMessage = false;
							break;
						case DOWN: 	//-2
							curRow = curRow + 1;
							if (curRow > 10 ) curRow = 10;
							ifShowMessage = false;
							break;
						case LEFT:	//-3
							curCol = curCol - 1;
							if (curCol < 1) curCol = 1;
							ifShowMessage = false;
							break;
						case RIGHT:	//-4
							curCol= curCol + 1;
							if (curCol > 10) curCol = 10;
							ifShowMessage = false;
							break;
						case FIRE:
							if(	intShow[curRow-1][curCol-1] == 1 )
							{
								hasDeletedNum = delBlock( curRow-1,curCol-1,0 );
								if( hasDeletedNum>0 )
								{
									packAll();
									ifShowMessage = true;
								}
								else
									ifShowMessage = false ;
							}
							else
								ifShowMessage = false ;
							break;
					}
					
					System.out.println(action);
					
					draw(ifShowMessage);
					
					if(!hasSameBlock())
					{
						System.out.println("hasSameBlock:" + hasSameBlock());
						if(BlockSum()<=10)
						{
							//passed
							drawEndMessage(true);			
						}
						else
						{
							//no passed
							drawEndMessage(false);
						}
						hasPassed = true;
					}
				}
				else
				{
					System.out.println("Do Now1");
					System.out.println("hasPassed:"+hasPassed);
					init(1,true);
					draw(true);					
				}		
			}
			else
			{
				System.out.println("Do Now2");
				hasShowLogo = true;
				init(1,false);
				draw(true);		
			}
			System.out.println("Do Now3");
		}
		
		protected void KeyRepeated(int keyCode)
		{
			keyReleased(keyCode);
		}

		protected void pointerDragged(int x,int y)
		{
		}

		protected void pointerPressed(int x,int y)
		{
		}

		protected void pointerReleased(int x,int y)
		{
		}

	}

}

⌨️ 快捷键说明

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