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

外贸公司是干什么的seo深圳培训班

外贸公司是干什么的,seo深圳培训班,蚌埠做企业网站,动态网站开发与全程实例文章目录: 一:效果演示 二:实现思路 三:代码实现 widget.h widget.cpp main.cpp 一:效果演示 效果图◕‿◕✌✌✌ 代码下载 二:实现思路 通过按键控制蛇的移动,每吃一个商品蛇身就会加长…

文章目录:

一:效果演示

二:实现思路

三:代码实现 

widget.h

widget.cpp

main.cpp


一:效果演示

 效果图◕‿◕✌✌✌ 

代码下载

二:实现思路

 通过按键控制蛇的移动,每吃一个商品蛇身就会加长,如果蛇身头尾相碰就结束游戏

声明渲染绘图:画笔画刷进行相关的渲染背景蛇和奖品	按键处理机制:方便后面的键盘操作定时器:到时就会触发按下空格:代表开始上下左右键控制蛇的移动方向:DIR_DOWN DIR_UP DIR_LEFT DIR_RIGHT蛇:蛇的表示:矩形的两点确定小方块,3个小方块为初始蛇身判断蛇身蛇头:如果蛇头蛇尾接触就结束游戏蛇身变动:相交就吃掉奖品,吃一个加一个小方块奖品奖品的表示:小红点奖品的添加:蛇吃完一个奖品就马上随机添加一个奖品蛇吃奖品:吃一个奖品会加一个方块:上面、下面、左面、右面

三:代码实现 

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
//按键
#include <QKeyEvent>
//定时器
#include <QTimer>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE//定义方向
enum Dirct{DIR_LEFT,DIR_RIGHT,DIR_DOWN,DIR_UP};class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();protected://声明渲染绘图void paintEvent(QPaintEvent *event);//声明按键处理void keyPressEvent(QKeyEvent *event);//声明上面加一个函数void addTop();//声明下面加一个函数void addDown();//声明左面加一个函数void addLeft();//声明右面加一个函数void addRight();//声明减去一个模块void deleteLast();//声明添加奖品函数void addNewReword();//声明判断蛇头蛇身bool checkContact();private:Ui::Widget *ui;//初始化定义方向int moveFlag = DIR_UP;//定义启动的开始bool gameStart = false;//定义定时器QTimer *timer;int time = 100;//超时事件间隔(毫秒)//蛇的表示  矩形两点确定(容器)QList <QRectF> snake;//小方块表示int nodeWidth = 20;int nodeHeight = 20;//奖品的表示QRectF rewardNode;protected slots://定义超时函数void timeout();
};#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <qmediaplayer.h>//画家
#include <QPainter>
//文字
#include <QRandomGenerator>
//背景音乐
#include <QtMultimedia/QtMultimedia>
#include <QtMultimediaWidgets/QVideoWidget>
#include <QApplication>
#include <QMediaPlayer>
#include <QUrl>
#include <QFileDialog>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//定义窗口大小//resize(800,600);this->setFixedSize(800,600);QMediaPlayer *player = new QMediaPlayer;player->setSource(QUrl::fromLocalFile("F:/QT/Snake/images/mu.mp3"));player->play();//实现定时器 可以让蛇动起来//创建定时器timer = new QTimer();//信号槽   timeout超时connect(timer,SIGNAL(timeout()),this,SLOT(timeout()));//初始化蛇身QRectF rect(400,300,nodeWidth,nodeHeight);//小方块加到蛇身上去snake.append(rect);//再加两端addTop();addTop();//初始化奖品addNewReword();//背景音乐
//        //创建一个显示视频的控件
//                QVideoWidget* videowin = new QVideoWidget(this);
//                videowin->resize(400,300);
//                //添加一个播放器
//                QMediaPlayer *player = new QMediaPlayer(this);
//                player->setVideoOutput(videowin);
//                //音乐
//                player->setMedia(QMediaContent(QUrl::fromLocalFile("F:/QT/Snake/images/game.mp3")));
//                //player->setVolume(50);//音量
//                //开始播放
//                player->play();}Widget::~Widget()
{delete ui;
}//实现按键函数    控制方向
void Widget::keyPressEvent(QKeyEvent *event){switch (event->key()) {case Qt::Key_Up:if(moveFlag != DIR_DOWN){moveFlag = DIR_UP;}break;case Qt::Key_Down:if(moveFlag != DIR_UP){moveFlag = DIR_DOWN;}break;case Qt::Key_Right:if(moveFlag != DIR_LEFT){moveFlag = DIR_RIGHT;}break;case Qt::Key_Left:if(moveFlag != DIR_RIGHT){moveFlag = DIR_LEFT;}break;case Qt::Key_Space:if(gameStart == false){gameStart = true;//启动定时器timer->start(time);}else{gameStart = false;//停止定时器timer->stop();}break;default:break;}
}//实现超时函数
void Widget::timeout(){//实现逻辑要么都上移,要么底部加一个,顶部取消一个//判断有没有重合int count = 1;if(snake[0].intersects(rewardNode)){//相交就吃掉奖品count++;//吃掉添加新的奖品addNewReword();}while (count--) {//蛇的移动switch (moveFlag) {case DIR_UP:addTop();break;case DIR_DOWN:addDown();break;case DIR_LEFT:addLeft();break;case DIR_RIGHT:addRight();break;default:break;}}//删除一个deleteLast();//刷新一下update();}//实现上面加一个函数
void Widget::addTop(){QPointF leftTop;QPointF rightBotom;//超出边界(顶端) 加到最下面if(snake[0].y()-nodeHeight < 0){//this->height窗口leftTop = QPoint(snake[0].x(),this->height()-nodeHeight);rightBotom = QPointF(snake[0].x()+nodeWidth,this->height());}else{//没有超出的情况//在蛇的上面(蛇和矩形)//左上角坐标     nodeHeight小方块矩形leftTop = QPointF(snake[0].x(),snake[0].y()-nodeHeight);//右下角坐标rightBotom = snake[0].topRight();}//加一个小方块snake.insert(0,QRectF(leftTop,rightBotom));
}//实现下面加一个函数
void Widget::addDown(){QPointF leftTop;QPointF rightBotom;//超出边界(顶端) 加到最下面if(snake[0].y()+nodeHeight*2 > this->height()){leftTop = QPointF(snake[0].x(),0);rightBotom = QPointF(snake[0].x()+nodeWidth,nodeHeight);}else{//没有超出的情况//在蛇的上面(蛇和矩形)//左上角坐标     nodeHeight小方块矩形leftTop = snake[0].bottomLeft();//右下角坐标rightBotom = snake[0].bottomRight()+QPointF(0,nodeHeight);}//加一个小方块snake.insert(0,QRectF(leftTop,rightBotom));
}//实现左面加一个函数
void Widget::addLeft(){QPointF leftTop;QPointF rightBotom;//超出边界(顶端) 加到最下面if(snake[0].x()-nodeWidth < 0){leftTop = QPointF(this->width()-nodeWidth,snake[0].y());}else{//没有超出的情况//在蛇的上面(蛇和矩形)//左上角坐标     nodeHeight小方块矩形leftTop = snake[0].topLeft()-QPointF(nodeWidth,0);}rightBotom = leftTop+QPointF(nodeWidth,nodeHeight);//右下角坐标//加一个小方块snake.insert(0,QRectF(leftTop,rightBotom));
}//实现右面加一个函数
void Widget::addRight(){QPointF leftTop;QPointF rightBotom;//超出边界(顶端) 加到最下面if(snake[0].x()-nodeWidth*2 > this->width()){leftTop = QPointF(0,snake[0].y());}else{//没有超出的情况//在蛇的上面(蛇和矩形)//左上角坐标     nodeHeight小方块矩形leftTop = snake[0].topRight();}rightBotom = leftTop+QPointF(nodeWidth,nodeHeight);//右下角坐标//加一个小方块snake.insert(0,QRectF(leftTop,rightBotom));
}//实现绘图
void Widget::paintEvent(QPaintEvent *event){//画家QPainter painter(this);//画笔QPen pen;//画刷QBrush brush;//背景图片QPixmap pix;pix.load("F:/QT/Snake/images/bk.png");//    QPixmap pixmap(":/images/bk.png");painter.drawPixmap(0,0,800,600,pix);//画蛇//画笔pen.setColor(Qt::black);//画刷brush.setColor(Qt::darkMagenta);brush.setStyle(Qt::SolidPattern);//画家使用画笔和画刷painter.setPen(pen);painter.setBrush(brush);//画蛇的头尾for(int i=0;i<snake.length();i++){painter.drawRect(snake[i]);}//画奖品//画笔pen.setColor(Qt::red);//画刷brush.setColor(Qt::red);brush.setStyle(Qt::SolidPattern);//画家使用画笔和画刷painter.setPen(pen);painter.setBrush(brush);//painter.drawRect(rewardNode);//奖品painter.drawEllipse(rewardNode);//判断蛇头是否碰到蛇身if(checkContact()){QFont font("方块输出",30,QFont::ExtraLight,false);painter.setFont(font);painter.drawText((this->width()-300)/2,(this->height()-30)/2,QString("完成"));timer->stop();}//调用一下父类QWidget::paintEvent(event);
}//实现减去一个方块
void Widget::deleteLast(){snake.removeLast();
}//实现添加奖品函数
void Widget::addNewReword(){//奖品int width = this->width();int a = QRandomGenerator::global()->bounded(width/20*20);int height = this->height();int b = QRandomGenerator::global()->bounded(height/20*20);rewardNode = QRectF(//qrand()%(this->width()/20)*20,//qrand()%(this->height()/20)*20,//QT6用上面方法会报错:'qrand' was not declared in this scope; did you mean 'srand'?a,b,nodeWidth,nodeHeight);
}//实现判断蛇头是否碰到蛇身函数
bool Widget::checkContact(){for(int i = 1; i < snake.length(); i++)for (int j = i+1; j < snake.length(); j++) {if(snake[i] == snake[j]){return true;}}return false;
}

main.cpp

#include "widget.h"#include <QApplication>
#include <QLocale>
#include <QTranslator>int main(int argc, char *argv[])
{QApplication a(argc, argv);QTranslator translator;const QStringList uiLanguages = QLocale::system().uiLanguages();for (const QString &locale : uiLanguages) {const QString baseName = "Snake_" + QLocale(locale).name();if (translator.load(":/i18n/" + baseName)) {a.installTranslator(&translator);break;}}Widget w;w.show();return a.exec();
}
http://www.ds6.com.cn/news/77491.html

相关文章:

  • 免费推广网站排行榜线上推广员是做什么的
  • 做外贸营销网站卖网站链接
  • 网站备案ip地址段什么推广方法是有效果的
  • 网站可以增加关键词吗杭州明开seo
  • 旅游网站开发外文文献友链交换网站源码
  • 宝安做棋牌网站建设哪家好武汉seo软件
  • 做网站是干嘛的苏州百度推广公司
  • 排行榜哪个网站最好广州网站设计专注乐云seo
  • 网站开发需要学习什么技术360手机优化大师安卓版
  • 母婴产品网站模板北京厦门网站优化
  • 小公司做网站需要注意什么网站如何优化关键词排名
  • 邯郸网站建设浩森宇特灰色行业推广渠道
  • 投资网站维护蓝牙耳机网络营销推广方案
  • 建设网站 请示 报告360网站推广费用
  • 个人做网站排版广告网站推荐
  • 设计专业考研平面素材网站唐山seo优化
  • 关于文明网站建设存在的问题谷歌推广seo
  • 怎么做游戏推广网站2345网址导航怎么下载
  • 关于做芯片类招聘的网站东莞网站推广营销网站设计
  • 如何做独立网站提高工作效率8个方法
  • 广州口碑好的网站建设定制广告关键词
  • 哪些网站可以免费看剧济南seo优化公司
  • 大庆网站建设黑icp备1900网站seo方案模板
  • 电商网站设计方案柳州网站建设
  • 旅游景点介绍网页设计模板短视频seo排名系统
  • 给别人做的网站涉及到违法百度文库官网入口
  • 济南网站制作开通自己做网站建设
  • 网站建设的策划文案小姐关键词代发排名
  • linux做网站1G内存够不百度爱采购官网
  • 网站权重划分全网营销系统是不是传销