自己从0开始学习Unity的笔记 VII (C#中类继承练习)
好久都没有写了。今天做了类继承的练习,做了一个小队,进行简单的判定。
namespace 兵团建立练习
{
class ServantBasics
{
public string name; //protected 代表着子类可以继承,外部不能调用
protected int attack; public ServantBasics(string name,int attack) //做了一个构造函数,用于赋值
{
this.name = name;
this.attack = attack;
}
} class SaberServant : ServantBasics //用于继承父类函数 这个就是语法
{
public SaberServant(string name, int attack) : base(name, attack) //这个其实是上面输入父类后,然后有个红线自动点击会自动填入,不过我也认真记了一下,和this用法挺像的
{
} public void skill()
{
Console.WriteLine("“EX咖喱棒!!!”");
Console.WriteLine("给对面造成了{0}点伤害",attack); }
} class ArcherServant: ServantBasics //用于继承父类函数
{
public ArcherServant(string name,int attack) : base(name,attack)
{
} public void skill()
{
Console.WriteLine("“无限剑制”");
Console.WriteLine("给对面造成了{0}点伤害", attack);
}
}
class RiderServant : ServantBasics //用于继承父类函数
{
public RiderServant(string name, int attack) : base(name, attack)
{
} public void skill()
{
Console.WriteLine("“无限剑制”");
Console.WriteLine("给对面造成了{0}点伤害", attack);
}
}
class CasterServant : ServantBasics //用于继承父类函数
{
public CasterServant(string name, int attack) : base(name, attack)
{
} public void skill()
{
Console.WriteLine("“万符必应破戒”");
Console.WriteLine("给对面造成了{0}点伤害", attack);
}
} class Program
{
static void Main(string[] args)
{
var r = new Random(); //建立一个随机的骰子
var servantParty = new ServantBasics[]; //建立了一个10个人小队的数组
for (int i = ; i < servantParty.Length; i++)
{
var roll = r.Next(, );
if (roll > )
{
servantParty[i] = new SaberServant("剑士",);
}
else if (roll > )
{
servantParty[i] = new ArcherServant("弓箭手", );
}
else
{
servantParty[i] = new CasterServant("魔法师", );
}
} for (int i = ; i < servantParty.Length; i++)
{
if (servantParty[i] is SaberServant) //我是这样理解的,用父类创建的这个子类,是不是SaberSevrvant
{
SaberServant saber = servantParty[i] as SaberServant; //如果不是返回空,如果是就给saber赋值
Console.WriteLine("这是第{0}个,职业是{1}",i+,saber.name);
saber.skill();
}
else if (servantParty[i] is ArcherServant)
{
Console.WriteLine("这是第{0}个,职业是{1}", i + , (servantParty[i] as ArcherServant).name);
(servantParty[i] as ArcherServant).skill(); //尝试进行简写
}
else
{
Console.WriteLine("这是第{0}个,职业是{1}", i + , (servantParty[i] as CasterServant).name);
(servantParty[i] as CasterServant).skill();
//我自己测试发现不能直接用servantParty[i].skill,没有选项,因为这个数组是基于父类建立的
//这种方法被称为里氏转换,挺神奇的,因为我以为数组都存好了数据new后的数据,居然不能 .skill
}
} Console.ReadKey(); }
}
}
用了一个数组来记录东西,我觉得这样似乎可以做生成地图随机怪兽的玩意,所以记录下来,方便以后忘记时候来看看,可能会有帮助
自己从0开始学习Unity的笔记 VII (C#中类继承练习)的更多相关文章
- 自己从0开始学习Unity的笔记 I (C#字符串转换为数字)
我基本上从0开始学习编程,运算符基本上跳过,因为知道了 “=”这个符号相当于赋值,然后“==”才是等于,其他和普通运算符号差不都,也就跳过了. 最基础的赋值那种,我看了下代码,似乎没什么难度,估计新手 ...
- 自己从0开始学习Unity的笔记 VI (C#的for循环练习)
最近学到了for循环,我觉得其实看情况吧,和while挺像的,不过适合于累加或者累减这类的,for循环要更好用一点 for循环首先格式是 ; i < length; i++) { } 意思很简单 ...
- 自己从0开始学习Unity的笔记 V (C#的数组练习)
今天练习了数组输入,先从最简单的开始,因为我输入完这些之后,觉得应该有更简单的方法,先来介绍一下我做的练习代码 //做一个最多能容纳10个数字的,用户可以输入任意1-10个数字,判断长度,输出数字 ] ...
- 自己从0开始学习Unity的笔记 IV (C#循环练习-数字猜谜游戏)
想起来现在基础的已经学了不少了,那么这次试一下用while写一个数字猜谜的. Random roll = new Random(); //建立一个骰子 , ); //让骰子在1-100内随机一个数 ; ...
- 自己从0开始学习Unity的笔记 IV (C#循环练习输出素数)
来测试一下循环....刚刚学了while循环,测试一下输出1-100的素数 我想了一下,素数就是只能被1和本身整除,那就是只能被整除2次,我是顺着这个思路写的代码,如果被整除超过2次,那么肯定不是素数 ...
- 自己从0开始学习Unity的笔记 III (C#随机数产生基础练习)
自己开始尝试弄一下随机数,照着方法,自己做了个英雄打怪兽的测试 int heroAttack; ; ; Random attack = new Random(); //初始化一个随机数的类 heroA ...
- 自己从0开始学习Unity的笔记 II (C#条件语句基础练习)
首先,自己用了下三目表达式,来做了一个闰年的判断,也就是能被400整除,或者是能够被4整除,但是不能被100整除的年份. int year; //输入的年 bool fourHunderd; //能被 ...
- 自己从0开始学习Unity的笔记 VIII (C#中类继承练习 II)
自己写了一个关于兵种的,因为一直在测试,到底面向对象是个什么玩意...然后就做了这个 namespace 兵种 { class Role //作为父类,构建一个普通角色属性用于继承 { protect ...
- 从0开始学习Unity的学习笔记(I 界面学习和简单模型拼装)
先给一个大致今天学习的图,然后后面是细节 1.下载Unity :官网下载需要版本 2.Unity安装:一定不要有中文路径:一台电脑可以安装不同版本的Unity,但是要安装在不同的文件夹下: 3. 新建 ...
随机推荐
- Django视图View
1.什么是Django的视图函数 一个视图函数(或者一个类),简称视图 是python的一个简单的函数,他是接受web请求 并且 处理逻辑 进而返回 响应 响应可以是一张网页的HTML内容,一个重定向 ...
- ES6系列_2之新的声明方式
在ES5中我们在声明时只有一种方法,就是使用var来进行声明,ES6对声明的进行了扩展,现在可以有三种声明方式. (1)var:它是variable的简写,可以理解成变量的意思. (2)let:它在英 ...
- python实现进度条--主要用在上传下载文件
在python中进行socket上传文件的时候使用进度条,然后在网上找了好久,找寻相关的进度的条的使用,看了几个,发现总是无法进行调用,主要原因是在进行上传文件的时候,每次传送的数据量是固定的,数据的 ...
- UNITY 接讯飞语音过程总结
11:13 2017/3/141,安装问题:JDK与ECLIPSE位数一定要对应,32位对64位会出现 java was returned ....code 13的弹框错误.版本号可以不一致.2,EC ...
- ArcGIS中各种合并要素(Union、Merge、Append、Dissolve)的异同点分析 转载
标签: arcgis 杂谈 分类: GISArcGIS中将两个要素类合并成一个要素有Union.Dissolve.Append.Merge等,在Arctoolbox中均有相应工具,但功能上有所不同:U ...
- Android开发之通过包管理器获取安装应用信息
最近在自己写一个APP,有一个模块需要获取手机应用的一些信息.坑还是有,但都基本踩过了,自己把他实现了出来,实现方法还是很需要掌握的.底部弹出的对话框中四个选项的实现不多做说明,主要讲讲如何获取这些安 ...
- JQuery常用函数及功能
JQuery常用函数及功能小结 来源:http://blog.csdn.net/screensky/article/details/7831000 1.文档加载完成执行函数 $(document).r ...
- mac下git push避免每次都输入用户名和密码的配置
参考链接:http://www.linuxdiyf.com/linux/18389.html 链接2:https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%8 ...
- C++中public、protected以及private的使用
相比C语言,C++中通过class/struct来定义既包含数据,又包含行为的结构,从而支持了“对象”.现实世界中,一个人(一个对象)通常 拥有一些资产(数据),并且掌握某些技能(行为),并且这些资产 ...
- Ubuntu使用ttyS*(如mincom)时不需root权限的方法
很久很久以前,我们在Ubuntu下使用软件(如minicom.screen等)访问串口时,是不需要任何超级权限的(使用minicom时,只有使用-s选项时需要root权限):不知道从哪个版本(12.0 ...