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

长沙网站seo技巧如何做营销型单页网站

长沙网站seo技巧,如何做营销型单页网站,wordpress菜单显示用户信息,做球形全景的网站贪吃蛇Greedy Snake 1分析 首先这是一个贪吃蛇界面#xff0c;由一个长方形边框和一只贪吃蛇组成 默认开局时#xff0c;贪吃蛇身体只有3个小方块#xff0c;使用画笔画出 1.1如何移动 对于蛇的移动#xff0c;有2种方法 在一定时间范围内(定时器)#xff0c;未对游戏…贪吃蛇Greedy Snake 1分析 首先这是一个贪吃蛇界面由一个长方形边框和一只贪吃蛇组成 默认开局时贪吃蛇身体只有3个小方块使用画笔画出 1.1如何移动 对于蛇的移动有2种方法 在一定时间范围内(定时器)未对游戏做出操作前后左右移动则整个身体向面朝方向移动一格在一定时间范围内(定时器)未对游戏做出操作前后左右移动则身体最前面加上一格方块身体最后面减去一个方块 这里使用第2种方法 如图有4个坐标AC分别是原蛇的头部方格的两个坐标 则新产生的方格的B点为(x1y1-方格高度)D点(x3y3-方格高度) 注意 向某个方向增加不能无限增加下去当触碰到顶部时我们可以设置条件 死亡穿过从另一个方向开始 这里我们采用第2种方式 1.2向上 如图此时BD点已经超过x轴即高度为0的位置 因此我们可以判断当蛇头部的方格A/C的高度 - 1个方格的高度 0 时则从底部开始进入 移动前x3x1蛇宽度y3y1 移动后x2x1y2窗口高度-蛇宽度x4x2蛇宽度y4y2 1.3向下 同理向下走只要最下面增加最上面减少即可 移动前x4x2蛇宽度y2y4 移动后x1x2y10x3x1蛇宽度y3蛇高度 1.4向左 移动前x3x2蛇宽y3y2蛇高 移动后x1x2-蛇宽y1y2x4x2y4y3 穿越 x2窗口宽度-蛇宽y2y1x3窗口宽度y3y4 1.5向右 移动前x4x1蛇宽y4y1蛇高 移动后x2x1蛇宽y2y1x3x4蛇宽y3y4 穿越 x20y2y1x3蛇宽y3y4 2如何成长 在界面的不同地方会默认刷新出一个球蛇吃了这个球身体就会增加一格同时球消失刷新出现在其他地方 判断球是否被吃掉即判断蛇的身体是否与球重合如果重合增加身体1同时刷新球出现的位置 3代码 widget.h #ifndef WIDGET_H #define WIDGET_H#define OUTTIME 100 //超时时间 #define SNAKE_WIDTH 20 //蛇的一个方格宽度 #define SNAKE_HEIGHT 20 //蛇的一个方格高度 #include QWidget #includeQKeyEvent #includeQDebug #includeQTimer #includeQPixmap #includeQPainter #includerandom #includeQTime #include QRandomGenerator/*0.创建蛇要求可以实现前面删除后面增加可以用LIST链表1.按键处理2.使用定时器2.1关联信号槽2.2启动定时器2.3实现对应的超时处理(timeOut)函数3.渲染图像 */QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACE //定义方向 enum Direction {LEFT,RIGHT,UP,DOWN }; class Widget : public QWidget {Q_OBJECT public:Widget(QWidget *parent nullptr);~Widget(); protected://按键处理void keyPressEvent(QKeyEvent *event);//添加头部void addTOP();void addBUTOM();void addLEFT();void addRIGHT();//绘制界面void paintEvent(QPaintEvent *event);//删除尾部void deleLAST();//初始化食物void initFood();//判断是否碰撞bool isIntersect(); private:Ui::Widget *ui;int moveFlag UP; //方向标志bool gameStatu false;//游戏状态//bool isIntersect false;//定时器QTimer *timer;//事物QRectF food;//创建蛇QListQRectF snake; protected slots:void timeOut();//超时函数 }; #endif // WIDGET_Hwidget.cpp #include widget.h #include ui_widget.hWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui-setupUi(this);this-resize(450,300);//使用定时器timer new QTimer();//发出信号//连接信号connect(timer,SIGNAL(timeout()),this,SLOT(timeOut()));//初始化蛇QRectF rect(this-width()/2,this-height()/2,SNAKE_WIDTH,SNAKE_HEIGHT);snake.append(rect); //蛇身1addTOP(); //蛇身1addTOP();//初始化食物initFood(); }Widget::~Widget() {delete ui; }//按键绑定控制方向 void Widget::keyPressEvent(QKeyEvent *event) {switch(event-key()){case Qt::Key_Up:if(moveFlag ! DOWN){moveFlag UP;}break;case Qt::Key_Down:if(moveFlag ! UP){moveFlag DOWN;}break;case Qt::Key_Left:if(moveFlag ! RIGHT){moveFlag LEFT;}break;case Qt::Key_Right:if(moveFlag ! LEFT){moveFlag RIGHT;}break;case Qt::Key_Space:if(!gameStatu){gameStatu true;//启动定时器timer-start(OUTTIME);}else{gameStatu false;timer-stop();}break;default:return;break;} }//顶部增加 void Widget::addTOP() {QPointF leftTop; //左上点QPointF rightBotom; //右下点if(snake[0].y() - SNAKE_HEIGHT 0 ) //如果超过顶部{leftTop QPoint(snake[0].x(),this-height() - SNAKE_HEIGHT);rightBotom QPoint(snake[0].x() SNAKE_WIDTH,this-height());}else //未超过顶部{leftTop QPointF(snake[0].x(),snake[0].y() - SNAKE_HEIGHT);rightBotom snake[0].topRight();}snake.insert(0,QRectF(leftTop,rightBotom)); }void Widget::addBUTOM() {QPointF leftTop;QPointF rightBotom;if(snake[0].y() 2*SNAKE_HEIGHT this-height() ) //如果超过底部{leftTop QPointF(snake[0].topLeft().x(),0);// 原x 0rightBotom QPointF(snake[0].bottomRight().x(),SNAKE_HEIGHT);// 右下x蛇宽 蛇高}else //未超过底部{leftTop snake[0].bottomLeft();rightBotom snake[0].bottomRight()QPointF(0,SNAKE_HEIGHT);}snake.insert(0,QRectF(leftTop,rightBotom)); }void Widget::addLEFT() {QPointF leftTop;QPointF rightBotom;if(snake[0].x()-SNAKE_WIDTH 0 ) //超过边缘{leftTop QPointF(this-width()-SNAKE_WIDTH,snake[0].topLeft().y());// 窗口宽-蛇宽 左上原y不变rightBotom QPointF(this-width(),snake[0].bottomRight().y());// 窗口宽 右下原y不变}else //未超过{leftTop QPointF(snake[0].topLeft().x()-SNAKE_WIDTH,snake[0].topLeft().y());// 左上x-蛇宽 左上原y不变rightBotom QPointF(snake[0].bottomRight().x()-SNAKE_WIDTH,snake[0].bottomRight().y());// 右下x-蛇宽 右下原y不变}snake.insert(0,QRectF(leftTop,rightBotom)); }void Widget::addRIGHT() {QPointF leftTop;QPointF rightBotom;if(snake[0].x()SNAKE_WIDTH*2 this-width() ) //超过边缘{leftTop QPointF(0,snake[0].topLeft().y());// 0 左上原y不变rightBotom QPointF(SNAKE_WIDTH,snake[0].bottomRight().y());// 蛇宽 右下原y不变}else //未超过边缘{leftTop QPointF(snake[0].topLeft().x()SNAKE_WIDTH,snake[0].topLeft().y());// 左上x-蛇宽 左上原y不变rightBotom QPointF(snake[0].bottomRight().x()SNAKE_WIDTH,snake[0].bottomRight().y());// 右下x-蛇宽 右下原y不变}snake.insert(0,QRectF(leftTop,rightBotom)); }//绘制界面 void Widget::paintEvent(QPaintEvent *event) {QPainter painter(this);QPen pen;//画笔QBrush brush;//画刷//加载背景图片QPixmap pix;pix.load(:/background/bg_1.jpg);painter.drawPixmap(0,0,pix.width(),pix.height(),pix);//绘制蛇pen.setColor(Qt::black); //设定画笔颜色brush.setColor(Qt::darkMagenta);//画刷颜色brush.setStyle(Qt::SolidPattern);//画刷风格painter.setPen(pen); //画家配置画笔painter.setBrush(brush);//画家配置画刷for(int i0;isnake.length();i){painter.drawRect(snake[i]);//画家进行绘画}//绘制食物brush.setColor(Qt::yellow);//画刷颜色brush.setStyle(Qt::SolidPattern);//画刷风格painter.setPen(pen); //画家配置画笔painter.setBrush(brush);//画家配置画刷painter.drawEllipse(food);//绘制结束面板if(isIntersect()){QFont font(微软雅黑,30,QFont::ExtraLight,false);painter.setFont(font);painter.drawText(this-width()/2-120,this-height()/2,QString(GAME OVER!));timer-stop();} }//去尾 void Widget::deleLAST() {snake.removeLast(); }// 初始化食物 void Widget::initFood() { //QRandomGenerator::global()-generate()随机生成数字food QRectF(QRandomGenerator::global()-generate()%(this-width()/20)*20,QRandomGenerator::global()-generate()%(this-height()/20)*20,SNAKE_WIDTH,SNAKE_HEIGHT); }//是否碰撞 bool Widget::isIntersect() {for(int i1;isnake.length();i){if(snake[0] snake[i]){return true;}}return false; }//超时函数 void Widget::timeOut() {int count 1;if(snake[0].intersects(food)){count;//重新初始化食物即令其刷新位置initFood();}while(count--){switch (moveFlag){case UP:addTOP();break;case DOWN:addBUTOM();break;case LEFT:addLEFT();break;case RIGHT:addRIGHT();break;default:return;break;}}deleLAST();update(); //重新绘制即更新图像 }4效果 //重新初始化食物即令其刷新位置 initFood(); } while(count–) { switch (moveFlag) { case UP: addTOP(); break; case DOWN: addBUTOM(); break; case LEFT: addLEFT(); break; case RIGHT: addRIGHT(); break; default: return; break; } } deleLAST(); update(); //重新绘制即更新图像 } ## 4效果![greedy_snake](https://img-blog.csdnimg.cn/img_convert/709a852d84a10ece80eabe1982fbfda0.gif)
http://www.dnsts.com.cn/news/39277.html

相关文章:

  • 网站做二级域名干什么用衡水外贸网站建设
  • 常用素材网站无锡企业网站
  • 长春制作公司网站用.cc做网站官网可以吗
  • 合肥制作网站哪家好wordpress扒站
  • 网站建设公司哪些主要哪些前端如何做响应式网站
  • 做网站平台需要什么条件网站开发设计制作合同
  • 网站建设迁移方案班级网站怎么做
  • 个人网站设计与实现源码长春百度seo排名
  • 旅游网站设计方案怎么做自适应网站模板
  • 张家口网站建设张家口网站建设与维护的认识
  • 网站301做下oa网站建设推广
  • 网站移动端是什么问题吗荆州哪个公司做网站
  • 网站制作多少钱?中国纪检监察报记者电话
  • 在网站上可以做哪些互动活动网络代码
  • 永州网站建设公司推荐兼职做网站的软件
  • 重庆省建设厅网站东莞软件网站推广
  • wordpress建一个网站网站开发与应用案例教程
  • 免费的tickle网站厦门海沧建设局网站
  • 全网营销老婆第一人黑料wordpress mysql优化
  • 西安网站建设xazxcy沈阳大十字街附近做网站公司
  • 太原seo公司网站php进销存管理系统
  • 网站建设哪家go合浦县城乡规划建设局网站
  • 网站设计所遵循的原则网站开发的销售
  • 深圳东道建设集团网站ps做网站72分辨率
  • 江苏中南建设投标网站淄博网站建设设计公司
  • 网站设计价格大概多少卖域名被刑事拘留
  • 有哪些做红色旅游景点的网站织梦转wordpress
  • 建网站免费咨询做图素材网站开哪个vip好
  • 做微信商城设计网站网站开发的论文课题
  • 免费网站管理系统app在线设计