C++课程设计报告.docx

上传人:b****0 文档编号:18495302 上传时间:2023-08-18 格式:DOCX 页数:27 大小:1.24MB
下载 相关 举报
C++课程设计报告.docx_第1页
第1页 / 共27页
C++课程设计报告.docx_第2页
第2页 / 共27页
C++课程设计报告.docx_第3页
第3页 / 共27页
C++课程设计报告.docx_第4页
第4页 / 共27页
C++课程设计报告.docx_第5页
第5页 / 共27页
C++课程设计报告.docx_第6页
第6页 / 共27页
C++课程设计报告.docx_第7页
第7页 / 共27页
C++课程设计报告.docx_第8页
第8页 / 共27页
C++课程设计报告.docx_第9页
第9页 / 共27页
C++课程设计报告.docx_第10页
第10页 / 共27页
C++课程设计报告.docx_第11页
第11页 / 共27页
C++课程设计报告.docx_第12页
第12页 / 共27页
C++课程设计报告.docx_第13页
第13页 / 共27页
C++课程设计报告.docx_第14页
第14页 / 共27页
C++课程设计报告.docx_第15页
第15页 / 共27页
C++课程设计报告.docx_第16页
第16页 / 共27页
C++课程设计报告.docx_第17页
第17页 / 共27页
C++课程设计报告.docx_第18页
第18页 / 共27页
C++课程设计报告.docx_第19页
第19页 / 共27页
C++课程设计报告.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++课程设计报告.docx

《C++课程设计报告.docx》由会员分享,可在线阅读,更多相关《C++课程设计报告.docx(27页珍藏版)》请在冰点文库上搜索。

C++课程设计报告.docx

C++课程设计报告

重庆大学课程设计报告

 

课程设计题目:

GUI小游戏的设计与实现

 

学院:

计算机学院

专业班级:

网络1班

年级:

2011级

姓名:

费仁杰,胡吉乾,颜宵鹏

学号:

20115435,20115433,20115434

完成时间:

2013年1月3日

成绩:

指导教师:

杨广超

重庆大学教务处制

课程设计指导教师评定成绩表

学号:

20115435姓名:

费仁杰班级:

11网络工程1班

项目

分值

优秀

(100>x≥90)

良好

(90>x≥80)

中等

(80>x≥70)

及格

(70>x≥60)

不及格(x<60)

评分

参考标准

参考标准

参考标准

参考标准

参考标准

学习态度

15

学习态度认真,科学作风严谨,严格保证设计时间并按任务书中规定的进度开展各项工作

学习态度比较认真,科学作风良好,能按期圆满完成任务书规定的任务

学习态度尚好,遵守组织纪律,基本保证设计时间,按期完成各项工作

学习态度尚可,能遵守组织纪律,能按期完成任务

学习马虎,纪律涣散,工作作风不严谨,不能保证设计时间和进度

技术水平与实际能力

25

设计合理、理论分析与计算正确,实验数据准确,有很强的实际动手能力、经济分析能力和计算机应用能力,文献查阅能力强、引用合理、调查调研非常合理、可信

设计合理、理论分析与计算正确,实验数据比较准确,有较强的实际动手能力、经济分析能力和计算机应用能力,文献引用、调查调研比较合理、可信

设计合理,理论分析与计算基本正确,实验数据比较准确,有一定的实际动手能力,主要文献引用、调查调研比较可信

设计基本合理,理论分析与计算无大错,实验数据无大错

设计不合理,理论分析与计算有原则错误,实验数据不可靠,实际动手能力差,文献引用、调查调研有较大的问题

创新

10

有重大改进或独特见解,有一定实用价值

有较大改进或新颖的见解,实用性尚可

有一定改进或新的见解

有一定见解

观念陈旧

论文(计算书、图纸)撰写质量

50

结构严谨,逻辑性强,层次清晰,语言准确,文字流畅,完全符合规范化要求,书写工整或用计算机打印成文;图纸非常工整、清晰

结构合理,符合逻辑,文章层次分明,语言准确,文字流畅,符合规范化要求,书写工整或用计算机打印成文;图纸工整、清晰

结构合理,层次较为分明,文理通顺,基本达到规范化要求,书写比较工整;图纸比较工整、清晰

结构基本合理,逻辑基本清楚,文字尚通顺,勉强达到规范化要求;图纸比较工整

内容空泛,结构混乱,文字表达不清,错别字较多,达不到规范化要求;图纸不工整或不清晰

指导教师评定成绩:

指导教师签名:

年月日

课程设计指导教师评定成绩表

学号:

20115433姓名:

胡吉乾班级:

11网络工程1班

项目

分值

优秀

(100>x≥90)

良好

(90>x≥80)

中等

(80>x≥70)

及格

(70>x≥60)

不及格(x<60)

评分

参考标准

参考标准

参考标准

参考标准

参考标准

学习态度

15

学习态度认真,科学作风严谨,严格保证设计时间并按任务书中规定的进度开展各项工作

学习态度比较认真,科学作风良好,能按期圆满完成任务书规定的任务

学习态度尚好,遵守组织纪律,基本保证设计时间,按期完成各项工作

学习态度尚可,能遵守组织纪律,能按期完成任务

学习马虎,纪律涣散,工作作风不严谨,不能保证设计时间和进度

技术水平与实际能力

25

设计合理、理论分析与计算正确,实验数据准确,有很强的实际动手能力、经济分析能力和计算机应用能力,文献查阅能力强、引用合理、调查调研非常合理、可信

设计合理、理论分析与计算正确,实验数据比较准确,有较强的实际动手能力、经济分析能力和计算机应用能力,文献引用、调查调研比较合理、可信

设计合理,理论分析与计算基本正确,实验数据比较准确,有一定的实际动手能力,主要文献引用、调查调研比较可信

设计基本合理,理论分析与计算无大错,实验数据无大错

设计不合理,理论分析与计算有原则错误,实验数据不可靠,实际动手能力差,文献引用、调查调研有较大的问题

创新

10

有重大改进或独特见解,有一定实用价值

有较大改进或新颖的见解,实用性尚可

有一定改进或新的见解

有一定见解

观念陈旧

论文(计算书、图纸)撰写质量

50

结构严谨,逻辑性强,层次清晰,语言准确,文字流畅,完全符合规范化要求,书写工整或用计算机打印成文;图纸非常工整、清晰

结构合理,符合逻辑,文章层次分明,语言准确,文字流畅,符合规范化要求,书写工整或用计算机打印成文;图纸工整、清晰

结构合理,层次较为分明,文理通顺,基本达到规范化要求,书写比较工整;图纸比较工整、清晰

结构基本合理,逻辑基本清楚,文字尚通顺,勉强达到规范化要求;图纸比较工整

内容空泛,结构混乱,文字表达不清,错别字较多,达不到规范化要求;图纸不工整或不清晰

指导教师评定成绩:

指导教师签名:

年月日

课程设计指导教师评定成绩表

学号:

20115434姓名:

颜宵鹏班级:

11网络工程1班

项目

分值

优秀

(100>x≥90)

良好

(90>x≥80)

中等

(80>x≥70)

及格

(70>x≥60)

不及格(x<60)

评分

参考标准

参考标准

参考标准

参考标准

参考标准

学习态度

15

学习态度认真,科学作风严谨,严格保证设计时间并按任务书中规定的进度开展各项工作

学习态度比较认真,科学作风良好,能按期圆满完成任务书规定的任务

学习态度尚好,遵守组织纪律,基本保证设计时间,按期完成各项工作

学习态度尚可,能遵守组织纪律,能按期完成任务

学习马虎,纪律涣散,工作作风不严谨,不能保证设计时间和进度

技术水平与实际能力

25

设计合理、理论分析与计算正确,实验数据准确,有很强的实际动手能力、经济分析能力和计算机应用能力,文献查阅能力强、引用合理、调查调研非常合理、可信

设计合理、理论分析与计算正确,实验数据比较准确,有较强的实际动手能力、经济分析能力和计算机应用能力,文献引用、调查调研比较合理、可信

设计合理,理论分析与计算基本正确,实验数据比较准确,有一定的实际动手能力,主要文献引用、调查调研比较可信

设计基本合理,理论分析与计算无大错,实验数据无大错

设计不合理,理论分析与计算有原则错误,实验数据不可靠,实际动手能力差,文献引用、调查调研有较大的问题

创新

10

有重大改进或独特见解,有一定实用价值

有较大改进或新颖的见解,实用性尚可

有一定改进或新的见解

有一定见解

观念陈旧

论文(计算书、图纸)撰写质量

50

结构严谨,逻辑性强,层次清晰,语言准确,文字流畅,完全符合规范化要求,书写工整或用计算机打印成文;图纸非常工整、清晰

结构合理,符合逻辑,文章层次分明,语言准确,文字流畅,符合规范化要求,书写工整或用计算机打印成文;图纸工整、清晰

结构合理,层次较为分明,文理通顺,基本达到规范化要求,书写比较工整;图纸比较工整、清晰

结构基本合理,逻辑基本清楚,文字尚通顺,勉强达到规范化要求;图纸比较工整

内容空泛,结构混乱,文字表达不清,错别字较多,达不到规范化要求;图纸不工整或不清晰

指导教师评定成绩:

指导教师签名:

年月日

重庆大学本科学生课程设计任务书

课程设计题目

GUI小游戏的设计与实现

学院

计算机学院

专业

网络工程

年级

2011级

已知参数和设计要求:

课程设计对游戏内容不做限制,学生需要自行设计游戏的内容和规则,并在课程设计报告中进行描述。

游戏内容可以参考俄罗斯方块、坦克大战等游戏。

要求以小组为单位,用C++实现游戏的主要功能模块。

最后需要提供的材料包括课程设计报告1份,程序拷贝1份(包括源代码和可执行程序),报告用PPT电子文档一份。

学生应完成的工作:

根据面向对象程序设计思想和C++编程技术,设计实现GUI小游戏。

上机调试并能正确运行。

最后提交完整的设计报告和软件程序拷贝,以及报告用PPT电子文档。

目前资料收集情况(含指定参考资料):

《AcceleratedC++:

PracticalProgrammingbyExample》,AndrewKoenig,BarbaraE.Moo著,Addison-Wesley,2000.

《Windows程序设计:

第5版》,CharlesPetzold著,北京大学出版社,2003.

《高级语言C++程序设计编程范例与精解》,周玉龙,刘景编,高等教育出版社,2003.

课程设计的工作计划:

课程设计时间为一周,从18周星期一开始(2012年12月31日),到18周星期五结束(2013年1月4日)。

课程设计以组为单位进行。

每组不能超过4人,不能少于2人。

星期一进行需求分析;星期二进行软件设计;星期三用C++语言实现程序;星期四对程序进行调试,完成课程设计报告;星期五提交程序和课程设计报告,进行评审。

本组由费仁杰(20115435)、胡吉乾(20115433)和颜宵鹏(20115434)3人组成。

费仁杰负责课程设计的查找资料,游戏界面设置及画出贪吃蛇和食物,写实验报告,代码总体检查,制作PPT部分,所进行的工作占总工作量的34%;

胡吉乾负责课程设计的查找资料,通过键盘对贪吃蛇进行方向操作设置穿墙部分,写实验报告及代码注释,制作PPT部分,所进行的工作占总工作量的33%;

颜宵鹏负责课程设计的查找资料,通过键盘对贪吃蛇进行状态操作(加减速)及游戏计分,设置背景音乐,写实验报告,制作PPT部分,所进行的工作占总工作量的33%。

任务下达日期2012年12月21日

完成日期2013年1月3日

说明:

学院、专业、年级均填全称,如:

计算机学院、计算机科学与技术、2010。

 

课程设计正文

1.需求分析

1.选题

接到课程设计任务后,我们对几款经典小游戏作了分析并筛选,然后根据老是推荐的题目以及自己的编程能力做了选择,决定了编写简单贪吃蛇游戏,锻炼自己通过Qt实现对函数,类的综合运用。

2.功能

先做贪吃蛇界面,再通过键盘上不同按键对贪吃蛇进行操作,如各个方向运动,计分数等等。

2.系统设计(类图、模块图等)

1.设计思路

通过Qt绘图事件及UI界面设置,绘出贪吃蛇游戏界面,并用draw函数画出矩形(至少三个连在一起代表贪吃蛇,单独一个随机出现在除在贪吃蛇身上外界面任意一格),并伴有背景音乐进行游戏。

2.程序框图

3.游戏流程图

 

3.关键代码描述

snake类头文件代码

#ifndefSNAKE_H

#defineSNAKE_H

#include

/这个ui是namespaceUi里的Widget类,而这个

类又是简单的继承了ui_widget.h里的Ui_Widget类(没有添加任何成员)*/

namespaceUi{

classSnake;

}

/*namespaceUi里的Widget类其实就是个空壳,而他的基类也仅仅是

把此窗口上的所有控件的声明实例化初始化了,仅仅是为了分离ui和其他控制代码*/

classSnake:

publicQWidget

{

Q_OBJECT

public:

explicitSnake(QWidget*parent=0);//explicit和构造函数一起用.explicitconstructor指明构造函数只能显示使用,目的是为了防止不必要的隐式转化.

~Snake();

protected:

voidpaintEvent(QPaintEvent*);

voidkeyPressEvent(QKeyEvent*);

voidtimerEvent(QTimerEvent*);

private:

Ui:

:

Snake*ui;

QSizenodeSize;

QSizegameAreaSize;

QPointgamePoint;

QListsnakeBody;

QPointhead;

QPointfood;

intcolumns,rows;

enumDIR{D,R,U,L};//枚举

DIRdirector;

intspeed;

intlevel;

intfoodnumber;

intgrade;

inthigh_grade;

voidgenFood();

boolisOver();

inttimerId;

};

#endifSNAKE_H

头文件snake类中定义了画图函数,键盘操作函数以及计时函数,定义了Qlist类对象snakeBody作为游戏主体贪吃蛇。

snake.cpp文件代码

#include"snake.h"

#include"ui_snake.h"

#include

#include

#include

#include//读写文件头文件

#include//加载背景音乐头文件

#include

#include

#include

usingnamespacestd;

Snake:

:

Snake(QWidget*parent):

QWidget(parent),

ui(newUi:

:

Snake)

{

ui->setupUi(this);

setFocusPolicy(Qt:

:

StrongFocus);//通过Tab键,单击两种方式获得焦点

nodeSize.setWidth(20);

nodeSize.setHeight(20);//设置蛇大小

gamePoint.setX(100);

gamePoint.setY(16);//格子起点坐标

columns=30;

rows=30;

grade=0;

gameAreaSize.setWidth(nodeSize.width()*columns);

gameAreaSize.setHeight(nodeSize.height()*rows);//网格总体大小设置

resize(nodeSize.width()*50,nodeSize.height()*32);//窗口大小

snakeBody<

<

<

director=R;//初始化蛇运动方向,向右

qsrand(QTime(0,0,0).msecsTo(QTime:

:

currentTime()));

genFood();

level=1;

speed=240-level*20;//设置贪吃蛇最初速率

fstreamf;

f.open("grade.obj",ios:

:

in);//打开记录游戏分数文件,最初默认

stringline;存入为0

getline(f,line);

istringstreamstream(line);

stream>>high_grade;

ui->lcdNumber_2->display(high_grade);//窗口显示分数

f.close();

ui->gameoverLabel->setVisible(false);

}

Snake:

:

~Snake()

{

deleteui;

}

//画图函数,设置游戏界面及画出贪吃蛇

voidSnake:

:

paintEvent(QPaintEvent*)

{

QPainterp(this);

p.drawPixmap(0,0,QPixmap(":

/snake4.png"));

p.drawPixmap(100,16,QPixmap(":

/snake1.png"));

p.drawPixmap(710,16,QPixmap(":

/snake3.png"));//游戏背景图片设置

//设置网格范围,即贪吃蛇运动范围

QPainterPathpath1;

for(intx=0;x<=columns;x++)

{

path1.moveTo(gamePoint.x()+x*nodeSize.height(),gamePoint.y());

path1.lineTo(gamePoint.x()+x*nodeSize.height(),gamePoint.y()+gameAreaSize.height());

}

for(inty=0;y<=rows;y++)

{

path1.moveTo(gamePoint.x(),gamePoint.y()+y*nodeSize.width());

path1.lineTo(gamePoint.x()+gameAreaSize.width(),gamePoint.y()+y*nodeSize.width());

//设置终点坐标,自动把上一点当作起点

}

p.setPen(QColor(65,65,65,200));

p.drawPath(path1);

QPainterPathpath;

foreach(QPointnode,snakeBody)//根据数组中每个元素来循环代码块

{

path.addRect(gamePoint.x()+node.x()*nodeSize.width(),

gamePoint.y()+node.y()*nodeSize.height(),

nodeSize.width(),

nodeSize.height());

}

p.setPen(QColor(12,12,12,300));

p.setBrush(QColor(23,196,45,200));

p.drawPath(path);

p.setBrush(QColor(152,0,0,200));

p.drawRect(gamePoint.x()+food.x()*nodeSize.width(),

gamePoint.y()+food.y()*nodeSize.height(),

nodeSize.width(),

nodeSize.height());//画增加长度后的蛇

QPixmapsp(":

/snake2.png");

for(inti=0;i

{

p.drawPixmap(63,594-i*(sp.height()+1),sp);//画桃心,表示速度大小

}

}

//键盘操作函数,通过键盘控制贪吃蛇运动

voidSnake:

:

keyPressEvent(QKeyEvent*e)

{

switch(e->key())//分别赋予director头文件中枚举值,改变运动状态

{

caseQt:

:

Key_Up:

if(director==U||director==D)

break;

else

{director=U;

break;}

caseQt:

:

Key_Down:

if(director==U||director==D)

break;

else

{director=D;

break;}

caseQt:

:

Key_Right:

if(director==R||director==L)

break;

else

{director=R;

break;}

caseQt:

:

Key_Left:

if(director==R||director==L)

break;

else

{director=L;

break;}

caseQt:

:

Key_N:

if(level<10)

{

level++;

speed=240-level*20;//加速

killTimer(timerId);

timerId=startTimer(speed);

break;

}

else

break;

caseQt:

:

Key_M:

//减速

if(level>1)

{

level--;

speed=240-level*20;

killTimer(timerId);

timerId=startTimer(speed);

break;

}

else

break;

caseQt:

:

Key_P:

killTimer(timerId);//定时器

break;

caseQt:

:

Key_Space:

ui->gameoverLabel->setVisible(false);

//“游戏结束”是否显示

ui->lcdNumber->display(grade);

QSoundmusic("snake.wav");//设置背景音乐

music.play();

killTimer(timerId);

timerId=startTimer(speed);

}

update();

}

//控制贪吃蛇运动状态实现函数

voidSnake:

:

timerEvent(QTimerEvent*)

{

inti;

head=snakeBody.last();

switch(director)

{

caseD:

head.ry()++;//下

break;

caseR:

//右

head.rx()++;

break;

caseU:

head.ry()--;//上

break;

caseL:

//左

head.rx()--;

break;

}

if(isOver())

{

killTimer(timerId);

ui->gameoverLabel->setVisible(true);

//判断游戏是否结束,并显示“游戏结束”字样

if(grade>high_grade)

{

fstreamf;

f.open("grade.obj",ios:

:

out|ios:

:

binary);

f<

high_grade=grade;

ui->lcdNumber_2->di

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 化学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2