This article has been localized into Chinese by the community.
If you are fluent in Chinese, then please help us - just point to any untranslated element (highlighted with a yellow left border - remember that images should have their titles translated as well!) inside the article and click the translation button to get started. Or have a look at the current translation status for the Chinese language.
If you see a translation that you think looks wrong, then please consult the original article to make sure and then use the vote button to let us know about it.
Metadata
Please help us by translating the following metadata for the article/chapter, if they are not already translated.
If you are not satisfied with the translation of a specific metadata item, you may vote it down - when it reaches a certain negative threshold, it will be removed.
Please only submit an altered translation of a metadata item if you have good reasons to do so!
Please login to translate metadata!
Already logged in? Please try reloading the page!
More info...
Looking for the original article in English?
创建一个游戏:WPF贪吃蛇:
Chapter introduction:
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贪吃蛇:让它看起来更像个游戏在这系列文章的末尾期间,我们已经构建了一个在WPF中很酷的贪吃蛇游戏。我们已经实现了全部游戏-机制,结果是一个功能齐全的游戏。然而,这无疑要有一些改善,因为当前实现非常简单,因此,在下篇文章,我将会对我们的WPF贪吃蛇游戏做出一系列的改善,在这篇文章,我将会专注于让我们的游戏看起来更像个实际游戏!
正如现在看到那样,有着一个默认的窗体-样式/标题栏,我们的实现看起来不太像一个游戏,然而,我们过去需要标题栏去展示分数/速度信息,作为一个奖励,我们自动去获取默认的窗体按钮去最小化/最大化/关闭窗体:
此刻,我将想去完全移除默认Window标题栏,而是实现我们自己的顶部状态栏,来显示当前分数和速度,也实现一个专门的关闭按钮。所有这些都应该和当前游戏外观相匹配。对我们而言幸运的是,这是非常容易用WPF做到的。
添加一个自定义标题栏第一步就是去在Window的声明中添加一些属性和一个新的事件。这现在看起来像这样:
你将也会注意到我已经订阅了一个新的事件-MouseDown事件。原因是因为我们丢失了默认的标题栏,这里不再有任何方法去给用户拖拽游戏从屏幕一个点到其他的点。对我们幸运的是,这非常简单去重建行为,例如靠我们自己,自定义的标题栏。然而,因为它看起来不像正常的标题栏,用户可能会拒绝了解如何去拖动,因此我决定简单的去让整个窗体表面可拖动。因此,在你的Code-behind中,默认的Window_MouseDown事件处理器看起来像这样:
private void Window_MouseDown(object sender, MouseButtonEventArgs e){ this.DragMove();}有了这些,你的Window窗体无论你在哪里使用鼠标都能被拖动。下一步就是添加我们的自定义标题栏,去展示分数和速度,同时还有一个关闭按钮。Window XAML内部现在看起来像这样:
private void BtnClose_Click(object sender, RoutedEventArgs e){ this.Close();}我们过去实现了一个叫UpdateGameStatus()的方法,用来更新Window 标题属性-这个方法应该被改变用来使用新的TextBlock:
private void UpdateGameStatus(){ this.tbStatusScore.Text = currentScore.ToString(); this.tbStatusSpeed.Text = gameTickTimer.Interval.TotalMilliseconds.ToString();}我将会告诉你所有关于我们刚刚做的,但是首先,让我们看看游戏现在的样子:
这看起来有点更酷了,对吧?但是让我们解释我们刚刚做了什么:如你所见,原始的带有GameArea Canvas的Border控件,然而现在却已经变成被一个DockPanel包裹着。这让我们更简单以Grid 面板的形式附加我们的新的标题栏到Window的顶部
Gird用了一系列酷的WPF手法,这些技术已经在本教程的其他地方讨论过了:我们使用ColumnDefinition去分割区域成两半等大的区域(为了分数和速度)。加上一个自动大小的第三列给到关闭按钮。你也将注意到我们使用WPF样式去应用同样的视觉效果到所有TextBlock 控件去,由于Gird中定义了给TextBlock控件的样式,所有这些控件都应用同样的自定义字体,字体大小,颜色和粗体。
也注意到多容易去自定义我们的Button控件用来关闭窗体,完全匹配上游戏的其他视觉和感觉,简单的通过使用标准属性-WPF是非常灵活的!
小结在这篇文章中,我们已经让我们的WPF贪吃蛇实现看起来更像一个游戏,通过移除标准的Window外观和应用我们的自定义标题栏。在接下来的文章中,我们将会作出更多的改善!
Collision Detection
Previous
Improving SnakeWPF: Adding a high score list
Next
This article has been fully translated into the following languages:
Chinese
Czech
French
German
Italian
Portuguese
Russian
Spanish
Ukrainian
Vietnamese
Is your preferred language not on the list? Click here to help us translate this article into your language!
- 电阻四色环怎么看?颜色顺序与计算方法详解本文介绍电阻四色环的读取方法,包括颜色顺序、数值计算和注意事项,为电子设计提供基础支持。掌握这些技巧能准确识别电阻值,避免常见...
- 使用 Fluxai.art 动漫头像制作器,轻松制作专属动漫头像使用 Fluxai.art 动漫头像制作器,轻松制作专属动漫头像上传自拍或输入创意,快速免费生成个性化动漫头像,轻松有趣! Fluxai.art 动漫头像制作...
- 瑞典国家队大名单:伊萨克、伊兰加、林德洛夫在内8月30日,瑞典公布了最新一期国家队大名单,伊萨克、林德洛夫、伊兰加、库卢塞夫斯基、福斯贝里等入选。瑞典队将在9月份迎来与爱沙尼亚和...
- 京东总部租房群来了!附赠黑中介名单京东总部租房群来了!附赠黑中介名单 当初体会到了找房子的心酸,为了帮助其他小伙伴更放心的找房子,建了几个京东租房群,要进群的jder...
- 《魔兽世界》王者印记获取方法介绍魔兽世界王者印记怎么获得?王者印记是魔兽世界当中的一种材料,很多玩圣骑士的小伙伴想要获得一些但是不知道获取方法是什么。下面小编就...
- 英雄联盟加里奥皮肤手感排行,风执事价格及特效点评英雄联盟加里奥的皮肤还是比较多的,玩家选择的余地也非常多,毕竟加里奥除了原皮正义巨像外,还有剪纸仙灵、龙族卫士、地狱火、鸡里奥...
- 蓝月传奇职业怎么选择 职业分析攻略闯荡蓝月传奇时,首先要做的自然就是选择职业了。而三大职业又各自有特色,所以对于新手而言,职业选择也是一件很烦的事情。 就目前而言...
- 小龙虾究竟是怎么进入中国的?“克螯”就是小龙虾,学名克氏原螯虾(Procambarus clarkii)原产于北美洲,主要栖息地是墨西哥湾沿岸,特别是密西西比河口附近的区域,也就是...
- dnf包赔多久一、引言 《地下城与勇士》(dnf)是一款备受欢迎的在线角色扮演游戏。在游戏中,玩家需要保护自己的账号安全,防止物品丢失或账号被封。...
- 电脑限制插U盘如何解开?U盘解禁方法|USB端口解除方法U盘作为数据传输的重要工具,其便捷性不言而喻。 然而,当电脑对U盘的使用设置限制时,无疑给日常工作带来了诸多不便。面对这一困境,你...