diff --git a/hw1/hw1/Program.cs b/hw1/hw1/Program.cs index e4f0e15..461dba3 100644 --- a/hw1/hw1/Program.cs +++ b/hw1/hw1/Program.cs @@ -2,68 +2,141 @@ namespace Homework1 { - public class Program - { - public static void Main(string[] args) // 该程序用于Debug - { - IProgress progress = new Progress(); - for (int i = 1; i <= 20; i++) - { - try - { - progress.Start(i*((i%2==0)?1:-1)); - } - catch (Exception e) - { - Console.WriteLine(e.Message); - } - if (i % 3 != 0) - { - progress.Add(i-1); - } - else progress.Sub(i-1); - - if (i == 6 || i == 7) - { - progress.Double(); - } - Console.WriteLine(progress.GetProgress().ToString()); - } - } - } - - public interface IProgress - { - public int Num { get; } // Progress的序号,表明是第几个实例化的Progress - public int RequiredProgress { get; } // Progress加载完成所需进度 - public int FinishedProgress { get; } // FinishedProgress指其中已完成的进度, FinishedProgress应当在[0,RequiredProgress]中 - - /// - /// 尝试加载下一次进度条,requiredProgress指再次加载进度条所需进度 - /// 如果之前进度条已经加载完成,则将进度清零开始下一次加载,返回true,但如果requiredProgress<0,应当报错 - /// 如果之前进度条尚未加载完成,返回false - /// - public bool Start(int requiredProgress); - - public void Add(int addProgress); //增加addProgress的进度 - public void Sub(int subProgress); //减少subProgress的进度 - public void Double(); //进度翻倍 - - /// - /// FinishedProgress指其中已完成的进度,RequiredProgress指当前Progress完成所需进度 - /// - public (int FinishedProgress, int RequiredProgress) GetProgress(); - } - - public class Progress : IProgress - { - // 一个进度条 - // 只允许修改Progress类中的代码 - // 要求实现IProgress中的要求 - } +public class Program +{ +public static void Main(string[] args) // 该程序用于Debug +{ +IProgress progress = new Progress(); +for (int i = 1; i <= 20; i++) +{ +try +{ +progress.Start(i*((i%2==0)?1:-1)); +} +catch (Exception e) +{ +Console.WriteLine(e.Message); +} +if (i % 3 != 0) +{ +progress.Add(i-1); +} +else progress.Sub(i-1); + +if (i == 6 || i == 7) +{ +progress.Double(); +} +Console.WriteLine(progress.GetProgress().ToString()); +} +} +} + +public interface IProgress +{ +public int Num { get; } // Progress的序号,表明是第几个实例化的Progress +public int RequiredProgress { get; } // Progress加载完成所需进度 +public int FinishedProgress { get; } // FinishedProgress指其中已完成的进度, FinishedProgress应当在[0,RequiredProgress]中 + +/// +/// 尝试加载下一次进度条,requiredProgress指再次加载进度条所需进度 +/// 如果之前进度条已经加载完成,则将进度清零开始下一次加载,返回true,但如果requiredProgress<0,应当报错 +/// 如果之前进度条尚未加载完成,返回false +/// +public bool Start(int requiredProgress); +public void Add(int addProgress); //增加addProgress的进度 +public void Sub(int subProgress); //减少subProgress的进度 +public void Double(); //进度翻倍 + +/// +/// FinishedProgress指其中已完成的进度,RequiredProgress指当前Progress完成所需进度 +/// +public (int FinishedProgress, int RequiredProgress) GetProgress(); +} + +public class Progress : IProgress +{ +// 一个进度条 +// 只允许修改Progress类中的代码 +// 要求实现IProgress中的要求 +private int num; +private int requiredProgress = 0; +private int finishedProgress = 0; + +public Progress() +{ +num = ++Program.instanceCount; +} + +public int Num +{ +get +{ +return num; +} +} + +public int RequiredProgress +{ +get +{ +return requiredProgress; +} +} + +public int FinishedProgress +{ +get +{ +return finishedProgress; +} +} + +public bool Start(int requiredProgress) +{ +if (requiredProgress < 0) +throw new ArgumentException("RequiredProgress must be positive.", "Homework1.Progress"); +if (finishedProgress >= this.requiredProgress) +{ +this.requiredProgress = requiredProgress; +this.finishedProgress = 0; +return true; +} +else +{ +return false; +} +} + +public void Add(int addProgress) +{ +finishedProgress += addProgress; +if (finishedProgress > requiredProgress) +finishedProgress = requiredProgress; +} + +public void Sub(int subProgress) +{ +finishedProgress -= subProgress; +if (finishedProgress < 0) +finishedProgress = 0; +} + +public void Double() +{ +finishedProgress *= 2; +if (finishedProgress > requiredProgress) +finishedProgress = requiredProgress; +} + +public (int FinishedProgress, int RequiredProgress) GetProgress() +{ +return (FinishedProgress, RequiredProgress); +} +} /* - * 输出示例: +* 输出示例: RequiredProgress must be positive. (Parameter 'Homework1.Progress') (0, 0) (1, 2) @@ -88,5 +161,5 @@ RequiredProgress must be positive. (Parameter 'Homework1.Progress') (0, 18) (18, 18) (19, 20) - */ +*/ } \ No newline at end of file