基于C + + 的2048游戏设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ui->show_3->setPixmap(QPixmap::fromImage(img));
img.load(":/image/"+QString::number(map[0][3])+".png");
ui->show_4->setPixmap(QPixmap::fromImage(img));
img.load(":/image/"+QString::number(map[1][0])+".png");
ui->show_9->setPixmap(QPixmap::fromImage(img));
img.load(":/image/"+QString::number(map[2][1])+".png");
ui->show_10->setPixmap(QPixmap::fromImage(img));
ui->fen->setText(QString::number(fen));
}
4.7 主体算法的分析和实现
接下来进入主要的算法设计步骤。在此根据2048游戏算法的功能需求和功能模块,对主要算法进行分析并实现。
对于控制模块,一共有上、下、左、右、重置、关闭六个控制功能键。
对于左移功能键的算法,每点击一次,所有的数字方块都会往滑动的方向靠拢。两个相同数字方块撞在一起之后合并成为他们的和。每次操作之后会在空白的方格处随机生成一个2或者4。此时分数也在累计增加。
img.load(":/image/"+QString::number(map[3][1])+".png");
ui->show_14->setPixmap(QPixmap::fromImage(img));
img.load(":/image/"+QString::number(map[3][2])+".png");
1 实习前的准备
学校对我们的实习非常重视,本着通过实习来检验本专业教学中存在的问题,改进教学工作的目的,提前就为我们联系好了与专业相关的单位来做实习培训。在正式进入机房实训前,讲师还专门做了一场关于实习内容的分享会,介绍了实习的基本情况、基本要求、实习项目的基本情况,学习和了解实习项目的相关文件和资料,帮助我们更系统地了解和熟悉接下来的实习课程内容。
for(int j=0;j<4;j++){
map[i][j]=0;
}
}
sui();
sui();
fen=0;
update();
}
void Show::on_clo_clicked()
{
//clo
this->close();
}
void Show::on_pushButton_2_clicked()
{
//up
实习论文(本科)
学 院数学与统计学院
专 业统计学
年 级2013级
姓 名
论文题目基于C + + 的2048游戏设计
指导教师职称讲师
成 绩
2016年10月16日
基于C + + 的2048游戏设计
学生姓名: 学号:
学 院:数学与统计学院 专业:统计学
指导教师:职称:讲师
摘 要:专业实习,是教学计划中的一门重要的必修课和综合实践课程,是培养学生的专业素质和实际能力的重要实践环节。通过此次的C++实习,掌握了程序设计的基本理论与方法,能够运用基本代码进行简单的程序设计,运行基本的游戏程序。
4.最后在实习指导老师的指导下,参与信息处理与计算工作,完成一篇相关的实习论文(或实习记录)。
4 实习内容
4.1
2048游戏是一款简单而流行的数字游戏,属于益智游戏。操作界面上有16个格子,初始时会有两个格子上安放了两个数字2,每次可以选择上下左右其中一个方向去滑动。每滑动一次,所有的数字方块都会往滑动的方向靠拢。两个相同数字方块撞在一起之后合并成为他们的和。每次操作之后会在空白的方格处随机生成一个2或者4(其他模式会有所改变),最终得到一个“2048”的方块就是胜利了。由于规则简单,各种版本和平台上均有该款游戏。相信有不少人都玩过它,但是操作界面只有半个巴掌大的一个游戏,背后却要用到类似随机数的产生、大批量数据的处理、UI设计等任务,真的不算是一个很简单的工作。
4.3 UI界面的规划设计
首先进行UI界面的规划设计。创建一个800×600的背景模块,在模块左侧这里我们需要16个方块,按照4×4的规格排列整齐。模块右侧的空白区域需要添加功能键:上、下、左、右、重置、关闭。另外我们还需要再添加一个计分标签,用来计算并输出游戏得分。最后按照模块功能与人的操作习惯,将标签分别排列在合适的位置。最终的UI界面如图1所示:
}
void Show::sui(){
do{
int x=rand()%4;
int y=rand()%4;
if(map[x][y]==0){
if(rand()%20==4)
map[x][y]=4;
else
map[x][y]=2;
break;
}
}while(1);
}
4.6 图片资源的导入和加载
将所有准备好的图片资源载入设计程序,以便后续的图片加载工作。随后我们进入为16个矩形模块和背景加载其各对应随机数图片的设计过程,这个模块以地址形式实现:
2 实习目的
1.培养理论联系实际的思想作风和工作作风;
2.培养作为计算机类工作人员的专业素质;
3.培养独立或与团队一起开展信息处理工作的基本业务能力。
3 实习任务
1.通过实际操作,了解并逐步熟悉掌握C + +;
2.掌握常用软件的熟练操作,为今后所期望的专业方向做准备;
3.在教师指导下,利用C + + 编程,完成独立的游戏编程任务;
img.load(":/image/"+QString::number(map[2][2])+".png");
ui->show_11->setPixmap(QPixmap::fromImage(img));
img.load(":/image/"+QString::number(map[2][3])+".png");
这一部分中重置和关闭这两个功能键相对与其他功能键独立,而上、下、左、右四个功能键的算法有一定的相似之处,所以以下仅详细展示左移功能键的代码。现在开始对这六个功能键进行代码编写:
void Show::on_pushButton_3_clicked()
{
//reset
for(int i=0;i<4;i++){
void Show::paintEvent(QPaintEvent *){
QImage img;
Baidu Nhomakorabeaimg.load(":/image/"+QString::number(map[0][0])+".png");
ui->show_1->setPixmap(QPixmap::fromImage(img));
ui->show_7->setPixmap(QPixmap::fromImage(img));
img.load(":/image/"+QString::number(map[1][3])+".png");
ui->show_8->setPixmap(QPixmap::fromImage(img));
img.load(":/image/"+QString::number(map[2][0])+".png");
本次的游戏程序设计任务将运用C + +来实现。
4.2 2048模块需求分析
首先分析了这款游戏的功能需求。2048游戏一般由以下几个模块来构成:
1.矩阵方块;
2.控制模块;
3.计算模块;
4.输出模块。
每个模块来实现2048 游戏的各项功能:方向移动、方块合并、记录当前数据和输出计分结果、游戏胜利或失败后执行结束游戏操作等。
Keywords:C + +;Design;Program
前言
这次实习是我们毕业前的一次实践性实习。为了拓展我们的知识面,增强我们对所学知识的应用能力,增加我们在社会竞争中的经验,锻炼和提高我们的综合素质,以便在以后毕业后能真正走入社会,并且能够在生活和工作中很好地处理各方面的问题,学校特地从北京达内科技集团聘请了专业的C + +工程师讲师来对我们进行专业实训,进一步运用所学知识分析和解决实际专业问题,从而为就业打下良好的基础。
sui();
sui();
fen=0;
QPixmap pix(":/image/bj.jpg");//加载图片
QPalette palette;//声明画板对象
palette.setBrush(this->backgroundRole(),QBrush(pix));//设置画板样式
this->setPalette(palette);//设置到我们的面板上
ui->show_5->setPixmap(QPixmap::fromImage(img));
img.load(":/image/"+QString::number(map[1][1])+".png");
ui->show_6->setPixmap(QPixmap::fromImage(img));
img.load(":/image/"+QString::number(map[1][2])+".png");
ui->show_12->setPixmap(QPixmap::fromImage(img));
img.load(":/image/"+QString::number(map[3][0])+".png");
ui->show_13->setPixmap(QPixmap::fromImage(img));
img.load(":/image/"+QString::number(map[0][1])+".png");
ui->show_2->setPixmap(QPixmap::fromImage(img));
img.load(":/image/"+QString::number(map[0][2])+".png");
关键词:C + +;设计;程序
TheGame Design of 2048 Based on C++
Abstract:Theimportant required course in the teaching plan and comprehensive practice curriculum, professional internships, is to cultivate the students' professional quality and practical ability of the important link of practice. Through theC+ + practice,wegrasp the basic theory and method ofprogram design,beable to usebasic code to build simple program and run it.
4.5 随机数的生成
接下来我们开始写入生成两个随机数和分数从零开始的代码,同时加入图片加载和声明面板对象的代码:
{
ui->setupUi(this);
srand(time(NULL));
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
map[i][j]=0;
}
}
#include "show.h"
#include "ui_show.h"
#include<ctime>
#include<cstdlib>
#include<QPixmap>
#include<QPalette>
#include<QMessageBox>
QDialog(parent),
ui(new Ui::Show)
图1
UI界面(矩阵方块)设计完成以后,接着来开始程序代码的编写。
4.4 头文件的需求分析
首先分析需要用到的头文件。第一步需要生成随机数,第二步要为16个矩形模块填充随机数所对应的图片,第三步为操作界面添加背景,第四步在游戏成功或失败时即时输出信息。分析完成以后将所有需要用到的头文件都写入show.cpp文件里:
for(int k=0;k<3;k++){
ui->show_15->setPixmap(QPixmap::fromImage(img));
img.load(":/image/"+QString::number(map[3][3])+".png");
ui->show_16->setPixmap(QPixmap::fromImage(img));
img.load(":/image/"+QString::number(map[0][3])+".png");
ui->show_4->setPixmap(QPixmap::fromImage(img));
img.load(":/image/"+QString::number(map[1][0])+".png");
ui->show_9->setPixmap(QPixmap::fromImage(img));
img.load(":/image/"+QString::number(map[2][1])+".png");
ui->show_10->setPixmap(QPixmap::fromImage(img));
ui->fen->setText(QString::number(fen));
}
4.7 主体算法的分析和实现
接下来进入主要的算法设计步骤。在此根据2048游戏算法的功能需求和功能模块,对主要算法进行分析并实现。
对于控制模块,一共有上、下、左、右、重置、关闭六个控制功能键。
对于左移功能键的算法,每点击一次,所有的数字方块都会往滑动的方向靠拢。两个相同数字方块撞在一起之后合并成为他们的和。每次操作之后会在空白的方格处随机生成一个2或者4。此时分数也在累计增加。
img.load(":/image/"+QString::number(map[3][1])+".png");
ui->show_14->setPixmap(QPixmap::fromImage(img));
img.load(":/image/"+QString::number(map[3][2])+".png");
1 实习前的准备
学校对我们的实习非常重视,本着通过实习来检验本专业教学中存在的问题,改进教学工作的目的,提前就为我们联系好了与专业相关的单位来做实习培训。在正式进入机房实训前,讲师还专门做了一场关于实习内容的分享会,介绍了实习的基本情况、基本要求、实习项目的基本情况,学习和了解实习项目的相关文件和资料,帮助我们更系统地了解和熟悉接下来的实习课程内容。
for(int j=0;j<4;j++){
map[i][j]=0;
}
}
sui();
sui();
fen=0;
update();
}
void Show::on_clo_clicked()
{
//clo
this->close();
}
void Show::on_pushButton_2_clicked()
{
//up
实习论文(本科)
学 院数学与统计学院
专 业统计学
年 级2013级
姓 名
论文题目基于C + + 的2048游戏设计
指导教师职称讲师
成 绩
2016年10月16日
基于C + + 的2048游戏设计
学生姓名: 学号:
学 院:数学与统计学院 专业:统计学
指导教师:职称:讲师
摘 要:专业实习,是教学计划中的一门重要的必修课和综合实践课程,是培养学生的专业素质和实际能力的重要实践环节。通过此次的C++实习,掌握了程序设计的基本理论与方法,能够运用基本代码进行简单的程序设计,运行基本的游戏程序。
4.最后在实习指导老师的指导下,参与信息处理与计算工作,完成一篇相关的实习论文(或实习记录)。
4 实习内容
4.1
2048游戏是一款简单而流行的数字游戏,属于益智游戏。操作界面上有16个格子,初始时会有两个格子上安放了两个数字2,每次可以选择上下左右其中一个方向去滑动。每滑动一次,所有的数字方块都会往滑动的方向靠拢。两个相同数字方块撞在一起之后合并成为他们的和。每次操作之后会在空白的方格处随机生成一个2或者4(其他模式会有所改变),最终得到一个“2048”的方块就是胜利了。由于规则简单,各种版本和平台上均有该款游戏。相信有不少人都玩过它,但是操作界面只有半个巴掌大的一个游戏,背后却要用到类似随机数的产生、大批量数据的处理、UI设计等任务,真的不算是一个很简单的工作。
4.3 UI界面的规划设计
首先进行UI界面的规划设计。创建一个800×600的背景模块,在模块左侧这里我们需要16个方块,按照4×4的规格排列整齐。模块右侧的空白区域需要添加功能键:上、下、左、右、重置、关闭。另外我们还需要再添加一个计分标签,用来计算并输出游戏得分。最后按照模块功能与人的操作习惯,将标签分别排列在合适的位置。最终的UI界面如图1所示:
}
void Show::sui(){
do{
int x=rand()%4;
int y=rand()%4;
if(map[x][y]==0){
if(rand()%20==4)
map[x][y]=4;
else
map[x][y]=2;
break;
}
}while(1);
}
4.6 图片资源的导入和加载
将所有准备好的图片资源载入设计程序,以便后续的图片加载工作。随后我们进入为16个矩形模块和背景加载其各对应随机数图片的设计过程,这个模块以地址形式实现:
2 实习目的
1.培养理论联系实际的思想作风和工作作风;
2.培养作为计算机类工作人员的专业素质;
3.培养独立或与团队一起开展信息处理工作的基本业务能力。
3 实习任务
1.通过实际操作,了解并逐步熟悉掌握C + +;
2.掌握常用软件的熟练操作,为今后所期望的专业方向做准备;
3.在教师指导下,利用C + + 编程,完成独立的游戏编程任务;
img.load(":/image/"+QString::number(map[2][2])+".png");
ui->show_11->setPixmap(QPixmap::fromImage(img));
img.load(":/image/"+QString::number(map[2][3])+".png");
这一部分中重置和关闭这两个功能键相对与其他功能键独立,而上、下、左、右四个功能键的算法有一定的相似之处,所以以下仅详细展示左移功能键的代码。现在开始对这六个功能键进行代码编写:
void Show::on_pushButton_3_clicked()
{
//reset
for(int i=0;i<4;i++){
void Show::paintEvent(QPaintEvent *){
QImage img;
Baidu Nhomakorabeaimg.load(":/image/"+QString::number(map[0][0])+".png");
ui->show_1->setPixmap(QPixmap::fromImage(img));
ui->show_7->setPixmap(QPixmap::fromImage(img));
img.load(":/image/"+QString::number(map[1][3])+".png");
ui->show_8->setPixmap(QPixmap::fromImage(img));
img.load(":/image/"+QString::number(map[2][0])+".png");
本次的游戏程序设计任务将运用C + +来实现。
4.2 2048模块需求分析
首先分析了这款游戏的功能需求。2048游戏一般由以下几个模块来构成:
1.矩阵方块;
2.控制模块;
3.计算模块;
4.输出模块。
每个模块来实现2048 游戏的各项功能:方向移动、方块合并、记录当前数据和输出计分结果、游戏胜利或失败后执行结束游戏操作等。
Keywords:C + +;Design;Program
前言
这次实习是我们毕业前的一次实践性实习。为了拓展我们的知识面,增强我们对所学知识的应用能力,增加我们在社会竞争中的经验,锻炼和提高我们的综合素质,以便在以后毕业后能真正走入社会,并且能够在生活和工作中很好地处理各方面的问题,学校特地从北京达内科技集团聘请了专业的C + +工程师讲师来对我们进行专业实训,进一步运用所学知识分析和解决实际专业问题,从而为就业打下良好的基础。
sui();
sui();
fen=0;
QPixmap pix(":/image/bj.jpg");//加载图片
QPalette palette;//声明画板对象
palette.setBrush(this->backgroundRole(),QBrush(pix));//设置画板样式
this->setPalette(palette);//设置到我们的面板上
ui->show_5->setPixmap(QPixmap::fromImage(img));
img.load(":/image/"+QString::number(map[1][1])+".png");
ui->show_6->setPixmap(QPixmap::fromImage(img));
img.load(":/image/"+QString::number(map[1][2])+".png");
ui->show_12->setPixmap(QPixmap::fromImage(img));
img.load(":/image/"+QString::number(map[3][0])+".png");
ui->show_13->setPixmap(QPixmap::fromImage(img));
img.load(":/image/"+QString::number(map[0][1])+".png");
ui->show_2->setPixmap(QPixmap::fromImage(img));
img.load(":/image/"+QString::number(map[0][2])+".png");
关键词:C + +;设计;程序
TheGame Design of 2048 Based on C++
Abstract:Theimportant required course in the teaching plan and comprehensive practice curriculum, professional internships, is to cultivate the students' professional quality and practical ability of the important link of practice. Through theC+ + practice,wegrasp the basic theory and method ofprogram design,beable to usebasic code to build simple program and run it.
4.5 随机数的生成
接下来我们开始写入生成两个随机数和分数从零开始的代码,同时加入图片加载和声明面板对象的代码:
{
ui->setupUi(this);
srand(time(NULL));
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
map[i][j]=0;
}
}
#include "show.h"
#include "ui_show.h"
#include<ctime>
#include<cstdlib>
#include<QPixmap>
#include<QPalette>
#include<QMessageBox>
QDialog(parent),
ui(new Ui::Show)
图1
UI界面(矩阵方块)设计完成以后,接着来开始程序代码的编写。
4.4 头文件的需求分析
首先分析需要用到的头文件。第一步需要生成随机数,第二步要为16个矩形模块填充随机数所对应的图片,第三步为操作界面添加背景,第四步在游戏成功或失败时即时输出信息。分析完成以后将所有需要用到的头文件都写入show.cpp文件里:
for(int k=0;k<3;k++){
ui->show_15->setPixmap(QPixmap::fromImage(img));
img.load(":/image/"+QString::number(map[3][3])+".png");
ui->show_16->setPixmap(QPixmap::fromImage(img));