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

📄 poolmouselistener.java

📁 小游戏一个 蜘蛛纸牌
💻 JAVA
字号:
package dujid.araneid;

import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Iterator;
import java.util.Stack;

// 鼠标 按下/释放 事件

public class PoolMouseListener extends MouseAdapter {
	private Pools pool;
	private Araneid main;

	public PoolMouseListener(Araneid main) {
		this.main=main;
	}
	public void mouseExited(MouseEvent evt) {
		Pools pool=(Pools)evt.getSource();
		pool.setMouseEnter(false);
		pool.repaint();
		this.pool=null;
	}
	public void mouseEntered(MouseEvent evt) {
		Pools pool=(Pools)evt.getSource();
		if (this.pool!=pool) {
			this.pool=pool;
			pool.setMouseEnter(true);
			pool.repaint();
		}
	}
	public void mousePressed(MouseEvent evt) {
		Pools pool=(Pools)evt.getSource();
		Point point = (Point)evt.getPoint();
		AutoRobot robot = new AutoRobot(this.main);
		int index;
		if ((index = robot.getCardIndexOnMouse(point.y,pool))>-1) {
			main.poolmousemotion.setCardindexSelect(index);
		}
	}
	public void mouseReleased(MouseEvent evt) {
		main.mousepanel.setVisible(false);

		if (this.pool!=null && this.pool!=(Pools)evt.getSource()) {
			Stack cards = (Stack)main.mousepanel.getCards();
			if (cards.size()>0) {
				Pools poolSrc = (Pools)evt.getSource();
				boolean pushed = false;
				if (this.pool.getCards().size()>0) {
					Card cardnext = (Card)cards.firstElement();
					Card cardprevious = (Card)this.pool.getCards().lastElement();
					AutoRobot robot = new AutoRobot();
					if (robot.isAddAble(cardprevious,cardnext)) {
						pushcards((Iterator)cards.iterator(), poolSrc);
						pushed = true;
					}
				} else {
					pushcards((Iterator)cards.iterator(),poolSrc);
					pushed = true;
				}

				// move out a list (1-13) after the list has completed
				AutoRobot robot = new AutoRobot(this.main);
				if (robot.isMoveListAble(this.pool.getCards())) {
					robot.moveCompletedList(this.pool.getCards());
					robot.autoTurnLast(this.pool);
				}

				// refresh mouse note
				if (pushed==true) {
					Point point = (Point)evt.getPoint();
					int index = robot.getCardIndexOnMouse(point.y,this.pool);
					this.pool.setCardIndexOnMouse(index);
					this.pool.setMouseEnter(true);
				} else {
					// remove all temp card
					main.mousepanel.removeAllCard();
				}

				// auto turn card
				robot.autoTurnLast(poolSrc);

				this.pool.repaint();
			}
		}
	}

	private void pushcards(Iterator cardlist, Pools poolSrc) {
		while(cardlist.hasNext()) {
			Card card = (Card)cardlist.next();
			poolSrc.removeCard();
			poolSrc.repaint();
			this.pool.putCard(card);
		}

		// decrease score
		main.player.addScore(-1);
	}
}

⌨️ 快捷键说明

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