利用C#编一个烟花程序并在放完烟花后出现付佳佳生日快乐的字样
时间: 2024-09-27 08:05:02 浏览: 30
利用C语言写的同时放烟花,音乐的程序
利用C#编写一个简单的烟花动画程序并显示“付佳佳生日快乐”这样的文字,可以结合控制台输出、定时器以及随机颜色生成来模拟烟花效果。以下是基本的步骤:
1. 首先创建一个新的控制台应用程序项目。
2. 引入System.Threading命名空间,以便使用Timer类来控制烟花的发射频率。
3. 定义一个烟花类(Firework),包含发射位置、颜色和一个表示生命状态的计数器。
```csharp
class Firework
{
public int X { get; set; }
public int Y { get; set; }
public ConsoleColor Color { get; set; }
private int life;
public Firework(int x, int y, ConsoleColor color)
{
X = x;
Y = y;
Color = color;
life = 50; // 烟花持续时间
}
public void Display()
{
Console.ForegroundColor = Color;
for (int i = 0; i < life; i--)
{
Console.SetCursorPosition(X, Y);
Console.Write("*");
Thread.Sleep(100); // 暂停一段时间增加视觉效果
}
Console.ResetColor();
}
}
```
4. 主程序中设置一个定时器,每隔一定时间发射新的烟花,并在烟花熄灭后检查是否所有烟花都已发射完毕。当满足条件时,输出“付佳佳生日快乐”。
```csharp
static void Main(string[] args)
{
List<Firework> fireworks = new List<Firework>();
Random random = new Random();
const int DISPLAY_WIDTH = 80; // 控制台宽度假设为80字符
Timer timer = new Timer((state) =>
{
if (fireworks.Any())
{
var firework = fireworks[random.Next(fireworks.Count)];
firework.Display();
firework.life--;
if (firework.life <= 0)
fireworks.Remove(firework);
// 当烟花全灭时,输出祝福语
if (fireworks.Count == 0)
{
Console.WriteLine("\n付佳佳生日快乐!");
timer.Change(Timeout.Infinite, Timeout.Infinite); // 关闭定时器
}
}
}, null, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1));
for (int i = 0; i < DISPLAY_WIDTH / 2; i++)
{
fireworks.Add(new Firework(i, 0, ConsoleColor.Red));
fireworks.Add(new Firework(DISPLAY_WIDTH - 1 - i, 0, ConsoleColor.Green));
}
Console.ReadKey(); // 等待用户按下任意键后关闭程序
}
```
阅读全文