Theevilspirit
十五子游戏开始界面,任意键进入十五子游戏,暂停按钮进入屏保。开始是十五个按钮按顺序,排成四排。点击开始按钮进入游戏,十五个按钮顺序被打乱,通过点击空白块周围的任意按钮,将该按钮移动到空白位置。以此来使十五个按钮按照正确的顺序重新排列,游戏获得胜利!
游戏开始界面是老式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组件可以实现很多不断变化的效果,唯一的缺点就是很耗内存。通过十五子游戏,让我更加体会到了写代码时要细心,很可能一个细微的错误,因为刚开始的不注意,使后来找错误浪费了大量的时间。
keyboard_arrow_left上一篇 : 基于Java实现的万年历 基于c语言easyX实现的推箱子游戏 : 下一篇keyboard_arrow_right