JAVA编程~~21点游戏源代码
21点源代码

package trys;public class Card {/*** <p>目标:获取和设置牌得类型和面值* <p>@param type,value* <p>@author Lee*/private int value=0; //代表纸牌的面值private int type=0; //代表纸牌的花色public Card(int type,int value){ //构造方法,给面值和花色赋值this.value=value;this.type=type;}//定义方法获取类型public int getType(){return type;}//定义方法获取面值public int getValue(){return value;}//定义方法设置纸牌的类型public void setType(int type){ this.type=type;}//定义方法设置纸牌的面值public void setValue(int value){ this.value=value;}}package trys;import java.awt.Container;import javax.swing.ImageIcon;import javax.swing.JLabel;public class CardManager {/*** <p>目的:初始化牌,生成,和发牌* <p>@version Lee*/public Card[] cards=new Card[52]; //定义数组存放纸牌/*初始化纸牌*/public void initCards(){for(int i=1;i<=4;i++){ //纸牌类型for(int j=1;j<=13;j++){ //纸牌面值cards[(i-1)*13+j-1]=new Card(i,j);}}}/*随机生成牌号*/public void randomCards(){Card temp=null; //从新定义纸牌的类型for(int i=0;i<52;i++){int a=(int)(Math.random()*52);int b=(int)(Math.random()*52);temp=cards[a];cards[a]=cards[b];cards[b]=temp;}}/*定义方法,发牌*/public void gameStart(JLabel game[],Container c){ //在容器中删除标签组件if(game[0]!=null){for(int i=0;i<52;i++){c.remove(game[i]);}c.repaint();}/*在容器中放置52个组件,用于盛放图片*/for(int i=0;i<52;i++){game[i]=new JLabel();game[i].setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));}//设置标签组件的图片为rear.gif,即牌得背面for(int i=0;i<52;i++){game[i].setIcon(newImageIcon("images/aabb.jpg"));}}}package trys;import java.awt.Dimension;import java.awt.Rectangle;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Vector;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;public class GameFrame extends JFrame implements ActionListener{JButton clear_btn=new JButton(); //洗牌按钮JButton compute_btn=new JButton(); //游戏开始按钮JButton game_btn=new JButton();//玩家按钮JButton gameover_btn=new JButton(); //游戏结束按钮JLabel game[]=new JLabel[52]; //放置52张牌得标签框CardManager cm=new CardManager(); //定义指派管理类的对象int i=0; //记录抓牌数int computer_dot=0; //记录电脑点数int game_dot=0; //记录玩家点数Vector v=new Vector(); //存储电脑抓的纸牌JLabel jLabel1=new JLabel();JLabel jLabel2=new JLabel();public GameFrame(){getContentPane().setLayout(null);this.setTitle("二十一点游戏");this.setSize(800,500);//获得当前屏幕的宽和高DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSiz e();Dimension frameSize=this.getSize(); //获得当前窗体的宽和高//设置窗体剧中if(frameSize.height>screenSize.height) frameSize.height=screenSize.height;if(frameSize.width>screenSize.width) frameSize.width=screenSize.width;this.setLocation((screenSize.width-frameSize.wid th)/2,(screenSize.height-frameSize.height)/2);clear_btn.setBounds(newRectangle(78,388,86,31)); //设置位置clear_btn.setText("洗牌"); //设置标签内容clear_btn.addActionListener(this); //注册监听器compute_btn.setBounds(newRectangle(233,388,86,31));compute_btn.setEnabled(false);//不能更改compute_btn.setText("开始游戏");compute_btn.addActionListener(this);game_btn.setBounds(newRectangle(413,389,91,32));game_btn.setEnabled(false);game_btn.setText("玩家抓牌");game_btn.addActionListener(this);gameover_btn.setBounds(newRectangle(625,390,91,32));gameover_btn.setEnabled(false);gameover_btn.setText("本轮结果");gameover_btn.addActionListener(this);JMenuBar mb=new JMenuBar(); //定义菜单条JMenu mnuFile=new JMenu("文件"); //定义菜单JMenu mnuHelp=new JMenu("帮助");JMenuItem mnuFileExit=new JMenuItem("退出"); //定义菜单项JMenuItem mnuHelpAbout=new JMenuItem("关于...");this.setJMenuBar(mb); //把菜单条添加到窗体上jLabel1.setText("电脑显示牌区");jLabel1.setBounds(newRectangle(104,330,95,38));jLabel2.setText("用户显示牌区");jLabel2.setBounds(newRectangle(499,343,92,33));mb.add(mnuFile); //将菜单加到菜单条中mb.add(mnuHelp);mnuFile.add(mnuFileExit); //将菜单项添加到菜单中mnuHelp.add(mnuHelpAbout);//对菜单产生的事件进行注册mnuFileExit.addActionListener(newActionListener(){public void actionPerformed(ActionEvent e){ System.exit(0);}});mnuHelpAbout.addActionListener(newActionListener(){public void actionPerformed(ActionEvent e){ new AboutFrame();}});this.getContentPane().add(jLabel2);this.getContentPane().add(jLabel1);this.getContentPane().add(game_btn);this.getContentPane().add(clear_btn);this.getContentPane().add(gameover_btn);this.getContentPane().add(compute_btn);this.setVisible(true);}public static void main(String [] args){GameFrame gameframe=new GameFrame();}public void actionPerformed(ActionEvent e){ //洗牌按钮if(e.getSource()==clear_btn){//关闭和开启相应的按钮compute_btn.setEnabled(true);clear_btn.setEnabled(false);//对记牌器,电脑点数和玩家点数进行初始化i=0; computer_dot=0; game_dot=0;//把标签控件数组放入窗体的窗格中cm.gameStart(game, this.getContentPane());cm.initCards(); //初始化一副纸牌cm.randomCards(); //随机打乱}//开始游戏按钮if(e.getSource()==compute_btn){//关闭和开启相应的按钮compute_btn.setEnabled(false);game_btn.setEnabled(true);//电脑抓牌for(int k=0;k<20;k++){game[i].setIcon(newImageIcon("images/aabb.jpg"));game[i].setBounds(newRectangle(50+i*20,200,71,96));getContentPane().setComponentZOrder(game[i],1);if(cm.cards[i].getValue()>10){computer_dot=computer_dot+1;}else{computer_dot=computer_dot+cm.cards[i].getValue() ;}v.add(cm.cards[i]);getContentPane().repaint();i=i+1;//如果面值大于15则停止抓牌if(computer_dot>15) return;}}//玩家抓牌按钮if(e.getSource()==game_btn){//提示玩家if(game_dot>=10){int a=JOptionPane.showConfirmDialog(null,"现在点数为:"+game_dot+"是否在抓牌","提示",JOptionPane.NO_OPTION);if(a==JOptionPane.NO_OPTION){game_btn.setEnabled(false);gameover_btn.setEnabled(true);return;}}//设置标签,显示抓到的纸牌game[i].setIcon(newImageIcon("images/"+cm.cards[i].getType()+"-"+cm.ca rds[i].getValue()+".jpg"));game[i].setBounds(newRectangle(350+i*20,200,71,96));this.getContentPane().setComponentZOrder(game[i],1);//计算扎到纸牌的面值if(cm.cards[i].getValue()<=10)game_dot=game_dot+cm.cards[i].getValue();else game_dot=game_dot+1;i=i+1; //记录抓到的牌数//面值大于21时停止抓牌,关闭和开启相应的按钮if(game_dot>21){game_btn.setEnabled(false);gameover_btn.setEnabled(true);return;}}//本轮游戏结束按钮if(e.getSource()==gameover_btn){//吧电脑的纸牌反过来for(int i=0;i<v.size();i++){Card card=(Card)v.get(i);game[i].setIcon(newImageIcon("images/"+card.getType()+"-"+card.getValu e()+".jpg"));game[i].setBounds(newRectangle(50+i*20,200,71,96));this.getContentPane().setComponentZOrder(game[i], 1);}//计算胜负String game_over="";if(game_dot>21 && computer_dot<=21)game_over="电脑获胜";else if(game_dot<=21 && computer_dot>=21) game_over="玩家获胜";else if(game_dot>=21 && computer_dot>=21) game_over="平局";else if(game_dot>computer_dot) game_over="玩家获胜";else if(game_dot<computer_dot) game_over="电脑获胜";else if(game_dot==computer_dot)game_over="平局";//以对话框的方式显示胜负String message="游戏结果\n";message=message+"电脑点数:"+String.valueOf(computer_dot)+"\n";message=message+"玩家点数:"+String.valueOf(game_dot)+"\n";message=message+"游戏结果:"+game_over;JOptionPane.showMessageDialog(null,message,"本轮游戏的结果",RMATION_MESSAGE);//设置按钮可操作clear_btn.setEnabled(true);compute_btn.setEnabled(true);game_btn.setEnabled(true);gameover_btn.setEnabled(true);}}}package trys;import java.awt.Dimension;import java.awt.Rectangle;import java.awt.Toolkit;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JTextArea;public class AboutFrame extends JFrame{JLabel jLabel1=new JLabel();JTextArea ta1=new JTextArea();JLabel jLabel2=new JLabel();JTextArea ta2=new JTextArea();public AboutFrame(){getContentPane().setLayout(null);jLabel1.setText("游戏规则");jLabel1.setBounds(new Rectangle(27,0,97,36));jLabel2.setText("声明");jLabel2.setBounds(new Rectangle(26,176,80,27));ta2.setEditable(false);ta2.setLineWrap(true);ta2.setBounds(new Rectangle(26,207,398,63));ta1.setColumns(40);ta1.setLineWrap(true);this.setTitle("关于");this.getContentPane().add(jLabel1);this.getContentPane().add(ta1);this.getContentPane().add(jLabel2);this.getContentPane().add(ta2);this.setEnabled(false);ta1.setText("电脑先抓牌,玩家后抓牌.计算自己的面值总额,比较面值数,如果面值总数都大于21点,则平局.如果玩家和电脑的面值总数有一个大于21点,另一个" +"不大于21点,则不大于21点的为赢家.如果都不大于21点,则点数多达额赢");ta1.setBounds(new Rectangle(25,36,392,130));ta2.setText("游戏中的,纸牌的图片来自windowXp的纸牌游戏,图片版权属于Java_Lee 所有");this.setSize(450,300);Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();//获得当前窗体的宽和高Dimension frameSize=this.getSize();//设置窗体剧中if(frameSize.height>screenSize.height)frameSize.height=screenSize.height;if(frameSize.width>screenSize.width)frameSize.width=screenSize.width;this.setLocation((screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2);this.setVisible(true);}}。
二十一点小游戏(HTML游戏使用JavaScript开发)

二十一点小游戏(HTML游戏使用JavaScript开发)HTML游戏使用JavaScript开发已经成为一种流行的趋势,其中二十一点小游戏是一种简单而有趣的游戏。
在这个小游戏中,玩家需要通过抽取数字卡片的方式来接近或者达到21点的总和。
以下是对这款游戏的简要介绍,包括游戏规则、开发过程和功能设计。
一、游戏规则1. 玩家可以选择抽取一张数字卡片或者停止抽取。
2. 玩家根据手中卡片的总和来判断是否获胜。
3. 如果玩家手中卡片的总和超过21点,则游戏失败。
4. 如果玩家手中卡片的总和等于21点,则游戏胜利。
5. 在游戏中,A的点数可以是1或者11,J、Q、K的点数均为10。
二、开发过程在开发二十一点小游戏时,我们需要使用HTML、CSS和JavaScript来实现游戏的界面和逻辑。
1. HTML部分首先,我们需要设计出游戏的界面。
可以使用HTML5的语义化标签来构建游戏画面的各个部分,例如头部、主体和底部。
并且使用CSS来设置样式,使得游戏界面看起来更加美观。
2. JavaScript部分在实现游戏逻辑时,我们需要使用JavaScript来处理用户的交互和计算卡片的点数总和。
2.1 定义卡片对象使用JavaScript定义一个卡片对象,包含点数和花色两个属性。
每次抽卡时,可以从预先定义好的一组卡片中随机抽取一张。
2.2 玩家抽取卡片当玩家点击抽取按钮时,JavaScript会随机抽取一张卡片,并根据抽取的结果更新玩家的手牌。
2.3 计算点数总和通过遍历玩家的手牌数组,计算出玩家手中所有卡片的点数总和。
需要注意A的处理,根据手中的其他卡片决定A是1还是11。
2.4 判断胜负根据点数总和判断玩家是胜利、失败还是继续游戏。
如果点数总和超过21点,游戏失败。
如果点数总和等于21点,游戏胜利。
三、功能设计为了增加游戏的趣味性和可玩性,可以在二十一点小游戏中添加以下功能:1. 游戏计分记录玩家的胜利次数和失败次数,并在界面上显示。
21点源代码

public class run extends javax.swing.JFrame {public run() {initComponents(); // 从A - K的扑克牌,用来计算扑克牌点数String faces[] = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11","12", "13"};String color[] = {"Spades", "Heart", "Clubs", "Diamond"}; // 扑克牌的"?黑桃"、"?红桃"、"?梅花"、"?方块"deck=new Card[52]; // 一共52张扑克牌for(int i=0;i<deck.length;i++)deck[i]= new Card(faces[i%13],color[i/13]); // 扑克牌点数及花色shuffle(); // 洗牌代码// Gamedh.setVisible(false);Gamepn.setVisible(false); // 设置在没有下注的前,其他按钮是不可点击的Naskcard.setEnabled(false);Nnoaskcard.setEnabled(false);Ndoublemoney.setEnabled(false);Ndecreasemoney.setEnabled(false);Giveup.setEnabled(false);}/****相关按钮等对象的创建*****/@SuppressWarnings("unchecked")private void initComponents() {Dialog1 = new javax.swing.JDialog();jLabel1 = new javax.swing.JLabel();jLabel2 = new javax.swing.JLabel();jLabel3 = new javax.swing.JLabel();jLabel4 = new javax.swing.JLabel();jLabel5 = new javax.swing.JLabel();jLabel6 = new javax.swing.JLabel();jLabel7 = new javax.swing.JLabel();jLabel8 = new javax.swing.JLabel();jLabel9 = new javax.swing.JLabel();jLabel10 = new javax.swing.JLabel();jLabel11 = new javax.swing.JLabel();jLabel12 = new javax.swing.JLabel();jLabel13 = new javax.swing.JLabel();jLabel14 = new javax.swing.JLabel();jLabel15 = new javax.swing.JLabel();jLabel16 = new javax.swing.JLabel();jLabel17 = new javax.swing.JLabel();North = new javax.swing.JLabel();West = new javax.swing.JLabel();East = new javax.swing.JLabel();Gamepn = new javax.swing.JPanel();Computercard = new javax.swing.JTextField();//Nputedmoney.addActionListener(new MyActionMoniter());Nputedmoney = new javax.swing.JButton();//Naskcard.setEnabled(false);//Naskcard.addActionListener(new MyActionMoniter()); Naskcard = new javax.swing.JButton();//Nnoaskcard.addActionListener(new MyActionMoniter()); Nnoaskcard = new javax.swing.JButton();//Ndoublemoney.addActionListener(new MyActionMoniter()); Ndoublemoney = new javax.swing.JButton();//Ndecreasemoney.addActionListener(new MyActionMoniter()); Ndecreasemoney = new javax.swing.JButton();Nputedcash = new javax.swing.JTextField();Nhavecash = new javax.swing.JTextField();Nplayercard = new javax.swing.JTextField();Nscore = new javax.swing.JLabel();Nmoney = new javax.swing.JLabel();Ncash = new javax.swing.JLabel();Cscore = new javax.swing.JLabel();Ncbx = new javax.swing.JComboBox();Giveup = new javax.swing.JButton();jPanel1 = new javax.swing.JPanel();pic1 = new javax.swing.JLabel();pic2 = new javax.swing.JLabel();pic3 = new javax.swing.JLabel();pic4 = new javax.swing.JLabel();pic5 = new javax.swing.JLabel();pic6 = new javax.swing.JLabel();pic7 = new javax.swing.JLabel();pic8 = new javax.swing.JLabel();pic9 = new javax.swing.JLabel();pic10 = new javax.swing.JLabel();pic11 = new javax.swing.JLabel();pic12 = new javax.swing.JLabel();South = new javax.swing.JLabel();jMenuBar1 = new javax.swing.JMenuBar();Game = new javax.swing.JMenu();Start = new javax.swing.JMenuItem();Nunber = new javax.swing.JMenu();Nun2 = new javax.swing.JMenuItem();Restart = new javax.swing.JMenuItem();Exit = new javax.swing.JMenuItem();Option = new javax.swing.JMenu();Filetop = new javax.swing.JMenuItem();Help = new javax.swing.JMenu();help = new javax.swing.JMenuItem();Aboat = new javax.swing.JMenuItem();/*********"排行榜"对话框**********/Dialog1.setTitle("Java-21点游戏英雄排行榜");Dialog1.setBounds(new java.awt.Rectangle(0, 0, 400, 250)); // "排行榜"对话框Dialog1.setIconImage(null); // "排行榜"对话框图标为无Dialog1.setResizable(false); // 不可改变对话框的大小jLabel1.setForeground(new java.awt.Color(255, 0, 0));jLabel1.setText("1、");jLabel2.setForeground(new java.awt.Color(255, 0, 0));jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);jLabel2.setText("姓名");jLabel3.setForeground(new java.awt.Color(255, 0, 0));jLabel3.setText("分数");jLabel4.setForeground(new java.awt.Color(255, 0, 0));jLabel4.setText("2、");jLabel5.setForeground(new java.awt.Color(255, 0, 0));jLabel5.setText("3、");jLabel6.setForeground(new java.awt.Color(255, 0, 0));jLabel6.setText("4、");jLabel7.setForeground(new java.awt.Color(255, 0, 0));jLabel7.setText("5、");jLabel8.setText("jLabel8");jLabel9.setText("jLabel9");jLabel10.setText("jLabel10");jLabel11.setText("jLabel11");jLabel12.setText("jLabel12");jLabel13.setText("jLabel13");jLabel14.setText("jLabel14");jLabel15.setText("jLabel15");jLabel16.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);jLabel16.setText("jLabel16");jLabel17.setText("jLabel17");javax.swing.GroupLayout Dialog1Layout = new javax.swing.GroupLayout(Dialog1.getContentPane());Dialog1.getContentPane().setLayout(Dialog1Layout);Dialog1Layout.setHorizontalGroup(Dialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(Dialog1Layout.createSequentialGroup().addGroup(Dialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false).addGroup(Dialog1Layout.createSequentialGroup().addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).addComponent(jLabel2)).addGroup(javax.swing.GroupLayout.Alignment.LEADING,Dialog1Layout.createSequentialGrou p().addGap(36, 36, 36).addGroup(Dialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING).addComponent(jLabel7).addComponent(jLabel6).addComponent(jLabel5).addComponent(jLabel4).addComponent(jLabel1)).addGap(81, 81, 81).addGroup(Dialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING).addComponent(jLabel8).addComponent(jLabel10).addComponent(jLabel12).addComponent(jLabel14).addComponent(jLabel16)))).addPreferredGap(ponentPlacement.RELATED,101,Short.MAX_VAL UE).addGroup(Dialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING).addComponent(jLabel9).addComponent(jLabel11).addComponent(jLabel13).addComponent(jLabel15).addComponent(jLabel17).addComponent(jLabel3)).addGap(74, 74, 74)) );Dialog1Layout.setVerticalGroup(Dialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alig nment.LEADING).addGroup(Dialog1Layout.createSequentialGroup().addGap(7, 7, 7).addGroup(Dialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel2).addComponent(jLabel3)).addPreferredGap(ponentPlacement.REL ATED,25,Short.MAX_VALUE).addGroup(Dialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jLabel1).addComponent(jLabel8).addComponent(jLabel9)).addGap(18, 18, 18).addGroup(Dialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jLabel4).addComponent(jLabel10).addComponent(jLabel11)).addGap(18, 18, 18).addGroup(Dialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jLabel5).addComponent(jLabel12).addComponent(jLabel13)).addGap(18, 18, 18).addGroup(Dialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jLabel6).addComponent(jLabel14).addComponent(jLabel15)).addGap(18, 18, 18).addGroup(Dialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jLabel7).addComponent(jLabel16).addComponent(jLabel17)).addGap(74, 74, 74)) );setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);setTitle("21点游戏(人机对战Java版)"); // 程序标题setBounds(new java.awt.Rectangle(0, 0, 0, 0));setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));addWindowListener(new java.awt.event.WindowAdapter() {public void windowClosing(java.awt.event.WindowEvent evt) {formWindowClosing(evt) }});North.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);North.setText("北(庄)");getContentPane().add(North, java.awt.BorderLayout.NORTH);West.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);West.setText("西");getContentPane().add(West, java.awt.BorderLayout.WEST);East.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);East.setT ext("东");getContentPane().add(East, java.awt.BorderLayout.EAST);Gamepn.setMaximumSize(new java.awt.Dimension(32767, 34000));Gamepn.setPreferredSize(new java.awt.Dimension(972, 630));Computercard.setColumns(5);Computercard.setEditable(false);Computercard.setForeground(new java.awt.Color(255, 0, 255));Computercard.setHorizontalAlignment(javax.swing.JTextField.CENTER);Computercard.setT ext("0");Nputedmoney.setText("下注");Nputedmoney.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {NputedmoneyActionPerformed(evt); }});Naskcard.setText("要牌");Naskcard.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {NaskcardActionPerformed(evt);}});Nnoaskcard.setText("不要");Nnoaskcard.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {NnoaskcardActionPerformed(evt); } });Ndoublemoney.setText("赌注加倍");Ndoublemoney.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {NdoublemoneyActionPerformed(evt); }});Ndecreasemoney.setText("减少赌注");Ndecreasemoney.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {NdecreasemoneyActionPerformed(evt); } });Nputedcash.setColumns(5);Nputedcash.setEditable(false);Nputedcash.setForeground(new java.awt.Color(255, 51, 51));Nputedcash.setHorizontalAlignment(javax.swing.JTextField.CENTER);Nputedcash.setText("0");Nhavecash.setColumns(5);Nhavecash.setEditable(false);Nhavecash.setForeground(new java.awt.Color(255, 0, 0));Nhavecash.setHorizontalAlignment(javax.swing.JTextField.CENTER);Nhavecash.setText("95");Nplayercard.setColumns(5);Nplayercard.setEditable(false);Nplayercard.setForeground(new java.awt.Color(255, 0, 255));Nplayercard.setHorizontalAlignment(javax.swing.JTextField.CENTER);Nplayercard.setT ext("0");Nscore.setText("点数");Nmoney.setText("赌注");Ncash.setText("现金");Cscore.setText("点数");Ncbx.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "5", "10", "15", "20" }));Giveup.setText("放弃");Giveup.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {GiveupActionPerformed(evt); } });pic1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));pic2.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));pic3.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));pic4.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));pic5.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));pic6.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));pic7.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));pic8.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));pic9.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));pic10.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));pic11.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));pic12.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);jPanel1.setLayout(jPanel1Layout);jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(jPanel1Layout.createSequentialGroup().addContainerGap().addComponent(pic12,javax.swing.GroupLayout.PREFERRED_SIZE,97,javax.swing.GroupLayout.PR EFERRED_SIZE).addGap(38,38,38) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.TRAILING).addGroup(jPanel1Layout.createSequentialGroup().addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(jPanel1Layout.createSequentialGroup().addComponent(pic6,javax.swing.GroupLayout.PREFERRED_SIZE,72,javax.swing.GroupLayout.PRE FERRED_SIZE).addPreferredGap(ponentPlacement.RELATED).addComponent(pic7,javax.swing.GroupLayout.PREFERRED_SIZE,72,javax.swing.GroupLayout.PRE FERRED_SIZE).addPreferredGap(ponentPlacement.RELATED).addComponent(pic8,javax.swing.GroupLayout.PREFERRED_SIZE,72,javax.swing.GroupLayout.PRE FERRED_SIZE).addPreferredGap(ponentPlacement.UNRELATED).addComponent(pic9,javax.swing.GroupLayout.PREFERRED_SIZE,72,javax.swing.GroupLayout.PRE FERRED_SIZE).addPreferredGap(ponentPlacement.RELATED).addComponent(pic10,javax.swing.GroupLayout.PREFERRED_SIZE,72,javax.swing.GroupLayout.PR EFERRED_SIZE)).addGroup(javax.swing.GroupLayout.Alignment.TRAILING,jPanel1Layout.createSequentialGroup() .addComponent(pic1,javax.swing.GroupLayout.PREFERRED_SIZE,72,javax.swing.GroupLayout.PRE FERRED_SIZE).addPreferredGap(ponentPlacement.UNRELATED).addComponent(pic2,javax.swing.GroupLayout.PREFERRED_SIZE,72,javax.swing.GroupLayout.PRE FERRED_SIZE).addPreferredGap(ponentPlacement.RELATED).addComponent(pic3,javax.swing.GroupLayout.PREFERRED_SIZE,72,javax.swing.GroupLayout.PRE FERRED_SIZE).addPreferredGap(ponentPlacement.RELATED).addComponent(pic4,javax.swing.GroupLayout.PREFERRED_SIZE,72,javax.swing.GroupLayout.PRE FERRED_SIZE).addPreferredGap(ponentPlacement.RELATED).addComponent(pic5,javax.swing.GroupLayout.PREFERRED_SIZE,72,javax.swing.GroupLayout.PRE FERRED_SIZE))).addGap(107, 107, 107)).addGroup(jPanel1Layout.createSequentialGroup().addComponent(pic11,javax.swing.GroupLayout.PREFERRED_SIZE,97,javax.swing.GroupLayout.PR EFERRED_SIZE).addContainerGap()))) );jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGro up(javax.swing.GroupLayout.Alignment.LEADING).addGroup(jPanel1Layout.createSequentialGroup().addContainerGap().addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(pic6,javax.swing.GroupLayout.PREFERRED_SIZE,97,javax.swing.GroupLayout.PRE FERRED_SIZE).addComponent(pic7,javax.swing.GroupLayout.PREFERRED_SIZE,97,javax.swing.GroupLayout.PRE FERRED_SIZE).addComponent(pic8,javax.swing.GroupLayout.PREFERRED_SIZE,97,javax.swing.GroupLayout.PRE FERRED_SIZE).addComponent(pic9,javax.swing.GroupLayout.PREFERRED_SIZE,97,javax.swing.GroupLayout.PRE FERRED_SIZE).addComponent(pic10,javax.swing.GroupLayout.PREFERRED_SIZE,97,javax.swing.GroupLayout.PR EFERRED_SIZE)).addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup().addGap(156, 156, 156).addComponent(pic12,javax.swing.GroupLayout.PREFERRED_SIZE,71,javax.swing.GroupLayout. PREFERRED_SIZE).addContainerGap(86, Short.MAX_VALUE)).addGroup(javax.swing.GroupLayout.Alignment.TRAILING,jPanel1Layout.createSequentialGrou p().addPreferredGap(ponentPlacement.RELATED).addComponent(pic11,javax.swing.GroupLayout.PREFERRED_SIZE,71,javax.swing.GroupLayout. PREFERRED_SIZE).addGap(18, 18, 18).addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(pic2,javax.swing.GroupLayout.PREFERRED_SIZE,97,javax.swing.GroupLayout.P REFERRED_SIZE).addGroup(javax.swing.GroupLayout.Alignment.TRAILING,jPanel1Layout.createParallelGroup(ja vax.swing.GroupLayout.Alignment.LEADING).addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(pic5,javax.swing.GroupLayout.PREFERRED_SIZE,97,javax.swing.GroupLayout.P REFERRED_SIZE).addComponent(pic4,javax.swing.GroupLayout.PREFERRED_SIZE,97,javax.swing.GroupLayout.P REFERRED_SIZE).addComponent(pic3,javax.swing.GroupLayout.PREFERRED_SIZE,97,javax.swing.GroupLayout.PREFERRED_SIZE)).addComponent(pic1,javax.swing.GroupLayout.PREFERRED_SIZE,97,javax.swing.GroupLayout.P REFERRED_SIZE))).addContainerGap()))) );South.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);South.setText("南"); javax.swing.GroupLayout GamepnLayout = new javax.swing.GroupLayout(Gamepn);Gamepn.setLayout(GamepnLayout);GamepnLayout.setHorizontalGroup(GamepnLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(GamepnLayout.createSequentialGroup().addGap(476, 476, 476).addComponent(Cscore).addContainerGap(676, Short.MAX_VALUE)).addGroup(GamepnLayout.createSequentialGroup().addGap(459, 459, 459).addComponent(Computercard,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.GroupLa yout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE).addContainerGap(681, Short.MAX_VALUE)).addGroup(GamepnLayout.createSequentialGroup().addGap(147, 147, 147).addComponent(jPanel1,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.GroupLayout.DE FAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE).addContainerGap(389, Short.MAX_VALUE)).addGroup(javax.swing.GroupLayout.Alignment.TRAILING,GamepnLayout.createSequentialG roup().addContainerGap(261, Short.MAX_VALUE).addGroup(GamepnLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILIN G).addGroup(GamepnLayout.createSequentialGroup().addComponent(Ncbx,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.GroupLayout. DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE).addPreferredGap(ponentPlacement.RELATED).addComponent(Nputedmoney).addPreferredGap(ponentPlacement.RELATED).addComponent(Naskcard)).addComponent(Nmoney)).addPreferredGap(ponentPlacement.RELATED).addGroup(GamepnLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN G, false).addGroup(javax.swing.GroupLayout.Alignment.TRAILING,GamepnLayout.createSequentialGroup().addComponent(Nnoaskcard).addPreferredGap(ponentPlacement.RELATED).addComponent(Ndoublemoney).addPreferredGap(ponentPlacement.RELATED)).addGroup(javax.swing.GroupLayout.Alignment.TRAILING,GamepnLayout.createSequentialGroup().addComponent(Nputedcash,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.GroupL ayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE).addPreferredGap(ponentPlacement.RELATED,javax.swing.Grou pLayout.DEFAULT_SIZE, Short.MAX_VALUE).addComponent(Nhavecash,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.GroupLa yout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE).addGap(18, 18, 18))).addGroup(GamepnLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN G).addGroup(GamepnLayout.createSequentialGroup().addComponent(Ndecreasemoney).addPreferredGap(ponentPlacement.RELATED).addComponent(Giveup)).addComponent(Ncash,javax.swing.GroupLayout.PREFERRED_SIZE,33,javax.swing.GroupLayo ut.PREFERRED_SIZE)).addGap(451, 451, 451)).addGroup(javax.swing.GroupLayout.Alignment.TRAILING,GamepnLayout.createSequentialGroup().addContainerGap(467, Short.MAX_VALUE).addGroup(GamepnLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(Nplayercard,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.GroupLay out.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE).addComponent(Nscore)).addGap(673, 673, 673)).addGroup(GamepnLayout.createSequentialGroup().addComponent(South,javax.swing.GroupLayout.PREFERRED_SIZE,1156,javax.swing.GroupLay out.PREFERRED_SIZE).addContainerGap(20,Short.MAX_VALUE)) );GamepnLayout.setVerticalGroup(GamepnLayout.createParallelGroup(javax .swing.GroupLayout.Alignment.LEADING).addGroup(javax.swing.GroupLayout.Alignment.TRAILING,GamepnLayout.createSequentialGroup().addContainerGap().addComponent(Computercard,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.Group Layout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE).addPreferredGap(ponentPlacement.RELATED).addComponent(Cscore).addGap(9, 9, 9).addComponent(jPanel1,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.GroupLayout. DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE).addPreferredGap(ponentPlacement.RELATED).addComponent(Nscore).addPreferredGap(ponentPlacement.RELATED).addComponent(Nplayercard,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.GroupLa yout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE).addPreferredGap(ponentPlacement.RELATED).addGroup(GamepnLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELIN E).addComponent(Ncash).addComponent(Nhavecash,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.GroupLay out.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE).addComponent(Nputedcash,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.GroupLa yout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE).addComponent(Nmoney)).addPreferredGap(ponentPlacement.UNRELATED).addGroup(GamepnLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(Ndecreasemoney).addComponent(Giveup).addComponent(Ndoublemoney).addComponent(Nnoaskcard).addComponent(Naskcard).addComponent(Nputedmoney).addComponent(Ncbx,javax.swing.GroupLayout.PREFERRED_SIZE,javax.s wing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)).addGap(56, 56, 56).addComponent(South).addGap(63, 63, 63)) );getContentPane().add(Gamepn, java.awt.BorderLayout.CENTER);Game.setMnemonic(java.awt.event.KeyEvent.VK_G); // 为"游戏"菜单设置快捷键"G"Game.setText("游戏(G)");Start.setMnemonic(java.awt.event.KeyEvent.VK_S);// 为"开始"子菜单设置快捷键"S"Start.setText("开始(S)");Start.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {StartActionPerformed(evt); } });Game.add(Start);Nunber.setMnemonic(java.awt.event.KeyEvent.VK_P); // 为"人数"子菜单设置快捷键"P"Nunber.setText("人数(P)");Nun2.setMnemonic(java.awt.event.KeyEvent.VK_T);Nun2.setText("2人游戏(T)"); // 为"人数"子菜单的"2人游戏"设置快捷键"T"Nun2.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {Nun2ActionPerformed(evt);} });Nunber.add(Nun2);Game.add(Nunber);Restart.setMnemonic(java.awt.event.KeyEvent.VK_R); // 为"重开"子菜单设置快捷键"R"Restart.setT ext("重开(R)");Restart.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {RestartActionPerformed(evt); } });Game.add(Restart);Exit.setMnemonic(java.awt.event.KeyEvent.VK_X);// 为"退出"子菜单设置快捷键"X"Exit.setText("退出(X)");Exit.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {ExitActionPerformed(evt); } });Game.add(Exit);jMenuBar1.add(Game);Option.setMnemonic(java.awt.event.KeyEvent.VK_O); // 为"选项"菜单设置快捷键"O"Option.setText("选项(O)");Filetop.setMnemonic(java.awt.event.KeyEvent.VK_P);// 为"排行榜"子菜单快捷键"P"Filetop.setText("排行榜(P)");Filetop.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {FiletopActionPerformed(evt); } });Option.add(Filetop);jMenuBar1.add(Option);Help.setMnemonic(java.awt.event.KeyEvent.VK_H); // 为"帮助"菜单设置快捷键"H"Help.setText(" 帮助(H)");help.setMnemonic(java.awt.event.KeyEvent.VK_H);// 为"帮助"子菜单设置快捷键"H"help.setText("帮助(H)");help.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {helpActionPerformed(evt); } });Help.add(help);Aboat.setMnemonic(java.awt.event.KeyEvent.VK_A); // 为"关于"子菜单设快捷键"A"Aboat.setText("关于(A)");Aboat.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {AboatActionPerformed(evt); } });Help.add(Aboat);jMenuBar1.add(Help);setJMenuBar(jMenuBar1);pack();}/****************处理"赢牌"代码*******/public void Judge_Win(){/**********赢牌,筹码增加*****/if(pic == 5 || Nplayscore == 21) // 玩家爆点或5张牌不超过21点,赢得赌注加倍{ cash = Integer.parseInt(Nhavecash.getT ext()) + Integer.parseInt(Nputedcash.getText()) * 3;Nhavecash.setText(cash +"");}else //玩家不爆点、牌数不超过5张{ cash = Integer.parseInt(Nhavecash.getT ext()) + Integer.parseInt(Nputedcash.getText()) * 2;Nhavecash.setText(cash +"");}/********初始化庄家、玩家的信息******/pic=1; // 设置玩家重新发牌pic1.setIcon(new javax.swing.ImageIcon()); // 初始化扑克牌pic2.setIcon(new javax.swing.ImageIcon());pic3.setIcon(new javax.swing.ImageIcon());pic4.setIcon(new javax.swing.ImageIcon());pic5.setIcon(new javax.swing.ImageIcon()); //清空南玩家的所有扑克牌pic1.setIcon(new javax.swing.ImageIcon(null));Nplayscore = 0; // 重新发牌,玩家点数设为0Nputedcash.setText("0"); // 初始化玩家点数、下注、Nplayercard.setT ext("0");/***** 初始化电脑相关信息**********/cpic=1; // 设置电脑重新发牌pic6.setIcon(new javax.swing.ImageIcon()); // 初始化扑克牌pic7.setIcon(new javax.swing.ImageIcon());pic8.setIcon(new javax.swing.ImageIcon());pic9.setIcon(new javax.swing.ImageIcon());pic10.setIcon(new javax.swing.ImageIcon()); //清空电脑的所有扑克牌pic1.setIcon(new javax.swing.ImageIcon(null));Computercard.setT ext("0"); //重置电脑点数Computerscore = 0; // 重新发牌,电脑点数设为0/********** 设置要牌等按钮不可点击*******/Naskcard.setEnabled(false); // 设置要牌、不要、赌注加倍、赌注减少等按钮不能点击Nnoaskcard.setEnabled(false);Ndoublemoney.setEnabled(false);Ndecreasemoney.setEnabled(false);Giveup.setEnabled(false);Nputedmoney.setEnabled(true); // 重新发牌后,下注按钮被激活}/********************处理"输牌"代码**********/public void Judge_Lose(){/***********初始化庄家、玩家的信息********/pic=1; // 设置玩家重新发牌pic1.setIcon(new javax.swing.ImageIcon()); // 初始化扑克牌pic2.setIcon(new javax.swing.ImageIcon());pic3.setIcon(new javax.swing.ImageIcon());pic4.setIcon(new javax.swing.ImageIcon());pic5.setIcon(new javax.swing.ImageIcon()); //清空南玩家的所有扑克牌pic1.setIcon(new javax.swing.ImageIcon(null));Nplayscore = 0; // 重新发牌,玩家点数设为0Nputedcash.setText("0"); // 初始化玩家点数、下注、Nplayercard.setT ext("0");/**** 初始化电脑相关信息************/cpic=1; // 设置电脑重新发牌pic6.setIcon(new javax.swing.ImageIcon()); // 初始化扑克牌pic7.setIcon(new javax.swing.ImageIcon());pic8.setIcon(new javax.swing.ImageIcon());pic9.setIcon(new javax.swing.ImageIcon());pic10.setIcon(new javax.swing.ImageIcon()); //清空电脑的所有扑克牌pic1.setIcon(new javax.swing.ImageIcon(null));Computercard.setT ext("0"); //重置电脑点数Computerscore = 0; // 重新发牌,电脑点数设为0/******** 设置要牌等按钮不可点击*************/Naskcard.setEnabled(false); // 设置要牌、不要、赌注加倍、赌注减少等按钮不能点击Nnoaskcard.setEnabled(false);Ndoublemoney.setEnabled(false);Ndecreasemoney.setEnabled(false);Giveup.setEnabled(false);Nputedmoney.setEnabled(true); // 重新发牌后,下注按钮被激活}/***************处理"要牌"按钮的代码*********/public void Judgmentac(){if(Nplayscore == 21){javax.swing.JOptionPane.showMessageDialog(this, "因为杰克(=21),你赢了双倍下注额,恭喜恭喜!", "恭喜", RMATION_MESSAGE);Judge_Win(); // 调用赢牌的代码}if(Nplayscore > 21){ javax.swing.JOptionPane.showMessageDialog(this,"你输了,请再接再厉吧!","遗憾",RMATION_MESSAGE);Judge_Lose(); // 调用输了代码}if(Nplayscore < 21 && pic > 5){javax.swing.JOptionPane.showMessageDialog(this, "你赢得了双倍金钱,恭喜恭喜!", "恭喜", RMATION_MESSAGE);Judge_Win(); // 调用赢牌的代码,且是赢得了双倍金钱}}。
21点游戏java实现

21点游戏java实现21点的基本知识21点是世界上⽐较流⾏的扑克游戏项⽬除掉⼤⼩王的⼀副扑克牌,共计52张牌21点不区分花⾊,其中A----10均代表扑克牌本⾝的点数J Q K代表10点区分庄家和闲家,其中闲家可以优先要牌⽽庄家在与闲家点数⼀样⼤的情况下,庄家赢,当有⼀⽅点数超过21点则另⼀⽅⾃动获胜,庄家的点数如果正好是21点,那么庄家直接获胜,其他情况以点数⼤的获胜流程设计:⼈机对战模式!1由⽤户输⼊选择作庄还是作闲,电脑⾃动成为另⼀⽅2随机为双⽅发两张牌3询问闲家是否要牌,⼀直到闲家不再要或者发⽣暴点为⽌4询问庄家要牌,⼀直到庄家不再要或者暴点或者正好21点为⽌5⽐较游戏输赢6询问是否继续7统计战果技术问题:1.发牌的时候随机发取2.发牌出来还要判断是否本张牌已经发过了!如果已经发过了,那么就要重新随机发另外⼀张牌,要保证牌的唯⼀性3.当给电脑派牌的时候要考虑AI的问题!让电脑的逻辑稍微模拟⼈的思维主类:import java.util.Scanner;public class CardTest {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int win = 0;int lose = 0;while (true) {System.out.println("请问做庄家1/闲家2?");int num = sc.nextInt();if (num == 1) {System.out.println("你选择做庄家");Ruler r = new Ruler();int n=r.play();if(n==0) {//庄家赢win++;}elselose++;} else if (num == 2) {System.out.println("你选择做闲家");Player p = new Player();int n= p.play();if(n==1) {//闲家赢win++;}elselose++;} else {System.out.println("输⼊错误,重新输⼊");}System.out.println("是否继续Y/N");if (sc.next().charAt(0) == 'Y')continue;else {System.out.println("游戏结束");System.out.println("赢:"+win);System.out.println("输:"+lose);break;}}}}import java.util.Random;public class Card {int index = 0; // 发牌索引下标String[] card = { "红桃A", "红桃2", "红桃3", "红桃4", "红桃5", "红桃6", "红桃7", "红桃8","红桃9", "红桃10", "红桃J", "红桃Q", "红桃K","⿊桃A","⿊桃2", "⿊桃3", "⿊桃4", "⿊桃5", "⿊桃6", "⿊桃7", "⿊桃8", "⿊桃9", "⿊桃10", "⿊桃J", "⿊桃Q", "⿊桃K","梅花A", "梅花2", "梅花3","梅花4", "梅花5", "梅花6", "梅花7", "梅花8", "梅花9", "梅花10", "梅花J", "梅花Q", "梅花K", "⽅⽚A", "⽅⽚2", "⽅⽚3", "⽅⽚4", "⽅⽚5", "⽅⽚6", "⽅⽚7", "⽅⽚8", "⽅⽚9", "⽅⽚10", "⽅⽚J", "⽅⽚Q", "⽅⽚K", };public void show() {for (int i = 0; i < 52; i++) {System.out.println(card[i]);}}// 洗牌,打乱牌的顺序public void cutcards() {int index=0;Random rand = new Random();for (int i = 0; i < 52; i++) {int n = rand.nextInt(52);String temp;temp = card[n];card[n] = card[51 - n];card[51 - n] = temp;}}// 发牌,按顺序发牌,从下标0开始public String deal() {String c = card[index];index++;return c;}}public class JudgeNum {public int judgeString(String num) {String word= num.substring(2);if(word.equals("A")) {return 1;}else if(num.substring(2).equals("J")||num.substring(2).equals("Q")||num.substring(2).equals("K")||num.substring(2).equals("10")) {return 10;}else {int n=(int)num.substring(2).charAt(0)-48;return n;}}}import java.util.Random;import java.util.Scanner;public class Player {/** 选择做闲家先得牌您选择: 闲家发牌时间:闲家:红桃K ⽅⽚3庄家:⿊桃6 梅花4* 闲家要牌时间:闲家是否要牌(Y/N)?Y发牌:⿊桃A* 闲家是否要牌(Y/N)?Y 发牌:梅花5 闲家是否要牌(Y/N)?N 闲家不再要牌:闲家点数:19点庄家要牌时间:庄家要牌:梅花5* 庄家要牌:⿊桃4庄家不再要牌:庄家点数19点庄赢****/Scanner sc= new Scanner(System.in);public int play() {int playernum=0;int rulernum=0;String player1;String player2;String ruler1;String ruler2;JudgeNum judge = new JudgeNum();Card c = new Card();c.cutcards();player1 = c.deal();player2 = c.deal();System.out.println("发牌时间:");System.out.println("闲家:" + player1 + " " + player2);playernum=judge.judgeString(player1)+judge.judgeString(player2); ruler1 = c.deal();ruler2 = c.deal();System.out.println("庄家:" + ruler1 + " " + ruler2);rulernum=judge.judgeString(ruler1)+judge.judgeString(ruler2);System.out.println("闲家点数:"+playernum);System.out.println("庄家点数:"+rulernum);System.out.println("闲家要牌时间: " );//循环要牌阶段while(true) {System.out.println("闲家是否要牌(Y/N)? " );char w = sc.next().charAt(0);if(w=='Y') {System.out.println("闲家继续要牌");String player3=c.deal();System.out.println("闲家: "+player3 );playernum=playernum+judge.judgeString(player3);System.out.println("闲家点数:"+playernum);if(playernum>21){System.out.println("闲家爆掉,庄家赢");return 0;}}else if(w=='N') {System.out.println("闲家不再要牌,闲家点数:"+playernum);break;}}System.out.println("庄家要牌时间");while(true) {if(rulernum>=playernum) {System.out.println("庄家不再要牌,庄家赢");return 0;}else {System.out.println("庄家要牌时间:");String ruler3=c.deal();System.out.println("庄家:"+ruler3);rulernum=rulernum+judge.judgeString(ruler3);if(rulernum>21) {System.out.println("庄家点数"+rulernum);System.out.println("庄家爆掉,闲家赢");return 1;}else if(rulernum>=playernum) {System.out.println("庄家点数:"+rulernum+" 闲家点数:"+playernum); System.out.println("庄家赢");return 0;}}}}}import java.util.Scanner;public class Ruler {// 选择做庄家/** 闲家先要牌**/Scanner sc = new Scanner(System.in);public int play() {int playernum = 0;int rulernum = 0;String player1;String player2;String ruler1;String ruler2;JudgeNum judge = new JudgeNum();Card c = new Card();c.cutcards();player1 = c.deal();player2 = c.deal();System.out.println("发牌时间:");System.out.println("闲家:" + player1 + " " + player2);playernum = judge.judgeString(player1) + judge.judgeString(player2); ruler1 = c.deal();ruler2 = c.deal();System.out.println("庄家:" + ruler1 + " " + ruler2);rulernum = judge.judgeString(ruler1) + judge.judgeString(ruler2);System.out.println("闲家点数:" + playernum);System.out.println("庄家点数:" + rulernum);System.out.println("闲家要牌时间:");while (true) {String player3;if (playernum <rulernum) {System.out.println("闲家要牌");player3 = c.deal();System.out.println("闲家:" + player3);playernum = playernum + judge.judgeString(player3);} else if (playernum > 21) {System.out.println("闲家点数:" + playernum);System.out.println("闲家爆掉,庄家赢");return 0;} else if (playernum >= 15) {System.out.println("闲家不再要牌");System.out.println("闲家点数" + playernum);break;}else {System.out.println("闲家要牌");String player4 = c.deal();System.out.println("闲家:" + player4);playernum=playernum+judge.judgeString(player4);if (playernum > 21) {System.out.println("闲家点数:" + playernum);System.out.println("闲家爆掉,庄家赢");return 0;}}}// 庄家要牌时间System.out.println("庄家要牌时间:");while (true) {System.out.println("庄家是否要牌(Y/N)");char w = sc.next().charAt(0);if (w == 'Y') {System.out.println("庄家继续要牌");String ruler3 = c.deal();System.out.println("庄家: " + ruler3);rulernum = rulernum + judge.judgeString(ruler3);System.out.println("庄家点数:" + rulernum);if (rulernum > 21) {System.out.println("庄家爆掉,闲家赢");return 1;}} else if (w == 'N') {System.out.println("庄家不再要牌,庄家点数:" + rulernum); break;}}if (rulernum >= playernum) {System.out.println("庄家赢");return 0;} else {System.out.println("闲家赢");return 1;}}}。
21点小游戏

if(sum==w){
g.drawString("庄家和你一样大~你输了~",200,380);
}
if(sum<w){
g.drawString("庄家比你大~你输了~",200,380);
I[9]=Toolkit.getDefaultToolkit().getImage("th.gif");
I[10]=Toolkit.getDefaultToolkit().getImage("jh.gif");
I[11]=Toolkit.getDefaultToolkit().getImage("qh.gif");
public void windowActivated(WindowEvent e) {
}
public void windowClosed(WindowEvent e) {
}
public void windowClosing(WindowEvent e) {
e.getWindow().dispose();
I[6]=Toolkit.getDefaultToolkit().getImage("7h.gif");
I[7]=Toolkit.getDefaultToolkit().getImage("8h.gif");
I[8]=Toolkit.getDefaultToolkit().getImage("9h.gif");
for(i=0;i<2;i++)
{
k[i]=Math.abs(r.nextInt()%13);
java设计简单的21点游戏

学号11710115天津城建大学Java 语言程序设计C实验报告实验1:21点游戏学生姓名路江飞班级11卓越七班一、实验内容1.掌握使用Java语言进行结构化程序设计;2.熟悉Java基本语法,基本数据类型,各种运算符及表达式的使用,掌握运算符优先级,熟悉使用Java的选择语句,循环语句。
3.熟悉Eclipse开发环境,编写简单的Application程序,并编译和执行。
二、实验要求1.调试程序、编译,运行后得到正确的结果;2.写出实验报告,要求记录编译和执行Java程序当中的系统错误信息提示,并给出解决办法。
三、实验结果package 游戏;import java.util.Random;import java.util.Scanner;public class Youxi {/*** @param args*/// TODO Auto-generated method stubpublic static void show(){//具有菜单形式的界面System.out.println("**************************");System.out.println("* 欢迎使用21点游戏*");System.out.println("**************************");}public static void shuffle(int a[] ){// 洗牌模块int temp,j,k=1;for(int i=0;i<=51;i++){a[i]=k;if((i+1)%4==0 )k++;}a[52]=14;a[53]=15;Random r=new Random();for(j=0;j<=10000;j++){int n=r.nextInt(54);int m=r.nextInt(54);temp=a[n];a[n]=a[m];a[m]=temp;}}public static int person(int a[] ){//计算玩家的点数和int p=1,j,t=1,sum=0;System.out.print("可以开始了吗?(1号键开始游戏):");while(p==1){Scanner r=new Scanner(System.in);int q=r.nextInt();if(q!=1)System.out.print("输入有误,请重新输入:");else p=0;}for(j=0;t==1;j=j+2){if(a[j]==14)System.out.print("您拿到小王,");if(a[j]==15)System.out.print("您拿到大王,");if(a[j]<14)System.out.print("本次发的牌是"+a[j]+"点,");sum+=a[j];if(a[j]==14||a[j]==15){sum-=a[j];System.out.print("请输入您想要的点数(1点到13点):");Scanner input=new Scanner(System.in);int h=input.nextInt();System.out.print("本次发的牌是"+h+"点,");sum+=h;}if(sum>21){System.out.print("现在是"+sum+"点,");break;}System.out.print("现在是"+sum+"点,");System.out.print("还要继续吗(继续请按1,退出请按2):");Scanner input1=new Scanner(System.in);int c=input1.nextInt();if(c==1)t=1;else t=0;}return sum;}public static int computer(int a[] ){ //计算电脑的点数和int t1=1,j,sum=0;for(j=1;t1==1;j=j+2){sum+=a[j];if(a[j]==14||a[j]==15){sum-=a[j];Random y=new Random();int b=y.nextInt(13);sum+=b;}if(sum>15)break;}return sum;}public static void Judge(int a[],int sum,int sum1 ){ //判定输赢if(sum>sum1&&sum<=21&&sum1<=21)System.out.println("恭喜您,胜利了!");else if(sum<sum1&&sum<=21&&sum1<=21)System.out.println("很遗憾,您失败了!");else if (sum==sum1&&sum<=21&&sum1<=21)System.out.println("平局!");else if(sum<=21&&sum1>21)System.out.println("恭喜您,胜利了!");else if(sum>21&&sum1<=21)System.out.println("很遗憾,您失败了!");else if (sum>21&&sum1>21)System.out.println("您和电脑都爆了,平局!");}public static void main(String[] args) {int i,t=1,sum1,sum,a[]=new int[54];show(); //具有菜单形式的界面for(i=0;t==1;i++){shuffle(a); //洗牌sum1=computer(a); //电脑的点数和sum=person(a); //玩家的点数和System.out.print("您的点数为:"+sum+" ");if(sum1>21)System.out.println("电脑的点数为"+sum1+" ");elseSystem.out.println("电脑的点数为:"+sum1);Judge(a,sum,sum1); //判断输赢System.out.print("还要继续玩游戏吗(继续请按1,退出请按2):");Scanner input=new Scanner(System.in);int k=input.nextInt();if(k==1)t=1;else t=0;}}}运行结果:四、遇到的问题以及解决方案1.随机数的产生:Random r=new Random();Int x=r.nextInt(n);//n代表产生的随机数在[0,n-1]之间。
21点JAVA游戏程序课程设计实验报告

评定项目
A
B
C
D
评定项目
A
B
C
D
算法正确
界面美观,布局合理
程序结构合理
操作熟练
语法、语义正确
解析完整
实验结果正确
文字流畅
报告规范
题解正确
其他:
评价教师签名:
年月日
finalJButton button =newJButton();
button.addActionListener(newActionListener() {
publicvoidactionPerformed(finalActionEvent arg0) {
onClick();
}
});
button.setText("出牌");
number=this.randNumber();
this.sum+=number;
label.setText(""+number);
String strTemp =bel_1.getText();
strTemp +=""+number+" ";
label_1.setText(strTemp);
label.setFont(newFont("", Font.BOLD, 26));
label.setText("背面");
label.setBounds(158, 81, 137, 153);
getContentPane().add(label);
label_1.setText("你已经拥有的牌:");
21点游戏实验报告

实验一21点游戏一、实验目的1.掌握使用Java语言进行结构化程序设计;2.熟悉Java基本语法,基本数据类型,各种运算符及表达式的使用,掌握运算符优先级,熟悉使用Java的选择语句,循环语句。
3.熟悉Eclipse开发环境,编写简单的Application程序,并编译和执行。
二、实验要求1.调试程序、编译,运行后得到正确的结果;2.写出实验报告,要求记录编译和执行Java程序当中的系统错误信息提示,并给出解决办法。
三、实验环境1.计算机一台;2.JDK、MyEclipse工具软件。
四、实验内容编写并运行21点游戏。
具有菜单形式的界面掌握Random类基本用法设计胜负判定算法五、实验步骤1.了解21点游戏的基本规则2.用0到53代表52张扑克牌3.完成洗牌发牌模块4.设计胜负判定算法六、实验结果源代码为:package youxi21dian;import java.util.Scanner;import java.util.Random;public class Dian21 {/*** @param args*/static int bb[]=new int[52];static String aa[]=new String[52];static Scanner s=new Scanner(System.in);static Random r=new Random();static int s1=0,s2=0,p=0;//同意发排,s1,s2表示甲方和乙方的最后点数public static void main(String[] args) {// TODO Auto-generated method stubfor(int i=0;i<52;i++)bb[i]=i%13+1;for(int i=0;i<13;i++)aa[i]="红桃"+(i+1);for(int i=13;i<26;i++)aa[i]="黑桃"+(i%13+1);for(int i=26;i<39;i++)aa[i]="方片"+(i%13+1);for(int i=39;i<52;i++)aa[i]="梅花"+(i%13+1);System.out.println("欢迎使用游戏21点!");System.out.println("请选择盘点方:0甲方,1 乙方!");int f=s.nextInt();if(f==0)System.out.println("您为:甲方;对方为:乙方!");else System.out.println("您为:乙方;对方为:甲方!");xipai();System.out.println("现在开始发牌!");int j=1,y=1;fapai(j,y);while(j==1||y==1){System.out.println("如果需要发牌请按1!若不需要请按0!");System.out.print("甲方请选择:");int a=s.nextInt();j=a;System.out.print(" 乙方请选择:");int b=s.nextInt();y=b;System.out.println("");fapai(j,y);}System.out.println("结果为:");result();}//洗牌public static void xipai(){int t;String l;for(int m=0;m<1000;m++){int i=r.nextInt(51);t=bb[i];bb[i]=bb[51-i];bb[51-i]=t;l=aa[i];aa[i]=aa[51-i];aa[51-i]=l;}}//发牌public static void fapai(int j,int y){if(j==1){System.out.print("甲方为: ");System.out.print(aa[p]);System.out.println(" "+"点数为:"+" "+bb[p]);s1=s1+bb[p++];}else System.out.println("甲方不需要发牌!");if(y==1){System.out.print("乙方为: ");System.out.print(aa[p]);System.out.println(" "+"点数为:"+" "+bb[p]);s2=s2+bb[p++];}else System.out.println("乙方不需要发牌!");}//结果public static int result(){System.out.print("甲方点数为: "+s1);System.out.println(" 乙方点数为: "+s2);if(s1>21&&s2>21){System.out.println("双方点数均超过21点,都被爆掉了!平局!");return 0;}if(s1>21&&s2<=21){System.out.println("甲方点数超过21点,被爆掉了!乙方胜!");return 0;}if(s2>21&&s1<=21){System.out.println("乙方点数超过21点,被爆掉了!甲方胜!");return 0;}if(s2>s1){System.out.println("乙方胜!");return 0;}else if(s2==s1){System.out.println("平局!");return 0;}else {System.out.println("甲方胜!");return 0;}}}结果为:欢迎使用游戏21点!请选择盘点方:0甲方,1 乙方!1您为:乙方;对方为:甲方!现在开始发牌!甲方为: 梅花13 点数为: 13乙方为: 梅花12 点数为: 12如果需要发牌请按1!若不需要请按0!甲方请选择:1乙方请选择:1甲方为: 梅花11 点数为: 11乙方为: 红桃4 点数为: 4如果需要发牌请按1!若不需要请按0!甲方请选择:0乙方请选择:0甲方不需要发牌!乙方不需要发牌!结果为:甲方点数为: 24 乙方点数为: 16甲方点数超过21点,被爆掉了!乙方胜!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学号********天津城建大学Java 语言程序设计C实验报告实验1:21点游戏学生姓名杨弘毅班级卓越七班实验一21点游戏一、实验目的1.掌握使用Java语言进行结构化程序设计;2.熟悉Java基本语法,基本数据类型,各种运算符及表达式的使用,掌握运算符优先级,熟悉使用Java的选择语句,循环语句。
3.熟悉Eclipse开发环境,编写简单的Application程序,并编译和执行。
二、实验要求1.调试程序、编译,运行后得到正确的结果;2.写出实验报告,要求记录编译和执行Java程序当中的系统错误信息提示,并给出解决办法。
三、实验环境1.计算机一台;2.JDK、MyEclipse工具软件。
四、实验内容编写并运行21点游戏。
具有菜单形式的界面掌握Random类基本用法设计胜负判定算法五、实验步骤1.了解21点游戏的基本规则2.用0到53代表52张扑克牌3.完成洗牌发牌模块4.设计胜负判定算法源程序:package a;import java.util.Scanner;import java.util.Arrays;public class Play21 {int[] cards,computer,human;//定义一副54张牌,电脑5张,玩家5张Scanner sr=new Scanner(System.in);public Play21(){//构造方法cards=new int[54];//定义54个大小的数组表示扑克牌Arrays.fill(cards,0);//54张牌全赋值零,一旦某一张牌被用了就赋1 computer=new int[5];//电脑5张牌Arrays.fill(computer,0);human=new int[5];//人5张牌Arrays.fill(human,0);}public void clear(){//使数组内所有数据赋值0没有用过,用过的赋值1 Arrays.fill(cards,0);Arrays.fill(computer,0);Arrays.fill(human,0);}public void start(){//开始游戏System.out.println("-------------------------------------");System.out.println("开始游戏!");int n=1;for(int i=0;i<1;i++){//电脑和玩家先各抽1张computer[i]=nextOne();human[i]=nextOne();}while(n<5){//牌数小于5时询问是否再要牌show(human,n,1);//显示现在玩家的牌面if(ask(human,n)){computer[n]=nextOne();human[n]=nextOne();n++;}else break;}show(human,n,1);show(computer,n,0);if(judge(human,computer,n)==1)System.out.println("\n你赢了!");else if(judge(human,computer,n)==0)System.out.println("\n平局!");else if(judge(human,computer,n)==-1)System.out.println("\n你输了!");System.out.println("------------------------------------");}void show(int[] a,int num,int c){//显示牌面,如果c是1显示的是玩家的牌面,c是0显示的是电脑的牌面,num就是第几轮if(c==1)System.out.println("\n"+(num-2)+":你现在的牌是:");else System.out.println("\n"+(num-2)+":电脑现在的牌是:");for(int i=0;i<num;i++){//以此把牌都显示出来,如果是1就是A、11就是J、12就是Q、13就是K、14就是小鬼、15就是大鬼if(a[i]==1){System.out.print("A ");continue;}if(a[i]==11){System.out.print("J ");continue;}if(a[i]==12){System.out.print("Q ");continue;}if(a[i]==13){System.out.print("K ");continue;}if(a[i]==14){System.out.print("小鬼");continue;}if(a[i]==15){System.out.print("大鬼");continue;}System.out.print(a[i]+" ");//以空格为分割以次打印}}boolean ask(int[] a,int num){System.out.println("\n还抽一张?Y/N");String ch=sr.nextLine();if(!ch.equals("n")&&!ch.equals("N"))return true;else return false;}int nextOne(){//用递归确保返回的牌没有重复int n=(int)(Math.random()*54);//通过随机的方法产生数if(cards[n]==0){//如果产生的那个数字曾经没有用过那么就用,否则重新产生cards[n]=1;//用过的赋值为1if(n==52)return 14;else if(n==53)return 15;else return n%13+1;//这个数对13取模然后加1就是产生的牌}else return nextOne();//重新随机产生}int judge(int[] a,int[] b,int num){//判断电脑和玩家谁的点数更接近21,如果有鬼牌就另行判断int sum_a=0,sum_b=0;//设置两个变量为了计数boolean joker_a=false,joker_b=false;//分别代表人和电脑是否有鬼牌,true代表有for(int i=0;i<num;i++){//这里把电脑和人的牌总和加起来,如果有鬼牌就把joker_a或joker_b设为true,再进一步判断if(a[i]==14||a[i]==15)joker_a=true;//14为小鬼、15为大鬼else sum_a+=a[i];//取和if(b[i]==14||b[i]==15)joker_b=true;else sum_b+=b[i];}if(joker_a)if(sum_a<8)sum_a+=13;//鬼牌可以任意1-13,如果鬼牌存在,并且其余牌总和小于8,那么现在加上13就是总和else if(sum_a<21)sum_a=21;//如果除了鬼牌其余牌大于8小于21,那么总和就是21if(joker_b)if(sum_b<8)sum_b+=13;//电脑和人判断方法一样else if(sum_b<21)sum_b=21;if(sum_a>21&&sum_b<=21)return -1;//最后判断大小,如果人的大于21并且电脑小于等于21那么电脑赢if(sum_a<=21&&sum_b>21)return 1;//否则人赢if(Math.abs(sum_a-21)<Math.abs(sum_b-21))return 0;//一样的话平局else //if(Math.abs(sum_a-21)>Math.abs(sum_b-21))return -1;//否则电脑赢}}主函数:package a;import java.util.Scanner;public class Test1 {public static void main (String[] args) {Play21 p=new Play21();//创建一个对象Scanner sr=new Scanner(System.in);//再控制台输入String ch="y";//定义一个字符while(true){//循环p.start();//调用start方法System.out.println("再来一局?Y/N");ch=sr.nextLine();//再控制台输入y或者nif(!ch.equals("n")&&!ch.equals("N"))//判断如果不是n或者N的话就重新玩,否则游戏结束p.clear();//调用clear方法,把所有牌都标记为0就是没用过else break;}}}实验结果:。