【发布时间】:2019-04-14 03:47:02
【问题描述】:
在下面的代码中,我试图学习如何让对象相互交互,因为我觉得这比我现在所做的更重要一点,即收集一堆分配给每个对象的变量.
为了好玩,我希望这些不同的物体做的就是互相残杀。名叫杰克的人可以杀人。其他两个不行。我想让 Jack 做的是打击另外两个,让他们多次失去 1、5 或 10 个生命值,直到他们死亡,然后将他们的 Alive 设置为 false。
我什至不知道如何开始,但我认为这将是一个非常有趣和有趣的练习。
这样做最重要的是了解一个对象如何直接更改另一个对象的某些内容,因为它可以,并且它随后更改的对象将受到此操作的影响。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OOP_Learning
{
class Program
{
static void Main(string[] args)
{
Person p1;
p1 = new Person("Jack", 27, true, true, 10);
Person p2;
p2 = new Person("Vincent", 63, true, false, 10);
Person p3;
p3 = new Person("Tim", 13, true, false, 10);
Console.ReadLine();
}
}
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public bool Alive { get; set; }
public bool AbilityToKill { get; set; }
public int HitPoints { get; set; }
public Person(string name, int age, bool alive, bool abilityToKill, int hitPoints)
{
HitPoints = hitPoints;
AbilityToKill = abilityToKill;
Alive = alive;
Name = name;
Age = age;
}
}
}
【问题讨论】:
-
您问题的某些部分有简单的答案。例如, p2.HitPoints -= 10 将带走生命值。而 p3.Alive = false 会杀死某人。但是你可以让它更复杂,比如 Alive 可以是一个计算字段:get { return this.HitPoints > 0; }。像那样的东西。或者你可以有一个 TakeHit 方法,它将命中计数减少给定的数字,甚至计算一个随机数。梦想大
-
另外,我建议您更改此问题的标题,因为“kill”可能会被误解为终止进程,这也是可能的。您只想对对象进行更改
-
@baileyrt 这些都是很好的观点。我确实喜欢梦想远大,随着时间的推移变得紧密而复杂,但我也想从小处着手,以获得更好的基本理解。我相信我要做的第一件事就是了解 this 关键字。我也稍微编辑了这个问题,所以我认为现在更容易理解了