打架

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace P_K
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Lm L = new Lm(textBox2.Text, 500, 150, 50);
Hero H = new Hero(textBox1.Text, 800, 200, 100);

while (H.Hp > 0 && L.Hp > 0)
{
L.Fight(H);
richTextBox1.AppendText(string.Format("{0}的血剩{1}\n",H.Name,H.Hp));

if(H.Hp>0)
{
H.Fight(L);
richTextBox1.AppendText(string.Format("再经战{0}血量剩{1}\n",L.Name,L.Hp));
}
}

if (L.Hp <= 0)
{
richTextBox1.AppendText(string.Format("{0}挂了", L.Name));
}

if (H.Hp <= 0)
{
richTextBox1.AppendText(string.Format("{0}挂了", H.Name));
}
}
}

#region
/*a.此项目中创建人物基类(抽象类),在人物基类中包含:(5分)
I.基本属性:姓名,生命值,攻击力,防御力(均要求封装);
II.基本方法:攻击(抽象方法);
III.构造函数:对4个属性进行赋值。
b.此项目中创建英雄类,其要求如下:(5分)
IV.i.继承人物类;
V.ii.构造函数继承父类;
VI.iii.实现人物类中的“攻击”抽象方法。
c.此项目中创建流氓类,其要求如下:(5分)
VII.i.继承人物类
VIII.ii.构造函数继承父类
IX.iii.实现人物类中的“攻击”抽象方法。
构造1个英雄类的对象,1个流氓类对象,使用While循环进行PK演示,当一方的生命值消耗完毕后即停止,注意多态的使用*/
#endregion

abstract class People
{
string name;//在抽象类中定义自己的字段
public string Name//将字段封装成属性
{
get { return name; }
set { name = value; }
}

int hp;
public int Hp
{
get { return hp; }
set //设置值
{
if (value < 0)
{
hp = 0;
}
else
{
hp = value;
}
}
}

int gjl;
public int Gjl
{
get { return gjl; }
set { gjl = value; }
}

int fyl;
public int Fyl
{
get { return fyl; }
set { fyl = value; }
}

public abstract void Fight(People P);//定义一个抽象的方法,方法是一个不带返回值,但是带一个类类型的参数

public People(string pname, int php, int pgjl, int pfyl)//定义一个带参数的构造函数,字段赋初值
{
name = pname; hp = php; gjl = pgjl; fyl = pfyl;//将参数赋值给字段
}
}

class Hero : People//定义一个Hero的类,让其继承抽象类
{
public Hero(string hname, int hhp, int hgjl, int hfyl)//继承抽象类中的构造函数
: base(hname, hhp, hgjl, hfyl)
{ }

public override void Fight(People P)//实现抽象类中的方法
{
//throw new NotImplementedException();
if (this.Gjl < P.Fyl)
{ }
else
{ P.Hp -= this.Gjl - P.Fyl; }
}
}

class Lm : People//定义一个Lm类,也继承抽象类
{
public Lm(string lname, int lhp, int lgjl, int lfyl)//继承抽象类中的构造函数
: base(lname, lhp, lgjl, lfyl)
{ }

public override void Fight(People P)//实现抽象类中的方法
{
//throw new NotImplementedException();
if (this.Gjl > P.Fyl)
{ P.Hp -= this.Gjl - P.Fyl;}
}
}
}

原文地址:https://www.cnblogs.com/meroselove/p/1828391.html