• 面向对象程序设计 团队作业3


    思路描述

    刚开始接到这个作业时,不知道该从何入手,太多的东西需要了解和学习。接口的设置、界面的构造等等都是尚未接触过的东西。后来在老师多次强调C++面向对象的特性之后,渐渐的理解了抽象、封装、继承和多态的重要性。简单来说:一个再复杂的程序,都是可以看成一个又一个对象拼接起来的结果,加上C++对封装的要求,可以从每个简单的对象入手,通过类的实现,构建起程序的基础模型,再在基础上一步一步地完善。至此,终于发现并且亲身体会到了面向对象的巧妙之处,在处理较大规模的程序时,不必将每一步操作统筹到一起进行编程,而可以一块一块的实现。

    具体实现

    根据我的分工定位,要建立并且根据需要完善类。
    英雄类主要是攻击和调用技能的实现:
    普通攻击可以直接实现:

    void heroes::Attack(heroes &p)
    {
    	cout << name << "攻击" << endl;
    	p.HP -= attack;
    	cout << p.name << "受到" << attack << "点伤害" << endl;
    	if (p.HP <= 0)
    		cout << "K.O." << endl;
    }
    

    技能攻击则需要调用技能类的成员函数完成:

    bool heroes::skill_attack(heroes &p)
    {
    	cout << name << "技能攻击" << endl;
    	if (useSkill == 1)
    	{
    		if (shitan::judge(*this))
    		{
    			cout << name << "发动试探" << endl;
    			Hurt(heroes &p);
    			return true;
    		}
    		else
    		{
    			cout << "等级太低无法使用此技能,请重新选择技能" << endl;
    			return false;
    		}
    	}
    	if (useSkill == 2)
    	{
    		if (chengjie::judge(*this))
    		{
    			cout << name << "发动惩戒" << endl;
    			Hurt(heroes &p);
    			return true;
    		}
    		else
    		{
    			cout << "等级太低无法使用此技能,请重新选择技能" << endl;
    			return false;
    		}
    	}
    	if (useSkill == 3)
    	{
    		if (zhansha::judge(*this))
    		{
    			cout << name << "发动斩杀" << endl;
    			zhansha::Hurt(heroes &p);
    			return true;
    		}
    		else
    		{
    			cout << "等级太低无法使用此技能,请重新选择技能" << endl;
    			return false;
    		}
    	}
    	if (useSkill == 4)
    	{
    		if (kuangbao::judge(*this))
    		{
    			AddAttackSpeed(*this);
    			AddAttack(*this);
    			Attack(heroes &p);
    			return true;
    		}
    		else
    		{
    			cout << "等级太低无法使用此技能,请重新选择技能" << endl;
    			return false;
    		}
    	}
    	if (useSkill == 5)
    	{
    		if (shanxian::judge(*this))
    		{
    			return true;
    		}
    		else
    		{
    			cout << "等级太低无法使用此技能,请重新选择技能" << endl;
    			return false;
    		}
    	}
    	if (useSkill == 6)
    	{
    		if (zhiliaoshu::judge(*this))
    		{
    			Recovery(*this);
    			return true;
    		}
    		else
    		{
    			cout << "等级太低无法使用此技能,请重新选择技能" << endl;
    			return false;
    		}
    	}
    }
    

    技能类即按照题目要求,实现不同技能的功能,比较简单。
    PS:设计类的时候其实是希望有一个界面来描述战斗过程,所以在每一个功能中都写入了输出相应文字的功能,但在实际中还未能实现此功能,只能实现单独的战斗界面。

    花费时间

    构建类:

    英雄类:4 hours
    技能类:2 hours
    技能类的实现与英雄类相似,所以花费时间较少。

    完善类:

    后期对类的完善:2 hours

    问题

    对本次作业主要的问题就是“思路”,可能在代码的实现上还是有一定的能力和想法,但是需要一个具体的思路来引导。所以在开始之前找了比较多的资料来学习完成这类程序的思路方法。也有在同学发布的博客中找到很有用的资料,总的来说,在资料方面还是有所收获的。

    总结

    1、团队作业最重要的就是有明确的分工,并且按时完成自己分内的工作,这样才不会影响整个团队的进度
    2、通过此次作业更加深入地认识了面向对象的程序设计,体会到了在面对较大规模的程序时面向对象的重要性

  • 相关阅读:
    关联A850刷机包 高级电源 时间中心 优化 ROOT 动力 美化 简化
    CodeForces 425E Sereja and Sets
    int有符号和无符号类型内存 -- C
    软件体系结构————防御性编程
    Hibernate各保存方法之间的差 (save,persist,update,saveOrUpdte,merge,flush,lock)等一下
    椭圆识别
    UVa 10223
    照片详细解释YUV420数据格式
    LeetCode:Reverse Integer
    看了此文你还不懂傅里叶变换,那就来掐我吧
  • 原文地址:https://www.cnblogs.com/azeLibertas/p/9244654.html
Copyright © 2020-2023  润新知