java21点游戏论文.docx

上传人:b****8 文档编号:27788741 上传时间:2023-07-05 格式:DOCX 页数:17 大小:170.11KB
下载 相关 举报
java21点游戏论文.docx_第1页
第1页 / 共17页
java21点游戏论文.docx_第2页
第2页 / 共17页
java21点游戏论文.docx_第3页
第3页 / 共17页
java21点游戏论文.docx_第4页
第4页 / 共17页
java21点游戏论文.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

java21点游戏论文.docx

《java21点游戏论文.docx》由会员分享,可在线阅读,更多相关《java21点游戏论文.docx(17页珍藏版)》请在冰豆网上搜索。

java21点游戏论文.docx

java21点游戏论文

 

XXXX大学

《Java语言程序设计》课程设计(论文)

 

题目:

21点游戏

 

院(系):

专业班级:

学号:

学生:

指导教师:

教师职称:

起止时间:

课程设计(论文)任务及评语

院(系):

教研室:

学号

学生

专业班级

课程设计(论文)题目

21点游戏

课程设计(论文)任务

任务与要求:

(1).掌握面向对象程序设计语言JAVA的基本语法

(2).掌握JAVA面向对象设计的思想,

(3).掌握VJAVA6.0与MyEclipsJAVA开发工具的使用

(4).运用标准JAVA规设计应用程序

设计过程中,要严格遵守设计的时间安排,听从指导教师的指导。

正确地完成上述容,规完整地撰写出设计报告。

指导教师评语及成绩

 

 

成绩:

指导教师签字:

年月日

 

第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点游戏总体流程,它展现了这个游戏的过程,使用户直观的看出游戏的流程规,在没有打开游戏的时候就能清楚地看清自己需要操作的具体步骤。

 

图2.321点游戏总体流程图

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对不起,您资金不够,请重新下注"<

5)高级玩家vipplayer()和超级玩家superplayer()

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

 

图2.4函数流程图

2.3程序实现

2.3.1源码分析

/*此程序是21点小游戏,下部分是程序的主代码部分由晶晶设计,完成时间是2013年06月13日。

*/

importjava.awt.Color;

importjava.awt.Font;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjavax.swing.JButton;

importjavax.swing.JFrame;

importjavax.swing.JLabel;

importjavax.swing.JOptionPane;

importjavax.swing.SwingConstants;

importjavax.swing.border.LineBorder;

publicclassgame21extendsJFrame{

privateJLabellabel_2;

privateintnumber;

privateintsum;

finalJLabellabel=newJLabel();

finalJLabellabel_1=newJLabel();

publicstaticvoidmain(String[]args){

newgame21();

}

publicgame21(){

super("21点?

");

getContentPane().setLayout(null);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

finalJButtonbutton=newJButton();

button.addActionListener(newActionListener(){

publicvoidactionPerformed(finalActionEventarg0){

onClick();

}

};

button.setText("出牌");

button.setBounds(170,350,106,28);

getContentPane().add(button);

label.setBorder(newLineBorder(Color.black,1,false));

label.setHorizontalAlignment(SwingConstants.CENTER);

label.setFont(newFont("",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());

}

publicintrandNumber(){

try{

Thread.sleep(10);

}

catch(InterruptedExceptione){

e.printStackTrace();

}

return(int)(Math.random()*10+1);

}

publicvoidonClick(){

number=this.randNumber();

this.sum+=number;

label.setText(""+number);

StringstrTemp=this.label_1.getText();

strTemp+=""+number+"";

label_1.setText(strTemp);

Stringtemp="合计:

"+sum;

label_2.setText(temp);

isWin();

}

publicvoidisWin(){

if(sum>21){

JOptionPane.showMessageDialog(this,"你输了");

clear();

return;

}

elseif(sum==21){

JOptionPane.showMessageDialog(this,"你赢了");

clear();

return;

}

else{

inti=JOptionPane.showOptionDialog(this,"是否继续?

","提示",

JOptionPane.OK_CANCEL_OPTION,

JOptionPane.INFORMATION_MESSAGE,null,null,null);

if(i==JOptionPane.OK_OPTION){

onClick();

}

else

return;

}

}

privatevoidclear(){

label_2.setText("合计:

");

sum=0;

number=0;

label_1.setText("你已经拥有的牌:

");

}

/**

*return

*/

protectedJLabelgetLabel_2(){

if(label_2==null){

label_2=newJLabel();

label_2.setText("合计:

");

label_2.setBounds(313,35,66,18);

}

returnlabel_2;

}

}

2.3.2运行结果

 

此界面为开始界面,玩家直接点出牌就可以了。

图2.5游戏开始界面图

此界面是确定你是否继续要牌,当你点击出牌按钮时出现一个数字,系统就会自动弹出一个对话框,显示是否继续,如果你想要就直接点击确定,否则撤销。

图2.6游戏运行界面图

此界面显示你赢了,当你的点数正好是21点或者小于21点的时候,系统就会自动弹出一个窗口显示你赢了。

图2.7游戏赢了界面图

此界面显示你输了,当你点击的点数超过21点,系统就会自动弹出一个窗口显示你输了,这样你就结束了本次游戏。

图2.8游戏输了界面图

 

第3章总结

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说类,面向对象,通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。

21点小游戏的课程设计看似简单,却需要能对Java知识进行应用。

首先,Java课程设计让我把以前学习到的知识得到巩固和进一步的提高认识,对已有知识有了更进一步的理解和认识,再次,我在课程设计中碰到了很多的问题,我通过查阅相关书籍,资料,通过自己钻研,当然,通过这次课程设计,我也发现了自身的很多不足之处,在以后的学习中,我会不断的完善自我,不断进取。

开始的时候真的感觉编程是一件很无聊的事情,不过当一个程序运行成功的时候那种喜悦是无法言语的,那种成就感是无法比拟的。

又经过几天的努力,终于把程序完成了,尽管程序还是有很多错误和漏洞,不过还是很高兴的。

无论如何是自己的劳动成果,是自己经过努力得到的成绩,同时也是学习Java的一次实践作业,自己进步的证明。

通过这次课程设计,使我对Java有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;还有对Java中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习Java,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。

在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,通过这个课设我更加了解Java了!

 

参考文献

1.耿祥义跃平编著《JAVA2实用教程》(第4版):

清华大学

2.跃平耿祥义编著《JAVA2实用教程(第4版)实验指导与习题解答》:

清华大学

3.刚《Eclipse从入门到精通[M]》:

清华大学

4.钱能《JAVA程序设计教程(第2版)》:

清华大学

5.BjarneStroustrup《C++程序设计原理与实践》:

机械工业

6.三成《JSP与JDBC应用详解[M]》:

中国铁道

7.卫琴《JAVA开发技术详解》:

电子工业

8.MetskerSJ《JAVA设计模式[M]》:

电子工业

9.京华《JAVAWeb整合开发王者归来》:

电子工业

10.毕建信《基于MVC设计模式的Web应用研究与实现》:

理工大学

11.安渝《JAVA技术与实现》:

国防工业

12.一林《JAVA数据库编程实例》:

清华大学

13.朱红《JAVAWeb编程指南》:

电子工业

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1