当前位置: 首页 > news >正文

太原网站建设杰迅网站建设与管理的书

太原网站建设杰迅,网站建设与管理的书,网站建设应注意哪些事项,天使投资平台官网本程序算法资料来自下面网站.----https://www.cnblogs.com/buptzym/archive/2012/06/20/2556052.html----先定义一个数组 用于存储整个棋盘的数据.u16 ChessBoard[15][15];//棋盘数据.一.己方下棋 基础函数.1.在屏幕上显示出来一个15*15的棋盘.void DrawTable(void)//画出15x15…本程序算法资料来自下面网站.----https://www.cnblogs.com/buptzym/archive/2012/06/20/2556052.html----先定义一个数组 用于存储整个棋盘的数据.u16 ChessBoard[15][15];//棋盘数据.一.己方下棋 基础函数.1.在屏幕上显示出来一个15*15的棋盘.void DrawTable(void)//画出15x15的棋盘.{int i;for(i0;i15;i){LCD_DrawLine(8,16i*16,232,16i*16);LCD_DrawLine(8i*16,16,8i*16,240);}}2.//两个数之差的绝对值//x1,x2需取差值的两个数//返回值|x1-x2|u16 my_abs(u16 x1,u16 x2){if(x1x2)return x1-x2;else return x2-x1;}3.//x,y是横纵坐标Data是数组//返回0无子1 黑子2白子u8 ReadData(u8 x,u8 y){int temp;tempChessBoard[x][y];return temp;}4.//x,y是横纵坐标Data是数组//dat 0无子1 黑子2白子void WriteData(u8 x,u8 y,u8 dat){ChessBoard[x][y]dat;}5.//画出棋子,黑色或者白色.void DrawChess(int x,int y,u16 color){POINT_COLORcolor;  //画笔色....LCD_Draw_ALLCircle(8x*16,16y*16,8);}二.己方下棋应用函数1.根据触摸的位置在屏幕上落子.将棋子限制在棋盘的交叉格上.void TouchChess(u8 dat)//触摸屏落子,{int x,y;int chess_x,chess_y;for(x0;x15;x){if(my_abs(8x*16,tp_dev.x[0])8)//附近范围8{chess_xx;}}for(y0;y15;y){if(my_abs(16y*16,tp_dev.y[0])8){chess_yy;}}if(ReadData(chess_x,chess_y) 0)//空白区域才能落子.WriteData(chess_x,chess_y,dat);}三.单片机下棋.(单片机需要知道每个格子的各个方向上的权值,哪里权值大就下哪里.简而言之就是哪个位置容易成子就下那里,如果是对方容易成子就下在哪里堵他.1.单片机下棋基础函数.u16 GlobalData[8][15][15];//黑棋 四个方向上的数据放在 GlobalData[0][15][15]----GlobalData[3][15][15]//白棋 四个方向上的数据放在 GlobalData[4][15][15]----GlobalData[7][15][15]u8 Max_x,Max_y;//最有利位置的坐标.//读取白方或黑方的各个位置的权值.u8 ReadGlobalData(u8 x,u8 y,u8 i){u8 temp;tempGlobalData[i][x][y];return temp;}//写入白方或黑方的各个位置的权值.void WriteGlobalData(u8 temp,u8 x,u8 y,u8 dat){GlobalData[temp][x][y] dat;}//置零白方或黑方的各个位置的权值.void RestGlobalData(void){u8 i,j,k;for(i0;i8;i){for(j0;j15;j){for(k0;k15;k){WriteGlobalData(i,j,k,0);}}}}四.单片机下棋应用函数.1.//得到白方或黑方各个位置上,四个方向上的权值.void Optimal(u8 color)//全局zuiyou棋子分析.color  1--黑棋  2--白棋{int i,d;int x,y;u8 temp;switch(color){case (1): temp0; break;case (2):temp4; break;}for(x0;x15;x){for(y0;y15;y){if(ReadData(x,y) 0){d0;for(i1;i5;i)//x方向.{if(ReadData(x-i,y) ! color || (x-i) 0)break;elsed;}for(i1;i5;i){if(ReadData(xi,y) ! color || (xi) 14)break;elsed;}WriteGlobalData(temp,x,y,d);d0;for(i1;i5;i)//y方向.{if(ReadData(x,y-i) ! color || (y-i) 0)break;elsed;}for(i1;i5;i){if(ReadData(x,yi) ! color || (yi) 14)break;elsed;}WriteGlobalData(temp1,x,y,d);d0;for(i1;i5;i)//{if(ReadData(x-i,y-i) ! color || (x-i) 0 || (y-i) 0)// \方向break;elsed;}for(i1;i5;i){if(ReadData(xi,yi) ! color || (xi) 14 || (yi) 14)//break;elsed;}WriteGlobalData(temp2,x,y,d);d0;for(i1;i5;i)//{if(ReadData(x-i,yi) ! color || (x-i) 0 || (yi) 14)// /方向break;elsed;}for(i1;i5;i){if(ReadData(xi,y-i) ! color || (xi) 14  || (y-i) 0)//break;elsed;}WriteGlobalData(temp3,x,y,d);}}}}2.//选择白方或者黑方的最有利的位置落子.//黑棋 四个方向上的数据放在 GlobalData[0][15][15]----GlobalData[3][15][15]//白棋 四个方向上的数据放在 GlobalData[4][15][15]----GlobalData[7][15][15]void Situationu(void){int x,y;u8 i;u16 Mark;u16 TotalMark,MaxMark0;u16 MarkTransform[5]{0,100,400,2000,10000};Optimal(1);//heizi.for(x0;x15;x){for(y0;y15;y){TotalMark0;for(i0;i4;i)//四个方向{Mark ReadGlobalData(x,y,i);TotalMark MarkTransform[Mark];}if(TotalMark MaxMark){Max_xx;Max_yy;MaxMark TotalMark;}}}Optimal(2);//baizi.for(x0;x15;x){for(y0;y15;y){TotalMark0;for(i0;i4;i){Mark ReadGlobalData(x,y,i4);TotalMark MarkTransform[Mark];}if(TotalMark MaxMark){Max_xx;Max_yy;MaxMark TotalMark;}}}}3.//选择有利位置落子.void SetChess(void){Situationu();WriteData(Max_x,Max_y,2);}单片机下棋之后要置零权值数组.RestGlobalData();//置位权值数组.五.判断结果(判断黑棋或者白棋是否达到胜利条件,在某个棋子的各个方向上是否有任意一方向上有四个相同棋子)u8 ResultCheck(u8 color)// 返回值0都未成功1 白方胜利 2黑方胜利{int x,y;// 判断横向for(y0;y15;y){for(x0;x11;x){if(color ReadData(x,y) color ReadData(x1,y) color ReadData(x2,y) color ReadData(x3,y) color ReadData(x4,y)  )return color;}}// 判断纵向for(y0;y11;y){for(x0;x15;x){if(color ReadData(x,y) color ReadData(x,y1) color ReadData(x,y2) color ReadData(x,y3) color ReadData(x,y4)  )return color;}}// 判断\方向for(y0;y11;y){for(x0;x11;x){if(color ReadData(x,y) color ReadData(x1,y1) color ReadData(x2,y2) color ReadData(x3,y3) color ReadData(x4,y4)  )return color;}}// 判断/方向for(y0;y11;y){for(x4;x15;x){if(color ReadData(x,y) color ReadData(x-1,y1) color ReadData(x-2,y2) color ReadData(x-3,y3) color ReadData(x-4,y4)  )return color;}}// 不满足胜利条件return 0;}(1)这个程序没有添加任何的交互界面,只有能够运行的函数.如果想添加胜利交互界面可以根据ResultCheck()的返回值,弹出相应界面.并清零棋盘数组ChessBoard[15][15]重新开始.(2)显而易见的这个程序只是机械式的向权值最大处落子,如果赢了一局之后按原先的步骤再次落子你依然会赢,并且单片机所走的步骤也不有任何的改变.所以请把它当做一个小小的游戏.(3)希望对你有所帮助.一起学习~因个人能力有限,难免有疏漏之处.望通知已便改正.
http://www.yutouwan.com/news/121827/

相关文章:

  • 收录网站是怎么做的企业域名免费申请
  • 环保公司网站建设龙岩解除高风险区
  • 微站是什么做信息图的网站
  • 网站备案名称能重复吗先注册域名后建设网站可以吗
  • 网站设计高端如何在已建设好的网站做修改
  • 河南省网站备案图片主题wordpress
  • 国内外贸网站建设公司什么值得买网站模板
  • 河北省住房与建设厅网站软件制作公司
  • 网站建设人员工作计划杭州旅游网站开发说明书
  • 内蒙古住房和城乡建设厅网站网站上的字体大小
  • 屯留网站建设百度站长工具怎么推广网站
  • 咸阳学校网站建设价格广告设计软件cdr
  • 建设六马路小学官方网站wordpress选择php
  • 专业网站建设人工智能单位建设网站申请报告
  • 网站改变配色方案wordpress前端登录问题
  • 网站开发合作协议合同范本oa办公系统官网
  • 做电影网站凡科网小程序
  • 营销型网站的特点网站建设销售找客户话术
  • 网站后台不更新乐清上班族网论坛
  • 重庆响应式网站平台赣州门户网站
  • 网站优化升级西安旅游服务网站建设
  • 汽车网站建设参考文献开题报告网站开发建设挣钱吗
  • 专业做网站的公司食品公司网站建设
  • 郑州市做网站建设网站细节
  • 福鼎网站开发有没有做面粉美食的网站
  • 怎么做帖子网站微信小程序注册要钱吗
  • 网站建设普及型广州哪个区最繁华
  • 怎样用dw做网站主页高流量网站开发框架经验
  • 网站服务器网络大企业网站建设公司排名
  • 网站开发团队排行榜网络营销成功案例有哪些