资源描述
— 第二学期
《面向对象程序设计》
课程设计汇报
题目:
21点小游戏
专业:
班级:
姓名:
指导老师:
成绩:
计算机学院
5月16日
1.课程设计目标 3
2.设计思绪 3
3.设计结果和分析 4
4.设计体会 8
5.参考文件 8
6.附录 9
1.设计目标
面向对象程序设计是一门实践性很强专业基础课程,课程设计是学习完该课程后进行一次较全方面综合练习。其目标在于经过实践加深学生对面向对象程序设计理论、方法和基础知识了解,掌握使用Java语言进行面向对象设计基础方法,提升利用面向对象知识分析实际问题、处理实际问题能力,提升学生应用能力。经过这次设计,掌握了以下内容:面向对象技术中继承和多态(重载和覆盖)机制、多种修饰符使用类、包、接口定义和使用。常见工具类和算法实现(数组、向量、字符串、链表),java.awt、javax.swing中常见标准GUI组件及对应事件处理,Java异常处理机制,Java数据库连接技术,Java多线程技术和动画制作和Java网络编程。
游戏规则是:各个参与者设法使自己牌达成总分21而不超出这个数值。
2.设计思绪
本游戏选择Eclipse、JBuilder、NetBeans等作为开发平台以提升开发效率,经过资料查阅和学习尽可能熟练掌握其中一个集成开发环境。
在要牌过程中,假如全部牌加起来超出21点,玩家就输了——叫爆掉(Bust),游戏也就结束了。假如玩家没爆掉,而庄家总点数加起来大于21点后,那庄家就输了。假如庄家没爆掉,而玩家也没有爆掉,那么玩家就和庄家比点数大小,大为赢。一样点数则庄家赢。
开始
玩家点数
庄家点数
玩家赢
玩家输
结束
大于21点,爆牌
,
爆牌
大于21点,爆牌
,
爆牌
玩家点数大于庄家点数
Y
N
图1 结构图
3.设计结果和分析
当打开该小游戏时,打开游戏菜单里面开始游戏,软件运行界面以下图 所表示
图2 主界面
图3 玩家点数大于21点
图4 玩家点数大于庄家点数
图5 庄家点数大于玩家点数
图6 继续要牌
图7 玩家点数等于庄家点数
4.设计体会
该课程设计,除了全方面系统了解了JAVA面向对象编程原理通常原理和基础实现方法。还把死板书本知识变得生动有趣,激发了学习主动性。把学过编程原理知识强化,能够把课堂上学知识经过自己设计程序表示出来,加深了对理论知识了解。以前对面向对象认识和概念是有点模糊,现在经过自己动手做课程设计,从实践上认识了面向对象编程是怎样经过对象来简化面向过程中操作。课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意尽力寻求程序中存在不足之处,进而使功效愈加完善。在这次课程设计中,我就是根据试验指导思想来完成。加深了了解21点游戏内部功效及内部实现,培养实践动手能力和程序开发能力目标。
当然在做课程设计要有很大耐心,做过程就是不停调试—修改—调试过程,只有静下心来才能把问题处理。
5.参考文件
[1] 耿祥义,张跃平. Java2实用教程(第三版)[M]. 北京:清华大学出版社,.5:37-103.
[2] [美]Herbert Schildt .Java参考大全[M]. 北京:清华大学出版社,.8:145-168.
[3] 陈家兴.JAVA图形用户界面设计和实例[M] . 北京:冶金工业出版社,.2:75-89.
[4] 张伟.Java程序设计实战训练[M]. 北京:人民邮电出版社,.7:97-105.
[5] 孙卫琴.Java面向对象编程[M] . 北京:电子工业出版社,.5:123-156.
[6] [美]Deitel.Java.大学基础教程(第六版)[M]. 北京:电子工业出版社,.8:34-78.
[7] [美]迪特尔(Deitel.H.M).Java程序设计教程[M]. 北京:清华大学出版社,.4:12-34.
6.附录
package sdf;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
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 f1 = 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(f1);
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);
else
g.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;
}
}
}
展开阅读全文