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

网站建设项目投资测算网站开发需求分析包括什么

网站建设项目投资测算,网站开发需求分析包括什么,网站的首页标题在哪里设置的,怎么建设一个企业网站小小演示一下#xff1a; 大体思路#xff1a; 其实很早就想写一个俄罗斯方块了#xff0c;但是一想到那么多方块还要变形#xff0c;还要判断落地什么的就脑壳疼。直到现在才写出来。 俄罗斯方块这个小游戏的小难点其实就一个#xff0c;就是方块的变形#xff0c;看似…小小演示一下 大体思路 其实很早就想写一个俄罗斯方块了但是一想到那么多方块还要变形还要判断落地什么的就脑壳疼。直到现在才写出来。 俄罗斯方块这个小游戏的小难点其实就一个就是方块的变形看似每个方块的变形都不一样找不到共同点实现起来比较麻烦不过只要有了思路其实还是可以的。 方块变形 俄罗斯方块实际上是只有五种其中有两种“L”形和“Z”形每种有两种对称的。 每个方块以及变形的样子我都放下面了。 咋一看好像看不出共同点不过也确实没有啥共同点实际上我们不需要有共同点我们只需要知道每个方块变形都是怎么变的。 上面看不出来我们再换个形式。 我们知道方块变形的本质实际上是旋转而旋转我们是绕着某个中心点去旋转的因此我们只需要记录每个方块的中心点以及不同形态时的每个小方块对于中心点的相对位置。 除了正方形怎么变形都一样其他方块的变形情况都在下面中心点我加重了颜色。 可以看得出来方块的每个小方块的位置都可以通过与中心点的相对坐标来获取。 要变换姿势的时候只要有中心点的坐标就可以切换姿势。 下面是不同方块不同姿势的不同小方块与中心点的相对位置关系套了个四维数组写起来好费劲 //第一层选择方块种类,第二层选择方块形态,第三层装小方块,//第四层装每个小方块对于中心点坐标的相对位置用于变换姿势vectorvectorvectorvectorintmode{{{{1,0},{1,1},{0,0},{0,1}}}, //方形{{{2,0},{1,0},{0,0},{-1,0}},{{0,-1},{0,0},{0,1},{0,2}}}, //长条形{{{1,0},{1,-1},{0,-1},{-1,-1}},{{1,-1},{1,0},{1,1},{0,1}}, //L形1{{1,1},{0,1},{-1,1},{-1,0}},{{0,-1},{-1,-1},{-1,0},{-1,1}}},{{{1,0},{1,1},{0,1},{-1,1}},{{1,-1},{1,1},{1,0},{0,-1}}, //L形2{{0,1},{-1,0},{-1,1},{-1,-1}},{{1,-1},{0,-1},{-1,-1},{-1,0}}},{{{1,0},{0,0},{0,1},{-1,0}},{{0,-1},{0,0},{0,1},{-1,0}}, //凸形{{1,0},{0,0},{0,-1},{-1,0}},{{1,0},{0,0},{0,-1},{0,1}}},{{{1,-1},{0,-1},{0,0},{-1,0}},{{1,0},{1,1},{0,0},{0,-1}}}, //Z形1{{{1,1},{0,0},{0,1},{-1,0}},{{1,-1},{1,0},{0,0},{0,1}}} //Z形2}; 下面是换姿势的代码 其中 whichOne是选择哪一种方块index是选择方块的哪一种姿势 //切换模式 vectorvectorint block::changeMode(){if (whichOne 0) return coordinate;vectorvectorintres;index;index % (mode[whichOne].size());for (auto m : mode[whichOne][index]) {//根据中心坐标和缓存的模式关系来获取切换模式之后的方块坐标res.push_back({ center[0] - m[0],center[1] - m[1] });}//没有直接切换,而是返回新坐标return res; } 在获取新姿势的小方块坐标之后没有马上更新而是返回出去了因为可能变形之后会不符合要求例如下面的例子 变形之后把返回的新坐标返回我们再用一个函数去检测新坐标是否合法合法再去修改当前方块的具体坐标检测函数也很简单 //检测移动是否合法 int Tetris::checkMove(vectorvectorinttemp){for (auto c : temp) {if (c[1] 0 || c[1] 10) return -1; //左右越界返回-1;if (cache[c[0]][c[1]] 1) return 0; //遇到落地方块返回0;}//一切合法返回1return 1; } 返回1就是移动合法我们修改坐标返回-1就是移动不合法我们什么也不改。 还剩一个返回-1就是移动后遇到了已经落地的方块这时候在调用这个检测函数的函数之中还需要做个判断。 如果是因此下落而造成的移动那么检测获取-1则将方块的坐标的位置更新对应在缓存中的位置为1然后生成新方块。 而其他情况例如是左右移动或是变换姿势而造成的碰到落地方块则是和-1一样不做处理。 否则会有这样的问题 落地判断 用Qt来绘图我向来都是用二维数组来缓存界面然后通过相应的位置的不同元素来绘制不同的图案。 在这个俄罗斯方块中我的写法是缓存中的元素一共只有两种情况0和10表示什么都没有不需要绘制而1表示已经落地的方块。 那么正在下落的方块呢缓存里不用存一下吗。我的做法是不需要等等会说明原因。 因此我们正在下落的方块的坐标我是拿另一个二维数组存起来的。 每次下落时只需要做个判断我们正在下落的方块之中只要有一个小方块在下落之后在缓存中对应的位置元素为1就表示接触到了已经落地的方块那么当前方块也会变成他们的一部分然后更新缓存并且重新生成新的方块。 这里有个小问题就是在游戏的一开始缓存是全为0的还没有落地的方块因此我们上述的判断在游戏的一开始不会触发解法有两种一种是多一层判断如果方块最下面的小方块已经到了界面最下面的地方对应缓存中的下标为0那么也算落地。 第二种解法是我的做法就是直接在缓存下标为0的位置先给铺一层落地的方块也就是1。 消除检测 消除检测很容易界面缓存中的元素只有0或1分别用来表示什么都没有以及已经落地的方块如果缓存中有一行的元素之和等于10那么就表示本行塞满了可以消除。 缓存中下标为0的行在最下面也就是下标越大代表的位置就在界面的越上方。 如果检测到了某一行可以消除那么我们可以直接把这一行从缓存之中直接删除然后从缓存的尾部再添加上一个长度为10元素为0的数组即可。 关于消除还有最后一个问题那就是一个方块落下可能消除的不止一行因此我们像上述那样操作应该从下标较大的地方开始往下标较小的地方遍历寻找否则可能会漏掉。 并且我们可以想象的到一个方块落地之后如果可以消除那么可以消除的那一行方块一定是在刚落地方块所在的行因此每次检测的时候我们只需要检测落地方块的每个小方块所在的行即可。 //检测是否能清除一行方块 void Tetris::clearBlocks(){setints;vectorintv;//获取方块的y轴,因为能清除方块的话,行数一定在方块的y轴之中for (auto c : curBlock.coordinate) {if (accumulate(cache[c[0]].begin(), cache[c[0]].end(), 0) 10) s.insert(c[0]);}//从大到小去清除一整行的界面缓存for (int i : s) v.insert(v.begin(), i);for (int i : v) {score; //得分增加//删除一行方块后再后面补上一行.cache.erase(cache.begin() i);cache.push_back(vectorint(10, 0));} }代码获取: 完整的项目文件我已经上传到了CSDN可以直接免费下载也可以关注我的公众号“折途想要敲代码”回复关键词“qt俄罗斯方块”免费获取、
http://www.pierceye.com/news/796112/

相关文章:

  • 深圳做网站建设公司dw学生个人网页制作视频
  • html网页设计代码作业网站衡水武邑县建设局网站
  • 网站后台登陆验证码wordpress 前台加载慢
  • 网站推广去哪家比较好专门做网站的公司叫什么
  • 前端做项目的网站资源公司做网站的步骤
  • 资源分享网站怎么建设网站建设百度云
  • 宣讲家网站官德修养与作风建设短视频seo关键词
  • 更新网站怎么弄建设工程合同范本工程施工合同范本
  • 外贸网站建设有什么需要注意的吗白山网站设计
  • 哪家做网站性价比高宁波seo网络优化哪家好
  • 望京做网站微信订阅号怎么做网站
  • 分销系统网站建设网站建设 51下拉平台
  • 怎么才能自己做网站怎么自己制作app
  • 爱看视频的网站政务公开既网站信息化建设会议
  • 做外单什么网站好网站模板下载之后怎么做
  • 网站维护细则微博同步wordpress
  • 网站微商城的建设新网域名备案
  • 网站举报有奖平台北京vi设计公司怎么样
  • Wix做的网站在国内打不开网站开发专业就业好不好
  • php语言做网站网站流量与带宽
  • 网站推广经验做网站职校选什么专业
  • 搜英文关键词网站凯里seo排名优化
  • 哪个网站可以帮忙做简历培训网网站源码
  • 万宁市住房和城乡建设局网站自助建站加盟
  • 创建一个网站需要什么wordpress 支付 api接口
  • 怎么样做免费网站建筑招工找活平台
  • 虚拟机中做网站家政服家政服务网站模板
  • 佛山企业网站建设流程网站开发 前端如何学习
  • 昆明好的网站开发公司宣传视频
  • 深圳网站设计公司网站建设 地址 上海石门二路