对于 C# 编程新手,学习语法和框架是必要的,但是如何将它们灵活地运用到实际项目中,是一个更高层次的挑战。如果只是死记硬背语法规则和框架用法,而没有足够的编程实践,很难提高编程水平和逻辑思维。这个时候,阅读一些优秀的开源项目,可以让我们从中学习到别人的编码风格、代码组织方式,代码逻辑编写等等,从而提升自己的 C# 语言能力和对 dotnet 框架的掌握。本文要推荐给大家的,是一个非常有趣且适合新手入门的控制台游戏项目。这个项目是 dotnet 组织下的一个开源项目,里面包含了许多经典游戏,这些游戏都是用 C# 语言编写的,而且只用到了基础控制台功能,没有涉及到复杂的图形界面或者网络通信等技术。因此,这个项目对于前置知识要求很低,只要你掌握了 C# 的基本语法和数据结构,就可以轻松地阅读和理解它们。同时,这些游戏又非常有趣和富有挑战性,你可以在玩游戏的同时学习到很多编程技巧和逻辑思路。这个项目看起来十分适合新手阅读和学习

项目地址: https://github.com/dotnet/dotnet-console-games

可以使用 git 命令将整个代码仓库拉下来,或者是在 github 上使用 zip 包方式下载整个项目的代码。如卡下载这一步了,还请自行学习 git 的基础使用方法。在阅读和运行这些 C# 控制台游戏项目之前,你需要准备一个合适的开发环境。我强烈建议你使用最新的 VisualStudio 版本,比如编写这篇博客时最新的 VisualStudio 2022 版本,来编写和调试 C# 代码。请确保是在正常的 https://visualstudio.microsoft.com/ 官网下载的 VisualStudio 最新版本工具。不要使用旧的 VisualStudio 版本,比如 VisualStudio 2015 等。因为我们是学习最新的 C# 语言和 dotnet 框架,不是去挖掘古代文明,不要用过时的工具来限制自己的学习效果。而且使用过时的工具也会遇到好多奇奇怪怪的问题,比如兼容性、性能、稳定性等等。如果你在技术群里提出这些问题,可能会让大佬们不开森,因为他们觉得你没有跟上时代的步伐,还在用落伍的工具。所以,为了你自己的学习效果和体验,还是尽快升级到最新的 VisualStudio 版本吧

接下来,我会简单地介绍一下这个开源项目里面的一些游戏,并给出它们的代码链接和运行效果图。你可以点击链接下载或者克隆代码到本地运行,并且尝试着阅读和理解它们。如果你有兴趣,你甚至可以尝试着修改或者增加一些功能,让游戏更加完善或者有趣

贪吃蛇:这是一个非常经典且简单的游戏,在控制台中用字符表示蛇和食物,并且通过键盘控制蛇的移动方向。每当蛇吃到食物时,蛇就会变长,并且食物会随机出现在其他位置。如果蛇碰到自己或者边界,则游戏结束。这个游戏主要涉及到了数组、链表、随机数等数据结构和算法。 运行效果图:

<<<<<<^
v ^
v >>>
v
v>>>>>>>>>>>>>

在这个贪吃蛇项目里面,使用 + 代表食物,使用箭头类符号表示蛇。可以通过 修改方向

飞镖投掷游戏:在控制台中用字符表示飞镖和靶子,并且通过键盘控制飞镖的角度和力度。每次投掷后,根据飞镖落点的不同区域,会得到不同的分数。这个游戏主要涉及到了数学、物理、随机数等知识和算法,大概不到 500 行的代码量

以下是游戏运行的界面示例

╔═══════╤═══════╤═══════╤═══════╤═══════╗
║ │ │ │ │ ║
║ 1 │ 2 │ 3 │ 2 │ 1 ║
║ ┌┴┐ ┌─┴─┐ ┌─┴─┐ ┌┴┐ ║
╟──────┤6├────┤ 5 ├───┤ 5 ├────┤6├──────╢
║ └┬┘ ○ └─┬─┘ └─┬─┘ └┬┘ ║
║ 2 │ 3 │ 4 │ 3 │ 2 ║
║ │ │ ┌─○ │ │ ║
╟───────┼───────┼●─┤9├──┼───────┼───────╢
║ │ │ └─┘ │ │ ║
║ 2 │ 3 │ 4 ● │ 3 │ 2 ║
║ ┌┴┐ ○─┴─┐ ┌─┴─┐ ┌┴┐ ║
╟──────┤6├────┤ 5 ├───┤ 5 ├────┤6├──────╢
║ └┬┘ └─┬─┘ └─┬─┘ └┬┘ ║
║ 1 │ 2 │ 3 │ 2 │ 1 ║
║ │ │ │ │ ║
╚═══════╧═══════╧═══════╧═══════╧═══════╝ Your darts: ○
Computer's darts: ●

乒乓球游戏:在控制台中用字符表示球和挡板,并且通过键盘控制挡板的上下移动。每次球碰到挡板或者边界时,会反弹并且改变方向。每次越过对方的挡板,就会得到一分。第一个得到三分的玩家就是胜利者。这个游戏主要涉及到了循环、判断、数组等知识和算法,大概 200 行的代码量。运行游戏界面大概如下

                  ^
/ \
█ / \
█ / \
█# / \
█ \ / O █
\ / █
\ / █
\ / █
\ /
V

在这里,我想和大家分享一下我阅读这些 C# 控制台游戏项目的一些心得和体会。首先,我觉得这些项目都非常有趣和有教育意义,它们让我看到了 C# 语言和 dotnet 框架的强大和灵活,以及控制台程序的魅力和可能性。我从中学习到了很多 C# 编程的技巧和知识,比如如何使用数组、链表、枚举、位运算等数据结构和算法,如何使用循环、判断、递归等控制流程,如何使用随机数、数学函数、物理公式等工具类,如何使用控制台的输入输出、颜色、光标等功能,以及如何使用面向对象、设计模式、异常处理等编程范式和技术。这些项目让我对 C# 语言和 dotnet 框架有了更深入的理解和掌握,也提高了我的编程水平和逻辑思维。其次,我觉得这些项目都非常富有挑战性和创造性,它们让我看到了编程的乐趣和艺术。我在玩这些游戏的同时,也在思考它们是如何实现的,它们背后的原理和思路是什么,它们有什么优点和缺点,它们可以如何改进和优化。我也尝试着修改或者增加一些功能,比如增加难度、增加音效、增加动画等等。我发现这些游戏都有很多可以扩展和改进的空间,只要你有想法和创意,你就可以把它们变得更加完善或者有趣。这些项目让我体验到了编程的乐趣和艺术,也激发了我的创造力和想象力。

最后,我觉得这些项目都非常值得推荐给大家,无论你是 C# 编程新手还是老手,无论你是想学习 C# 语言还是想玩一玩控制台游戏。这些项目都可以给你带来很多收获和乐趣,也可以让你对 C# 语言和 dotnet 框架有一个更全面和深入的认识。如果你对这些项目感兴趣,不妨去试一试吧。相信你一定会有很多惊喜和发现

dotnet C# 推荐一个适合新手入门阅读学习的控制台游戏项目的更多相关文章

  1. 问题集录--新手入门深度学习,选择TensorFlow 好吗?

    新手入门深度学习,选择 TensorFlow 有哪些益处? 佟达:首先,对于新手来说,TensorFlow的环境配置包装得真心非常好.相较之下,安装Caffe要痛苦的多,如果还要再CUDA环境下配合O ...

  2. Webpack新手入门教程(学习笔记)

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 30.0px Helvetica; color: #000000 } ...

  3. CSS超全笔记(适合新手入门)

    CSS CSS初识 CSS(Cascading Style Sheets) 美化样式 CSS通常称为CSS样式表或层叠样式表(级联样式表),主要用于设置HTML页面中的文本内容(字体.大小.对齐方式等 ...

  4. 最适合新手入门的SpringCloud教程 6—Ribbon负载均衡「F版本」

    SpringCloud版本:Finchley.SR2 SpringBoot版本:2.0.3.RELEASE 源码地址:https://gitee.com/bingqilinpeishenme/Java ...

  5. HTML笔记(适合新手入门)

    HTML Web 标准构成 Web标准不是某一个标准,而是由W3C和其他标准化组织制定的一系列标准的集合. 主要包括结构(Structure).表现(Presentation)和行为(Behavior ...

  6. 推荐net开发cad入门阅读代码片段

    转载自  Cad人生  的博客 链接:http://www.cnblogs.com/cadlife/articles/2668158.html 内容粘贴如下,小伙伴们可以看看哦. using Syst ...

  7. H5新标签(适合新手入门)

    H5新标签 文档类型设定 document HTML: sublime 输入 html:4s XHTML: sublime 输入 html:xt HTML5 sublime 输入 html:5 < ...

  8. 适合新手入门Spring Security With JWT的Demo

    Demo 地址:https://github.com/Snailclimb/spring-security-jwt-guide .欢迎 star! Spring Security 是Spring 全家 ...

  9. (新手入门,学习笔记)通过NPM进行Vue.js的安装

    NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,本文只介绍如何通过NPM进行安装Vue.js NodeJS官方网站:http://nodejs.cn/downlo ...

  10. 【强烈推荐】可能是最适合你的 Java 学习路线和方法

    如遇链接无法打开,建议使用 https://github.com/Snailclimb/JavaGuide/blob/master/docs/questions/java-learning-path- ...

随机推荐

  1. Linux快速入门(三)Linux文件管理

    Linux文件操作 head head命令用于显示文件的前几行内容,可以通过-num参数展示文件前num行的内容. root@ubuntu:~# ls bb.txt cc.txt snap root@ ...

  2. SqlSugar的几种连接方式

    1.最简单的使用 public class DatabaseService { private static readonly Lazy<SqlSugarClient> _db = new ...

  3. 记录--Openlayers 高德腾讯、百度、天地图坐标相互转换

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 在地图开发过程中,坐标的转换是很常用的功能,国内的话一般西安80(EPSG:4610).北京54(EPSG:2433)转WGS84比较多, ...

  4. uniapp 微信对接地图的三种操作

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 1.uni.getLocation 获取当前经维度 先上代码 let that = this // 获取用户是否开启 授权获取当前的地理位 ...

  5. TorchV的RAG实践分享(三):解析llama_index的数据存储结构和召回策略过程

    1.前言 LlamaIndex是一个基于LLM的数据处理框架,在RAG领域非常流行,简单的几行代码就能实现本地的文件的对话功能,对开发者提供了极致的封装,开箱即用. 本文以官方提供的最简单的代理示例为 ...

  6. Oracle 备份 还原 导入 导出 数据库

    导出数据 SQL> conn / as sysdba Connected. SQL> create directory lxw_dir as '/home/oracle'; Directo ...

  7. KingbaseES V8R6 创建索引create index concurrently被阻塞

    前言 CREATE INDEX CONCURRENTLY(CIC)是DBA们最常用的语句之一,它的好处是不阻塞DML语句. 但在大事务.长事务较多的系统,它可能被阻塞得很久. 本篇就从这个阻塞的案例开 ...

  8. Python BeautifulSoup 简单使用方法

  9. 测试开发之系统篇-Docker容器安装

    前面文章我们讲到,容器是运行在宿主机上的一个进程,多个容器之间使用同一个宿主机上的操作系统内核.此处以Ubuntu20.04系统为例,介绍Docker容器引擎的安装过程. 安装 安装依赖. sudo ...

  10. Jetpack Compose(4)——重组

    目录 一.状态变化 1.1 状态变化是什么 1.2 mutableStateListOf 和 mutableStateMapOf 二.重组的特性 2.1 Composable 重组是智能的 2.2 C ...