模拟音游1.5 by优化更新
This commit is contained in:
parent
c3af5bd380
commit
ac00035e31
|
@ -1,6 +1,7 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection.Metadata;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
|
@ -10,11 +11,19 @@ public class ModeSwitch
|
|||
{
|
||||
public event Action<int>? Enter;
|
||||
private readonly string[] str = ["退出"];
|
||||
private readonly int mode = 0;
|
||||
public ModeSwitch(string title, string[] a, Action<int> Enter)
|
||||
private int mode = 0;
|
||||
// private bool zhuyi = false;//是否显示提醒词
|
||||
public ModeSwitch(string title, string[] a, Action<int> Enter) : this(title, a, Enter, string.Empty)
|
||||
{
|
||||
}
|
||||
public ModeSwitch(string title, string[] a, Action<int> Enter, string message)
|
||||
{
|
||||
this.message = message;
|
||||
this.Enter = Enter;
|
||||
str = a;
|
||||
new Thread(() =>
|
||||
{
|
||||
// Thread logic here
|
||||
PrintCentered(title);
|
||||
int windowWidth = Console.WindowWidth;
|
||||
for (int i = 0; i < str.Length; i++)
|
||||
|
@ -23,6 +32,18 @@ public class ModeSwitch
|
|||
// Console.WriteLine(paddedString);
|
||||
PrintCentered($"{str[i]}");
|
||||
}
|
||||
// 判断message是不是为空
|
||||
|
||||
if (message != string.Empty)
|
||||
{
|
||||
for (int i = 0; i < windowWidth; i++)
|
||||
{
|
||||
Console.Write('-');
|
||||
}
|
||||
Console.WriteLine();
|
||||
PrintCentered("按W/S或↑/↓选择或数字键选择,按Enter确定");
|
||||
Console.Write(message);
|
||||
}
|
||||
do
|
||||
{
|
||||
var A1 = CalculateActualLength($"{mode}.{str[mode]}");
|
||||
|
@ -61,7 +82,9 @@ public class ModeSwitch
|
|||
}
|
||||
mode = int.Max(0, int.Min(str.Length - 1, mode));
|
||||
} while (true);
|
||||
}).Start();
|
||||
}
|
||||
private string message = "";
|
||||
private static int CalculateActualLength(string text)
|
||||
{
|
||||
Encoding encoding = Encoding.UTF8;
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
|
||||
using System.Diagnostics;
|
||||
using System.Text;
|
||||
using ModelingMusic;
|
||||
|
||||
namespace Debug.ModelingMusic;
|
||||
public class Music
|
||||
{
|
||||
|
||||
public static string title = "模拟音游 1.5 by";
|
||||
//选择的模式
|
||||
private static int mode = 0;
|
||||
public Music()
|
||||
{
|
||||
Console.Clear();
|
||||
string[] str = ["退出", "启动", "测试下落", "指定字符串", "随机指定字符串下落", "扬声器节奏"];
|
||||
ModeSwitch.New("模拟音游 1.0 by ", str, (a) =>
|
||||
string[] str = ["退出", "启动", "测试下落", "指定字符串", "随机指定字符串下落", "**音游模式**"];
|
||||
ModeSwitch.New(title, str, (a) =>
|
||||
{
|
||||
Console.Clear();
|
||||
mode = a;
|
||||
|
@ -46,7 +47,8 @@ public class Music
|
|||
|
||||
setCharArry();
|
||||
switch (mode)
|
||||
{//默认模式
|
||||
{
|
||||
//默认模式
|
||||
case 1:
|
||||
new Thread(MusicDebug.Default).Start();
|
||||
break;
|
||||
|
@ -73,9 +75,10 @@ public class Music
|
|||
break;
|
||||
}
|
||||
case 5:
|
||||
new Thread(MusicDebug.MusicRhythm).Start();
|
||||
// new Thread(MusicDebug.MusicRhythm).Start();
|
||||
//MusicDebug.();
|
||||
break;
|
||||
_ = new MusicFrom();
|
||||
return;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -118,15 +118,6 @@ public class MusicDebug
|
|||
Thread.Sleep(100);
|
||||
};
|
||||
cap.StartRecording();
|
||||
// new Thread(() =>
|
||||
// {
|
||||
// while (Music.IsWhile)
|
||||
// {
|
||||
// // Console.Clear();
|
||||
// // Console.WriteLine("RMS Volume: " + rmsVolume);
|
||||
// Thread.Sleep(100);
|
||||
// }
|
||||
// }).Start();
|
||||
}
|
||||
|
||||
static float CalculateRMS(float[] samples)
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
namespace Debug.ModelingMusic;
|
||||
|
||||
public class MusicForm
|
||||
{
|
||||
}
|
117
ModelingMusic/MusicFrom.cs
Normal file
117
ModelingMusic/MusicFrom.cs
Normal file
|
@ -0,0 +1,117 @@
|
|||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Text;
|
||||
using Debug;
|
||||
using Debug.ModelingMusic;
|
||||
|
||||
namespace ModelingMusic;
|
||||
|
||||
public class MusicFrom
|
||||
{
|
||||
private long time = 0;
|
||||
|
||||
public MusicFrom()
|
||||
{
|
||||
setCharArry();
|
||||
new Thread(PrintCharArray).Start();
|
||||
}
|
||||
|
||||
char[] jianpan = { 'D', 'F', 'G', ' ', 'J', 'K', 'L' };
|
||||
public void PrintCharArray()
|
||||
{
|
||||
var stopwatch = new Stopwatch();
|
||||
|
||||
int frameCount = 0;
|
||||
double totalTime = 0;
|
||||
int i; int j;
|
||||
// 获取字符数组的行数和列数
|
||||
var a = Program.chars.GetLength(0);
|
||||
var b = Program.chars.GetLength(1);
|
||||
var buffer = new StringBuilder();
|
||||
ConsoleColor xiantiaoColor = Program.random.Next(0, 2) == 0 ? ConsoleColor.Red : ConsoleColor.Blue;//线条的颜色
|
||||
while (Program.IsWhile)
|
||||
{
|
||||
stopwatch.Restart();
|
||||
Console.SetCursorPosition(0, 0);// 设定光标位置
|
||||
Console.Clear();
|
||||
buffer.Clear();
|
||||
for (i = 0; i < a; i++)
|
||||
{
|
||||
for (j = 0; j < b; j++)
|
||||
{
|
||||
//Console.ForegroundColor = Program.chars[i, j].Color;
|
||||
//Console.Write($" {Program.chars[i, j].Char} ");
|
||||
|
||||
buffer.Append(Program.chars[i, j].Char);
|
||||
time++;
|
||||
if (time > 100000)
|
||||
{
|
||||
GC.Collect(); time = 0;
|
||||
}
|
||||
}
|
||||
buffer.AppendLine();
|
||||
//Console.WriteLine();
|
||||
}
|
||||
Console.ForegroundColor = ConsoleColor.DarkBlue;
|
||||
Console.Write(buffer.ToString());
|
||||
if (time % 1000 == 0)
|
||||
{
|
||||
xiantiaoColor = Program.random.Next(0, 2) == 0 ? ConsoleColor.Red : ConsoleColor.Blue;
|
||||
}
|
||||
// Console.ForegroundColor = (ConsoleColor)random.Next(0, 16);
|
||||
Console.ForegroundColor = xiantiaoColor;
|
||||
buffer.Clear();
|
||||
for (i = 0; i < b; i++)
|
||||
{
|
||||
buffer.Append('-');
|
||||
}
|
||||
// 打印ASDF HJKL
|
||||
buffer.AppendLine();
|
||||
// int totalLength = 50;
|
||||
int totalAs = jianpan.Length;
|
||||
int spaceBetweenAs = (b - totalAs) / (totalAs - 1);
|
||||
|
||||
for (i = 0; i < totalAs; i++)
|
||||
{
|
||||
for (j = 0; j < spaceBetweenAs / 2; j++)
|
||||
{
|
||||
buffer.Append(' ');
|
||||
}
|
||||
buffer.Append(jianpan[i]);
|
||||
for (j = 0; j < spaceBetweenAs / 2; j++)
|
||||
{
|
||||
buffer.Append(' ');
|
||||
}
|
||||
}
|
||||
|
||||
Console.Write(buffer);
|
||||
// 停止计时并计算本帧的处理时间
|
||||
stopwatch.Stop();
|
||||
double elapsedMilliseconds = stopwatch.Elapsed.TotalMilliseconds;
|
||||
totalTime += elapsedMilliseconds;
|
||||
frameCount++;
|
||||
// 计算帧率
|
||||
double fps = frameCount / (totalTime / 1000.0);
|
||||
// Console.ResetColor();
|
||||
Console.ForegroundColor = ConsoleColor.White;
|
||||
buffer.Clear();
|
||||
buffer.Append($" {fps:0} FPS ");
|
||||
Console.WriteLine(buffer);
|
||||
// 保持每秒约16.67ms(即大约60 FPS)的间隔
|
||||
// Thread.Sleep(Math.Max(0, 60 - (int)elapsedMilliseconds));
|
||||
//这样闪烁不会太严重
|
||||
Thread.Sleep(100);
|
||||
}
|
||||
}
|
||||
private void setCharArry()
|
||||
{
|
||||
for (int i = 0; i < Program.chars.GetLength(0); i++)
|
||||
{
|
||||
for (int j = 0; j < Program.chars.GetLength(1); j++)
|
||||
{
|
||||
Program.chars[i, j] = new Point(); // 初始化每个元素
|
||||
}
|
||||
// Console.WriteLine();
|
||||
}
|
||||
}
|
||||
}
|
11
Program.cs
11
Program.cs
|
@ -5,6 +5,7 @@ using System.Net;
|
|||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using Debug.ModelingMusic;
|
||||
using ModelingMusic;
|
||||
namespace Debug;
|
||||
|
||||
/// <summary>
|
||||
|
@ -23,7 +24,6 @@ public class Program
|
|||
Console.WriteLine(a);
|
||||
}
|
||||
|
||||
//开始计时
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
Console.Title = "Tools";//设置窗口标题
|
||||
|
@ -45,7 +45,7 @@ public class Program
|
|||
public Program()
|
||||
{
|
||||
Console.Clear();
|
||||
string[] str = ["退出", "抽卡", "搜索引擎", "下落字符", "小龙快跑", "贪吃蛇"];
|
||||
string[] str = ["退出", "抽卡", "搜索引擎", Music.title, "小龙快跑", "贪吃蛇"];
|
||||
var modeSwitch = new ModeSwitch("<--- 请选择你要执行的操作 --->", str, (a) =>
|
||||
{
|
||||
switch (a)
|
||||
|
@ -60,7 +60,8 @@ public class Program
|
|||
_ = new Mod();
|
||||
break;
|
||||
case 3:
|
||||
_ = new Music();
|
||||
// _ = new Music();
|
||||
_ = new MusicFrom();
|
||||
break;
|
||||
case 4:
|
||||
_ = new MinLong.Main();
|
||||
|
@ -72,9 +73,9 @@ public class Program
|
|||
printfLine("还没有这个功能");
|
||||
break;
|
||||
}
|
||||
});
|
||||
}, "作者:MuQing \n使用语言:C# \n使用IDE:VS Code \n使用框架:.NET 8.0 \n项目地址:https://git.coldmint.top/muqing/ModelingMusicForm.git");
|
||||
// modeSwitch.SetMessage(";");
|
||||
}
|
||||
|
||||
public static void KeyEndThread()
|
||||
{
|
||||
new Thread(() =>
|
||||
|
|
15
README.md
15
README.md
|
@ -48,10 +48,13 @@
|
|||
break;
|
||||
}
|
||||
});
|
||||
### 新增底部注意提醒词
|
||||
public ModeSwitch(string title, string[] a, Action<int> Enter, string message)
|
||||
### 输出
|
||||
请选择你要执行的操作:
|
||||
0.退出 >
|
||||
1.模块
|
||||
2.模块
|
||||
3.模块
|
||||
4.模块
|
||||
<--- 请选择你要执行的操作 --->
|
||||
- << 退出 >> -
|
||||
- 模块 -
|
||||
- 模块 -
|
||||
- 模块 -
|
||||
- 模块 -
|
||||
------------------------------
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
|
||||
|
||||
print(sum(range(1, 101)))
|
||||
print(sum(range(1, 101, 2)))
|
||||
print(sum(range(2, 101, 2)))
|
Loading…
Reference in New Issue
Block a user