执行此操作的最基本方法是创建一个 N * 3(n 是级别数)数组。所以用布尔值。所以它会喜欢这个
int[,] objectives = new bool[N, 3]
{true , false, true},
{false, false, false}
然后在增量时检查他们是否已经获得了星星
您可以在每个级别中使用更动态的结构或对象,其中包含您可以查询的这些布尔值。所以在级别中您将拥有
CompletedObjectives objectives{get; set;}
完成的目标看起来像
Public class CompletedObjectives
{
bool ObjectiveOne {get ;set;}
bool ObjectiveTwo {get ;set;}
bool ObjectiveThree {get ;set;}
}
在递增之前再次查询这些
希望对你有帮助
编辑:额外信息
所以 c# 是一种面向对象的语言,因此每个级别都应该是一个对象,它将包含有关级别的信息,您需要决定每个级别具有的信息,例如级别编号、难度和星级。您还需要一个名为 play level 之类的虚拟方法,虚拟方法是您可以在另一个类中覆盖的方法。如果类中没有实现该方法,下面的代码会抛出异常。
public class level
{
public int level number {get; set;}
public string difficulty {get ; set;}
public CompletedObjectives objectives {get;set;}
public virtual void PlayLevel()
{
System.NotImplementedException();
}
}
所以你的下一步是制作你的关卡
1 级示例
public class Level1 : level
{
this.levelnumber = 1;
this.difficulty = "easy";
public override void Playlevel()
{
//level logic goes here
}
}
然后你的 main 会将所有这些级别添加到列表中
List<Level> levels = new List<Level>{new Level1(), new Level2()}
所以第一次从列表中调用 level1 时,所有目标都是错误的,当它们完成时,您将它们的值更改为 true,如果它们为 true,则第二次增加总星数,您不增加。
如果您需要更多帮助,请随时询问上述代码是一个粗略的大纲,以解释可以完成此操作的基本方法。它们是提供更多好处的更先进的方法,但您必须从某个地方开始。
https://www.coursera.org/learn/game-programming
https://mva.microsoft.com/
youtube 也是学习基本编程的绝佳资源。他们有很多书,尤其是关于面向对象的一般书籍,这将帮助您更好地设计类/接口等。