欢迎来到天天文库
浏览记录
ID:38625590
大小:838.50 KB
页数:11页
时间:2019-06-16
《安卓欢乐五子棋人机大战报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验报告(2015/2016学年第2学期)课程名称实验名称安卓五子棋人机大战实验时间2016年4月13日指导单位指导教师学生姓名学号学院(系)专业10一、实验目的1.在棋盘上任意落下一颗子,计算机调用AI算法,能判断出最佳的落子位置并落子。2.程序能判断出输赢,结束游戏,停止落子。二、实验环境(实验设备)EclipseADT三、AI难点解析1.赢法数组:记录五子棋所有的赢法,三维数组2.每一种赢法的统计数组,一维数组3.如何判断胜负4.计算机落子规则四、实验结果开局前:10比赛一游戏结束:比赛二游戏结束:10五、实验内容1.创建安卓项目工程:B
2、002_五子棋人机对战2.创建一个类WuziqiPanel继承系统的View类publicclassWuziqiPanelextendsView{}3.在activity_main.xml文件中添加WuziqiPanel控件,并设置游戏背景界面设置背景图片android:background="@drawable/bg"添加WuziqiPanel控件3、nt"android:layout_centerInParent="true"/>4.定义相关数据privateintmPanelWidth;privatefloatmLineHeight;privateintMAX_LINE=10;privatePaintmPaint=newPaint();privateBitmapmWhitePiece;privateBitmapmBlackPiece;privatefloatradioPieceOfLineHeight=3*1.0f/4;//白棋先下,当前轮到白棋privatebooleanmIsWhit4、e=true;privateListmWhiteArray=newArrayList();privateListmBlackArray=newArrayList();//赢法数组int[][][]wins=newint[10][10][200];//赢法统计数组int[]myWin=newint[200];int[]computerWin=newint[200];privateintcount;//游戏是否结束overprivatebooleanover=false;//棋盘上两方棋子的标5、志0无子;1我方;2电脑privateint[][]chessBoard=newint[10][10];//保存最高得分的i,j值intu=0;intv=0;105.测量棋盘大小//截取屏幕大小为正方形@OverrideprotectedvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec){//TODOAuto-generatedmethodstubintwidthSize=MeasureSpec.getSize(widthMeasureSpec);intwidthMode=Measur6、eSpec.getMode(widthMeasureSpec);intheightSize=MeasureSpec.getSize(heightMeasureSpec);intheightMode=MeasureSpec.getMode(heightMeasureSpec);intwidth=Math.min(widthSize,heightSize);if(widthMode==MeasureSpec.UNSPECIFIED){width=heightSize;}elseif(heightMode==MeasureSpec.UNSPECIFI7、ED){width=widthSize;}//设置棋盘大小,包括边界setMeasuredDimension(width,width);}//当宽高尺寸确定发生改变以后回调此函数@OverrideprotectedvoidonSizeChanged(intw,inth,intoldw,intoldh){//TODOAuto-generatedmethodstubsuper.onSizeChanged(w,h,oldw,oldh);mPanelWidth=w;mLineHeight=mPanelWidth*1.0f/MAX_LINE;intpie8、ceWidth=(int)(mLineHeight*radioPieceOfLineHeight);mWhitePiece=Bitmap.create
3、nt"android:layout_centerInParent="true"/>4.定义相关数据privateintmPanelWidth;privatefloatmLineHeight;privateintMAX_LINE=10;privatePaintmPaint=newPaint();privateBitmapmWhitePiece;privateBitmapmBlackPiece;privatefloatradioPieceOfLineHeight=3*1.0f/4;//白棋先下,当前轮到白棋privatebooleanmIsWhit
4、e=true;privateListmWhiteArray=newArrayList();privateListmBlackArray=newArrayList();//赢法数组int[][][]wins=newint[10][10][200];//赢法统计数组int[]myWin=newint[200];int[]computerWin=newint[200];privateintcount;//游戏是否结束overprivatebooleanover=false;//棋盘上两方棋子的标
5、志0无子;1我方;2电脑privateint[][]chessBoard=newint[10][10];//保存最高得分的i,j值intu=0;intv=0;105.测量棋盘大小//截取屏幕大小为正方形@OverrideprotectedvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec){//TODOAuto-generatedmethodstubintwidthSize=MeasureSpec.getSize(widthMeasureSpec);intwidthMode=Measur
6、eSpec.getMode(widthMeasureSpec);intheightSize=MeasureSpec.getSize(heightMeasureSpec);intheightMode=MeasureSpec.getMode(heightMeasureSpec);intwidth=Math.min(widthSize,heightSize);if(widthMode==MeasureSpec.UNSPECIFIED){width=heightSize;}elseif(heightMode==MeasureSpec.UNSPECIFI
7、ED){width=widthSize;}//设置棋盘大小,包括边界setMeasuredDimension(width,width);}//当宽高尺寸确定发生改变以后回调此函数@OverrideprotectedvoidonSizeChanged(intw,inth,intoldw,intoldh){//TODOAuto-generatedmethodstubsuper.onSizeChanged(w,h,oldw,oldh);mPanelWidth=w;mLineHeight=mPanelWidth*1.0f/MAX_LINE;intpie
8、ceWidth=(int)(mLineHeight*radioPieceOfLineHeight);mWhitePiece=Bitmap.create
此文档下载收益归作者所有