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

网站首页包含的内容怎么做广州番禺越秀和樾府

网站首页包含的内容怎么做,广州番禺越秀和樾府,公司做个网页要多少钱,临西网站建设电话简单互动 为了增加趣味性#xff0c;增加了简单的互动功能#xff0c;即实现了一个简单的华容道游戏。在HrdGame中有两个鼠标操作的函数#xff0c;在传入的控件中调用这个两个函数就可以了。 代码如下#xff1a; Click事件 private void pnl_GameBoard_MouseClick(objec…简单互动 为了增加趣味性增加了简单的互动功能即实现了一个简单的华容道游戏。在HrdGame中有两个鼠标操作的函数在传入的控件中调用这个两个函数就可以了。 代码如下 Click事件 private void pnl_GameBoard_MouseClick(object sender, MouseEventArgs e) _hrdGame.Click(e); MouseMove事件 private void pnl_GameBoard_MouseMove(object sender, MouseEventArgs e){if(cbx_ByHuman.Checked)//增加了一个界面控制CheckBox_hrdGame.MouseMove(e);}mouseMove中的代码相对简单并没有有抓取棋子的操作只是在滑过的棋子做了高亮处理这样显得稍微生动一些。 Click 事件核心代码 internal void Click(MouseEventArgs e){var openPcsLst GetOpenPcs();// select an open piecevar basicPcsArr GetPieces();// pay attention to here , after the serilization !!!!!!!!!!!!!!// 检查鼠标是否在点击了 Open Piece如果是则认为是选择了该 棋子如果不是则认为是把之前的棋子移动到这个位置。foreach (var openPcs in openPcsLst){var idx openPcs.piece.idx;var pcs basicPcsArr[idx];Rectangle pcsRect new Rectangle((int)pcs.PcsLoc.X, (int)pcs.PcsLoc.Y, pcs.PcsSize.Width, pcs.PcsSize.Height);if (pcsRect.Contains(e.Location)){gameState.selPcs pcs;RefreshLayout();break;}}// 移动到鼠标点击位置的合理性判断如果是空白区域则进行移动处理。if (gameState.selPcs null){return;}var blnkPcs GetBlanks();foreach (var blkPcs in blnkPcs){//var pcs openPcs.piece;Rectangle pcsRect new Rectangle((int)blkPcs.PcsLoc.X, (int)blkPcs.PcsLoc.Y, blkPcs.PcsSize.Width,blkPcs.PcsSize.Height);if (pcsRect.Contains(e.Location)){var selPcs gameState.selPcs;var selPos selPcs.GetHrdPos();var blkPos blkPcs.GetHrdPos();if (Math.Abs(selPos.X - blkPos.X) 2 selPcs.PcsSize.Width Math.Abs(selPos.Y - blkPos.Y) 2 selPcs.PcsSize.Height){ // might move the selected block and into the initial stateif (selPcs.MoveDir ! ){//移动时做一个简单的动画处理MoveWithAnimation(selPcs, blkPcs);RefreshLayout();break; ;}}}}var tmpHasCode GetMyHashCodeV1(gameState);_curHashCode tmpHasCode;}简单动画 说明代码是在GPT给的代码基础上进行改写的。 利用Timer事件每隔一段时间显示一个画面并进行痕迹的擦除。使用了大量的成员变量进行传值这样简化俩Timer函数参数问题。另外对鼠标事件的多次快速点击没有做处理因此会有重入发生导致效果有些混乱。 核心代码如下 internal void MovePcsWithAnimation(Piece selPcs, HrdPoint srcPos, HrdPoint dstPos, HrdPoint anotherPos, Piece emptySp, Piece anotherES){curSelPcsselPcs;srcPcsHrdLoc HrdPosToLoc(srcPos);targeHrdLocLst new ListPointF();if(selPcs.GetHrdType()HRDGame.TYPE_SMALL_PIECE Math.Abs(srcPos.X - dstPos.X)Math.Abs(srcPos.Y-dstPos.Y) 2){// need to move to the another piece first //anotherPos new HrdPointHrdPosToLoc(dstPos);var anotherLoc HrdPosToLoc(anotherPos);targeHrdLocLst.Add(anotherLoc);}targeHrdLocLst.Add(HrdPosToLoc(dstPos));srcBkgdRect new Rectangle((int)selPcs.PcsLoc.X, (int)selPcs.PcsLoc.Y, selPcs.PcsSize.Width, selPcs.PcsSize.Height);animotionLocLstIdx 0;timerTuple.selPcs selPcs;timerTuple.srcPos srcPos;timerTuple.dstPos dstPos;timerTuple.anotherPos anotherPos;timerTuple.emptySp emptySp;timerTuple.anotherES anotherES;timer.Start(); // Start the animation} timer事件调用 movePcs函数函数没有优化因此代码比较冗长。核心代码如下 private void MovePcs(){int speed 5; // Adjust the speed of the animation//Refresh the background ;//float oldX,oldY;Rectangle tailRec new Rectangle(0,0,0,0);// used to clear the back ground if(animotionLocLstIdx targeHrdLocLst.Count){return;}var targeHrdLoc targeHrdLocLst[animotionLocLstIdx];//计算移动后的棋子的坐标和大小并计算移动后需要擦除的区域//#############################################if (srcPcsHrdLoc.X targeHrdLoc.X){tailRec.X (int)srcPcsHrdLoc.X;tailRec.Y (int)srcPcsHrdLoc.Y;tailRec.Width speed;tailRec.Height curSelPcs.PcsSize.Height;srcPcsHrdLoc.X speed;}else if ...}////#############################################// 根据上述计算结果进行绘制curSelPcs.PcsLoc srcPcsHrdLoc;var g_ctrl.CreateGraphics();DrawRegularBox(g, curSelPcs);g.FillRectangle(new SolidBrush(Color.Gray), tailRec);//srcBkgdRect tRec;if (Math.Abs(srcPcsHrdLoc.X - targeHrdLoc.X) 5 Math.Abs(srcPcsHrdLoc.Y - targeHrdLoc.Y) 5){animotionLocLstIdx;if (animotionLocLstIdx targeHrdLocLst.Count animotionLocLstIdx0){var tLoc targeHrdLocLst[animotionLocLstIdx-1];//curSelPcs pcs.PcsSize.Width,pcs.PcsSize.HeightsrcBkgdRect new Rectangle((int)(tLoc.X), (int)(tLoc.Y), curSelPcs.PcsSize.Width, curSelPcs.PcsSize.Height);}//判断是否移动可以移动两步一个正方形if (animotionLocLstIdx targeHrdLocLst.Count){.....}}}Timer 的初始化代码 private void InitializeTimer(){timer new System.Windows.Forms.Timer();timer.Interval 10; // Adjust the interval based on the desired smoothnesstimer.Tick Timer_Tick;}移动效果的目的是为了让过程更清晰一些并没有对移动逻辑进行严格的分析和约束因此移动过程不是很优雅。如果笔者有时间或者感兴趣会优化一下。 笔者在完成上述功能后又增加了一个简单设计的功能这样就可以利用这个程序进行一点儿华容道各种不同布局的探索以及之间关系的检测。待续 Marasun BJFWDQ 2024-03-10
http://www.pierceye.com/news/111767/

相关文章:

  • 网站做301跳转需解析设计用哪些网站有哪些功能
  • 如何将网站添加到信任站点手机价格
  • 做网站显示上次登录时间代码深圳有哪些招聘网站
  • 网站开发可选择的方案页面设计说明
  • 手机付费咨询网站建设网站正能量免费推广软件晚上
  • 网站群建设技术规范seo收索引擎优化
  • 西安网站托管维护百度首页广告
  • 洛龙区网站设计建设免费网页小游戏
  • 建设摩托125图片大全优化大师怎么删除学生
  • 郑州哪家公司给国外做网站闵行网站推广
  • 微网站 开发提供坪山网站建设
  • 狗狗和人做网站centos6搭建wordpress
  • 培训教育学校的网站建设方案vx小程序怎么制作
  • 泉州网站建设优化公司酒店网络营销推广方案
  • 重庆潼南网站建设公司电话crm客户关系管理平台
  • 怎么做可以访问网站连接加密东莞++网站建设
  • 企业网站的建设与流程数据分析师要学什么课程
  • 重庆营销型网站随做的好谷歌广告投放教程
  • 个人公众号做网站广州市车管所网站建设
  • 上海网站建设公司排名王也诸葛青cp
  • 常用的设计网站有哪些wordpress如何汉化主题
  • 深圳全网营销型网站免费做调查的网站有哪些
  • 设计素材网站知乎济南seo网站推广
  • 网站建设类岗位杭州国家电网 两学一做 网站
  • html静态网站开发自我介绍网站手机客户端开发教程
  • 营销型网站是什么样的桂林北站有核酸检测点吗
  • 网站未备案被阻断怎么做it培训机构哪个好一点
  • 重庆建设注册执业中心网站网络营销百度百科
  • app网站怎么下载个人备案做视频网站
  • 西宁建一个网站公司广东网站备案