基于C#实现的十五子游戏

Theevilspirit

发布日期: 2019-06-01 10:37:03 浏览量: 338
评分:
star star star star star star star star star_border star_border
*转载请注明来自write-bug.com

一、项目介绍

十五子游戏开始界面,任意键进入十五子游戏,暂停按钮进入屏保。开始是十五个按钮按顺序,排成四排。点击开始按钮进入游戏,十五个按钮顺序被打乱,通过点击空白块周围的任意按钮,将该按钮移动到空白位置。以此来使十五个按钮按照正确的顺序重新排列,游戏获得胜利!

二、设计过程

游戏开始界面是老式windows电脑的屏保,通过Timer组件和五个Lable控件以及随机数对象Random来实现。设置timer的Interval属性,每0.1秒变换lable的BackColor,Left,Top属性,来达到lable背景颜色不断变换,位置移动的效果,当lable移动到窗体边缘就以相反的方向进行移动,从而实现类似屏保的开始界面。

游戏通过两个for循环创建了4*4的按钮数组,在for循环里设置了按钮的大小,坐标等相关属性,然后通过this.Controls.Add方法把按钮添加到窗体。当点击按钮时通过Button btn = sender as Button,来找到被点击的按钮,然后判断该按钮是否与空白按钮相邻,若相邻则把按钮上面的数字和可见性进行交换,从而实现将按钮移动到空白位置的视觉效果。每移动一次就判断按钮顺序是否正确,若正确则提示成功。为了防止玩家多次移动仍不能成功,右下角的按钮通过Controls.Remove方法删除所有按钮,然后重新创建来实现对所有按钮进行排序。

暂停功能也是通过timer组件,用g.DrawEllipse不停的在窗口绘制大小依次变大的圆来实现一个动态变换的效果。

三、使用说明

游戏开始界面

任意按键进入游戏

点击开始按钮,开始游戏

点击空白块周围的按钮进行移动,体验游戏

点击暂停按钮,暂停游戏

游戏成功!

四、总结

之前相同的控件一直都是从工具栏拖到窗体,非常费时和费力。通过上网查询发现在创建多个类似按钮的时候,可以通过循环函数创建按钮,然后通过this.Controls.Add方法把按钮添加到窗口,这样就可以避免拖多个相同的控件到界面上,这个感觉非常有用。还有就是通过Timer组件可以实现很多不断变化的效果,唯一的缺点就是很耗内存。通过十五子游戏,让我更加体会到了写代码时要细心,很可能一个细微的错误,因为刚开始的不注意,使后来找错误浪费了大量的时间。

上传的附件 cloud_download 基于C#实现的十五子游戏.7z ( 372.22kb, 1次下载 )
error_outline 下载需要11点积分

发送私信

不要靠提高嗓门获取自己的存在感,那样只是虚张声势

15
文章数
17
评论数
最近文章
eject