C#语言编写的仅有8KB大小的简易贪吃蛇开源游戏

news/2024/10/5 12:31:59/文章来源:https://www.cnblogs.com/Can-daydayup/p/18274313

前言

今天大姚给大家分享一款由C#语言编写的仅有8KB大小的简易贪吃蛇开源游戏:SeeSharpSnake。

项目特点

该仓库中的项目文件和脚本可以用多种不同的配置构建相同的游戏,每个配置生成的输出大小也不同。

项目源码运行

F5 运行 SeeSharpSnake项目,查看优秀效果:

 

构建不同大小版本的游戏

接下来我们使用dotnet 命令构建不同大小版本的游戏!!!

构建 65 MB 版本的游戏

dotnet publish -r win-x64 -c Release

构建 12 MB 版本的游戏

dotnet publish -r win-x64 -c Release /p:PublishTrimmed=true

注意以下构建需要配置其他组件

确保已安装 Visual Studio 2019/2022,并在 Windows SDK 中包含 C/C++ 开发工具(我们需要其中的一小部分 - 平台链接器和 Win32 导入库)。

构建 4.7 MB 版本的游戏

dotnet publish -r win-x64 -c Release /p:Mode=CoreRT

构建 1.2 MB 版本的游戏

dotnet publish -r win-x64 -c Release /p:Mode=CoreRT-ReflectionFree

构建 10 kB 版本的游戏

dotnet publish -r win-x64 -c Release /p:Mode=CoreRT-NoRuntime

构建 8 kB 版本的游戏

  1. 打开“适用于 VS 2019或者VS 2022 的 x64 本机工具命令提示符”(位于“开始”菜单中)。
  2. CD 进入存储库根目录

在你的计算机上查找 ilc.exe(CoreRT 提前编译器)。如果已完成上述任何生成输出的步骤 <= 4.7 MB,则ilc.exe将位于 NuGet 包缓存中(类似于 %USERPROFILE%\.nuget\packages\runtime.win-x64.microsoft.dotnet.ilcompiler\1.0.0-alpha-27402–01\tools )。

[PATH_TO_ILC_EXE]\ilc.exe zerosnake.ilexe -o zerosnake.obj --systemmodule:zerosnake --Os -g
link.exe /debug:full /subsystem:console zerosnake.obj /entry:__managed__Main kernel32.lib ucrt.lib /merge:.modules=.rdata /merge:.pdata=.rdata /incremental:no /DYNAMICBASE:NO /filealign:16 /align:16

项目源码地址

更多项目实用功能和特性欢迎前往项目开源地址查看👀,别忘了给项目一个Star支持💖。

  • 项目开源地址:https://github.com/MichalStrehovsky/SeeSharpSnake
  • 项目实现文章:https://medium.com/@MStrehovsky/building-a-self-contained-game-in-c-under-8-kilobytes-74c3cf60ea04

优秀项目和框架精选

该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没🤞)。

https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md

DotNetGuide技术社区交流群

  • DotNetGuide技术社区是一个面向.NET开发者的开源技术社区,旨在为开发者们提供全面的C#/.NET/.NET Core相关学习资料、技术分享和咨询、项目框架推荐、求职和招聘资讯、以及解决问题的平台。
  • 在DotNetGuide技术社区中,开发者们可以分享自己的技术文章、项目经验、学习心得、遇到的疑难技术问题以及解决方案,并且还有机会结识志同道合的开发者。
  • 我们致力于构建一个积极向上、和谐友善的.NET技术交流平台。无论您是初学者还是有丰富经验的开发者,我们都希望能为您提供更多的价值和成长机会。

欢迎加入DotNetGuide技术社区微信交流群👪

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/733441.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dotnet X11 调用 XRootWindow 是否耗时

本文将通过阅读 lib x11 代码告诉大家,调用 XRootWindow 函数是不耗时的,没有成本的在我阅读 Avalonia 和 CPF 和 UNO 框架的代码的时候,我发现了很多时候都是在需要用到 RootWindow 时,调用 XRootWindow 或 XDefaultRootWindow 获取 RootWindow 的值。此时我想着是否将 Ro…

C++

C++中的isalnum可以判断一个字符是否为字母或者十进制数; 需包含头文件cctype 函数原型:int isalnum(int_C); 通过实验可知,int_C可以为字符、数字; 并且返回值为int类型,判断为true则返回1,判断为false则返回0; 接下来介绍sizeof(string) string s; sizeof(s) …

记vscode无法启动解决办法

背景之前都好好的,突然就不行了,点击快捷方式或直接程序右击管理员运行均没有任何反应。处理方式(确认使用此解决办法可以看下方红字部分,是否也有类似提示):创建null服务。(启发站点:shellvon的回复):https://github.com/microsoft/vscode/issues/185298 步骤 1、要…

OOP第7-8次作业总结

前言: 时光飞快, 转眼就到了学期末尾。从第七次作业开始,作业便开始加难度了。第七次作业加了互斥开关和窗帘,但是这次的电子元件不能像之前简单的写如同写商品类这样简单的写出,需要思考如何设计这个电器类。并且,在加上上面两个类的基础上,电路开放了串联电路中有串联…

[C++ Primer] 泛型算法

记录了C++标准库提供的泛型算法相关重难点。泛型算法 初识泛型大多数算法定义在头文件algorithm中。标准库还在头文件numeric中定义了一组数值范型算法。那些只接受一个单一迭代器来表示第二个序列的算法,都假定第二个序列至少与第一个序列一样长。 // v2中的元素数目应该至少…

prometheus指标终端绘图工具

最近搞了一个prometheus 指标终端展示工具,有兴趣的可以试试:本文来自博客园,作者:charlieroro,转载请注明原文链接:https://www.cnblogs.com/charlieroro/p/18274557

CC4+CC5分析利用

CC4+CC5分析利用 CC4分析与利用 学了前面的cc2,其实cc4就是将cc2使用的InvokerTransformer替换成InstantiateTransformer来加载字节码(CC3里面有说)。 把最后调用的transform方法改为:Transformer[] transformers = new Transformer[]{new ConstantTransformer(TrAXFilter.…

DApp设计与开发 课程笔记(三):erc20 | erc721

笔记对应课程内容为成都信息工程大学区块链产业学院老师梁培利的DApp 设计与开发 07-09 课 笔记中提到的名词不做过多解释 不懂就搜!ERC-20区块链专业的学生需要熟知erc20的接口,不看代码的前提下能够独立完成,至少你要知道有哪些属性和函数接口。balanceof, address, balan…

大白话讲解会计科目

大白话讲解会计科目

15款主流项目进度软件对比

15好用的款主流项目进度管理软件:PingCode、Worktile、Trello、Tower、Asana、Smartsheet、Teambition、ClickUp、Wrike、Monday.com、Notion、禅道、飞书、云效、蓝凌。严格的进度管理有助于更好地控制项目进展,提升团队效率,最终实现项目成功。一个好的项目进度管理工具可…

《护士长的工作!》——开发日志

正文 2024/6/28 23:00 终于整完啦!开导开导!定个时间发布,睡觉咯... 2024/6/28 接下来是调音时间!大概就是加个bgm,然后把声优大大们的声音跟人物动画手动对齐,必要时还得去网上搜一搜音效给加上...然后音量大小调整到-6到-12dB区间balabala... 有时候会遇到音频和自己做…

nchu-oop训练集7~8总结

一、前言 训练集的练习已经到达了尾声,通过这些训练集,我们将进一步加深对OOP概念的理解,并学会如何运用这些原则来设计和开发更加灵活、可维护、可扩展的软件系统。在程序中,我们学习如何模拟不同类型的电路组件,如电源、开关、插座、灯具等,以及它们之间的连接方式和电…