public class Player
{
private string Name;
private int Health = 100;
private int Damage;
public Player(string name, int health, int damage)
{
name = Name;
health = Health;
damage = Damage;
}
}
public class Enemy
{
public void enemyTakeDamage()
{
int takenDamage;
}
private string Name;
private int Health = 100;
private int Damage;
public string enemyMessages;
public Enemy(string name, int health, int damage)
{
name = Name;
health = Health;
damage = Damage;
}
}
class Program
{
static void Main(string[] args)
{
bool dead;
Player P1 = new Player("Zach", 100, 20);
}
}
所以我初始化了一个名为P1的对象,其名称为“zach”,hp为100,损坏为20,我无法在其他地方访问这3个变量。这些不是播放器类中的私有变量,我在谈论类中通过执行初始化的那些变量:
public Player(string name, int health, int damage)
我想我可以在任何我想要的地方打电话给P1.health吗?感谢任何帮助,这是我正在研究的第一个基于文本的控制台游戏,所以其他输入也很受欢迎。
看一切,这里是我认为你想要的定义:
public class Player
{
public string Name { get; set; }
public int Health { get; set; } = 100;
public int Damage { get; set; }
public bool IsAlive { get; set; }
public Player(string name, int health, int damage)
{
Name = name;
Health = health;
Damage = damage;
IsAlive = true;
}
public void TakeDamageFromEnemy(Enemy enemy)
{
if(IsAlive)
{
Health -= enemy.Damage;
if (Health < 0)
{
IsAlive = false;
MessageBox.Show("Player is dead!");
}
}
}
public void DoDamageToEnemy(Enemy enemy)
{
if(enemy.IsAlive)
{
enemy.Health -= Damage;
if (Health < 0)
{
IsAlive = false;
}
}
}
}
public class Enemy
{
private string Name { get; set; }
private int Health { get; set; }= 100;
private int Damage { get; set;}
public string enemyMessages { get; set; }
public bool IsAlive { get; set; }
public Enemy(string name, int health, int damage)
{
Name = name;
Health = health;
Damage = damage;
IsAlive = true;
}
//This is likely replaced by the Player's DoDamageToEnemy method.
public void enemyTakeDamage()
{
int takenDamage;
}
}
public class Program
{
static void Main(string[] args)
{
Player playerOne = new Player("Zach", 100, 20);
Enemy enemyOne = new Enemy("Trogg",15,5);
Enemy enemyTwo = new Enemy("Dragon",1000,50);
playerOne.TakeDamageFromEnemy(enemyTwo);
playerOne.TakeDamageFromEnemy(enemyOne);
playerOne.DoDamageToEnemy(enemyOne);
playerOne.TakeDamageFromEnemy(enemyTwo);
Console.ReadLine();
}
}
假设伤害是角色所造成的伤害,那么这应该作为战斗模型。您可以分别更改对Player.DoDamage(Enemy e)和Enemy.DoDamage(Player p)的Do and Take Damage。
如果你想要达到像p1.Health
这样的属性/字段,你必须公开它。
其次,你的任务顺序是错误的。
第三,你可以访问p1.Health
而不是p1.health
,因为Player
没有属性/字段,名称为health
。它是构造函数的参数名称
public class Player
{
public string Name;
public int Health = 100;
public int Damage;
/* II. way
public string Name {get;set;}
public int Health {get;set;} = 100;
public int Damage {get;set;}
*/
/* III. way
private string _name;
private int _health = 100;
private int _damage;
public string Name {get { return _name ; } }
*/
public Player(string name, int health, int damage)
{
Name = name;
Health = health;
Damage = damage;
}
}
public class Enemy
{
public void enemyTakeDamage()
{
int takenDamage;
}
private string Name;
private int Health = 100;
private int Damage;
public string enemyMessages;
public Enemy(string name, int health, int damage)
{
Name = name;
Health = health;
Damage = damage;
}
}
public class Program
{
static void Main(string[] args)
{
bool dead;
Player P1 = new Player("Zach", 100, 20);
Console.WriteLine("Name : " + P1.Name + Environment.NewLine +
"Health : " + P1.Health +Environment.NewLine +
"Damage : "+ P1.Damage);
Console.ReadKey();
}
/* static player
public static Player P1;
static void Main(string[] args)
{
bool dead;
P1 = new Player("Zach", 100, 20);
Console.WriteLine("Name : " + P1.Name + Environment.NewLine +
"Health : " + P1.Health + Environment.NewLine +
"Damage : " + P1.Damage);
Console.ReadKey();
}
*/
}