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

📄 blackjack.java

📁 24点扑克牌游戏~为了运行这个程序
💻 JAVA
字号:
import java.awt.*;
import java.awt.image.*;
import java.util.*;
import java.io.*;
import java.applet.*;
import java.awt.event.*;
class Cfg
{	private Cfg(){}	final static Dimension SCREENSIZE = Toolkit.getDefaultToolkit().getScreenSize();		static boolean isChina;
	final static Image[] cardIcons = new Image[53];	final static Dimension cardSize = 				SCREENSIZE.width>=640?new Dimension(71,96):new Dimension(71*2/3,96*2/3);
	static String getIconName(int i)	{					return "res/"+i+".gif";	}
	static boolean isApplet = true;
}
//进度条
class ProgressBar extends Canvas {	ProgressBar()	{		setVisible(true);	}	public void setRange(int range)
	{
	   setVisible(true);	   setValue(0);
	   setMaximum(range+1);	}
	public void stepIt()
	{		setVisible(true);
		setValue(getValue()+1);		if(getValue()>=getMaximum())
			setVisible(false);		repaint();	}	public void setPos(int pos)	{		value = pos;	}		public void setValue(int v)	{		value = v;	}	public int getValue()	{		return value;	}	public void setMaximum(int m)	{		max = m;	}	public int getMaximum()	{		return max;	}
	public void paint(Graphics g)	{		//缓冲绘制(防止图象抖动)				Image	offIm=createImage(getSize().width,getSize().height);
		Graphics buf=offIm.getGraphics();		buf.setColor(Color.red);		buf.fillRect(0,0,(int)((float)value/(float)max*getSize().width),getSize().height);				g.drawImage(offIm,0,0,this);		}	private int value;	private int max;}
class AwtDisplayer extends Panel {	BJCanvas bjCanvas;	CmdPanel  cmdPanel;	MoneyPanel moneyPanel;			Button btnHit=new Button(Cfg.isChina?"要牌":"Hit");		Button btnStand=new Button(Cfg.isChina?"停牌":"Stand");		Button btnSplit=new Button(Cfg.isChina?"分牌":"Split");		Button btnDouble=new Button(Cfg.isChina?"加倍":"Double");		Button btnInsurance=new Button(Cfg.isChina?"买保险":"Insurance");		Button btnDeal=new Button(Cfg.isChina?"发牌":"Deal");		Button btnBetPlus = new Button("+");		Button btnBetMinus = new Button("-");	Dealer dealer = new Dealer(1, 30);
	StandardDealerHand dealerHand;	PlayerHand playerHand;		Graphics gph;	class MoneyPanel extends Panel	{		Label lblMoney ;		Label lblBet ;		Label lblTotal ;				MoneyPanel()		{			setLayout(new GridLayout(2,6));			add( new Label(Cfg.isChina?"赌资:":"Money:",Label.CENTER));			lblMoney= new Label(""+dealer.getMoney(),Label.CENTER);			add(lblMoney);			add( new Label(Cfg.isChina?"赌注:":"Bet:",Label.CENTER));			lblBet = new Label(""+dealer.getBet(),Label.CENTER);			add(lblBet);			add( new Label(Cfg.isChina?"总数:":"Total:",Label.CENTER));			lblTotal = new Label(""+dealer.getTotal(),Label.CENTER);			add(lblTotal);			add(new Label(Cfg.isChina?"下注 ":"Bets ",Label.CENTER));			add(btnBetPlus);			add(btnBetMinus);			add(new Label(""));			add(new Label(""));			add(new Label(""));						btnBetPlus.addActionListener( new ActionListener()				{
      				public void actionPerformed(ActionEvent e) 
      				{						dealer.setBet(dealer.getBet()+10>50?50:dealer.getBet()+10);

						repaint();						if(dealer.getMoney()-dealer.getBet()>=0)			 				btnDeal.setEnabled(true);      				}
				} );								btnBetMinus.addActionListener( new ActionListener()				{
      				public void actionPerformed(ActionEvent e) 
      				{						dealer.setBet(dealer.getBet()-10>0?dealer.getBet()-10:10);
						repaint();						if(dealer.getMoney()-dealer.getBet()>=0)			 				btnDeal.setEnabled(true);      				}
				} );										}		public void paint(Graphics g)		{			update(g);		}		public void update(Graphics g)		{			lblMoney.setText(""+dealer.getMoney());			lblBet.setText(""+dealer.getBet());			lblTotal.setText(""+dealer.getTotal());		}	}// class MoneyPanel end			class BJCanvas extends Canvas	{		BJCanvas()		{			addKeyListener(new KeyHandler());		}		public void paint(Graphics g)		{			update(g);		}		public void update(Graphics g)		{			Image	offIm=createImage(getSize().width,getSize().height);
			Graphics buf=offIm.getGraphics();
			buf.setColor(Color.white);			buf.fillRect(0,0,getSize().width,getSize().height);						drawDealerHand(buf);			drawPlayerHands(buf);							g.drawImage(offIm,0,0,this);		}		private void drawDealerHand(Graphics g)		{						int x = Cfg.cardSize.width/2;			int y = Cfg.cardSize.height/4;			if (dealerHand ==null) 				return;			dealerHand.draw(g,x,y,this);					}		private void drawPlayerHands(Graphics g)		{			int x = Cfg.cardSize.width/2;			int y = Cfg.cardSize.height+Cfg.cardSize.height/2;						if(dealer==null)				return;							Vector playerHands = dealer.getPlayers();						for(Enumeration e = playerHands.elements();e.hasMoreElements();)			{								BlackJackHand playerHand = (BlackJackHand) e.nextElement();				playerHand.draw(g,x,y,this);				x += Cfg.cardSize.width+Cfg.cardSize.width/2;							}		}	}//class BJCanvas end		class CmdPanel extends Panel	{		CmdPanel()		{			setLayout(new GridLayout(2,3));			add(btnHit);			add(btnStand);			add(btnSplit);			add(btnDouble);			add(btnInsurance);			add(btnDeal);						setAllEnabled(false);			btnDeal.setEnabled(true);						btnDeal.addActionListener( new ActionListener()				{
      				public void actionPerformed(ActionEvent e) 
      				{
						deal();      				}
				} );								btnHit.addActionListener( new ActionListener()				{
      				public void actionPerformed(ActionEvent e) 
      				{
						playerHand.setTurn(TurnResult.HIT);						handleTurn();      				}
				} );				btnStand.addActionListener( new ActionListener()				{
      				public void actionPerformed(ActionEvent e) 
      				{      					playerHand.setTurn(TurnResult.STAND);      					handleTurn();
      				}
				} );												btnDouble.addActionListener( new ActionListener()				{
      				public void actionPerformed(ActionEvent e) 
      				{      					      					playerHand.setTurn(TurnResult.DOUBLE_DOWN);      					handleTurn();
      				}
				} );																btnInsurance.addActionListener( new ActionListener()				{
      				public void actionPerformed(ActionEvent e) 
      				{						playerHand.setTurn(TurnResult.INSURANCE);						handleTurn();						      					      				}
				} );												}// constructor CmdPane end		void setAllEnabled(boolean enabled)		{			Component[] btns = getComponents();			for(int i=0;i<btns.length;i++)				btns[i].setEnabled(enabled);		}	}//class CmdPanel end		AwtDisplayer()	{		initDealer();		moneyPanel = new MoneyPanel();			bjCanvas = new BJCanvas();		cmdPanel = new CmdPanel();		setLayout(new BorderLayout());		add(moneyPanel,BorderLayout.NORTH);		add(bjCanvas,BorderLayout.CENTER);		add(cmdPanel,BorderLayout.SOUTH);					}	//键盘处理器
 	private class KeyHandler implements KeyListener
    {
    	
    	public void keyPressed(KeyEvent e)
    	{
    		int keyCode = e.getKeyCode();			System.out.println(e);
   			switch(keyCode)
   			{
   			case KeyEvent.VK_H:   				break;   			case KeyEvent.VK_S:   				break;   			case KeyEvent.VK_P:   				break;   			case KeyEvent.VK_D:   				break;   			case KeyEvent.VK_I:   				break;   			case KeyEvent.VK_N:   				deal();   				break;   			} 			
    	}    	public void keyReleased(KeyEvent e){}
    	public void keyTyped(KeyEvent e){}    }
	private void deal()	{		dealer.deal();		playerHand.upShot = "";		dealerHand.upShot = "";		dealerHand.cardDown=true;		bjCanvas.repaint();		moneyPanel.repaint();		cmdPanel.setAllEnabled(false);				btnHit.setEnabled(true);		btnStand.setEnabled(true);		btnBetPlus.setEnabled(false);		btnBetMinus.setEnabled(false);		btnSplit.setEnabled(playerHand.isSplitable());		btnDouble.setEnabled(playerHand.canDouble());		btnInsurance.setEnabled(dealerHand.canInsurance());	}	private void initDealer()	{		
		
		dealer.newShoe();//取一幅已洗好的牌
		dealerHand = new StandardDealerHand();//庄家牌手

		//玩家牌手
		playerHand = new PlayerHand( Cfg.isChina?"玩家":"Player");
		dealer.setDealerHand(dealerHand);//设置庄家牌手给庄家
		dealer.assignPlayerHand(playerHand);//把玩家牌手赋给庄家
		}		private void handleTurn()	{			cmdPanel.setAllEnabled(false);		btnHit.setEnabled(true);		btnStand.setEnabled(true);						if(dealer.handleTurn(playerHand)==false)		{			dealer.processTurn(dealerHand);			dealerHand.cardDown = false;							drawStatus();								cmdPanel.setAllEnabled(false);			if(dealer.getMoney()-dealer.getBet()>=0)			{ 				btnDeal.setEnabled(true);							}			btnBetPlus.setEnabled(true);			btnBetMinus.setEnabled(true);		}		moneyPanel.repaint();		bjCanvas.repaint();	}// handleTurn end		private void drawStatus()	{		Status playerStatus = dealer.getPlayerStatus(playerHand);		playerHand.upShot = " " + playerStatus;		if(playerStatus==Status.LOSE)			dealer.setMoney(dealer.getMoney());		if(playerStatus==Status.WIN)			dealer.setMoney(dealer.getMoney()+dealer.getBet()*2);		if(playerStatus==Status.BLACKJACK)			dealer.setMoney(dealer.getMoney()+dealer.getBet()*2+dealer.getBet()/2);		if(playerStatus==Status.PUSH)			dealer.setMoney(dealer.getMoney());				if(dealer.isDouble)			dealer.setBet(dealer.getBet()/2);			dealer.setTotal(0);			}}class MainFrame extends Frame
{	//游戏窗口在WINDOWS 和PDA版本中的大小 	final static  int WIDTH = Cfg.SCREENSIZE.width>= 640 ? 430 : 240;	final static  int HEIGHT= Cfg.SCREENSIZE.width>=640 ? 480 : 320 ;	
	AwtDisplayer bjDisplayer;
	
	MainFrame()
	{
		Cfg.isChina = getLocale().equals(Locale.CHINA)?true:false;						bjDisplayer = new AwtDisplayer();		add(bjDisplayer);		setTitle(Cfg.isChina?"黑杰克(JAVA版)":"BlackJack for Java");				//把窗口定位于屏幕中心
		setSize(WIDTH,HEIGHT);		setLocation( (Cfg.SCREENSIZE.width-WIDTH)/2, (Cfg.SCREENSIZE.height-HEIGHT)/2);				//订制窗口消息		addWindowListener(new WindowAdapter()			{				public void windowClosing(WindowEvent e)				{					exitGame();				}								});			} //MainFrame() constructor end	private void exitGame()	{		if(Cfg.isApplet)		{			dispose();		}		else			System.exit(0);	}
}
public class BlackJack extends Applet
{	public static void main(String[] arg)
	{
				Cfg.isApplet = false;					loadFrame= new Frame();		loadFrame.setSize(230,150);		loadFrame.setLocation( (Cfg.SCREENSIZE.width-230)/2, (Cfg.SCREENSIZE.height-150)/2);		try		{			Cfg.isChina = loadFrame.getLocale().equals(Locale.CHINA)?true:false;				}		catch(Exception e)		{		}		loadFrame.add(new LoadPanel());		loadFrame.show();			
	}	
	static class LoadPanel extends Panel implements Runnable	{		private ProgressBar loadProgressBar;		private Label loadProgressLabel;		LoadPanel()		{			try			{				Cfg.isChina = getLocale().equals(Locale.CHINA)?true:false;					}			catch(Exception e)			{			}						loadProgressLabel = new Label("loading        ",Label.CENTER);			loadProgressBar = new ProgressBar();			loadProgressBar.setRange(53);			loadProgressBar.setSize(getSize().width,20);			Label lblTitle = new Label(Cfg.isChina?"黑杰克 JAVA版":								"BlackJack for java",Label.CENTER);			lblTitle.setFont(new Font("",Font.BOLD,18));									setLayout(new GridLayout(5,1));
			add(lblTitle);			add(new Label(Cfg.isChina?"制作:吴赤斌":"author: WU CHI BIN",Label.CENTER));			add(new Label("email: ty_wuchibin@yahoo.com.cn",Label.CENTER));			add(loadProgressLabel);			add(loadProgressBar);					(new Thread(this) ).start();					}		public void run()		{		 	for(int manIconNo = 0; manIconNo<53;manIconNo++)		 	{		 		Image icon = null;				try				{					InputStream in = getClass().getResourceAsStream(Cfg.getIconName(manIconNo));
					byte buffer[] = new byte[in.available()];
					for (int i = 0, n = in.available(); i < n; i ++)
						buffer[i] = (byte)in.read();
					icon = Toolkit.getDefaultToolkit().createImage(buffer);
				}				catch(Exception e)				{					System.out.println(e);					System.out.println(Cfg.getIconName(manIconNo));				}				icon = icon.getScaledInstance(Cfg.cardSize.width,Cfg.cardSize.height,Image.SCALE_AREA_AVERAGING);				//Image.SCALE_REPLICATE);	Image.SCALE_AREA_AVERAGING);
				//Image.SCALE_SMOOTH);		Image.SCALE_DEFAULT);				Cfg.cardIcons[manIconNo] = icon;				loadProgressLabel.setText((Cfg.isChina?"游戏加载 ":"Loading ")					+ (int)((manIconNo+1)/53.0*100) + "%"); 				loadProgressBar.stepIt();				repaint();			}					mainFrame = new MainFrame();			mainFrame.show();			if(Cfg.isApplet==false)					loadFrame.dispose();
		}	}	
		public void init()
	{		try		{			Cfg.isChina = getLocale().equals(Locale.CHINA)?true:false;				}		catch(Exception e)		{		}		me = this;		add(new LoadPanel());	}	static MainFrame mainFrame ;	static BlackJack me;	static Frame loadFrame ;	
}	

⌨️ 快捷键说明

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