java21点游戏论文

合集下载

软件综合实验报告_21点游戏

软件综合实验报告_21点游戏

综合实验报告( 2008-- 2009年度第1学期)实验名称:软件综合实验题目:21点游戏院系:计算机科学与技术系班级:计算0701班组长学号:1071220103组长姓名:丁炳淼指导教师:石敏设计周数: 2 周成绩:日期:2009年1月9日一、综合实验的目的与要求㈠实验目的:掌握用图解决实际问题的方法。

培养综合运用已经学过的程序设计知识,针对实际问题建立相应的数据模型的能力。

综合运用所学过的知识分析实际问题和解决问题的能力,熟练掌握一种开发平台并编写出高效、完整的实用程序。

进一步提高编程能力。

㈡实验要求:图形用户界面包含一个含“开始”、“要牌”、“结束”三个按钮和分别代表“当前分数”和“历史最高分数”的两个标签的Panel对象,以及一个使用CardLayout布局策略的Panel对象,设其中叠放了一幅52张的扑克牌(有“红心”、“黑桃”、“草花”、“方片”四种花色,每种花色有A到K共13张牌)。

当用户点击“开始”按钮时,当前分数清零,“要牌”按钮被激活;当用户点击“要牌”按钮时,计算机在52张牌中随机跳出一张显示给用户,并将其分数添加在“当前分数”的标签中显示出来;如果当前分数超过21,则用户输掉了一局,“要牌”按钮变灰,用户不能再要牌;如果用户点击“结束”按钮,结束当前一局游戏,查看当前分数是否超过历史最高分数,是则更新历史最高分数。

二、设计正文⑴实验题目21点游戏⑵程序总体结构在同一个文件夹下由文件夹cards,存放了名为0.gif~52.gif,代表扑克的图1、图形界面(构造函数以及布局设置,图片的加入及初始)2、事件监听器(ActionListener和WindowListener)3、事件处理的设计(Actionperformed和窗口时间处理)4、main方法⑶界面设计用边布局管理器BorderLayout():north设置为电脑庄家的面板comcards,作边布局BorderLayout(),从左到右面板包括标签“电脑庄家”,文本区拿到牌点数和当前总分数;south设置为玩家的面板mycards,也作作边布局BorderLayout(),从左到右面板包括标签“玩家”,文本区各次拿到牌的点数和当前总分数;west设置了介绍面板introduce,作网格布局GridLayout(3,1)放入3各文本区:2个为介绍,最下面的为用户输入name用;east为设置分数的面版rank,作网格布局GridLayout(3,1),包含1个标签wager,作提示信息,然后为玩家当前分数和历史最高分数的文本区;中央区为一个GridLayout (1,2)网格布局,其左边再加入一个按钮面板作GridLayout(3,2),放入6个按钮,实现5个,另一个作空。

Java实训报告纸牌游戏黑杰克

Java实训报告纸牌游戏黑杰克

《Java实训》设计报告纸牌游戏黑杰克专业:软件技术班级:09-23班学号:*********姓名:***石家庄科技信息职业学院信息工程系2011年10月15日项目简介纸牌游戏黑杰克一、项目需求黑杰克简称为21点,1700年左右法国赌场就有这种21点的纸牌游戏。

该游戏由 2 到 6 个人玩,使用除大小王之外的52 张牌,游戏者的目标是使手中的牌的点数之和不超过21 点且尽量大。

有着悠久的历史。

发牌:一开始给每个玩家发一张牌,这张牌是底牌,只有玩家自己知道是什么,然后只发给要牌的玩家。

如果所有玩家都不再要牌,则开牌计分。

计分:2到10都是按牌面计算点数,直接累加。

J、Q、K按10点计算,A一般记作11点累加,此时如果点数大于21点则将A记作1点。

爆分:21点为最大点数值,如果玩家手中的牌点数大于21点,则属于爆分,玩家手中点数将归0,判定为输。

要牌:玩家在底牌之后可以继续要牌,知道点数满意或爆分为止。

下注:玩家在每局开局前可下注,定当前局输赢的钱数。

输赢:21点位最大点数,哪个玩家点数大,就哪个玩家赢。

二、项目设计下面是5个Java源文件的总体设计。

(1)BlackJack.java(主类)BlackJack 类负责创建主窗口,该类含有main方法,游戏从该类开始执行。

BlackJack类有5种类型的对象,分别是:Dealer,Scanner,Player,Computer,Card,对象。

(2)Card.java对于一张扑克牌来说,主要有牌面值及花色,Card类用faces数组及suits数组分别存储所有牌面值及花色,并提供了getFace()方法及getSuit()方法获取一张扑克的面值及花色信息。

(3)CardsInHand.java玩家手上的牌。

(4)Dealer.java荷官的抽象只是实现了两个较核心的能力,一个是发牌,一个是洗牌。

发牌涉及到一个随机算法的问题,是比较重要的运算处理。

(5)Player.java玩家类的抽象是非常明显的,完全模拟了现实中一个玩家的属性及行为,属性有:赢次数、输次数、拥有现金数、手上的牌。

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点游戏的设计与开发
毕业设计(论文)报告
题 目
基于 C#的 21 点游戏的设计与 开发 软件与服务外包学院 软件技术 *** *** ******** *******
系 别 专 业 班 级 学生姓名 学 号 指导教师
2012 年 4 月
无锡科技职业学院毕业设计(论文) 基于 C#的 21 点游戏的设计与开发
基于 C#的 21 点游戏的设计与开发
Key Words:Blackjack、Computing power、C #
ii
无锡科技职业学院毕业设计(论文) 基于 C#的 21 点游戏的设计与开发
目录
前言.............................................................................................................................................1 第一章 需求分析.......................................................................................................................2 1.1 本课题研究的意义.......................................................................................................2 1.2 21 点游戏发展历史......................................................................................................2 1.3 21 点游戏的特点和规则..............................................................................................2 1.4 21 点游戏常用术语......................................................................................................3 1.5 开发工具选择...............................................................................................................5 1.6 C#编程语言的介绍...................................................................................................... 6 1.7 C#编程语言的特点...................................................................................................... 6 第二章 概要设计.......................................................................................................................8 2.1 系统调研.......................................................................................................................8 2.2 可行性分析...................................................................................................................8 2.3 技术可行性分析...........................................................................................................9 2.4 程序设计.....................................................................................................................10 2.5 类及对象设计.............................................................................................................10 2.6 数据流程图 ...............................................................................................................11 第三章 程序设计.....................................................................................................................12 3.1 开始和退出功能实现.................................................................................................12 3.2 发牌功能实现.............................................................................................................13 3.3 胜负判断功能实现.....................................................................................................14 3.4 加牌功能实现.............................................................................................................16 第四章 总结.............................................................................................................................19 致谢...........................................................................................................................................21 参 考 文 献.............................................................................................................................22

21点游戏设计范文

21点游戏设计范文

21点游戏设计范文21点是一种非常受欢迎的扑克牌游戏,通常由两个或更多个玩家参与。

每个玩家的目标是使手中的牌的点数总和尽可能接近21点,但不能超过21点。

以下是一个关于如何设计一个21点游戏的详细说明。

游戏规则:1.游戏使用一副标准扑克牌,不含大小王。

每张牌的点数为A到K,其中A值1点,J、Q、K值10点。

2.每局游戏开始时,玩家会收到两张面朝上的牌,庄家(计算机或其他玩家)也收到两张牌,其中一张面朝下。

3.玩家可以选择“要牌”或“停牌”。

如果玩家选择“要牌”,则会从牌堆中抽取一张牌并加入手牌,如果点数超过了21点,则玩家输掉这局游戏。

如果玩家选择“停牌”,则庄家会继续向自己的手牌中加牌,直到点数达到17点或超过21点为止。

4.如果玩家的点数超过21点,庄家自动获胜。

如果庄家点数超过21点,玩家获胜。

如果两者都没有超过21点,则点数较靠近21点的一方获胜。

游戏设计:1.游戏界面:设计一个简洁美观的游戏界面,包括牌桌、发牌区和得分区。

牌桌上有两个区域,分别是玩家区和庄家区,用来放置玩家和庄家的手牌。

发牌区用来显示发牌动画和发牌结果。

得分区用来显示当前的得分情况。

2.发牌逻辑:设计一个发牌逻辑,当游戏开始或每局结束后,从牌堆中随机抽取四张扑克牌,两张分别发给玩家和庄家,其中一张庄家的牌面朝下。

同时,在得分区显示当前的得分情况。

3.玩家操作:提供“要牌”和“停牌”两个操作按钮,当玩家点击“要牌”时,从牌堆中抽一张牌并加入玩家手牌,更新得分区的得分情况。

当玩家点击“停牌”时,庄家开始抽牌直到达到17点或超过21点。

4.判断胜负:设计一个胜负判断逻辑,在玩家和庄家都停牌后,比较两者的点数,判断胜负并显示结果。

如果玩家点数超过21点,则庄家获胜;如果庄家点数超过21点,则玩家获胜;如果两者都没有超过21点,则点数较靠近21点的一方获胜。

5.游戏结束后,提供重新开始游戏的选项,可以重新发牌开始新的一局游戏。

这是一个基本的21点游戏设计,你可以根据需要进行进一步的扩展和改进。

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

21点游戏的设计与开发

21点游戏的设计与开发

21点游戏的设计与开发
21点是一款非常经典和受欢迎的扑克游戏,也是一种非常好玩和具有挑战性的游戏。

在这篇文章中,我将分享一种关于21点游戏的设计与开发的想法。

接下来,需要确定游戏的规则和逻辑。

在21点游戏中,玩家的目标是获得足够接近21点的手牌而不超过此点数,同时比庄家的手牌要高。

玩家首先会收到两张牌,庄家也会收到两张牌但只有一张是面朝上的。

玩家可以选择继续要牌或停牌。

如果玩家的手牌点数超过21点,则游戏结束并玩家输掉。

一旦玩家停牌,庄家会揭开自己的全部手牌。

如果庄家的手牌点数超过21点,则庄家输掉;否则,比较玩家和庄家的手牌点数,点数较高的一方获胜。

在游戏开发的过程中,需要编写一些代码来实现这些规则和逻辑。

首先,需要创建一个扑克牌的类,包含花色和点数的属性,以及展示牌面的方法。

然后,需要编写一个用于生成一副完整的扑克牌的函数。

在游戏开始时,调用这个函数来生成一副牌,然后进行洗牌操作。

接下来,需要编写一些代码来实现发牌、计算手牌点数、判定输赢等功能。

最后,要考虑在玩家进行操作时更新界面和点数的显示,以及在游戏结束时显示胜负结果。

在游戏开发完成后,还可以考虑一些其他的功能和改进,以提升游戏的体验。

例如,可以添加一个计时器来限制玩家的操作时间,增加游戏的紧张感。

还可以为玩家添加一些特殊的道具或技能,以增加游戏的策略性和乐趣性。

此外,还可以增加多个难度级别,让玩家可以根据自己的实力选择适合的游戏难度。

编写21点游戏心得体会

编写21点游戏心得体会

编写21点游戏心得体会21点是一款非常受欢迎的纸牌游戏,它不仅仅是一种休闲娱乐活动,同时也可以培养思考能力、战略规划和数学运算能力。

在玩了几次21点后,我总结了一些心得体会。

首先,21点是一款需要冷静思考和灵活决策的游戏。

每次的决策都会对游戏的走势产生影响,因此在选择是否继续要牌时,我必须考虑手中的牌总点数和庄家的明牌。

如果我的点数已经接近21点,那么我会选择停止要牌,以避免爆牌。

如果庄家的明牌很小,我可能会选择继续要牌,并希望尽快接近或超过21点。

这种决策的灵活性让我感到这个游戏非常有趣,也让我锻炼了我的逻辑思维和决策能力。

其次,21点也是一款需要运气的游戏。

虽然我可以根据手中的牌总点数和庄家的明牌做出决策,但是最终的结果还是取决于发牌的运气。

有些时候,我可能手中的牌点数比庄家的高,但是庄家下一张明牌的点数很小,最终庄家涨分、我输了。

有时候,庄家的手牌点数已经很高,我决定继续要牌,结果拿到了一张大牌,导致自己爆牌。

这些结果都是由于运气的因素,让我意识到即使做出正确的决策,也不能保证胜利。

因此,在玩这个游戏时,我学会了接受输赢,不过度追求胜利而忽视游戏本身的乐趣。

再次,21点也是一款需要数学运算能力的游戏。

在游戏过程中,我需要计算手中的牌点数,以及预测下一张牌的点数。

这需要我灵活运用加减乘除的数学运算,掌握基础的计算技巧。

尤其是在庄家的明牌很大的情况下,我需要计算自己手牌的点数,以确定是否继续要牌。

这是一种对数学运算能力的锻炼,让我在游戏中提高了自己的计算速度和准确性。

最后,21点也是一款需要合作和竞争的游戏。

在游戏中,我和其他玩家是相互竞争的,每个人都希望自己能赢得最多的点数。

然而,有时候合作也是必要的。

当我的点数已经很高,但是庄家的明牌也很大时,其他玩家可能会选择不要牌,以减少自己的风险,同时也提醒我不要再继续要牌。

这种合作与竞争的关系让游戏更加有趣和具有挑战性。

总的来说,21点是一款非常有趣和有益于思维训练的游戏。

21点游戏的设计与开发

21点游戏的设计与开发

21点游戏的设计与开发21点是一种非常受欢迎的纸牌游戏,也被称为“黑杰克”。

在这个游戏中,玩家需要与庄家比较点数的大小,但不能超过21点。

现在,我将为你提供一个关于21点游戏的设计与开发的详细说明。

1.游戏规则:-游戏使用一副标准52张扑克牌(不含大小王)。

-游戏开始时,每个玩家和庄家分别发两张牌。

-扑克牌的点数计算方式:-A~10:牌面上的点数。

-J、Q、K:均算作10点。

-A:玩家根据自己的情况判断为1点或11点。

-玩家可以选择"要牌"或者"停牌":-要牌:玩家可以选择继续拿一张牌。

-停牌:玩家结束回合,不再拿牌。

-玩家的目标是使得自己的手牌总点数尽量接近21点,但不能超过21点。

-如果玩家的手牌点数超过21点,则游戏结束,庄家获胜。

-当所有玩家均停牌后,庄家开始发牌,直到手牌点数超过17点为止。

-当庄家手牌点数超过21点时,所有停牌的玩家获胜。

-如果庄家和玩家的手牌点数相同,则为平局。

2.界面设计:-游戏界面应包含以下元素:玩家手牌区域、庄家手牌区域、计分区域、操作按钮区域。

-玩家手牌区域和庄家手牌区域应分别显示当前手牌和点数。

-计分区域应显示玩家和庄家的分数。

-操作按钮区域应包括“要牌”和“停牌”按钮。

3.游戏开发:-使用合适的编程语言和开发工具创建游戏的图形化界面。

-设计一个合适的数据结构来表示扑克牌和玩家的手牌。

-实现游戏的规则逻辑,包括发牌、计算手牌点数、判断游戏胜负等。

-根据玩家的选择更新界面显示和计算分数。

-设计合适的算法来实现庄家的行为,例如在手牌达到17点时停牌。

-在玩家停牌后进行庄家的回合,并进行点数比较与判断胜负。

-在游戏结束后,提供重新开始的选项。

4.测试和调试:-在开发过程中,进行充分的测试和调试,确保游戏逻辑正确且无误。

-可以通过用户反馈来改进游戏的稳定性和性能。

5.添加额外功能:-可以考虑添加一些额外的功能来增加游戏的趣味性,如可选的游戏模式、多个玩家之间的对战等。

编程算21点的思路

编程算21点的思路

编程算21点的思路全文共四篇示例,供读者参考第一篇示例:21点(也称为Blackjack或Pontoon)是一种非常流行的纸牌游戏,通常在赌场中出现。

21点的玩法简单而刺激,玩家只需尽量接近21点,同时不要超过,就能获得胜利。

在这篇文章中,我们将探讨如何使用编程来模拟21点游戏的规则和策略,以及如何实现一个简单的21点游戏。

让我们梳理一下21点游戏的规则。

在21点中,每张牌的点数分别为1至10,J、Q、K的点数为10,A的点数为1或11,玩家和庄家每人发两张牌,玩家可以选择继续要牌或停牌,庄家必须一直要牌直到点数达到17或更高。

如果玩家的点数超过21点,则庄家获胜;如果玩家点数等于21点,则玩家获胜;如果庄家点数超过21点,则玩家获胜;如果庄家点数大于或等于玩家点数且不超过21点,则庄家获胜。

在实现21点游戏的编程思路中,我们首先需要定义每张牌的点数,并确定牌堆中的牌。

通过创建一个列表或字典来表示牌堆,可以很方便地实现抽牌的功能。

接着,我们需要编写代码来模拟发牌和计算点数的过程,可以根据每张牌的点数来累加玩家和庄家的点数,同时进行判断胜负的逻辑。

在21点游戏中,玩家的策略也非常重要。

一般来说,玩家应该根据自己的点数和庄家的明牌来决定是否要牌。

如果庄家的明牌是A或10,玩家应该保持谨慎,并考虑是否尽早停牌;如果玩家的点数接近21点,则尽量避免要牌,以免爆牌。

这些策略也可以通过编程来实现,编写代码来模拟玩家在游戏中的决策过程。

除了基本的规则和策略外,21点游戏还可以进行一些扩展。

可以添加多人游戏功能,让多个玩家同时参与游戏,并通过比较点数大小来确定胜负;也可以引入赌注和赔率的概念,增加游戏的趣味性和挑战性。

这些扩展功能可以通过编程来实现,并让游戏更加丰富和有趣。

通过编程算21点的思路可以帮助我们更好地理解游戏规则和策略,并实现一个简单而有趣的21点游戏。

通过编程的方式,我们可以随时随地进行游戏,提高自己的策略思维能力,同时也能享受到游戏带来的乐趣和挑战。

JAVA课程设计21点扑克牌

JAVA课程设计21点扑克牌

通信专业课程设计一(论文)太原科技大学课程设计(论文)设计(论文)题目:基于JAVA的21点扑克牌姓名学号班级学院指导教师2011年 12 月 23日太原科技大学课程设计(论文)任务书学院(直属系):时间: 2011年月日学生姓名指导教师设计(论文)题目基于JA V A的21点扑克牌游戏设计主要研究内容1.JA V A语言的初级编程。

2.JA V A语言的21点扑克牌的编程及设计。

3.JA V A平台软件eclipse的使用。

研究方法使用软件eclipse对21点游戏进行编程,设计游戏算法,实现游戏功能。

主要技术指标(或研究目标) 1. 21点游戏的基本功能的实现。

2. 程序中胜负的判别方法。

3. 递归法的理解与使用。

教研室意见教研室(负责人)签字:年月日目录第一章绪论............................................................. - 4 - 1.1JAVA工作平台的简介. (4)1.2本次设计的主要内容 (4)第二章设计任务的分析.................................................. - 5 - 2.1二十一点游戏介绍.. (5)2.2实现以下功能: (5)第四章程序的图形结果及分析............................................ - 10 - 第五章小结........................................................... - 16 - 参考文献............................................................... - 17 - 附录................................................................... - 18 -基于JAVA的点扑克牌设计第一章绪论1.1 JAVA工作平台的简介Java不依赖平台的特点使得它受到广泛的关注,Java已成为网络时代最重要的语言之一。

21点游戏实验报告

21点游戏实验报告

西安郵電學院实验报告学院名称:通信与信息工程学院实验名称:用汇编语言编写21点游戏班级:信息安全0801班成员:组长:何鎏(29)组员:盖作为(26) 雷倩(27)封飞(28) 庞兰(30)【实验名称】用汇编语言实现21点游戏基本功能【实验目的】熟悉汇编语言的基本用法【实验内容】准确判断任意牌型的大小,辨认玩家与庄家的输赢情况;累计玩家各牌局的输赢比和详细记录。

【实验步骤】提要:a)每次发牌时随机单张产生A~Kb)A记1点c) 在给游戏者发牌前,游戏者可增加奖励或扣除的积分d) 用屏幕显示当前牌点情况和操作信息,然后用键盘输入游戏者的操作流程:1. 给参加游戏的人基本积分为1002. 首先电脑自身产生一张底牌(显示)3. 给参加游戏的人发一张牌4. 询问游戏者是否要牌,若不要牌,则跳转到第9步5. 重复第3个步骤6. 计算牌点的和(J、Q、K记为10点,2~10分别记2~10点)7. 若牌点和最小值大于21点,跳转第14步骤8. 重复步骤4~79. 判断电脑自身的牌点最大是否大于游戏者,若大于,则跳转第14步骤10. 电脑自身再发一张牌(显示)11. 重复第6步骤12. 若牌点和最小大于21点,跳转第15步骤13. 重复步骤9~1214. 提示电脑赢的信息,扣除游戏者积分10分,跳转第16步骤15. 提示游戏者赢的信息,奖励游戏者积分10分16. 显示电脑底牌和当前游戏者剩余积分17. 询问是否继续玩下一盘,若要重复2~1718. 结束子程序调用:流程图:【实验程序】DATA SEGMENTBUFF1 DB '****************************************'DB ' 'DB ' Welcome you to run this game! 'DB '****************************************','$' N DB ?JIFEN DB ?DIPAI DB ?PAIDIAN DB ?QH1 DB ?QH2 DB ?SH DB '10','$'JK DB 'PEI LV(10 OR 5)?','$'MESSAGE0 DB 'DOU YOU W ANT TO MORE?','$'MESSAGE1 DB '************YOU WIN!************','$'MESSAGE2 DB '************YOU LOST!************','$'MESSAGE3 DB 'Go on or not?','$'MESSAGE4 DB 'This is dipai:','$'MESSAGE5 DB ' This is JIFEN:','$'MESSAGE6 DB '******THE GAME IS OVER !******','$'MESSAGE7 DB 0AH, 0DH,'This is your PAIDIAN:','$'DATA ENDSSTACK SEGMENT STACKDW 256 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSH DSMOV AX,0PUSH AXMOV AX,DA TAMOV DS,AXMOV AX,STACKMOV SS,AXBEGIN: CALL XX0A1: MOV JIFEN,50A2: CALL RANDMOV DIPAI,BLCALL CHULIMOV QH1,BLJB1: CALL XXMOV AH,0INT 16HCMP AL,59HJE JICALL XX21MOV N,5JMP A3JI: MOV N,10A3: CALL RANDCALL XX19MOV PAIDIAN,BLCALL DISP0CALL CHULIMOV QH2,BLCALL XX4A4: MOV AH,0INT 16HCMP AL,4EHJE HCCMP AL,59HJNE A4A5: CALL RANDCALL XX19MOV PAIDIAN,BLCALL DISP0CALL CHULIA6: ADC QH2,BLA7: CMP QH2,21JA A14CALL XX4A8: JMP A4ZZ: CALL XX0JMP A2HC: CALL RETURNA9: MOV AL,QH2CMP QH1,ALJA A14A10: CALL RANDMOV PAIDIAN,BLCALL DISP0CALL CHULIA11: ADC QH1,BLA12: CMP QH1,21JA A15A13: JMP A9A14: CALL XX14CALL JIANCMP JIFEN,10JB A18JMP A16CALL JIAA16: CALL XX16MOV AL,DIPAIMOV PAIDIAN,ALCALL DISP0CALL DISP1A17: CALL XX17AG: MOV AH,0INT 16HCMP AL,59hJE ZZCMP AL,4EHJE A18JNE AGA18: CALL XX18MOV AH,4CHINT 21HRAND PROCPUSH CXPUSH DXPUSH AXSTIMOV CX,0FFFFH YS: DEC CXJNE YSMOV AH,0INT 1AHMOV AX,DXAND AH,3MOV DL,13DIV DLMOV BL,AHADC BL,1POP AXPOP DXPOP CXRETRAND ENDPDISP0 PROCCALL SPACECALL SPACECALL SPACEMOV AL,PAIDIANJE AADD AL,30HT: MOV DL,ALMOV AH,2INT 21HRETOTHER: CMP AL,10JE SHICMP AL,11JE JCMP AL,12JE QMOV AL,4BHJMP TJ: MOV AL,4AHJMP TQ: MOV AL,51HJMP TA: MOV AL,41HJMP TSHI: LEA DX,SHMOV AH,09HINT 21HRETDISP0 ENDPDISP1 PROCLEA DX,MESSAGE5MOV AH,9INT 21HMOV AL,JIFENCMP AL,100JB MMMOV CL,100CBWDIV CLMOV BL,AHOR AL,30HMOV DL,ALMOV AH,2INT 21HMOV AL,BLMM: MOV CL,10CBWMOV AH,2INT 21HMOV DL,30HMOV AH,2INT 21HRETDISP1 ENDPJIAN PROCCMP N,10JA XSBB JIFEN,10JMP TU1X: SBB JIFEN,20 TU1: RETJIAN ENDPJIA PROCCMP N,10JA YADC JIFEN,10JMP TUY: ADC JIFEN,20 TU: RETJIA ENDPXX PROCLEA DX,JKMOV AH,9INT 21HRETXX ENDPXX0 PROCMOV AX,0600HMOV CX,0000HMOV DX,184FHMOV BH,07HINT 10HMOV AH,02HMOV DH,5MOV DL,15MOV BH,00HINT 10HMOV AH,09HINT 21HCALL RETURNRETXX0 ENDPXX4 PROCCALL RETURNLEA DX,MESSAGE0MOV AH,09INT 21HRETXX4 ENDPXX14 PROCCALL RETURNLEA DX,MESSAGE2MOV AH,9INT 21HRETXX14 ENDPXX15 PROCCALL RETURNLEA DX,MESSAGE1MOV AH,9INT 21HRETXX15 ENDPXX16 PROCCALL RETURNlea dx,MESSAGE4MOV AH,9INT 21HRETXX16 ENDPXX17 PROCCALL RETURNLEA DX,MESSAGE3MOV AH,9INT 21HCALL RETURNRETXX18 PROCLEA DX,MESSAGE6MOV AH,9INT 21HRETXX18 ENDPSPACE PROCMOV DL,20HMOV AH,2INT 21HRETSPACE ENDPCHULI PROCCMP BX,10JB DMOV BX,10D: ADD BX,0RETCHULI ENDPRETURN PROCMOV AH,2MOV DL,0AHINT 21HMOV DL,0DHINT 21HRETRETURN ENDPXX19 PROCLEA DX,MESSAGE7MOV AH,9INT 21HRETXX19 ENDPXX20 PROCCALL SPACEMOV DL,59HMOV AH,2INT 21HCALL SPACERETXX20 ENDPCALL SPACEMOV DL,4EHMOV AH,2INT 21HCALL SPACERETXX21 ENDPRETCODE ENDSEND START【实验公平性概率及分析】【实验分析与心得体会】盖作为:雷倩:刚刚拿到题目的时候,有点犯愁,汇编语言以前不曾接触过,只是通过这个学期的学期当时觉得要编写一个游戏很困难。

程序设计实验案例之21点扑克游戏模拟系统

程序设计实验案例之21点扑克游戏模拟系统

程序设计实验案例之21点扑克游戏模拟系统程序设计实验案例之21点扑克游戏模拟系统一、引言21点扑克游戏是一种非常具有挑战性和娱乐性的纸牌游戏。

它的规则简单易懂,但是需要玩家具备一定的策略性和心理素质。

本文将介绍一个由程序设计实验案例所构建的21点扑克游戏模拟系统。

二、系统功能1. 模拟21点扑克游戏的规则和流程。

2. 提供玩家与电脑对战的功能。

3. 自动计算双方的得分和比较结果。

4. 展示游戏结果和分数统计。

5. 可以调整游戏的难度和设置。

三、系统设计1. 游戏规则和流程设计在程序中首先需要设计和实现21点扑克游戏的规则和流程。

包括发牌、计算点数、判断输赢等功能。

程序应当能够模拟真实游戏中的操作,例如可以选择抽牌、停牌等。

2. 界面设计界面设计是一个重要的环节,它直接关系到用户的游戏体验和操作。

界面应当简洁明了,美观大方。

可以考虑使用图形界面或者命令行界面,以适应不同用户的需求。

3. 数据模型设计系统应当有一个数据模型来存储和管理游戏中的数据,例如牌的数值和花色、玩家的得分等。

在设计中需要考虑如何有效地表示和存储这些数据,以便于后续的操作和计算。

4. 算法设计系统需要设计和实现一些算法来实现游戏的核心功能。

例如,计算牌的点数可以根据牌的数字和花色来判断,不同的牌的点数计算方式可能不同。

另外,系统还需要设计算法来判断输赢和计算得分。

5. 异常处理设计在编写程序时,需要考虑到各种可能出现的异常情况,并设计相应的异常处理机制。

例如,判断玩家是否爆牌,发牌时是否牌已经用完等。

四、系统实现和测试1. 程序编码根据系统设计,进行程序编码。

可以使用C++、Java、Python等编程语言来实现。

在编码过程中,要注意代码的可读性和灵活性,避免出现冗余代码和死循环。

2. 调试和测试编码完成后,需要进行调试和测试,确保程序能够正常运行和达到预期结果。

可以进行单元测试和集成测试,对系统的各个功能模块进行逐个检验。

五、使用和优化1. 使用和体验将系统部署到用户可以方便访问的平台上,例如PC、手机等。

java 21点游戏 论文设计

java 21点游戏  论文设计

X X X X 大学《Java语言程序设计》课程设计(论文)题目:21点游戏院(系):专业班级:学号:学生:指导教师:教师职称:起止时间:课程设计(论文)任务及评语目录第1章课程设计目的与要求 (1)1.1设计目的 (1)1.2实验环境 (2)1.3预备知识 (2)1.4设计要求 (2)第2章课程设计容 (2)2.1 课题描述 (2)2.2 系统设计 (3)2.2.1功能分析 (3)2.2.2面向对象设计 (4)2.2.2类成员描述 (6)2.3程序实现 (8)2.3.1源码分析 (8)2.3.2运行结果 (11)第3章总结 (12)参考文献 (15)第1章课程设计目的与要求1.1设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。

通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程《JAVA语言教程》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。

(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。

(3)利用所学知识,开发小型应用系统,掌握运用JAVA语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。

(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。

(5)掌握面向对象程序设计的方法。

(6)熟练掌握JAVA语言的基本语法,灵活运用各种数据类型。

(7)进一步掌握在集成环境下如何调试程序和修改程序。

1.2实验环境硬件要求能运行Windows 操作系统的微机系统。

JAVA语言应用程序开发软件使用:VJAVA 系统,或其他JAVA语言应用程序开发软件。

1.3预备知识熟悉JAVA语言程序设计的基本知识及VJAVA编辑器的使用方法。

1.4设计要求1.仔细分析设计题目,画出程序流程图,编写程序源代码。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

X X X X 大学《Java语言程序设计》课程设计(论文)题目:21点游戏院(系):专业班级:学号:学生姓名:指导教师:教师职称:起止时间:课程设计(论文)任务及评语目录第1章课程设计目的与要求 (1)1.1设计目的 (1)1.2实验环境 (2)1.3预备知识 (2)1.4设计要求 (2)第2章课程设计内容 (2)2.1 课题描述 (2)2.2 系统设计 (3)2.2.1功能分析 (3)2.2.2面向对象设计 (4)2.2.2类成员描述 (6)2.3程序实现 (8)2.3.1源码分析 (8)2.3.2运行结果 (11)第3章总结 (12)参考文献 (14)第1章课程设计目的与要求1.1设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。

通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程《JAVA语言教程》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。

(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。

(3)利用所学知识,开发小型应用系统,掌握运用JAVA语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。

(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。

(5)掌握面向对象程序设计的方法。

(6)熟练掌握JAVA语言的基本语法,灵活运用各种数据类型。

(7)进一步掌握在集成环境下如何调试程序和修改程序。

1.2实验环境硬件要求能运行Windows 操作系统的微机系统。

JAVA语言应用程序开发软件使用:VJAVA 系统,或其他JAVA语言应用程序开发软件。

1.3预备知识熟悉JAVA语言程序设计的基本知识及VJAVA编辑器的使用方法。

1.4设计要求1.仔细分析设计题目,画出程序流程图,编写程序源代码。

2.积极上机调试源程序,增强编程技巧与调程能力。

3.认真书写课程设计预习报告,课程设计说明书。

4.遵守课程设计要求和机房管理制度,服从指导教师的安排,确保课程设计的顺利完成课程设计内容。

第2章课程设计内容2.1 课题描述21点有着悠久的历史。

1700年左右法国赌场就有这种21点的纸牌游戏。

1931年,当美国内华达州宣布赌博为合法活动时,21点游戏第一次公开出现在内华达州的赌场俱乐部,15年内,它取代掷骰子游戏,而一举成为非常流行的赌场庄家参与的赌博游戏。

出现在亚洲是1957年在香港第一次出现,而后迅速的发展起来,五年不到的时间发展的与牌九,麻将一同成为中国人最喜欢的三大游戏。

拥有最高点数的玩家获胜,其点数必须等于或低于21点;超过21点的玩家称为爆牌。

2点至10点的牌以牌面的点数计算,J、Q、K 每张为10点。

A可记为1点或为11点,若玩家会因A而爆牌则A可算为1 点。

当一手牌中的A算为11点时,这手牌便称为“软牌”,因为除非玩者再拿另一张牌,否则不会出现爆牌。

庄家在取得17点之前必须要牌,因规则不同会有软17点或硬17点才停牌的具体区分。

每位玩家的目的是要取得最接近21点数的牌来击败庄家,但同时要避免爆牌。

要注意的是,若玩家爆牌在先即为输,就算随后庄家爆牌也是如此。

若玩家和庄家拥有同样点数,这样的状态称为“push”,玩家和庄家皆不算输赢。

每位玩者和庄家之间的游戏都是独立的,因此在同一局内,庄家有可能会输给某些玩家,但也同时击败另一些玩家。

两张牌点数相加为21(一张A再加一张价值10点的牌)称为“二十一点”(Blackjack),拥有这副牌的玩家即自动成为赢家(除非庄家也同时持有二十一点,这种点数相同的情形就称为push)。

拥有二十一点的玩家可赢得下注筹码的1.5倍。

部份的赌场仅付给1.2倍的金额;但通常是在仅使用一副牌游玩的赌局中。

通常每次以四至六副扑克牌游玩,直至玩剩一副或一半为止,再重新洗牌。

21点小游戏是一个非常流行的益智类游戏,它不仅能娱乐,还能在娱乐中锻炼人的反应能力、逻辑思维能力,是一款寓教于乐的小游戏。

游戏的规则是:各个参与者设法使自己的牌达到总分21而不超过这个数值。

扑克牌的分值取它们的面值,A充当1或者11分,J,Q和K人头牌都是10分。

庄家VS1~7个玩家。

在开局时,包括庄家在内的所有参与者都有两张牌。

玩家可以看到他们的所有牌以及总分,而庄家有一张牌暂时是隐藏的。

接下来,只要愿意,各个玩家都有机会依次再拿一张牌。

如果是玩家的总分超过了21(称为引爆),那么这个玩家就输了。

在所有玩家都拿了额外的牌后,庄家将显示隐藏的牌。

只要庄家的总分等于或小于16,那么他就必须再拿牌。

如果庄家引爆了,那么还没有引爆的所有玩家都将获胜,引爆的玩家打成平局。

否则,将余下的各玩家的总分与庄家的总分做比较,如果玩家的总分大于庄家的总分,则玩家获胜。

如果二者的总分相同,则玩家与庄家打成平局中。

2.2 系统设计2.2.1功能分析本系统完成了21点游戏所要求的所有功能,下面是功能模块分析:1)游戏规则模块本模块显示了,这个游戏的规则,基本就运用了System.out.println;语句,没有什么特别的。

2)下注模块可以让系统重新下注、输入赌注,并且记录该局已下的总赌注,当赌注小于0时乘-1,当资金不够,会提示重新下注,下注成功后,资金减少。

3)要牌模块系统会先发前两张牌,然后牌数值记为2,并且计算机随机产生牌点,如果牌点数大于10,记为0.5,然后记录总点数发牌,随即产生牌点当大于10点记为半点,最后记录总点数。

3)游戏过程模块发最初两张牌显示玩家牌点,电脑发前两牌并显示其中一张牌,计算机连续要牌,计算机在小于16点并少于5张牌是有权要牌,显示没次牌点,计算机要牌结束,玩家后几张要牌循环起点(小局),玩家要牌前可选择加注,玩家选择不再要牌时退出当盘比赛,比较当盘比赛结果,要派程序,根据返回值而定,返回值为1,进入普通玩家牌的张数加一,牌超过5张时将D=0,作为退出当盘比赛条件,满足普通玩家发牌条件时调用发牌函数发牌,返回值为2,高级玩家,满足高级玩家发牌条件,进入高级玩家函数,返回值为3,超级玩家,D=0,作为结束当盘比赛循环结束条件,调用结果统计函数,调用该函数询问是否再玩一盘,将全局变量变0,以进入下盘时用,返回值为Y时再玩一盘,否则退出,退出后打印出比赛最终结果。

4)玩家选择模块本系统分为三个级别的玩家,普通玩家、高级玩家和超级玩家,玩家第一次登陆的时候都是从普通玩家开始,然后根据玩家级别的提升和登陆的次数增多,玩家的等级不断升高从而转变为高级玩家和超级玩家,本且系统会有一定的资金的奖励。

每个玩家登陆后都会有500元的基础资金,然后就随着玩家自己对游戏的理解和熟练程度了。

每当一个玩家登陆的时候系统会根据以前的游戏记录,判定玩家的级别,从而对玩家归类,使玩家进入到自己适合的级别。

2.2.2面向对象设计此图表示了系统所含有的模块,粗略的展示了系统所能展现的游戏过程,使玩家一样就能看见游戏的大概的方向和结果。

2.1系统功能模块图图2.2UML类图此图是本系统21点游戏总体流程,它展现了这个游戏的过程,使用户直观的看出游戏的流程规范,在没有打开游戏的时候就能清楚地看清自己需要操作的具体步骤。

xxxx 大学课程设计说明书(论文)图2.3 21点游戏总体流程图2.2.3类成员描述1.类的数据成员本程序我声明了1个类,game21,在类中我定义了构造函数,构造函数定义了初始化变量。

构造函数是一种特殊的方法主要用来在创建对象时初始化对象即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中特别的一个类可以有多个构造函数可根据其参数个数的不同或参数类型的不同来区分它们即构造函数的重载。

Java语言为类提供的构造函数可自动完成对象的初始化任务,全局对象和静态对象的构造函数在main()函数执行之前就被调用,局部静态对象的构造函数是当程序第一次执行到相应语句时才被调用。

然而给出一个外部对象的引用性声明时,并不调用相应的构造函数,因为这个外部对象只是引用在其他地方声明的对象,并没有真正地创建一个对象。

2.函数成员描述1)延时函数wait()延时函数在本系统中是控制游戏开始的时间和结束的时间的,也是用来限制玩家与计算机的思考过程的限制,使游戏不至于由于思考的时间过长而影响,游戏的进度。

学过汇编的就会知道,每条指令都占一定的时间(或者机器周期)的,如果你让机器什么都不做,即空指令的话,机器就会延时,然后你在计算好每次延时到底有多长,外面套一个循环(或者多重循环),根据你想要的延时时间即可计算出来循环的次数,延时函数基本上都是这种原理,它的参数就是用来控制循环次数的。

2)暂停函数pause()本系统中设置了暂停函数,它是使玩家更好的控制系统的,玩家可以根据自己需要的思考时间来控制游戏的进度,本系统中设置了玩家可以按任意一个键使游戏继续或者停止,并且都有相应的中文语句提示。

3)显示比赛规则的函数rules()在比赛规则函数中主要是运用了System.out.println;这条语句主要是输出本游戏的规则要领,使第一玩这个游戏的玩家了解游戏规则。

4)下注函数Bet()在下注函数中主要分为两类,一是资金足够的情况,一是资金不够的情况。

资金足够的情况我定义了一个数学运算公式:all=all+a.nGamble;并且通过a.nGamble=a.nGamble*(-1);来控制下注资金在以有的资金控制范围内,来控制资金的输入,还有减少资金的语句“a.nRMB=a.nRMB-a.nGamble”。

资金不够的情况我定义了一个提示语“cout<<"\t对不起,您资金不够,请重新下注"<<endl;”来提示玩家资金不足。

5)高级玩家vipplayer()和超级玩家superplayer()本系统中分为普通玩家、超级玩家和高级玩家三种用户类型,随着用户对系统的使用程度和玩家自身的游戏技巧来限定权限。

图2.4函数流程图2.3程序实现2.3.1源码分析/*此程序是21点小游戏,下部分是程序的主代码部分由谢晶晶设计,完成时间是2013年06月13日。

*/import java.awt.Color;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.SwingConstants;import javax.swing.border.LineBorder;public class game21 extends JFrame {private JLabel label_2;private int number;private int sum;final JLabel label = new JLabel();final JLabel label_1 = new JLabel();public static void main(String[] args) {new game21();}public game21() {super("21点?!");getContentPane().setLayout(null);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);final JButton button = new JButton();button.addActionListener(new ActionListener() {public void actionPerformed(final ActionEvent arg0) {onClick();}};button.setText("出牌");button.setBounds(170, 350, 106, 28); getContentPane().add(button);label.setBorder(new LineBorder(Color.black, 1, false)); label.setHorizontalAlignment(SwingConstants.CENTER); label.setFont(new Font("", Font.BOLD, 26));label.setText("背面");label.setBounds(158, 81, 137, 153);getContentPane().add(label);label_1.setText("你已经拥有的牌:");label_1.setBounds(109, 22, 270, 45);getContentPane().add(label_1);this.setBounds(200, 300, 501, 528);this.setVisible(true);getContentPane().add(getLabel_2());}public int randNumber() {try {Thread.sleep(10);}catch (InterruptedException e) {e.printStackTrace();}return (int) (Math.random() * 10 + 1);}public void onClick() {number = this.randNumber();this.sum += number;label.setText("" + number);String strTemp = bel_1.getText();strTemp += "" + number + " ";label_1.setText(strTemp);String temp = "合计:" + sum;label_2.setText(temp);isWin();}public void isWin() {if (sum > 21) {JOptionPane.showMessageDialog(this, "你输了");clear();return;}else if (sum == 21) {JOptionPane.showMessageDialog(this, "你赢了");clear();return;}else {int i = JOptionPane.showOptionDialog(this, "是否继续?", "提示", JOptionPane.OK_CANCEL_OPTION,RMATION_MESSAGE, null, null, null);if (i == JOptionPane.OK_OPTION) {onClick();}elsereturn;}}private void clear() {label_2.setText("合计:");sum = 0;number = 0;label_1.setText("你已经拥有的牌:");}/*** return*/protected JLabel getLabel_2() {if (label_2 == null) {label_2 = new JLabel();label_2.setText("合计:");label_2.setBounds(313, 35, 66, 18);}return label_2;}}2.3.2运行结果此界面为开始界面,玩家直接点出牌就可以了。

相关文档
最新文档