Untitled
unknown
csharp
8 months ago
2.7 kB
15
Indexable
using System;
using System.Threading;
public class BaiTap60
{
// Hàm in chuỗi tại vị trí và màu sắc chỉ định
static void WriteXY(string chuoiS, int cotC, int hangR, ConsoleColor mauChuF, ConsoleColor mauNenB)
{
if (hangR < 0 || cotC < 0 || hangR >= Console.WindowHeight || cotC >= Console.WindowWidth)
{
// Bỏ qua nếu tọa độ ra ngoài màn hình để tránh lỗi
return;
}
ConsoleColor mauChuCu = Console.ForegroundColor;
ConsoleColor mauNenCu = Console.BackgroundColor;
try
{
Console.SetCursorPosition(cotC, hangR);
Console.ForegroundColor = mauChuF;
Console.BackgroundColor = mauNenB;
Console.Write(chuoiS);
}
catch (ArgumentOutOfRangeException ex)
{
}
finally // Đảm bảo màu được reset ngay cả khi có lỗi
{
Console.ForegroundColor = mauChuCu;
Console.BackgroundColor = mauNenCu;
}
}
public static void Main(string[] args)
{
Console.OutputEncoding = System.Text.Encoding.UTF8;
Console.InputEncoding = System.Text.Encoding.UTF8;
Console.WriteLine("Hàm WriteXY và hiệu ứng chữ rơi");
string dongChu = "Lập trình C# thật thú vị!";
int cotGiua = (Console.WindowWidth / 2) - (dongChu.Length / 2);
if (cotGiua < 0) cotGiua = 0;
ConsoleColor mauChu = ConsoleColor.Yellow;
ConsoleColor mauNen = ConsoleColor.Black; // Hoặc Console.BackgroundColor để lấy màu nền hiện tại
Console.Clear();
Console.CursorVisible = false;
Console.WriteLine("Nhấn phím bất kỳ để dừng...");
for (int hang = 1; hang < 25 && hang < Console.WindowHeight; hang++) // Giới hạn bởi chiều cao console
{
if (Console.KeyAvailable) break; // Dừng nếu có phím nhấn
// Xóa vị trí cũ (nếu không phải dòng đầu)
if (hang > 1)
{
WriteXY(new string(' ', dongChu.Length), cotGiua, hang - 1, mauChu, mauNen);
}
// Vẽ ở vị trí mới
WriteXY(dongChu, cotGiua, hang, mauChu, mauNen);
Thread.Sleep(100); // Tốc độ rơi
}
Console.CursorVisible = true;
Console.ResetColor(); // Reset màu về mặc định
Console.SetCursorPosition(0, Math.Min(25, Console.WindowHeight)); // Di chuyển con trỏ xuống dưới
Console.WriteLine("\nHiệu ứng kết thúc.");
if(Console.KeyAvailable) Console.ReadKey(true); // Đọc phím nếu có
}
}Editor is loading...
Leave a Comment