资源描述:
《嵌入式Linux大作业实现.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、2018-2019学年下学期《嵌入式Linux应用程序开发》期末大作业专业:软件工程班级:1603学号:5姓名:赵亮任课教师:薛正元成绩:题目内容:在Linux下,用qt编程实现一个小游戏,2048.整体的代码结构如图1:图1完成后预览如图2:图2游戏主逻辑说明:1初始生成两个值,要么2,要么42移动(上下左右四个方向):首先,在行/列上找到当前行第一个为空的值,记录下该位置,再往后找到第一个不为空的值,最后将这两个位置交换。3合并:1:在2.移动中,边界值为空当交换后的位置与交换后的位置的前一个位置(简称前一个位置)的值相等,前一个位置值*2,删除要移动的值。2:
2、在2.移动中,边界值不为空判断边界值是否与后面第一个不为空的值相等3:相等,边界值*2,删除第一个不为空的值4:不相等,不做任何操作4:游戏结束:如果出现2048,赢,游戏结束,当方格填满,没有合并项,失败,游戏结束1.注:要记录下该位置在同一回合中是否合并过,避免同一回合多次合并核心步骤:1设定背景样式:voidBGWidget::paintEvent(QPaintEvent*event){QStylePainterpainter(this);//用style画背景(会使用setstylesheet中的内容)QStyleOptionopt;opt.initFrom
3、(this);opt.rect=rect();painter.drawPrimitive(QStyle::PE_Widget,opt);painter.setPen(QColor(204,192,180));painter.setBrush(QColor(204,192,180));//4*4的背景矩阵constintcolWidth=75;constintrowHeight=75;constintxOffset=10;constintyOffset=10;for(introw=0;row<4;++row){for(intcol=0;col<4;++col){//背
4、景方框intx=col*colWidth+xOffset;inty=row*rowHeight+yOffset;painter.drawRoundRect(x,y,65,65,10,10);}}QWidget::paintEvent(event);}2Label类构造:MyLabel::MyLabel(inttext){this->setText(QString::number(text));this->setAlignment(Qt::Alignment(Qt::AlignCenter));this->setFont(QFont("Gadugi",20,QFont
5、::Bold));//初始化样式intindex=log_2(text)-1;//计算背景数组索引值QStringfontColor="color:rgb(255,255,255);";if(index<8){fontColor="color:rgb(119,110,101);";}QStringbgColor=QString("QLabel{background-color:%1;border-radius:5px;%2}").arg(digitBkg[index]).arg(fontColor);this->setStyleSheet(bgColor);//透明
6、度QGraphicsOpacityEffect*m_pGraphicsOpacityEffect=newQGraphicsOpacityEffect(this);m_pGraphicsOpacityEffect->setOpacity(1);this->setGraphicsEffect(m_pGraphicsOpacityEffect);//动画让label慢慢出现QPropertyAnimation*animation=newQPropertyAnimation(m_pGraphicsOpacityEffect,"opacity",this);animation
7、->setEasingCurve(QEasingCurve::Linear);animation->setDuration(400);animation->setStartValue(0);animation->setEndValue(1);animation->start(QAbstractAnimation::KeepWhenStopped);}voidMyLabel::reSetText(inttext){this->setText(QString::number(text));intindex=log_2(text)-1;//计算背景数组索引值QStri