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

📄 helloworld.java

📁 j2me撞砖游戏 j2me撞砖游戏 j2me撞砖游戏
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	private int ballR=10;
	private int ballLeftLimit=viewLeft+1;
	private int ballRightLimit=viewRight-ballR-1;
	private int ballTopLimit=viewTop+1;
	private int ballButtomLimit=viewButtom-ballR-1;
	
	private int operateState=0;
	private static final int OPERATE_STATE1=0;
	private static final int OPERATE_STATE2=1;
	private static final int OPERATE_STATE3=2;
	
	private int bgColor=Color.GREEN;
	
	private boolean isplay=true;
	//private boolean isBallPlay=true;
	
	private int userBrickPreX;
	
	private Graphics g=this.getGraphics();
	String imageString="sky.JPG";
	Image image;
	
	private double ballPreX;
	private double ballPreY;
	
	protected GCanvas()
	{
		super(true);
		userBrick=new Brick(1,viewLeft+(viewWidth-userBrickWidth)/2,viewButtom-userBrickHeight-ballR*2,userBrickWidth,userBrickHeight,Color.RED);
		
		Random rand=new Random();
		
		int cols=0;
		int rows=viewTop+(viewWidth-bricksViewWidth)/2;
		for(int i=0 ; i < bricksRows ; i++)
		{
			cols=viewLeft+(viewWidth-bricksViewWidth)/2;
			for(int j=0 ;j < bricksCols ; j++)
			{
				bricks[i][j]=new Brick(i*bricksCols+j+2,cols,rows,bricksWidth-1,bricksHeight-1,rand.nextInt()%0xffffff);
				isShow[i][j]=true;
				cols+=bricksWidth;
			}
			rows+=bricksHeight;
		}
		ball=new Ball(userBrick.getX()+userBrickWidth/2-ballR,userBrick.getY()-2*ballR,ballR,Color.BLACK,4,-4);
		ballPreX=ball.getX();
		ballPreY=ball.getY();
		
		try 
		{
			image=Image.createImage("/sky.JPG");
		} catch (IOException e) {}
		
		(new Thread(this)).start();
	}

	public void run()
	{	
		g.setColor(bgColor);
		g.fillRect(0,0,this.getWidth(),this.getHeight());
		
		drawView(g);
		
		for(int i=0;i < bricksRows;i++)
			for(int j=0; j<bricksCols ; j++)
					bricks[i][j].draw(g);
		
		
		while(isplay)
		{
		  input();
		  drawScreen();
		  try 
		  {
			Thread.sleep(5);
		  } catch (InterruptedException e) {}
		}
	}
	
	public void input()
	{
		int userBrickX=userBrick.getX();
		int keyState=this.getKeyStates();
		
		userBrickPreX=userBrickX;
		
		if((keyState&LEFT_PRESSED)!=0)
		{
			if(userBrickX>userBrickLeftLimit)
			{
				userBrickX+=userSpeed;
				userSpeed-=userAcce;
				userSpeed=userSpeed<(-userSpeedLimit)?(-userSpeedLimit):userSpeed;
				
				operateState=OPERATE_STATE2;
			}
		}
		
		if((keyState&RIGHT_PRESSED)!=0)
		{
			if(userBrickX+userBrick.getWidth()<this.getWidth())
			{
				userBrickX+=userSpeed;
				userSpeed+=userAcce;
				userSpeed=userSpeed>userSpeedLimit?userSpeedLimit:userSpeed;
				
				operateState=OPERATE_STATE3;
			}
		}
		
		if((keyState&LEFT_PRESSED)==0&&(keyState&RIGHT_PRESSED)==0&&operateState!=OPERATE_STATE1)
		{
			if(operateState==OPERATE_STATE2) 
			{
				userSpeed+=userAcce;
				  if(userSpeed>0) userSpeed=0;
			}
			
			if(operateState==OPERATE_STATE3)
			{
				userSpeed-=userAcce;
				  if(userSpeed<0) userSpeed=0;
			}
			userBrickX+=userSpeed;
		}
		if(userBrickX<userBrickLeftLimit)
	    {
			userBrickX=userBrickLeftLimit;
			operateState=OPERATE_STATE1;
			userSpeed=0;
		}

	    if(userBrickX>userBrickRightLimit)
		{
	    	userBrickX=userBrickRightLimit;
	    	operateState=OPERATE_STATE1;
	    	userSpeed=0;
	    }
        userBrick.setX(userBrickX);
	}
	
	public void drawImage()
	{
		g.drawImage(image,viewLeft,viewTop,Graphics.LEFT|Graphics.TOP);
	}
	
	class Clip
	{
		private int x;
		private int y;
		private int width;
		private int height;
		
		Clip(){}
		Clip(int x,int y,int width,int height)
		{
			this.x=x;
			this.y=y;
			this.width=width;
			this.height=height;
		}
		
		public int getX()
		{
			return x;
		}
		
		public int getY()
		{
			return y;
		}
		
		public int getWidth()
		{
			return width;
		}
		
		public int getHeight()
		{
			return height;
		}
	}
	
	public Clip setClip(int x,int y,int width,int height)
	{
		Clip clip=new Clip(g.getClipX(),g.getClipY(),g.getClipWidth(),g.getClipHeight());
		g.setClip(x,y,width,height);
		return clip;
	}
	
	public void reDrawImage(int x,int y,int width,int height)
	{
		Clip clip;
		clip=setClip(x,y,width,height);
		drawImage();
		g.setClip(clip.getX(),clip.getY(),clip.getWidth(),clip.getHeight());
	}
	
	public void unDrawBrick(int i,int j)
	{
		reDrawImage(bricks[i][j].getX(),bricks[i][j].getY(),bricks[i][j].getWidth()+1,bricks[i][j].getHeight()+1);
	}
	
	public void drawView(Graphics g)
	{
		reDrawImage(viewLeft,viewTop,viewWidth,viewHeight);
		g.setColor(Color.BLACK);
		g.drawLine(viewLeft  ,viewTop  ,viewLeft+viewWidth,viewTop  );
		g.drawLine(viewLeft  ,viewTop-1,viewLeft+viewWidth,viewTop-1);
		g.drawLine(viewLeft+1,viewTop-2,viewLeft+viewWidth,viewTop-2);
		
		g.drawLine(viewLeft  ,viewTop  ,viewLeft  ,viewTop+viewHeight);
		g.drawLine(viewLeft-1,viewTop  ,viewLeft-1,viewTop+viewHeight);
		g.drawLine(viewLeft-2,viewTop+1,viewLeft-2,viewTop+viewHeight+1);
		
		g.setColor(Color.WHITE);
		g.drawLine(viewLeft+viewWidth  ,viewTop  ,viewLeft+viewWidth  ,viewTop+viewHeight);
		g.drawLine(viewLeft+viewWidth+1,viewTop  ,viewLeft+viewWidth+1,viewTop+viewHeight);
		g.drawLine(viewLeft+viewWidth+2,viewTop-1,viewLeft+viewWidth+2,viewTop+viewHeight-1);
		
		g.drawLine(viewLeft,viewTop+viewHeight  ,viewLeft+viewWidth  ,viewTop+viewHeight  );
		g.drawLine(viewLeft,viewTop+viewHeight+1,viewLeft+viewWidth  ,viewTop+viewHeight+1);
		g.drawLine(viewLeft,viewTop+viewHeight+2,viewLeft+viewWidth-1,viewTop+viewHeight+2);
	}
	public void checkCollision()
	{
		for(int i=0;i < bricksRows;i++)
			for(int j=0; j<bricksCols ; j++)
				if(isShow[i][j])
						if(bricks[i][j].getIsReDraw())
						{
							bricks[i][j].draw(g);
							bricks[i][j].setIsReDraw(false);
						}
		
		double ballX=ball.getX();
		double ballY=ball.getY();
		double ballXSpeed=ball.getXSpeed();
		double ballYSpeed=ball.getYSpeed();
	//	boolean isCollision=false;
		
		ballPreX=ballX;
		ballPreY=ballY;
		ballX+=ballXSpeed;
		ballY+=ballYSpeed;
		
		if(ballX<ballLeftLimit)
		{
			  ballX=ballLeftLimit;
			  ballXSpeed=-ballXSpeed;
			  ball.setBrickId(0);
	//		  isCollision=true;
		}
		else
		  if(ballX>ballRightLimit)
		  {
			  ballX=ballRightLimit;
			  ballXSpeed=-ballXSpeed;
			  ball.setBrickId(0);
		//	  isCollision=true;
		  }
		  
		if(ballY<ballTopLimit)
		{
			  ballY=ballTopLimit;
			  ballYSpeed=-ballYSpeed;
			  ball.setBrickId(0);
		//	  isCollision=true;
		}
		else
		  if(ballY>ballButtomLimit)
		  {
			  ballY=ballButtomLimit;
			  ballYSpeed=-ballYSpeed;
			  ball.setBrickId(0);
		//	  isCollision=true;
		  }
		  ball.setX(ballX);
		  ball.setY(ballY);
		  ball.setXSpeed(ballXSpeed);
		  ball.setYSpeed(ballYSpeed);
		  
		  userBrick.checkCollision1(ball);
		  userBrick.checkCollision2(ball);
		  
		  for(int i=0;i < bricksRows;i++)
				for(int j=0; j<bricksCols ; j++)
					if(isShow[i][j])
						if(bricks[i][j].checkCollision1(ball))
						{
							isShow[i][j]=false;
							unDrawBrick(i,j);
						}
		  
		  for(int i=0;i < bricksRows;i++)
				for(int j=0; j<bricksCols ; j++)
					if(isShow[i][j])
						if(bricks[i][j].checkCollision2(ball))
						{
							isShow[i][j]=false;
							unDrawBrick(i,j);
							
						}
						
	}
	
	public void drawScreen()
	{	
		reDrawImage((int)(ballPreX),(int)(ballPreY),(int)ball.getR(),(int)ball.getR());
		
		ball.draw(g);
		
		reDrawImage(userBrickPreX,userBrick.getY(),userBrick.getWidth()+1,userBrick.getHeight()+1);
		
		userBrick.draw(g);
		
		checkCollision();
		flushGraphics();
	}
}

public class helloworld extends MIDlet implements CommandListener
{
	Display display;
	GCanvas GC;
	public helloworld()
	{
		super();
		display=Display.getDisplay(this);
		
		GC=new GCanvas();
		
		display.setCurrent(GC);
	}

	protected void destroyApp(boolean arg0) throws MIDletStateChangeException 
	{
        
	}

	protected void pauseApp() 
	{

	}

	protected void startApp() throws MIDletStateChangeException 
	{
		
	}

	public void commandAction(Command c, Displayable e) 
	{
	  
	}
}

⌨️ 快捷键说明

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