《面向对象的编程技术》
课程设计实验报告。
班级:学号:
姓名:指导教师:胡增涛。
一、课程设计目的。
1.使学生了解c++的有关面向对象的语法及思想,掌握vc或c++builder等开发工具的可视化程序设计方法,全面提高学生面向对象程序的综合设计能力。 掌握基本面向对象c++程序设计方法,熟悉c++程序设计的步骤;通过进行可视化程序设计,进一步熟悉可视化c++开发工具的使用和开发,提高动手能力,提高分析问题和解决问题的能力;
2.通过c++课程设计,使学生能够将学到的面向对象的设计思想运用在具体的工作和学习中,加深对类和对象的理解,要求学生对生活中许多具体的事物抽象出类,并掌握继承和派生类、基类、虚函数和多态的概念;
3.用所学的c++语言知识及其编程方法,包括类和对象、继承与多态等面向对象的基本思想和方法以及文件流的基本操作等内容。通过布置具有一定难度的实际程序设计项目,要求学生独立完成所布置项目。
在分析设计过程中,要求学生养成良好的编程习惯,学会分析解决简单的实际问题,学会c++编程环境(vc++)的实际调试技巧和方法,要求学生在教师的指导下逐步完成应用程序的分析与设计过程。
二、课程设计的内容。
1.课程设计名称:坦克大战游戏。
2.设计目的:
通过分析、设计、实现游戏过程中,运用所学知识来一步一步完成,从而进一步强化我们对类、封装、继承、多态等面向对象基本概念的理解和oop(面向对象编程)实际动手能力,并进一步拓展到ood(面向对象设计)原则、技巧和初步的ooa(面向对象分析)方法。
3.应用程序简介:
“玩家坦克”打掉“**源”即可过关。共3关,每过一关,就会进入下一关,直到第三关。可循环玩。
4.功能介绍:
原游戏功能:
1) 玩家坦克。
移动:4个方向箭头,“机动力”由升级次数决定。
型号:“青铜战士”,“**战士”,“**战士”
防护:由“经验值(打掉木箱,捡 )”决定“最大防护值”,捡恢复物品可提高当前防护值。
**:左ctrl**,只有“光弹”(匀速),“射程”由型号决定,“破坏力”由“金钱数(捡)”决定。
2) 敌军坦克。
总之有3种:双导弹,发双弹;单导弹,发单弹;火坦克,发火弹,性能由型号决定,各有所长。
3)“**源”
防护值很大。
4) 木箱。
炸掉木箱,随机可得到奖品,也会什么都得不到。
5) 奖励物品。
恢复、金钱、升级。
6) 背景地图。
草地、泥地、白石头、黑石头、白石高地(地形障碍)
新增加的功能:
1)子弹不可以穿透石头墙。
2)增加了上帝模式即玩家坦克无敌。
3)修改了玩家坦克的图像。
4)玩家坦克可以爬墙。
5)提高了玩家坦克的运动速度和玩家坦克子弹的发射速度。
5.主要技术:
1)安装microsoft visual c++6.0软件。
2)安装directx sdk。
3)安装wge游戏引擎,熟悉wge游戏引擎的使用。
4)设置vc++ 6.0环境,以便找到上述sdk的头文件和库文件。
5)ps技术。
6.运行环境:
1)本游戏设计采用microsoft visual c++6.0编译,能够在win98、win2000、win7等系统环境下运行。
2)游戏基于windows game engine(wge游戏引擎,添翼虎科技),该引擎需要directx7.0 sdk支持(仅有runtime运行库不够,必须包含开发语言需要的header&libs 头文件和库文件)。
7. 应用程序的总体设计结构图:
8. 类层次图:
9. 创新和难点。
1)子弹不可以穿透石头墙。
2)玩家坦克无敌,不会死。
3)修改了玩家坦克的图像。
4)玩家坦克可以爬墙。
5)提高了玩家坦克的运动速度和玩家坦克子弹的发射速度。
10.课程设计中目前存在的问题:
应该给石头墙也带上生命值,当子弹发射足够多时就可以打爆石头墙。但,此游戏中没有实现。
11.设计实践过程中的心得体会:
在设计游戏过程前,我首先仔细阅读了课程设计指导书,从中了解了此次课程设计的要求。为了充分理解坦克大战游戏,我把游戏的源**全部打印出来了。我把**分成了三份打印。
一份是所有类的定义,一份是所有类的实现函数,一份是所有游戏的实现函数。拿到好几十页的**,我首先看的是类的定义然后是类的实现函数最后看游戏的实现函数。说实话,第一遍我没看懂,**好多,看着后面的忘着前面的。
但是,我还是硬着头皮看完了,而且看了好几遍。最后,慢慢也就弄懂了。可见,“死缠烂打”还是有必要的。
在改动**的过程中,我先注释掉源**,并不删除,然后添加自己的**。经过反复多次修改调试,最终实现了目的。
这次坦克大战游戏的课程设计,也强化了我对c++知识的理解和提高了应用知识的能力。在实践中我增强了动手能力,也认识到,做什么东西都不要怕,只要努力+坚持就能有所收获。
三、附录。开发软件的安装、使用说明。
1)安装visual c++6.0
2)安装directx sdk:
思路:runtime与header&libs必须配套,且高于7.0版本。
由于directx不太容易卸载,所以建议安装高于当前系统runtime的directx(升级当前directxruntime,并补上header&libs)
1) 检查当前directx版本:windows下“开始” |运行” |dxdiag
2) 如果版本低于9.0c安装,安装(90c ok) directx_9c_jun05sdk_以升级运行库;安装适合c++的sdk:运行类型:
retail速度快;debug便于调试),建议装在c:\dxsdk。
3) 检查directx sdk安装是否正确:运行dxdiag | 显示” |测试directxdraw”,确保2d显示正确。(以后若用到3d,至少要保证directx3d 7正确。
)3)安装wge游戏引擎:wgesetup,建议安装在c:\wgesdk
4)设置vc++ 6.0环境,以便找到上述sdk的头文件和库文件:
1) vc++ 6.0 | tools” |option”,选directors(路径)(缺省的 “show directories for”列表为 “include files”),加入directx sdk和wge游戏引擎的头文件路径:c:
\dxsdk\include(注意要移到首行,以便优先于vc自带的旧文件), c:\wgesdk\include,见下图:
从“show directories for”列表选 “library files”,加入c:\dxsdk\lib ,c:\wgesdk\lib,见下图:
5)测试所有软件安装是否正确:
1)vc | file | new | project |windows game engine sdk appwizard工程向导,输入工程名test和路径 | ok;
2)输入屏幕宽(必须偶数)、高为400,300,游戏名test,显示模式gdi_mode(窗口模式,当前显示设置不应少于16bit),见下图:
4) finish完成。编译:vc | build” |build ,运行:“build” |execute 看到如下界面表示上述安装正确(esc退出):
附:**。/ implementation of the ttank class.
#include ""
#include ""
#include ""
#include ""
#include ""
#include ""
#include ""
/ construction/destruction
/ tenemytank
epg tenemytank::m_epg[3];
/敌军坦克移动。
void tenemytank::move()
if(!ismytime())
return ;
//防护小于0,还不死吗。
if(m_nshield < 0)
//疯子要行动了,怎么动呢?用随机数来决定吧。
//玩家没进入范围,什么也不做。
if(abs(m_nx-g_>getx())500 ||
abs(m_ny-g_>gety())500)
return ;
//产生0到100之间的随机数状态。
int status=rand(0,100);
//保存现在的位置坐标。
int x=m_nx,y=m_ny;
//根据产生的状态行动。
if(status<2)else if(status <3)
状态小于3,**(概率是。计算一下好像是: (3-2)/100即0.01)
switch(m_ntype)
case fire_tank:
火弹:射程100,威力20
g_ tbullet(m_nx,m_ny,m_dir,fire,20,100));
C 课程设计
自动走迷宫小游戏。根据课堂讲授内容,做相应的自主练习,消化课堂所讲解的内容 通过调试典型例题或习题积累调试c 程序的经验 通过完成辅导教材中的编程题,逐渐培养学生的编程能力 用计算机解决实际问题的能力。同时在设计的过程中发现自己的不足之处,对以前所学过的知识理解的更加深刻,掌握得更加牢固。迷宫生成。...
c 课程设计
哈尔滨 课程设计报告。课程 c 学号 姓名 班级 教师 1.管理系统的功能说明。课程信息管理 能够增加数据,删除数据,显示数据,修改数据,按姓名和首字母查询数据和一些基本的程序功能。2.存储数据的描述。coursenumber 课程号coursename 课程名subject 所属专业xingzhi...
C课程设计
面向对象程序设计课程设计。一 设计要求。1 课程设计以3 4人为一组,每人一个模块 2 课程设计时间为1周 在处理系统的时候,要从分析系统的需求入手,根据系统需求进行详细分析,明确系统功能,然后设计系统整体架构以及划分系统模块,按照模块分配小组中每个组员的具体任务,完成设计。二 系统设计规范。1 命...