08年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大学生活。此系列是对四年专业课程学习的回顾,索引参见:http://blog.csdn.net/xiaowei_cqu/article/details/7747205
面向对象程序设计
这是我们学习程序设计的第一课。我也在这门课上第一次接触程语言、写代码。我们以影印版的《C++ Program Design : An Introduction to Programming and Object-Oriented Design 》为教材。
现在想来那段“入门”的经历真是痛苦不堪,很多概念难以理解,就只能一点点把书中的代码一遍遍的敲。但每次跑出一点小东西也都觉着兴奋到不行。大一末的时候有个“大”的课程设计:两人一组编写一个小游戏。我和小琦一组,写了一个比较简略的闯关游戏,这次经历之后才真的对编程有了“入门”的感觉。
小游戏"YingMu"
【游戏功能需求说明】
本游戏是基于日本漫画《灌篮高手》而设计的,相信大家对游戏中的人物都相当熟悉。在游戏中我们采用了键盘上、下、左、右控制玩家的移动,空格键发射子弹。如果玩家碰到敌人,则游戏结束;消灭所有敌人,则通关。游戏共分为两关,每一关的地图是随机产生的,敌人的移动速度也逐渐加快。虽然功能看似简单,但其中乐趣无穷,是一款集娱乐、冒险为一体的游戏。
我们这次是在Microsoft Visual C++ 6.0, EzWindow library的开发环境下设计完成的,一些程序的功能我们一时没有想到好的方法来实现,所以在这款游戏中没有呈现给大家。相信在以后的学习中,我们能更好地掌握并对这款小游戏进行升级更新。
我们这次是在Microsoft Visual C++ 6.0, EzWindow library的开发环境下设计完成的,一些程序的功能我们一时没有想到好的方法来实现,所以在这款游戏中没有呈现给大家。相信在以后的学习中,我们能更好地掌握并对这款小游戏进行升级更新。
【游戏总类图】

【游戏中的关键类】
Player
enum Floor{FLoor1=0,Floor2,Floor3,Floor4};
class Player {
public:
//constructor
Player(SimpleWindow &w);
public:
//inspectors
SimpleWindow& GetWindow() const;//得到玩家所在窗口
Position GetPosition() const; //得到玩家当前位置
Direction GetDirection() const; //得到玩家当前的方向
BitMap& GetBmp(const Direction &d,int i); //得到玩家在相应的方向及步子上位图
const BitMap& GetBmp(const Direction &d,int i) const;
Floor GetFloor()const; //得到玩家当前所在层数
bool IsDying(); //检查玩家是否死掉
bool AtRightEdge() const; //检查玩家是否走到窗口边缘
bool AtLeftEdge() const;
//Facilitators
void Create(); //创建玩家(即将玩家“放”在游戏窗口中)
void Kill(); //“杀死”玩家(从窗口中擦掉)
void Move(); //使玩家在键盘操控下做相应的移动
void Fire(); //发射子弹
void OKUp(); //设置玩家是否可以在层之间跳跃
void OKDown();
void CannotUpDown();
//mutators
void SetPosition(const Position &p); //设置玩家当前所有位图的位置
void SetFloor(Floor &f); //玩家跳跃之后改变层的数据成员
void SetDirection(const Direction &d); //设置玩家当前的方向
//data member
vector<Bullet*> bullets; /****************************************/
//方便GameController中检查子弹和敌人 //
//状况,所以放在public域中,设置为可见 //
/****************************************/
private:
//facilities
void Draw();
void Erase(); /****************************************************/
//用户不直接操纵图片,而是通过调用 Creat() 和 Kill() //
//所以定义为 private //
/*****************************************************/
// Data members
SimpleWindow &Window;
vector<vector<BitMap> > Bmp;
Direction CurrentDirection;
Position CurrentPosition;
bool bUpOk;
bool bDownOk;
Floor CurrentFloor;//当前所处的层