This article has been localized into Chinese by the community.
In this article series, we're building a complete Snake game from scratch. It makes sense to start with the Introduction and then work your way through the articles one by one, to get the full understanding.
If you want to get the complete source code for the game at once, to get started modifying and learning from it right now, consider downloading all our samples!
简介
对于这篇介绍文档的快速总结:我们将会用WPF实现一个经典的贪吃蛇游戏,最终的效果将会看起来这样:
想要创造自己的游戏常常是不少人(尤其是年轻人)被吸引去编程的原因,但他们常常会有两个问题:我怎么开始?我需要什么?其实,你需要一种编程语言,比如C#、C++,或者任何其他热门的语言;一旦你能熟练使用你比较喜欢的语言,你实际上也不需要任何其他东西了,只要从最基本的开始,添加一些像素到屏幕,这样到了某个时候,你就会得到一个能跑起来的游戏了!
然而,大多数的人更需要一些底层的东西的帮助,如果有一个内库或者框架,你为什么还要去手动添加像素到屏幕呢?所以你可以更专注地去构建一个好玩的游戏,这里有很多框架可以帮你做到这点,实际上,WPF 框架就是它们其中之一.
现在确实,WPF 不是一个当你想去创造一个游戏时一个最明智的选择-更准确地是一个框架更专注于创建一个面向业务的用户界面应用程序.但任然,这里有很多元素在WPF框架中你可以用它们去创建一个游戏,也许同样重要的是:你能获取到Windows系统的所有机制去绘制和控制一个窗口
因此,如果你想去创造一个简单的游戏,WPF实际上可能是一个不错的选择.至少它会对所有最基础的部分提供一个巨大的帮助,像创造一个窗口,绘制一个游戏的简单区域等等.如果你想要添加像高级3D图形和快速移动的物体等内容,可能需要更多的帮助来自于其他内库/框架,但是如果为了一个简单的游戏,它会做的很好-举个例子,一个经典的贪吃蛇游戏!
WPF贪吃蛇
我已经决定去创建一个基于WPF版本的非常经典的贪吃蛇游戏作为我的观点的一个证明.它将会用一个常规的WPF窗口作为游戏的区域,以及常规的WPF控件/形状去创造实际的游戏玩法.我选择贪吃蛇的原因是因为它比较容易去实现(这里没有太多的逻辑去编码)和因为它能够用简单图形像矩形和圆来实现,这很容易地能跟WPF框架一起使用.但是也因为它仍然是一个真正有趣的游戏,尽管它本质很简单!
如果你不知道贪吃蛇游戏,我只能够假设你在90年代末到2000年初从未拥有过一部诺基亚的手机.第一个贪吃蛇的版本是在此多年前被编写出来和演示的,但是当诺基亚决定他们所有的手机上都包含着他们自己的版本时,它变得轰动一时.
游戏玩法既简单又有趣::你移动一条虚拟的蛇在一个方向(左,右,上,下)去狩猎食物(有时是一个苹果).当你的贪吃蛇撞到苹果时,苹果就消失了,你的贪吃蛇长大和一个新的苹果出现在屏幕上.如果你撞到了墙上或者你自己的蛇尾巴,游戏结束,你必须从头开始.你吃的苹果越多,你得到的分数也会越高但是游戏将会越难不撞到自己的尾巴
游戏的玩法有很多变化-举个例子,每次你吃苹果的时候你的贪吃蛇移动的速度经常会提升,使之变得越来越难,但是不是所有的贪吃蛇都会去这么实现.另一个变化就是墙-一些实现会允许你穿过墙并从另外一边出去,而其他实现将会让游戏结束一旦你撞到墙上的时候.
在我们的WPF贪吃蛇中,墙很坚硬(贪食蛇撞到它们就会死),然后你每迟到一个苹果速度将会成倍增加,直到一定程度.
小结
在接下里的几篇文章,我们将会用WPF框架去实现一个经典贪吃蛇的很好的一个版本.我们将在下一篇文章从背景开始,最后,我们将拥有第一个基于WPF完整功能的游戏.
请注意,这虽然是一个WPF教程,我们将比正常情况下需要更多的C#代码,以实现游戏的逻辑等等.我将会试着去解释其中的大部分内容,但是如果你需要更多的关于C#的知识,不要忘记这里我们有一个很好的,完整的C#教程在我们的网站中!