SadConsole 是一个专为 .NET 平台设计的控制台应用和游戏开发库,它提供了一个引擎来模拟控制台和命令提示符样式的图形,简化了基于文本的游戏和应用程序的创建。这个库特别适合用来制作 roguelike 游戏、终端风格的应用程序以及其他需要处理字符网格和ASCII图形的项目,它以通用方式构建,本身不进行任何渲染,需要游戏引擎或其他渲染库才能绘制 SadConsole 游戏。
主要特性
- 跨平台支持:SadConsole 支持 Windows, Linux 和 macOS,这使得开发者可以轻松地在不同操作系统上运行他们的游戏或应用。
- 基于 MonoGame:SadConsole 构建在 MonoGame 之上,后者是一个开源的游戏框架,这意味着它可以利用 MonoGame 提供的强大图形能力和工具集。
- 简单的 API:提供了易于使用的 API 来管理控制台窗口、绘制文本和符号、处理用户输入等。对于想要快速开始而不必深入了解底层细节的新手来说非常友好。
- 丰富的控件集合:包括按钮、标签、文本框、列表框等各种 UI 控件,可以帮助构建复杂的用户界面。
- 自定义绘制:允许开发者通过继承 Console 类来自定义绘制逻辑,从而实现更复杂的效果如动画、特殊效果等。
- 输入处理:提供了一套全面的键盘和鼠标事件处理机制,让开发者能够捕捉用户的交互并做出响应。
- 集成编辑器:内置了一个简单的文本编辑器控件,可用于创建可编辑的文本区域。
- 字体和颜色配置:支持多种字体样式,并且可以通过简单的调用来改变文本的颜色和背景色。
- 扩展性强:由于其模块化设计,SadConsole 可以很容易地被扩展以添加新的功能或修改现有行为。
安装使用
有两种使用SadConsole的方法:
1、使用项目模板来创建SadConsole类型的项目,运行以下命令来安装SadConsole的项目模板
dotnet new --install SadConsole.Templates
模板安装完成后,就可以在新建项目时选择SadConsole类型的项目。
2、直接添加引用:创建一个.net 6以上的控制台项目,之后使用Nuget包管理器添加 SadConsole.Host.MonoGame 和 MonoGame.Framework.DesktopGL 的引用,然后修改项目文件,结构如下:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<RootNamespace>SadConsoleGame</RootNamespace>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MonoGame.Framework.DesktopGL" Version="3.8.1.303" />
<PackageReference Include="SadConsole.Host.MonoGame" Version="10.0.3" />
</ItemGroup>
<ItemGroup>
<Using Include="SadConsole" />
<Using Include="SadRogue.Primitives" />
<Using Include="SadConsole.Console" Alias="Console" />
</ItemGroup>
</Project>
然后添加一个类,名称随意,此处举例为RootScreen,其中可以加入自定义的界面代码:
class RootScreen : ScreenObject
{
private ScreenSurface _mainSurface;
public RootScreen()
{
_mainSurface = new ScreenSurface(Game.Instance.ScreenCellsX, Game.Instance.ScreenCellsY);
_mainSurface.FillWithRandomGarbage(_mainSurface.Font);
_mainSurface.Fill(new Rectangle(3, 3, 23, 3), Color.Violet, Color.Black, 0, Mirror.None);
_mainSurface.Print(4, 4, "Hello from SadConsole");
Children.Add(_mainSurface);
}
}
之后修改Program.cs,在启动时运行RootScreen。
using SadConsole.Configuration;
Settings.WindowTitle = "My SadConsole Game";
Builder gameStartup = new Builder()
.SetScreenSize(90, 30)
.SetStartingScreen<RootScreen>();
Game.Create(gameStartup);
Game.Instance.Run();
Game.Instance.Dispose();
之后就可以根据需要编写自己的程序或游戏逻辑进行开发了。
官方源代码的Sample文件夹包含各种示例程序可以参考学习。
官网地址