Java课程设计点小游戏.docx
《Java课程设计点小游戏.docx》由会员分享,可在线阅读,更多相关《Java课程设计点小游戏.docx(9页珍藏版)》请在冰豆网上搜索。
Java课程设计点小游戏
Companynumber【1089WT-1898YT-1W8CB-9UUT-92108】
Java课程设计点小游戏
2016—2017学年第二学期
《面向对象程序设计》
课程设计报告
题目:
21点小游戏
专业:
班级:
姓名:
指导教师:
成绩:
计算机学院
2017年5月16日
1.设计目的
面向对象程序设计是一门实践性很强的专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。
其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。
通过这次设计,掌握了以下内容:
面向对象技术中的继承与多态(重载和覆盖)机制、各种修饰符的使用类、包、接口的定义与使用。
常用工具类与算法的实现(数组、向量、字符串、链表),java.awt、javax.swing中常用标准GUI组件及相应的事件处理,Java的异常处理机制,Java的数据库连接技术,Java的多线程技术与动画制作以及Java的网络编程。
游戏规则是:
各个参与者设法使自己的牌达到总分21而不超过这个数值。
2.设计思路
本游戏选用Eclipse、JBuilder、NetBeans等作为开发平台以提高开发效率,通过资料查阅和学习尽可能熟练掌握其中一种集成开发环境。
在要牌的过程中,如果所有的牌加起来超过21点,玩家就输了——叫爆掉(Bust),游戏也就结束了。
假如玩家没爆掉,而庄家的总点数加起来大于21点后,那庄家就输了。
假如庄家没爆掉,而玩家也没有爆掉,那么玩家就与庄家比点数大小,大为赢。
一样的点数则庄家赢。
3.设计结果与分析
当打开该小游戏时,打开游戏菜单里面的开始游戏,软件运行界面如下图所示
图2主界面
图3玩家点数大于21点
图4玩家点数大于庄家点数
图5庄家点数大于玩家点数
图6继续要牌
图7玩家点数等于庄家点数
4.设计体会
该课程设计,除了全面系统的理解了JAVA面向对象编程原理的一般原理和基本实现方法。
还把死板的课本知识变得生动有趣,激发了学习的积极性。
把学过的编程原理的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。
以前对面向对象认识和概念是有点模糊的,现在通过自己动手做课程设计,从实践上认识了面向对象编程是如何通过对象来简化面向过程中的操作。
课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意尽力寻找程序中存在的不足之处,进而使功能更加完善。
在这次课程设计中,我就是按照实验指导的思想来完成。
加深了理解21点游戏的内部功能及内部实现,培养实践动手能力和程序开发能力的目的。
当然在做课程设计要有很大的耐心,做的过程就是不断的调试—修改—调试过程,只有静下心来才能把问题解决。
5.参考文献
[1]耿祥义,张跃平.Java2实用教程(第三版)[M].北京:
清华大学出版社,2004.5:
37-103.
[2][美]HerbertSchildt.Java参考大全[M].北京:
清华大学出版社,2007.8:
145-168.
[3]陈家兴.JAVA图形用户界面设计与实例[M].北京:
冶金工业出版社,2005.2:
75-89.
[4]张伟.Java程序设计实战训练[M].北京:
人民邮电出版社,2005.7:
97-105.
[5]孙卫琴.Java面向对象编程[M].北京:
电子工业出版社,2009.5:
123-156.
[6][美]Deitel.Java.大学基础教程(第六版)[M].北京:
电子工业出版社,2008.8:
34-78.
6.附录
packagesdf;
import.*;
import.event.*;
publicclassGameextendsFrameimplementsWindowListener,ActionListener{
Buttonst=newButton("开始游戏");
Buttonyao=newButton("继续发牌");
Buttonkai=newButton("开牌");
Panelp=newPanel();
Randomr=newRandom();
Font=newFont("楷体",Font.BOLD,24);
ImageI[]=newImage[13];
intk[]=newint[14];
booleanbool=false,bol=false;
inti,n,sum,w;
publicvoidpaint(Graphicsg){
intx=20;
if(bool){
for(i=0;ig.drawImage(I[k[i]],x,50,this);
x=x+80;
}
Strings;
s=Integer.toString(sum);
g.drawString("你现在的点数是:
",20,300);
g.setColor(Color.BLUE);
g.setFont();
g.drawString(s,110,300);
}
if(sum>21){
g.drawString("Sorry!
你爆了~",300,380);
}
if(bol){
if(sum>w){
g.drawString("恭喜你~ YOU WIN!
",200,380);
}elseif(sum==w)
g.drawString("庄家和你一样大,所以庄家赢!
",200,380);
else
g.drawString("庄家比你大,YOU LOST!
",200,380);
bol=false;
Stringstr;
g.drawString("庄家的牌面点数是:
",250,420);
str=Integer.toString(w);
g.drawString(str,455,420);
}
}
publicGame(){
super("21点小游戏");
setSize(600,500);
setLocation(300,100);
setLayout(newBorderLayout());
addWindowListener(this);
setBackground(Color.lightGray);
p.setBackground(Color.blue);
p.add(st);
st.addActionListener(this);
p.add(yao);
yao.addActionListener(this);
p.add(kai);
kai.addActionListener(this);
add("South",p);
I[0]=Toolkit.getDefaultToolkit().getImage("a.jpg");
I[1]=Toolkit.getDefaultToolkit().getImage("2.jpg");
I[2]=Toolkit.getDefaultToolkit().getImage("3.jpg");
I[3]=Toolkit.getDefaultToolkit().getImage("4.jpg");
I[4]=Toolkit.getDefaultToolkit().getImage("5.jpg");
I[5]=Toolkit.getDefaultToolkit().getImage("6.jpg");
I[6]=Toolkit.getDefaultToolkit().getImage("7.jpg");
I[7]=Toolkit.getDefaultToolkit().getImage("8.jpg");
I[8]=Toolkit.getDefaultToolkit().getImage("9.jpg");
I[9]=Toolkit.getDefaultToolkit().getImage("10.jpg");
I[10]=Toolkit.getDefaultToolkit().getImage("j.jpg");
I[11]=Toolkit.getDefaultToolkit().getImage("q.jpg");
I[12]=Toolkit.getDefaultToolkit().getImage("k.jpg");
setVisible(true);
}
publicstaticvoidmain(String[]args){
Gameg=newGame();
}
publicvoidwindowActivated(WindowEvente){
}
publicvoidwindowClosed(WindowEvente){
}
publicvoidwindowClosing(WindowEvente){
e.getWindow().dispose();
System.exit(0);
}
publicvoidwindowDeactivated(WindowEvente){
}
publicvoidwindowDeiconified(WindowEvente){
}
publicvoidwindowIconified(WindowEvente){
}
publicvoidwindowOpened(WindowEvente){
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==st){
kai.setEnabled(true);
yao.setEnabled(true);
w=Math.abs(r.nextInt()%22);
if(w<10){
w=w+10;
}
bool=true;
n=2;
for(i=0;i<2;i++){
k[i]=Math.abs(r.nextInt()%13);
}
}
if(e.getSource()==yao){
k[n]=Math.abs(r.nextInt()%13);
n++;
}
jifen();
repaint();
if(e.getSource()==kai){
bol=true;
}
if(sum>21){
kai.setEnabled(false);
yao.setEnabled(false);
}
if(bol){
kai.setEnabled(false);
yao.setEnabled(false);
}
}
publicvoidjifen(){
sum=0;
for(i=0;isum=sum+k[i]+1;
}
}
}