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

📄 cardoperation.java

📁 别人的大作
💻 JAVA
字号:
package poker;

/**
 * <p>Title: 斗地主</p>
 * <p>Description: 牌操作</p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: </p>
 * @author 李艳生
 * @version 1.0
 */
import java.awt.*;
import java.awt.Graphics2D;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.URL;
import java.net.URLClassLoader;

public class CardOperation {
	//所有牌对象集
	public static Vector cards = new Vector();

    public CardOperation() {
    }
	/**加载扑克图片
	 */
	public static void loadCards(Component cmp){
		//s--黑桃(spade) h--红桃(hearts) c--梅花(club) d--方块(diamond)
		String name[] = {"s","h","c","d"};
		String dot[] = {"3","4","5","6","7","8","9","10","j","q","k","a","2"};
		//权值
		int power[] = {3,4,5,6,7,8,9,10,11,12,13,14,15};
		URLClassLoader urlLoader = (URLClassLoader)cmp.getClass().getClassLoader();
		URL fileLoc = null;
		Card card = null;
		//先读52张牌
		for(int i=0; i<4;i++){
			for(int j=0;j<13;j++){
				fileLoc = urlLoader.findResource("cards/"+name[i]+dot[j]+".jpg");
				card = new Card(name[i]+dot[j], power[j], cmp.getToolkit().createImage(fileLoc));
				cards.addElement(card);
			}
		}
		//再读大小王
		fileLoc = urlLoader.findResource("cards/b.jpg");
		card = new Card("b",200,cmp.getToolkit().createImage(fileLoc));
		cards.addElement(card);
		fileLoc = urlLoader.findResource("cards/s.jpg");
		card = new Card("s",100,cmp.getToolkit().createImage(fileLoc));
		cards.addElement(card);
		//牌背景
		fileLoc = urlLoader.findResource("cards/bg.jpg");
		card = new Card("bg",0,cmp.getToolkit().createImage(fileLoc));
		cards.addElement(card);

		//初始化
		Card c = new Card();

		for(int i=0;i<54;i++){
			PokerKernal.postCards.addElement(c);
		}

		for(int i=0;i<20;i++){
			PokerKernal.oneCards.addElement(c);
			PokerKernal.twoCards.addElement(c);
			PokerKernal.threeCards.addElement(c);
			PokerKernal.selectCards.addElement(c);
		}
		PokerKernal.master = "one";
	}

	//洗牌
	public static void shuttle(){
		Random r = new Random();
		int index = 0;
		Card c = null;
		for(int i=0;i<54;i++){
			index = r.nextInt(54);

			while(index==54){
				index = r.nextInt(54);
			}

			c = (Card)cards.elementAt(i);
			cards.setElementAt(cards.get(index), i);
			cards.setElementAt(c,index);
		}
	}

	//发牌
	public static void post(){
		shuttle();

		int k = 0;
		for(int i=0;i<17;i++){
			//判断第一个取牌人
			if(PokerKernal.master.equalsIgnoreCase("one")){
				PokerKernal.oneCards.setElementAt(cards.get(k++), i);
				PokerKernal.twoCards.setElementAt(cards.get(k++), i);
				PokerKernal.threeCards.setElementAt(cards.get(k++), i);
			}
			else if(PokerKernal.master.equalsIgnoreCase("two")){
				PokerKernal.twoCards.setElementAt(cards.get(k++), i);
				PokerKernal.threeCards.setElementAt(cards.get(k++), i);
				PokerKernal.oneCards.setElementAt(cards.get(k++), i);
			}
			else if(PokerKernal.master.equalsIgnoreCase("three")){
				PokerKernal.threeCards.setElementAt(cards.get(k++), i);
				PokerKernal.oneCards.setElementAt(cards.get(k++), i);
				PokerKernal.twoCards.setElementAt(cards.get(k++), i);
			}
		}

		PokerKernal.status = true;
		PokerKernal.posted = true;
		PokerKernal.take = false;
	}

	//拿底牌
	public static void takeLow(){
		int k = 51;
		for(int i=17;i<20;i++){
			//判断地主
			if (PokerKernal.master.equalsIgnoreCase("one")) {
				PokerKernal.oneCards.setElementAt(cards.get(k++), i);
			}
			else if (PokerKernal.master.equalsIgnoreCase("two")) {
				PokerKernal.twoCards.setElementAt(cards.get(k++), i);
			}
			else if (PokerKernal.master.equalsIgnoreCase("three")) {
				PokerKernal.threeCards.setElementAt(cards.get(k++), i);
			}
		}
		PokerKernal.takelow = true;
	}
}

⌨️ 快捷键说明

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