连连看游戏课程设计+源代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计
课程名称:程序设计课程设计
课题名称:网络连连看游戏
班级:xxx
学号:xxx
姓名:xxx
指导教师:
计算机学院
一、课程设计目的
本课程设计的目的最主要是掌握linux系统下C++编程思想,以及关于QT软件编程,设计出连连看图形界面,实现连连看各项功能,提高编程和解决问题的能力。
二、课程设计内容
设计一个连连看游戏项目,实现如下功能:
1、设计连连看游戏界面,能让用户在该界面上进行相关操作。
2、为游戏添加功能:聊天对话,逻辑层相消,游戏级别,时间限制等。
三、课程设计要求
1、课程设计的程序必须用C++语言完成。
2、课程设计必须在linux系统下进行。
3、要求写出需求分析报告。分析部分包括功能需求和界面需求。
4、本项目要求分团队完成,连连看游戏五人一组共同合作,培养学生团队合作的能力。
四、系统的需求分析和模块设计
1、需求分析
本项目需完成两大模块设计:一为游戏界面设计,二为游戏功能设计。
2、模块分解
系统功能层次模块图:
五、系统的程序设计与实现
程序的运行环境:Linux终端
开发环境:QT、C++
程序的详细设计:连连看消去算法实现
在检验两个方块能否消掉的时候,我们要让两个方块同时满足两个条件才行,就是两者配对并且连线成功。
分3种情况:(从下面的这三种情况,我们可以知道,需要三个检测,这三个检测分别检测一条直路经。这样就会有三条路经。若这三条路经上都是空按钮,那么就刚好是三种直线(两个转弯点)把两个按钮连接起来了)
* 1.相邻
* 2. 若不相邻的先在第一个按钮的同行找一个空按钮。1).找到后看第二个按钮横向到这个空按钮所在的列是否有按钮。2).没有的话再看第一个按钮到与它同行的那个空按钮之间是否有按钮。
3).没有的话,再从与第一个按钮同行的那个空按钮竖向到与第二个按钮的同行看是否有按钮。没
有的话路经就通了,可以消了.
* 3.若2失败后,再在第一个按钮的同列找一个空按钮。1).找到后看第二个按钮竖向到这个空按钮所在的行是否有按钮2).没有的话,再看第一个按钮到与它同列的那个空按钮之间是否有按钮。3).没有的话,再从与第一个按钮同列的那个空按钮横向到与第二个按钮同列看是否有按钮。
没有的话路经就通了,可以消了。
* 若以上三步都失败,说明这两个按钮不可以消去。
六、系统的运行结果与分析
程序源代码:
Mainwindow.cpp
#include
#include
#include
#include
#include
#include
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include"udp.h"
#include
#include
#include "llk.h"
#include
using namespace std;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(this, SIGNAL(recvMessage(QString,QString)), this, SLOT(onRecvMessage(QString,QString)));
//this->setCentralWidget(link);
//link->setMaximumSize(300,300);
ui->editChatRec->setReadOnly(true);
// link = new llk();
size=6;
isLinkE = false;
sendMessage("192.168.3.255",8838,"o192.168.3.117",true); }
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
void MainWindow::on_btnSend_clicked()
{
QString string = ui->lineEdit->text();
if(ui->radiosingle->isChecked()==true)
{
sendMessage(string,8838,'c' + ui->editChat->text(),true);
}
else
{
string = "192.168.3.255";
sendMessage("192.168.3.255",8838,'c' + ui->editChat->text(),true);
}
QString str =trUtf8("自己对") + string +trUtf8("发送:") + "\n" + ui->editChat->text();
ui->editChatRec->setPlainText(ui->editChatRec->toPlainText() +" \n" +str); ui->editChat->clear();
QScrollBar *bar = ui->editChatRec->verticalScrollBar();
bar->setSliderPosition(bar->maximum());
}
Ui::MainWindow* MainWindow::getUi()
{
return ui;
}
void MainWindow::onRecvMessage(QString msg, QString ipAdd)
{
//
QString time = QTime::currentTime().toString();
QString string =time + "\n" +QString(trUtf8("收到来自")) + ipAdd + trUtf8(":的消息:") + "\n" + msg.right(msg.length()-1);