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

合集下载

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开发)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点源代码

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点游戏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点小游戏

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点游戏

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游戏程序课程设计实验报告

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点游戏实验报告

实验一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点,被爆掉了!乙方胜!。

主代码

主代码
} catch (Exception e) {
money=20;
System.out.println("您的输入不正确,计算机自动将您的投注金额定为20货币单位");
}
System.out.println("下面开始发牌...");
yourDouble(money);
break;
case 2:// PASS
yourPass(money);
break;
// 初始化玩家,牌
player=new Player();
com=new Player();
deck=new Dealer();
String str = null;
br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("输入错误,请重新输入");
}
}while(true);
switch(yourChoice){
case 1:// 加倍
}else{
playerPoint+=11;
}
}
if(playerPoint<=21){
return playerPoint;
}else{
}else if(c.getFace().equals("J") ||
c.getFace().equals("Q")||
c.getFace().equals("K")||c.getFace().equals("10")){

java实现24点游戏代码

java实现24点游戏代码

java实现24点游戏代码import java.util.Arrays;import java.util.Scanner;public class Test07 {public static void main(String[] args) {Scanner scn = new Scanner(System.in);int shu[] = new int[4];for (int i = 0; i < 4; i++) {shu[i] = scn.nextInt();}// int shu[] = { 5, 9, 9, 4 };char op[] = { '+', '-', '*', '/' };A : for (int i = 0; i < 4; i++) {for (int n1 = 0; n1 < op.length; n1++) {for (int j = 0; j < 4; j++) {for (int n2 = 0; n2 < op.length; n2++) {for (int k = 0; k < 4; k++) {for (int n3 = 0; n3 < op.length; n3++) {for (int m = 0; m < 4; m++) {// 选的这4个数不能重复if (isAllTheOrgiNum(shu[i], shu[j], shu[k], shu[m], shu)) {double temp = 0;switch (op[n1]) {case '+':temp = shu[i] + shu[j];break;case '-':temp = shu[i] - shu[j];break;case '*':temp = shu[i] * shu[j];break;case '/':temp = (double) shu[i] / shu[j];break;}switch (op[n2]) {case '+':temp = temp + shu[k];break;case '-':temp = temp - shu[k];break;case '*':temp = temp * shu[k];break;case '/':temp = (double) temp / shu[k];break;}switch (op[n3]) {case '+':temp = temp + shu[m];break;case '-':temp = temp - shu[m];break;case '*':temp = temp * shu[m];break;case '/':temp = (double) temp / shu[m];break;}if (temp == 24) {System.out.println("(" + "(" + shu[i] + " " + op[n1] + " " + shu[j] + ")" + " " + op[n2] + " " + shu[k] + ")" + " " + op[n3] + " " + shu[m]); break A;}}}}}}}}}}private static boolean isAllTheOrgiNum(int i, int j, int k, int l, int[] shu) {// TODO Auto-generated method stubint[] a = { i, j, k, l };Arrays.sort(a);Arrays.sort(shu);if(a[0]==shu[0] && a[1]==shu[1] &&a[2]==shu[2] && a[3]==shu[3]) {return true;}return false;}}。

21点游戏代码

21点游戏代码

21点游戏代码.txt举得起放得下叫举重,举得起放不下叫负重。

头要有勇气,抬头要有底气。

学习要加,骄傲要减,机会要乘,懒惰要除。

人生三难题:思,相思,单相思。

#include <stdio.h>#include <tchar.h>#include <stdlib.h>#include <time.h>#include"string.h"#include<iostream>using namespace std;///////////////////////////////////////////////////////////class Card{private:char m_type;int m_num;public:void card(char a,int b){m_type=a,m_num=b;}int outnum(){return m_num;}int GetText();};class Poker{private:int count;Card card[54];public:Poker();void Xipai();int Fapai();int sum(int,int,int);Card *getcard();};///////////////////////////////////////////////////Card *h;int get(int max,int min);// TODO: reference additional headers your program requires here///////////////////////////////////////////class Player{public:Card *card[20];int count;char name[10];int score;Player(){count=score=0;for(int i=0;i<20;i++)card[i]=NULL;}int showpoint();void showpoker();void reset();};class Newgame{private:Poker *poker;Player *player[5];int num,n;char boss[10],a[10];public:Newgame();void login();void begin();char *victory();bool callpoker(Player &);void show();};////////////////////////void Newgame::show(){for(int f=0;f<54;f++)poker->Fapai();}/////////////////////////////////int get(int max,int min){int n=rand();n=n%(max-min+1)+min;return n;}int Card::GetText(){if((1==m_num)&&(m_type=='K')){ printf("′èæ? ");return 1;}if((0==m_num)&&(m_type=='K')){ printf("D?æ? ");return 1;} int k=m_num%13;switch(k){case 1:{if(m_type=='H') cout<<"oååçA ";if(m_type=='C') cout<<"???¨A ";if(m_type=='D') cout<<"???ãA ";if(m_type=='S') cout<<"oëåçA ";return 1;}case 11:{if(m_type=='H'){ cout<<"oååçJ "; return 1;}if(m_type=='C'){ cout<<"???¨J "; return 1;}if(m_type=='D'){ cout<<"???ãJ "; return 1;}if(m_type=='S'){ cout<<"oëåçJ "; return 1;}}case 12:{if(m_type=='H'){ cout<<"oååçQ "; return 1;}if(m_type=='C'){ cout<<"???¨Q "; return 1;}if(m_type=='D'){ cout<<"???ãQ "; return 1;}if(m_type=='S'){ cout<<"oëåçQ "; return 1;}}case 0:{if(m_type='H'){ cout<<"oååçK "; return 1;}if(m_type=='C'){ cout<<"???¨K "; return 1;}if(m_type=='D'){ cout<<"???ãK "; return 1;}if(m_type=='S'){ cout<<"oëåçK "; return 1;}}return 1;}if(m_num<=10&&m_num>=2){if(m_type=='H'){ cout<<"oååç"<<m_num<<" "; return 1;}if(m_type=='C'){ cout<<"???¨"<<m_num<<" "; return 1;}if(m_type=='D'){ cout<<"???ã"<<m_num<<" "; return 1;}if(m_type=='S'){ cout<<"oëåç"<<m_num<<" "; return 1;} }return 1;}Poker::Poker(){count=54;for(int i=0;i<13;i++)card[i].card('H',(i+1));for(i=13;i<26;i++)card[i].card('C',((i%13)+1));for(i=26;i<39;i++)card[i].card('D',((i%13)+1)); for(i=39;i<52;i++)card[i].card('S',(i%13)+1);card[52].card('K',1);card[53].card('K',0);}void Poker::Xipai(){count=54;for(int k=0;k<54;k++){int m=get(54,1)%54;Card r;r=card[k];card[k]=card[m];card[m]=r;}}int Poker::Fapai(){if(count<=54&&count>=1){card[54-count].GetText();count--;}elsecout<<"??ç??-?¢æä!"<<endl;return count;}Card *Poker::getcard(void){if(count<=54&&count>0){h=&card[54-count];count--;return h;}elsecout<<"??ç??-?¢æä!"<<endl; return NULL;}int Poker::sum(int a,int b,int c) {return card[a].outnum()+card[b].outnum()+card[c].outnum();}///////////////////////////////////////////////////Newgame::Newgame(){poker=new Poker;login();num=n+1;player[0]=new Player;strcpy(player[0]->name,a);for(int i=1;i<=n;i++){player[i]=new Player;sprintf(player[i]->name,"Computer%d",i);}for(i=num;i<5;i++)player[i]=NULL;}void Newgame::login(){system("COLOR 1D");cout<<"21μ?è???...."<<endl;cout<<"??ä?â???μ???×?£o"<<endl;cin>>a;cout<<"????æ??àãê??μ???ç??eè???£?(1~4??£?"<<endl;cin>>n;while(n<1||n>4){cout<<"ä?â?3?′æ£?????ä?â?ç???1~4μ?äy×?£?ç?±??aä?è???£?"<<endl;cin>>n;}}bool Newgame::callpoker(Player &t){if(strcmp(,player[0]->name)!=0){if(t.showpoint()<11||(t.showpoint()>10&&get(15,1)<=(21-(t.showpoint() ))&&t.showpoint()<=21)) {t.card[t.count]=poker->getcard();cout<<<<"×¥á?ç?????£?"<<endl;t.count++;return 1;}else return 0;}else{if(t.showpoint()>=21) return 0;else{cout<<"?????åD?×¥???e£??????ëμ?μ?äy?a£o"<<t.showpoint()<<" Y or N"<<endl;char a;cin>>a;while(a!='y'&&a!='Y'&&a!='N'&&a!='n'){cout<<"?????ê′?â?â?ä?â?ä???3?′æ?(N or Y)"<<endl;cin>>a;}if(a=='Y'||a=='y'){t.card[t.count]=poker->getcard();cout<<"??×¥μ?á?ç??? ";t.card[t.count]->GetText();cout<<endl;t.count++;return 1;}elsereturn 0;}}}int Player::showpoint(){int j=0,sum=0;while(card[j]!=NULL){if(card[j]->outnum()>10||card[j]->outnum()==0) sum+=1;else sum+=card[j]->outnum();j++;}return sum;}void Player::showpoker(){int j=0;while(card[j]!=NULL){card[j]->GetText();j++;}cout<<endl;}void Player::reset(){for(int i=0;i<20;i++)card[i]=NULL;count=0;}char *Newgame::victory(){int k=1;Player *r=player[0];while(k<num){if(r->showpoint()==player[k]->showpoint()){if(!strcmp(player[k]->name,boss)){ r=player[k]; k++;continue;}else{ k++;continue;}}if(r->showpoint()<=21&&player[k]->showpoint()<=21) { if(r->showpoint()<player[k]->showpoint())r=player[k];}else{if(r->showpoint()<=21) r=r;else r=player[k];}k++;}r->score++;return r->name;}void Newgame::begin(){cout<<"???ë?????aä?è???!"<<endl;poker->Xipai();int w=0;bool end=true;while(1){strcpy(boss,player[w]->name);cout<<"???ëä?"<<player[w]->name<<"×é×ˉ!"<<endl;while(1){for(int l=w;l<w+num;l++){if(callpoker(*player[l%num]))end=false;}if(end)break;else end=true;}cout<<"è??çä?£o"<<victory()<<endl;cout<<"?é×?μ?μ?äy?°???a£o"<<endl;for(int k=0;k<num;k++){cout<<player[k]->name<<": "<<player[k]->showpoint()<<" ";player[k]->showpoker();}for(int u=0;u<num;u++){cout<<player[u]->name<<"μ??y???a£o"<<player[u]->score<<endl; player[u]->reset();}cout<<"ä????åD?è???(Y or N)?"<<endl;char h;cin>>h;while(h!='y'&&h!='Y'&&h!='n'&&h!='N'){cout<<"??â?â?ä?â?ä????yâ?£o£¨Y or N)?"<<endl;cin>>h;}if(h=='Y'||h=='y'){w=(w+1)%num;end=true;poker->Xipai();system("cls");}else{cout<<"D?D?ä1è?£?"<<endl;break;}}}void main(){srand((unsigned)time(NULL)); Newgame game;game.begin();}。

21点源代码

21点源代码

#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <time.h>#include <windows.h>//二维数组:第一行存储牌的点数,第二行存储牌的符号int cpu_card[2][5]={0},cpu_count=0,cpu_trun; //cpu_count表示电脑牌数,cpu_turn表示电脑是否要牌的状态int play_card[2][5]={0},play_count=0,play_trun; //play_count表示玩家牌数,play_turn表示玩家是否要牌的状态int win=0,lose=0,draw=0; //win表示赢的局数,lose表示输的局数,draw表示平的局数int cpuds(); //计算电脑总点数int playerds(); //计算玩家总点数void rule() //游戏规则{printf("*********欢迎进入21点游戏世界!*********\n");printf("* 基本游戏规则:*\n");printf("* 游戏纸牌不包含大小鬼*\n");printf("* 开始游戏每人发一张牌*\n");printf("* 玩家最多可以要五张牌*\n");printf("* 谁先到21点或最接近21点算谁赢*\n");printf("* 点数相同或都超过21点时算平局*\n");printf("* 祝您好运!*\n");printf("**************************CJY作*********\n");printf("(1)新游戏\n");printf("(0)离开游戏\n");printf("(2)退出\n");}void result() //最终结局{printf("您胜了%d次\n",win);printf("您输了%d次\n",lose);printf("您平了%d次\n",draw);printf("\n");}int random(int n){int nn;srand((unsigned)time(NULL)+rand()); //设置随机数种子nn=rand()%n;return nn;}void cpucard(int less) //电脑的纸牌{for(int i=0;i<cpu_count;i++)printf("┏┓ ");printf("\n");if(less==1){printf(" * * ");for(int i=1;i<cpu_count;i++){printf(" %c",cpu_card[1][i]);if(cpu_card[0][i]<10&&cpu_card[0][i]!=1)printf(" %d ",cpu_card[0][i]);if(cpu_card[0][i]==10)printf("10 ");if(cpu_card[0][i]==11)printf(" J ");if(cpu_card[0][i]==12)printf(" Q ");if(cpu_card[0][i]==13)printf(" K ");if(cpu_card[0][i]==1)printf(" A");}}else{for(int i=0;i<cpu_count;i++){printf(" %c",cpu_card[1][i]);if(cpu_card[0][i]<10&&cpu_card[0][i]!=1)printf(" %d ",cpu_card[0][i]);if(cpu_card[0][i]==10)printf("10 ");if(cpu_card[0][i]==11)printf(" J ");if(cpu_card[0][i]==12)printf(" Q ");if(cpu_card[0][i]==13)printf(" K ");if(cpu_card[0][i]==1)printf(" A");}}printf("\n");for(int i=0;i<cpu_count;i++)printf("┗┛ ");printf("\n");}void playercard() //玩家的纸牌{for(int i=0;i<play_count;i++)printf("┏┓ ");printf("\n");for(int i=0;i<play_count;i++){printf(" %c",play_card[1][i]);if(play_card[0][i]<10&&play_card[0][i]!=1)printf(" %d ",play_card[0][i]); if(play_card[0][i]==10)printf("10 ");if(play_card[0][i]==11)printf(" J ");if(play_card[0][i]==12)printf(" Q ");if(play_card[0][i]==13)printf(" K ");if(play_card[0][i]==1)printf(" A");}printf("\n");for(int i=0;i<play_count;i++)printf("┗┛ ");printf("\n");}int cpuds(){int s=0;for(int i=0;i<cpu_count;i++){if(cpu_card[0][i]<10)s+=cpu_card[0][i];else s+=10;}return s;}int playerds(){int s=0;for(int i=0;i<play_count;i++){if(play_card[0][i]<10)s+=play_card[0][i];else s+=10;}return s;}int minus(int n){if(n>10)return 10;return n;}void print() //显示全部纸牌{printf("***********************************\n");printf("您的牌点分别是:\n");playercard();printf("电脑的牌点分别是:\n");cpucard(1);printf("您的牌得点数和是:%d\n",playerds());printf("电脑已知的牌得点数和是:%d\n",cpuds()-minus(cpu_card[0][0])); //减去第一张牌的点数(针对电脑而言)printf("***********************************\n");}void print_end() //显示每局的最终结果{printf("***********************************\n");printf("您的牌点分别是:\n");playercard();printf("电脑的牌点分别是:\n");cpucard(0);printf("您的牌的点数和是:%d\n",playerds());printf("电脑的牌的点数和是:%d\n",cpuds());printf("***********************************\n");}void judge_end() //判断输赢{system ("cls");print_end();if(playerds()<=21&&cpuds()<=21&&playerds()==cpuds()){draw++;printf("双方一样,平局!\n");}if(playerds()>21&&cpuds()>21){draw++;printf("双方都爆了,平局!\n");}if(playerds()<=21&&cpuds()<=21&&playerds()>cpuds()){win++;printf("您获胜了!\n");}if(playerds()<=21&&cpuds()>21){win++;printf("电脑爆了,您获胜了!\n");}if(playerds()<=21&&cpuds()<=21&&playerds()<cpuds()){lose++;printf("您输了,电脑获胜了!\n");}if(playerds()>21&&cpuds()<=21){lose++;printf("您爆了,电脑获胜了!\n");}}void game() //开始游戏{int ss;cpu_count=1;play_count=1;cpu_card[0][0]=random(13)+1; //随即获取纸牌数值cpu_card[1][0]=random(4)+3; //随即获取纸牌符号play_card[0][0]=random(13)+1;play_card[1][0]=random(4)+3;while(1){system ("cls");print();if(playerds()>21){printf("点数超过21,自动弃牌!\n");Sleep(1200);ss=0;} else {printf("您是否继续要牌?(1/0)");Sleep(1000);scanf("%d",&ss);}if(ss==1&&play_count==5){printf("\n对不起,您已经要了五张牌了!");ss=0;}if(ss==1) play_trun=1;else play_trun=0;if(cpuds()<16&&cpu_count<=5) cpu_trun=1;else cpu_trun=0;if(cpu_trun==0&&play_trun==0){judge_end();return;}if(cpu_trun==1){cpu_card[0][cpu_count]=random(13)+1;cpu_card[1][cpu_count]=random(4)+3;cpu_count++;}if(play_trun==1){play_card[0][play_count]=random(13)+1;play_card[1][play_count]=random(4)+3;play_count++;}}}main(){int ss;while(1){system ("cls");rule();printf("请输入:");scanf("%d",&ss);if(ss==0){system ("cls");printf("您结束了游戏,最后您的状态是:\n");result();printf(" \n适度游戏益脑沉迷游戏伤身\n");printf("按任意键继续...");getch();}if(ss==1){system ("cls");game();printf("\n按任意键继续.........");getch();system ("cls");}if(ss==2) {exit(0);}}}。

21点游戏源代码

21点游戏源代码
rule();
printf("你愿意玩一局吗?(Y or N)\n");
scanf("%c",&chanswer);
if((chanswer=='y')||(chanswer=='Y'))
{
pmoney=100;
}
else
printf("\n\t谢谢使用!再见!\n");
*pturns=2;
*cturns=2;
playercard1=random(13,1);
delay(150);
cpucard1=random(13,1);
delay(150);
playercard2=random(13,1);
delay(150);
printf(" ***********如果你赢了可以获得两倍的你下注的资金*************\n");
printf(" ****************牌数总和在16点以后就不再发牌****************\n");
}
void pause()// 暂停函数
{
printf("\n 恭喜你!你赢了啊!\n");
++*pwin;
*pmoney=*pmoney+*pbet+*pbet1;
}
else if((player>21)&&(cpu>21))
{
printf("\n 平局!很可惜啊,你什么也没捞!\n");
++*pdraw;

21点游戏程序代码有特殊情况

21点游戏程序代码有特殊情况

Public Class GameInterfaceDim p(10), c(10) As IntegerDim t, i, CScore, PScore, m As IntegerPrivate Sub GameInterface_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadMe.Top = 45Me.Left = 80Randomize()Timer1.Interval = 1000End SubPrivate Sub btnPlay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPlay.ClickTryDisplayReset()m = 10lblTime.Text = mIf m = 10 ThenTimer1.Enabled = TrueEnd Ifp(1) = Int(Rnd() * 52 + 1)Dot = Int(Rnd() * 52 + 1)Loop While t = p(1)c(1) = tDot = Int(Rnd() * 52 + 1)Loop While t = p(1) Or t = c(1)p(2) = tDot = Int(Rnd() * 52 + 1)Loop While t = p(1) Or t = c(1) Or t = p(2)c(2) = tptbP1.Image = Image.FromFile("Images\" & p(1) & ".jpg")ptbC1.Image = Image.FromFile("Images\" & c(1) & ".jpg")PtbP2.Image = Image.FromFile("Images\" & p(2) & ".jpg")ptbC2.Image = Image.FromFile("Images\back.jpg")Catch ex As ExceptionMsgBox("Error")End TryEnd SubPrivate Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.TicklblTime.Text = lblTime.Text - 1If lblTime.Text = 0 ThenDisplayData()End IfEnd SubPrivate Sub btnCall_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCall.ClickTryIf ptbP3.Image Is Nothing ThenDot = Int(Rnd() * 52 + 1)Loop While t = p(1) Or t = c(1) Or t = p(2) Or t = c(2)p(3) = tptbP3.Image = Image.FromFile("Images\" & p(3) & ".jpg")Add()If PScore >= 22 ThenMsgBox("Yours points beyond the blackjack, you lose!")DisplayData()End IflblTime.Text = 10ElseIf ptbP4.Image Is Nothing ThenDot = Int(Rnd() * 52 + 1)Loop While t = p(1) Or t = c(1) Or t = p(2) Or t = c(2) Or t = p(3)p(4) = tptbP4.Image = Image.FromFile("Images\" & p(4) & ".jpg")Add()If PScore >= 22 ThenMsgBox("Yours points beyond the blackjack, you lose!")DisplayData()End IflblTime.Text = 10ElseIf ptbP5.Image Is Nothing ThenDot = Int(Rnd() * 52 + 1)Loop While t = p(1) Or t = c(1) Or t = p(2) Or t = c(2) Or t = p(3) Or t = p(4) p(5) = tptbP5.Image = Image.FromFile("Images\" & p(5) & ".jpg")lblTime.Text = 10Add()If PScore >= 22 ThenMsgBox("Yours points beyond the blackjack, you lose!")DisplayData()End IfElseIf ptbP6.Image Is Nothing ThenDot = Int(Rnd() * 52 + 1)Loop While t = p(1) Or t = c(1) Or t = p(2) Or t = c(2) Or t = p(3) Or t = p(4) Or t = p(5)p(6) = tptbP6.Image = Image.FromFile("Images\" & p(6) & ".jpg")lblTime.Text = 10Add()If PScore >= 22 ThenMsgBox("Yours points beyond the blackjack, you lose!")DisplayData()End IfEnd IfCatch ex As ExceptionMsgBox("Error")End TryEnd SubPrivate Sub btnStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStop.ClickDisplayData()End SubPrivate Sub Calculate()Add()If PScore >= 22 ThenElseIf CScore < 17 ThenDot = Int(Rnd() * 52 + 1)Loop While t = p(1) Or t = c(1) Or t = p(2) Or t = c(2)c(3) = tptbC3.Image = Image.FromFile("Images\back.jpg")Add()If CScore < 17 ThenDot = Int(Rnd() * 52 + 1)Loop While t = p(1) Or t = c(1) Or t = p(2) Or t = c(2) Or t = c(3)c(4) = tptbC4.Image = Image.FromFile("Images\back.jpg")Add()If CScore < 17 ThenDot = Int(Rnd() * 52 + 1)Loop While t = p(1) Or t = c(1) Or t = p(2) Or t = c(2) Or t = c(3) Or t = c(4)c(5) = tptbC5.Image = Image.FromFile("Images\back.jpg")Add()End IfEnd IfEnd IfEnd IfEnd SuPrivate Sub ShowC()PScore = 0CScore = 0For i = 1 To 10If p(i) <= 10 ThenMe.p(i) = p(i)ElseIf p(i) >= 14 And p(i) <= 23 ThenMe.p(i) = p(i) - 13ElseIf p(i) >= 27 And p(i) <= 36 ThenMe.p(i) = p(i) - 26ElseIf p(i) >= 40 And p(i) <= 49 ThenMe.p(i) = p(i) - 39ElseMe.p(i) = 10End IfNextFor i = 1 To 10If c(i) <= 10 ThenMe.c(i) = c(i)ElseIf c(i) >= 14 And c(i) <= 23 ThenMe.c(i) = c(i) - 13ElseIf c(i) >= 27 And c(i) <= 36 ThenMe.c(i) = c(i) - 26ElseIf c(i) >= 40 And c(i) <= 49 ThenMe.c(i) = c(i) - 39ElseMe.c(i) = 10End IfNextEnd SubPrivate Sub DisplayResult()TryIf PScore <= 21 And CScore <= 21 ThenIf PScore > CScore ThenlblResult.Text = "Congratulations, you win!"ElselblResult.Text = "Sorry, you lost!"End IfElseIf PScore = CScore ThenlblResult.Text = "Sorry, you lost!"ElseIf CScore >= 22 And PScore <= 21 ThenlblResult.Text = "Congratulations, you win!"ElselblResult.Text = "Sorry, you lost!"End IfCatch ex As ExceptionMsgBox("Error")End TryEnd SubPrivate Sub DisplayData()TryCalculate()lblPScore.Text = PScorelblCScore.Text = CScoreptbC2.Image = Image.FromFile("Images\" & c(2) & ".jpg")lblResult.Visible = TrueTimer1.Enabled = FalseDisplayResult()btnPlay.Enabled = TruelblPScore.Visible = TruelblCScore.Visible = TruebtnCall.Enabled = FalsebtnStop.Enabled = FalseIf ptbC3.Image Is Nothing ThenElseptbC3.Image = Image.FromFile("Images\" & c(3) & ".jpg") End IfIf ptbC4.Image Is Nothing ThenElseptbC4.Image = Image.FromFile("Images\" & c(4) & ".jpg") End IfIf ptbC5.Image Is Nothing ThenElseptbC5.Image = Image.FromFile("Images\" & c(5) & ".jpg") End IfCatch ex As ExceptionMsgBox("Error")End TryEnd SubPrivate Sub DisplayReset()TrybtnCall.Enabled = TruebtnStop.Enabled = TrueTimer1.Enabled = TruebtnPlay.Enabled = FalselblCScore.Text = ""lblPScore.Text = ""lblResult.Text = ""ptbP3.Image = Nothingp(3) = 0ptbP4.Image = Nothingp(4) = 0ptbP5.Image = Nothingp(5) = 0ptbP6.Image = Nothingp(6) = 0ptbC3.Image = Nothingc(3) = 0ptbC4.Image = Nothingc(4) = 0ptbC5.Image = Nothingc(5) = 0Catch ex As ExceptionMsgBox("Error")End TryEnd SubPrivate Sub btnHelp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHelp.ClickMsgBox("If your points is 10 + 1 or 1 + 10, points you are 21. So you met in both cases, if you don't have to going to the next card.")End SubPrivate Sub Add()ShowC()For i = 0 To 10If PScore = 11 ThenIf Me.p(1) = 10 And Me.p(2) = 1 ThenIf ptbP3.Image Is Nothing ThenPScore = 21End IfEnd IfIf Me.p(1) = 1 And Me.p(2) = 10 ThenIf ptbP3.Image Is Nothing ThenPScore = 21End IfEnd IfEnd IfIf CScore = 11 ThenIf Me.c(1) = 10 And Me.c(2) = 1 ThenIf ptbP3.Image Is Nothing ThenCScore = 21End IfEnd IfIf Me.c(1) = 1 And Me.c(2) = 10 ThenIf ptbP3.Image Is Nothing ThenCScore = 21End IfEnd IfEnd IfPScore += p(i)CScore += c(i)NextEnd SubPrivate Sub btnRule_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRule.ClickMsgBox("Rules:" & vbCrLf & " The game role is computer and the player, respectively. Players play with computer, the computer is a banker. Start , each 2 CARDS. Players according to their own situtaion decided to brand or not.Loses more than 21 points. No more than 21 points,than the size od porins is the winner. When points are at the same time,the banker wins.") End SubEnd Class。

21点游戏代码

21点游戏代码
POP CX
RET
RAND ENDP
DISP0 PROC
CALL SPACE ;h312,输出空格
CALL SPACE ;h312,输出空格
CALL SPACE ;h312,输出空格
MOV AH,0 ;读当前时钟值
INT 1AH ;中断
MOV AX,DX
AND AH,3 ;求和
MOV DL,13
DB ' '
DB '****************************************','$'
N DB ?
A9: MOV AL,QH2 ;
CMP QH1,AL ;判断游戏者与电脑点数大小
JA A14 ;h109,判断若电脑点数大,跳转
A10: CALL RAND
MOV QH2,BL ;产生底牌
CALL XX4 ;h252输出message0
A4: MOV AH,0 ;从键盘读字符,ah/al=扫描码
INT 16H
CALL JIAN ;h226,记录积分
CMP JIFEN,10 ;若积分不大于10分,跳转,游戏结束
JB A18
JMP A16 ;若积分大于10,跳转,message4
MOV N,5
JMP A3 ;无条件跳转
JI: MOV N,10
CALL XX20 ;h344,输出字母y
A3: CALL RAND ;h124,产生一个随机数
START: PUSH DS ;将ds寄存器压入栈
MOV AX,0 ;将0传入ax寄存器
PUSH AX ;将ax压入栈

21点程序源代码

21点程序源代码
case 3:
game.super(); break;
default:
cout<<"选择错误,程序退出!"<<endl;
}
return(0);
}
void CCard::setmoney(int a)
{
money=a;
}
//--------------------------------------------------------------------------------
{
do{
cout<<"你输入的字母错误,请从新输入."<<endl;
cin>>ans;
}while((ans!='H'&&ans!='h'&&ans!='s'&&ans!='S'));
}
if((ans=='h')||(ans=='H'))
//fuctions.
class CCard {
private:
float player; //玩家点数
float cpu; //电脑点数
int win; //赢的次数
game.deal(player,cpu,playerturns,cputurns); //为计算机和玩家个发两张牌
do{
cout<<"\n你想继续要牌还是不再要牌?h/s:"; //询问玩家是否要牌
cin>>ans;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;}}}实验结果:。

相关文档
最新文档