dotnet C# 推荐一个适合新手入门阅读学习的控制台游戏项目
对于 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# 推荐一个适合新手入门阅读学习的控制台游戏项目的更多相关文章
- 问题集录--新手入门深度学习,选择TensorFlow 好吗?
新手入门深度学习,选择 TensorFlow 有哪些益处? 佟达:首先,对于新手来说,TensorFlow的环境配置包装得真心非常好.相较之下,安装Caffe要痛苦的多,如果还要再CUDA环境下配合O ...
- Webpack新手入门教程(学习笔记)
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 30.0px Helvetica; color: #000000 } ...
- CSS超全笔记(适合新手入门)
CSS CSS初识 CSS(Cascading Style Sheets) 美化样式 CSS通常称为CSS样式表或层叠样式表(级联样式表),主要用于设置HTML页面中的文本内容(字体.大小.对齐方式等 ...
- 最适合新手入门的SpringCloud教程 6—Ribbon负载均衡「F版本」
SpringCloud版本:Finchley.SR2 SpringBoot版本:2.0.3.RELEASE 源码地址:https://gitee.com/bingqilinpeishenme/Java ...
- HTML笔记(适合新手入门)
HTML Web 标准构成 Web标准不是某一个标准,而是由W3C和其他标准化组织制定的一系列标准的集合. 主要包括结构(Structure).表现(Presentation)和行为(Behavior ...
- 推荐net开发cad入门阅读代码片段
转载自 Cad人生 的博客 链接:http://www.cnblogs.com/cadlife/articles/2668158.html 内容粘贴如下,小伙伴们可以看看哦. using Syst ...
- H5新标签(适合新手入门)
H5新标签 文档类型设定 document HTML: sublime 输入 html:4s XHTML: sublime 输入 html:xt HTML5 sublime 输入 html:5 < ...
- 适合新手入门Spring Security With JWT的Demo
Demo 地址:https://github.com/Snailclimb/spring-security-jwt-guide .欢迎 star! Spring Security 是Spring 全家 ...
- (新手入门,学习笔记)通过NPM进行Vue.js的安装
NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,本文只介绍如何通过NPM进行安装Vue.js NodeJS官方网站:http://nodejs.cn/downlo ...
- 【强烈推荐】可能是最适合你的 Java 学习路线和方法
如遇链接无法打开,建议使用 https://github.com/Snailclimb/JavaGuide/blob/master/docs/questions/java-learning-path- ...
随机推荐
- FastWiki(增强AI对话功能)企业级智能客服功能介绍
知识库对话功能 什么是知识库对话? 我们需要找到AI的知识能力是有限的他们的知识都截止于他们训练数据的时间,你提问他们更新的数据的时候他们就会出现乱回复.而知识库则是利用Prompt给于AI更多的知识 ...
- 记一次 .NET某半导体CIM系统 崩溃分析
一:背景 1. 讲故事 前些天有一位朋友在公众号上找到我,说他们的WinForm程序部署在20多台机器上,只有两台机器上的程序会出现崩溃的情况,自己找了好久也没分析出来,让我帮忙看下怎么回事,就喜欢这 ...
- LOTO示波器选型指南
LOTO示波器选型指南 LOTO示波器属于虚拟示波器,产品主要基于USB接口的,所以使用LOTO示波器产品需要配备一台Windows电脑或者Android(安卓)智能手机/平板. 针对一些特殊应用的工 ...
- echarts中实现多个label
先来个效果图 如果你刚好需要实现这种效果,那么可以瞅一瞅了 我要开始水文了 如图所示,图中顶部部分文字乍一看好像是独立于柱状图,显示在最顶上,其实它也是由柱状图模拟而成. 只是吧图形相关属性做了隐藏, ...
- 关于GDPR体系文件介绍,介绍GDPR体系文件的内容和意义
随着数字化时代的到来,个人数据保护成为了一个日益受到关注的问题.欧盟于2018年5月25日颁布了"通用数据保护条例"(GDPR),旨在加强对欧洲公民个人数据的保护.GDPR对企业和 ...
- Spring Cloud项目搭建版本选择
1.查看spring cloud的版本 https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4 ...
- KingbaseES 对象重命名需要注意的事项
前言: Oracle 对视图或同义词依赖的底层对象表,如果被重命名,则视图或同义词失效.Oracle DBA 经常利用这个特点,对表进行重建,在重建过程中,无法通过视图或同义词访问,这就保证了数据的安 ...
- HTTP与WebSocket/WebDAV
WebSocket WebDAV
- rsync 运维利器,同步工具
NAME rsync - faster, flexible replacement for rcp SYNOPSIS rsync [OPTION]... SRC [SRC]... DEST rsync ...
- #动态规划#CF889E Mod Mod Mod
题目传送门 分析 这道题有一个很妙的地方就是将一段前缀整体一起做. 设 \(dp[i][j]\) 表示\(x\) 被前 \(i\) 个数取模后答案最大,并且 \(j\) 为取得此答案的最大值 最后再对 ...