logo资料库

21点游戏源码.doc

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
实验一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 app1; class Card{ String color; //纸牌的花色 String digital;//纸牌的数值大小 //返回纸牌的数值大小 public String getCardDigital(){ return digital; }
//返回纸牌的花色和大小 public String getCard(){ return color + digital; } //设置纸牌的花色和大小 public void setCard(String color,String digital){ this.color = color; this.digital = digital; } } package app1; public class Function { public void replaceCard(Card cardA,Card cardB){ Card temp = new Card(); temp.setCard(cardA.color, cardA.digital); cardA.setCard(cardB.color, cardB.digital); cardB.setCard(temp.color, temp.digital); } public int cardJudge(int num1,int num2){ if(num1 < 21 && num2
else if(temp == "A") return 1; else return Integer.parseInt(temp); } public void gameOutcomeJudge(){ } } package app1; import java.util.Random; import java.util.Scanner; public class Game21Point { public static void main(String[] args) { // TODO Auto-generated method stub Game21Point game =new Game21Point(); Function function=new Function(); String colorArray[] = {"黑桃","红桃","梅花","方块"}; String digitalArray[] {"A","2","3","4","5","6","7","8","9","10","J","Q","K"}; = //新开一副扑克牌 Card[] card = new Card[52]; int count = 0; //card[]数组的角标志 int countPerson = 0; int countComputer = 0; for(int i=0;i<52;i++){ //person[]数组的角标志 //computer[]数组的角标志 card[i] = new Card(); card[i].setCard(colorArray[i/13], digitalArray[i%13]); } //洗牌程序,对 52 个位置进行交叉互换
for(int i=0;i<52;i++){ Random random = new Random(); int j = random.nextInt(52); if(i != j){ function.replaceCard(card[i],card[j]); } } System.out.println("欢迎进入 21 点游戏模式"); Scanner reader = new Scanner(System.in); //定义并且输入一个字符 String ch; //判断如果不是 n 或者 N 的话就重新玩,否则游戏结束 //person[]存放玩家的牌 // System.out.println("Y"); Card[] person = new Card[5]; Card[] computer = new Card[5]; //computer[]存放电脑的牌 int sumPersonPoint = 0; //统计玩家的点数 int sumComputerPoint = 0; //统计电脑的点数 boolean flagPerson = true; boolean flagComputer = true; boolean flagPersonGetA = false; //游戏刚开始时候,电脑和玩家各自发两张底牌 for(int i=0;i<2;i++){ person[i] = new Card(); person[i].setCard(card[count].color, card[count].digital); sumPersonPoint += function.cardDigitalConvert(person[i].getCardDigital()); System.out.print("玩家的第 "+(i+1)+" 张纸牌是:"); System.out.print(person[i].getCard()); count++; countPerson++; computer[i] = new Card(); computer[i].setCard(card[count].color, card[count].digital); sumComputerPoint += function.cardDigitalConvert(computer[i].getCardDigital());
庄家的第 "+(i+1)+" 张纸牌是:"); System.out.print(" System.out.println(computer[i].getCard()); count++; countComputer++; } System.out.print("玩家的当前点数:"+sumPersonPoint); System.out.println(" 庄家的当前点数:"+sumComputerPoint); while(countPerson < 5){ System.out.println("还要继续要牌按 H,停止要牌按 S"); ch = reader.next(); if(ch.equals("H") || ch.equals("h")){ person[countPerson] = new Card(); person[countPerson].setCard(card[count].color, card[count].digital); sumPersonPoint += function.cardDigitalConvert(person[countPerson].getCardDigital()); System.out.print("玩家的第 "+(countPerson+1)+" 张纸牌是:"); System.out.println(person[countPerson].getCard()); count++; countPerson++; System.out.print("玩家的当前点数:"+sumPersonPoint); System.out.println(" if(sumPersonPoint > 21){ 庄家的当前点数:"+sumComputerPoint); System.out.println("玩家爆掉了!!!"); flagPerson = false; break; } } if(ch.equals("S") || ch.equals("s")){ System.out.println("玩家听牌!!!"); break; } } while(countComputer < 5){
if(sumComputerPoint < 18){ computer[countComputer] = new Card(); computer[countComputer].setCard(card[count].color, card[count].digital); sumComputerPoint += function.cardDigitalConvert(computer[countComputer].getCardDigital()); System.out.print("庄家的第 "+(countComputer+1)+" 张纸牌是:"); System.out.println(computer[countComputer].getCard()); count++; countComputer++; System.out.print("玩家的当前点数:"+sumPersonPoint); System.out.println(" 庄 当 家 的 前 点 数:"+sumComputerPoint); if(sumComputerPoint > 21){ System.out.println("庄家爆掉了!!!"); flagComputer = false; break; } } else{ if(function.cardJudge(sumPersonPoint, sumComputerPoint) == -1) break; else{ card[count].digital); computer[countComputer] = new Card(); computer[countComputer].setCard(card[count].color, sumComputerPoint += function.cardDigitalConvert(computer[countComputer].getCardDigital()); System.out.print("庄家的 第 "+(countComputer+1)+" 张纸牌 是:"); System.out.println(computer[countComputer].getCard()); count++; countComputer++; System.out.print("玩家的当前点数:"+sumPersonPoint);
数:"+sumComputerPoint); System.out.println(" 庄 家 的 当 前 点 if(sumComputerPoint > 21){ System.out.println("庄家爆掉了!!!"); flagComputer = false; break; } } } } if(flagPerson==false&&flagComputer==false){ System.out.println("玩家和庄家都爆掉了,庄家赢了!!!"); } else if(flagPerson==false&&flagComputer==true){ System.out.println("玩家爆掉了,庄家赢了!!!"); } else if(flagPerson==true&&flagComputer==false){ System.out.println("庄家爆掉了,玩家赢了!!!"); } else{ if(function.cardJudge(sumPersonPoint, sumComputerPoint)==1){ System.out.println("玩家点数大于庄家点数,玩家赢!!!"); } else if(function.cardJudge(sumPersonPoint, sumComputerPoint)==1){ System.out.println("玩家和庄家点数相同,平局!!!"); } else if(function.cardJudge(sumPersonPoint, sumComputerPoint)==-1){ System.out.println("玩家点数小于庄家点数,庄家赢!!!"); } } } //边界 }
分享到:
收藏