(3)    第三步分析
人工智能的第三步分析的目的就是最终选出落子位置。
这里经过了前两步分析,双方都不可以制造活4,所以只要找半活4,找到就落子,中断分析。若不存在,则通过一个方法来先对电脑的第二步分析所得结果进行排序,此处排序主要根据优势大的棋子的个数来降序排序。若人类玩家即将活四,而电脑没有半活四以上的位置,则只能落子来堵。之后通过一个方法来根据自己设置的优先级判断哪一步棋子更优,进而选择该位置落子。
4.2    功能模块实现
下面介绍一下本系统各功能模块的实现方法。
4.2.1    游戏开始模块
游戏的入口,也就是进入游戏的第一个界面。这里使用一张五子棋的图片,简单明了,也给人友好的感觉。
第一次进入游戏时会进入此界面,同时启动播放背景音乐的服务。此时界面上会提示点击屏幕,如下图:
图 4-1点击幕后,出现两个按钮,如下图:
 图 4-2这里的按钮Button和文本框TextView是继承自View类的。用android.view.View.setVisibility(int visibility)方法可以设置它们的可见性。给它传递不同的参数可以完成这一功能。给按钮添加点击监听器onClickListener(),重写监听事件onClick()即可完成对按钮的相应点击事件。
4.2.2    游戏模式选择模块
在上图中,通过两个按钮进行游戏模式的选择,可以在人人对战和人机对战中选择一个模式进行游戏。这里是通过一个方法来判断游戏模式,给两个按钮添加不同的时间监听器,从而完成对游戏模式判断方法传递不同的参数,即可完成这一功能。
4.2.3    游戏界面模块
选择好游戏模式之后就将进入游戏界面。
在此界面上有一个自定义的组件Chessboard,它继承自View类,主要完成对棋盘的绘制。在绘制棋盘时,棋盘线的绘制通过Canvas.drawLine(float startX, float startY, float stopX, float stopY, Paint paint)方法完成,四个参数分别代表起点的横坐标,起点的纵坐标,终点的横坐标,终点的纵坐标。棋子的绘制则是通过Canvas.drawBitmap(Bitmap bitmap, float left, float top, Paint paint)方法完成,四个参数分别代表图像资源,图像显示左边位置,图像显示顶端位置,画笔对象。游戏会将双方最后一个落的子标记,实现方法就是在调用drawBitmap()方法时传递一个不同的bitmap对象。这些对象都是事先保存在项目的res目录下的drawable目录下。调用时需要提前调用android.content.Context.getResources()方法。人人对战模式中,双方不停通过触摸屏幕来下棋。实际上是将双方所有下的棋存放在一个list里面,每次刷新一下界面来完成下棋的动作。刷新界面调用android.view.View.invalidate()方法。当有一方连成5子时游戏结束,弹出对话框提示。如下图:
 图 4-4对话框android.app.AlertDialog,使用时先使用new关键字实例化一个AlertDialog.Builder对象,之后可以使用setTitle()方法设置对话框的标题,setIcon()方法设置图标。另外对话框的按钮也和普通的按钮一样,可以添加监听器,重写监听事件方法。此处的按钮未添加任何操作,点击只是返回棋盘界面,方便玩家观察棋局。如果想进行返回或重新开局等操作可以在菜单中进行。
人机对战在游戏模式上的原理基本和人人对战相同。
上一篇:C#视频DES和RSA双重加密解密算法软件模块的设计实现
下一篇:企业办公信息管理系统的设计与实施+ER图+需求分析

Android课程同步练习系统的设计

Android智能手机的交互式学习系统的设计

Android移动终端的网上便利...

Android移动互动学习系统学生端设计

Android移动互动学习系统教师端设计

Android大学生素质认证系统的设计

Android的网络借贷系统的设计

AT89C52单片机的超声波测距...

中国学术生态细节考察《...

C#学校科研管理系统的设计

10万元能开儿童乐园吗,我...

承德市事业单位档案管理...

神经外科重症监护病房患...

医院财务风险因素分析及管理措施【2367字】

国内外图像分割技术研究现状

志愿者活动的调查问卷表

公寓空调设计任务书