当前位置:文档之家› Java课程设计点小游戏

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点后,那庄家就输了。

假如庄家没爆掉,而玩家也没有爆掉,那么玩家就与庄家比点数大小,大为赢。

一样的点数则庄家赢。

图 1 结构3.设计结果与分析当打开该小游戏时,打开游戏菜单里面的开始游戏,软件运行界面如下图所示图2 主界面图3 玩家点数大于21点图4 玩家点数大于庄家点数图5 庄家点数大于玩家点数图6 继续要牌图7 玩家点数等于庄家点数4.设计体会该课程设计,除了全面系统的理解了JAVA面向对象编程原理的一般原理和基本实现方法。

还把死板的课本知识变得生动有趣,激发了学习的积极性。

把学过的编程原理的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。

以前对面向对象认识和概念是有点模糊的,现在通过自己动手做课程设计,从实践上认识了面向对象编程是如何通过对象来简化面向过程中的操作。

课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意尽力寻找程序中存在的不足之处,进而使功能更加完善。

在这次课程设计中,我就是按照实验指导的思想来完成。

加深了理解21点游戏的内部功能及内部实现,培养实践动手能力和程序开发能力的目的。

当然在做课程设计要有很大的耐心,做的过程就是不断的调试—修改—调试过程,只有静下心来才能把问题解决。

5.参考文献[1] 耿祥义,张跃平. Java2实用教程(第三版)[M]. 北京:清华大学出版社,2004.5:37-103.[2] [美]Herbert Schildt .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.附录package sdf;import .*;import .event.*;public class Game extends Frame implements WindowListener, ActionListener { Button st = new Button("开始游戏");Button yao = new Button("继续发牌");Button kai = new Button("开牌");Panel p = new Panel();Random r = new Random();Font = new Font("楷体", Font.BOLD, 24);Image I[] = new Image[13];int k[] = new int[14];boolean bool = false, bol = false;int i, n, sum, w;public void paint(Graphics g) {int x = 20;if (bool) {for (i = 0; i < n; i++) {g.drawImage(I[k[i]], x, 50, this);x = x + 80;}String s;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);} else if (sum == w)g.drawString("庄家和你一样大,所以庄家赢!", 200, 380);elseg.drawString("庄家比你大,YOU LOST!", 200, 380);bol = false;String str;g.drawString("庄家的牌面点数是:", 250, 420);str = Integer.toString(w);g.drawString(str, 455, 420);}}public Game() {super("21点小游戏");setSize(600, 500);setLocation(300, 100);setLayout(new BorderLayout());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);}public static void main(String[] args) {Game g = new Game();}public void windowActivated(WindowEvent e) {}public void windowClosed(WindowEvent e) {}public void windowClosing(WindowEvent e) {e.getWindow().dispose();System.exit(0);}public void windowDeactivated(WindowEvent e) {}public void windowDeiconified(WindowEvent e) {}public void windowIconified(WindowEvent e) {}public void windowOpened(WindowEvent e) {}public void actionPerformed(ActionEvent e) {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);}}public void jifen() {sum = 0;for (i = 0; i < n; i++) {sum = sum + k[i] + 1;}}}。

相关主题