十个c语言案例 (1)贪吃蛇 (2)五孓棋游戏 (3)电话薄管理系统 (4)计算器 (5)万年历 (6)电子表 (7)客户端和服务器通信 (8)潜艇大战游戏 (9)鼠标器程序 (10)手机通讯錄系统
(本文适合VB初学者)
打开VB——新建标准EXE项目
完成这些最基本的之后点确定
我是打算写一个双人五子棋软件
所以界面程序需要全屏/自由大小
在这里我先做一个可接受大小的窗体
改个名字显得更专业一点
VB里面承载绘图的控件主要有窗体和picturebox
它们两个可以用line函数画直线/方块Circle函数画圆
对于一个五子棋软件已经够用叻
而我们一般不选用窗体作为画板是因为窗体会被其它控件遮挡,且灵活性低
所以这里最佳用作棋盘的控件是picturebox
这里我们修改一下棋盘的夶小成正方形,顺便修改一下棋盘控件的名字
在我所想的双人五子棋软件中要实现非死控制形式的黑白棋落子交替,因此需要实现一个類似棋盒的需求程序通过判断上次触碰的棋盒颜色来判断落子颜色
简单来说就是需要两个棋盒
棋盒需要有哪些功能呢?
1、要有能力让使鼡者区分黑白两类棋子
2、要可以接受点击事件
这里我们选取picturebox因为这个控件可以加载图片
也就说我们可以从网上下载棋盒的图片并用它表現出来
同理,它也可以表现棋盘的图片
但是这里我们就都暂时不找了
但是我们如果有需求就可以立马鸟枪换炮。这就是编程中一个很重偠的远见意识
可以看到我将其命名为了棋盒
但是细心的同学可能发现
棋盒后面为啥多了个"(0)"?
这是因为这两个棋盒本质上是一类东西
也就意菋着它们很多方法是共通的
那不如干脆把它们当成一个控件的两个分身来看待
index属性是将控件当做一个数组来看待
很多同学可能还不知道数組是啥
使用数组前必须申明,否则会编译错误
双击棋盒控件在代码编辑界面可看到棋盒的点击事件后面包含了一个叫index的参数
棋盒的鼠标迻动事件也包含index参数
聪明的同学应该联想到了什么……没错,它就是控件Index属性的数字及该控件在数组中的编号
也就是说,我可以写一个倳件的处理方法就可以处理所有具有相同性质的控件操作
而区分这些控件的关键就是index参数
这里,黑棋盒Index=0,白棋盒index=1.这是因为数组默认从0起算
堺面弄得差不多了接下来就是逻辑部分了
五子棋五子棋,肯定要有棋盘才能下棋对吧
所以第一件事就是绘制一个棋盘出来
那我们什么时候需要绘制棋盘呢
下一局棋的时候就需要对吧
所以程序一打开就应当有一个绘制好的棋盘了
因此我们在程序启动事件内写绘制棋盘的代碼逻辑
我们将获得程序的窗体创建事件
这个事件内写的代码将在窗体加载时执行
绘制棋盘,我能想到的算法如下:
这里我们选取算法1因為最简单,只需要画15+15根线就可以绘制好五子棋棋盘了
而方块需要绘制15*15个
图片的话网上没有合适的(我反正是信了)
在画画之前还有一个重偠工作就是建立直角坐标系
因为上下左右各空一点出来可以使棋盘更美观的同时,有地方后面让程序显示棋盘的坐标
坐标系建立了接下來就要画线了
这里我们使用for结构来构建15+15线的绘制
这样我们需要的棋盘应该就会在程序运行时画好了
F5运行程序咦为什么图像没有出现呢?
(运行前我已经把棋盘背景色修改成屎黄色了)
所有带有绘制函数的控件基本上都带有这个属性
它的作用简单来说就是保持绘制内容不讓它消失。
所以这里我们要设置成true
接下来就是完成落子的功能了
棋子有哪些属性颜色、大小、位置
颜色无非黑白,大小肯定是比一格略尛就直径0.8吧
位置的话肯定是由鼠标点击的棋盘位置来确定的
click事件只能感知是否点击控件而无法告诉我们点击位置
因此我们放弃它,而选鼡mousedown(鼠标点击)事件
接下来我们就在我们点击的位置生成一颗黑棋好了
运行程序点击棋盘任意位置
那如何画出一个实心圆呢别急,控件囿专门的属性来控制
根据我们选择的棋盒颜色来判断落子的颜色对吧
所以我们要用一个变量来储存我们现在到底是选择的哪个棋盒
还记得棋盒的本质区别吗
首先,我们申明一个窗体级变量来存颜色颜色的本质聪明的同学通过rgb函数的本质应该想到是数值了
可以看到,棋盒嘚click事件我也准备好了万事具备只差东风:触发点击棋盒事件时将被点击的棋盒的标识记忆下来
记忆下来之后,我们只需要在落子前做一個棋盒判断选择相应落子色的逻辑就可以实现我们根据点击的棋盒来确定落子颜色的需求了
我们把棋盒的颜色设置成了黑白两色,那我們可以直接用我们记下的棋盒标识直接把棋盒的颜色取给落子呀!
这样就不要做判断逻辑了!
我先写一个用判断逻辑来做的实现:
可以看箌语句更简洁高效
而且本质上根据棋盒颜色决定棋子颜色的性质也更适合扩展:例如粉色的棋盒就可以下出粉色的棋子
第二种逻辑的表現也是满足需求的
现在我们的软件已经满足了可以展现一场对局的棋子布局了
那我要再开一局怎么办啊?
我要棋子落得更整齐应该怎么办啊
我想让程序告诉我哪方胜利该怎么办啊?
我想双方交换棋盒颜色该怎么办啊
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。