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

📄 pig.java

📁 BravePiglet.rar 勇敢的猪Java游戏 由本人原创
💻 JAVA
字号:
package com.lovo.pig.model;

/**
 * 将猪和绳子凑合在一起
 */
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import com.lovo.pig.view.MainFrame;

public class Pig{	
	private MainFrame mf;
	
	//猪的初始位置
	public static int pigX = 680;
	public int pigY = 430;
	
	//绳子的上端Y
	private static int cordTopY = 150;
	
	//死亡时猪图像下标
	public int indexImgDeadPig  = 0;
	//猪发弹状态,用作存活时猪图像下标
	public int readyFire = 0;
	//猪存活状态
	public boolean live = true;
	//上一次发出的子弹
	Bullet lastBullet ;
	//猪移动方向
	public String dir = "STOP";


	public Pig(MainFrame mf) {
		this.mf = mf;
	}
	
	/**
	 * 绘制猪,绳子
	 * @param g
	 */
	public void draw(Graphics g) {
	   if(live){//猪存活,反复绘制前两张图片(发弹以及发弹预备动作图片)
		    //绘制绳子,加57校正误差,先画左边的绳子,以免猪的手臂被挡住
		    g.drawImage(mf.images.getImgCord(), 700, cordTopY, 3, pigY - cordTopY + 57, null);
		    //猪
			g.drawImage(mf.images.getImgPigs()[readyFire], pigX, pigY, null);
			//右边的绳子
			g.drawImage(mf.images.getImgCord(), 737, cordTopY, 3, pigY - cordTopY + 57, null); 		
	   }else if(!live){//猪死亡,绘制后8张图片(旋转下落动作图片)
    	   g.drawImage(mf.images.getImgPigs()[indexImgDeadPig], pigX, pigY, null);
        }
	   move();
	   toHell();//改变猪图像
	}

	/**
	 * 死猪
	 */
	private void toHell() {
		if (!live) {//死亡往下掉时绘制后7张图片
			indexImgDeadPig++;
			if (indexImgDeadPig < 2 || indexImgDeadPig > 8) {//最后一张暂不绘制
				indexImgDeadPig = 2;//反复
			}
			pigY=pigY+35;//往下掉
			if (pigY >= 530) {
				pigY = 530;
				//下掉到一定高度后,绘制最后一张彻底完蛋的图像
				indexImgDeadPig = 9;
				//游戏结束
				mf.gameOver = true;
			} 
		} 
	}
	
	/**
	 * 猪移动
	 */
	private void move(){
		if(!live){
			return;
		}
		if(dir.equals("UP")){
			pigY -= 10;
		}else if(dir.equals("DOWN")){
			pigY += 10;
		}
		
		if(pigY < 100 ){
			   pigY = 100;
		}else if(pigY > 400){
			pigY =400;
		}
	}

	/**
	 * 根据鼠标位置改变猪图像位置
	 * @param e
	 */
	public void mouseMoved(MouseEvent e){
		if (live) {//猪存活,则改变位置
			if(e.getY() > 150 && e.getY() < 400){
				pigY = e.getY();//区间位置
			}else if(e.getY() < 150){//最上位置
				pigY = 150;
			}else if(e.getY() > 400){//最下位置
				pigY = 400;
			}
		}
	}
	
	/**
	 *发弹 
	 * @param e
	 */
    public void fire(){
    	readyFire = 0;//第一张图片
		if (live) {
			if(mf.bullets.size() > 0){
				lastBullet = mf.bullets.get(mf.bullets.size() - 1);//取出上一颗子弹
			}else{//如果上一颗为空,则创建一颗
				lastBullet  = new Bullet(mf,pigY + 20);
				lastBullet.x = 10;
			}
			
			if(lastBullet.x + 130 <= 680){
				//上一发子弹飞出一定距离后才增加子弹,以免子弹过于密集
				Bullet bullet = new Bullet(mf,pigY + 20);
				mf.bullets.add(bullet);
				lastBullet = bullet;
			}
			mf.musics.fire();//播放猪开火音乐
		}
    }
    /**
     * 活猪,准备发弹
     */
    public void getReady(){
    	if (live){
    		readyFire = 1;//换成第2张图片
    	}
    }
}

⌨️ 快捷键说明

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