高级语言程序设计大作业实验报告
南开大学 计算机科学与技术
姓名:陈佳卉
学号:2110694
班级:2021 级计算机卓越班
2022 年 5 月 4 日
目录
高级语言程序设计大作业实验报告..................................................................................... 1
1、项目介绍....................................................................................................................................3
2、开发软件....................................................................................................................................3
3、设计思路....................................................................................................................................3
3.1 构建框架............................................................................................................................3
3.2.1 物体共性.................................................................................................................3
3.2.2 被钓的物体及物体位置的性质.............................................................................3
3.2.3 钩子及其行为性质.................................................................................................4
3.2 界面整体布局....................................................................................................................5
3.3 中心算法的实现................................................................................................................5
3.3.1QPaintEvent 事件.............................................................................................................5
3.3.2 计时器.............................................................................................................................5
3.3.3 碰撞与越界检测.............................................................................................................5
3.3.4 钩子的旋转控制.............................................................................................................5
3.3.5 钩子的伸展操作.............................................................................................................5
4 代码实现...............................................................................................................................6
4.1arcles.................................................................................................................................6
4.2posions..............................................................................................................................7
4.3roles.....................................................................................................................................9
4.4mainwindow.......................................................................................................................11
4 、 运 行 与 测
试...............................................................................................................................13
5 、 问 题 与 解 决 方
案........................................................................................................................15
6.1 关于钩子能否延长的问题...............................................................................................15
6.2 仍未解决的问题...............................................................................................................15
6.2c++编程与收获..................................................................................................................15
6 、 总 结 与 反
思...............................................................................................................................15
1、项目介绍
利用 qt 设计了一个简单的“太空寻宝记”游戏
2、开发软件
Qt5.9.0
3、设计思路
3.1 建构框架
由于在写 Qt 时所用语言为 c++,因而 c++的性质 Qt 都具备,而 c++最显著的
特点是采用面向对象程序设计,其具有封装性、继承性、多态性,所以在设计
这块游戏时我也完全按照 c++的编程方法来实现,通过类的封装实现游戏的功
能。
3.1.1 物体共性
物体的属性有:
物体所在位置坐标:x、y
物体的长和宽:height、width
物体所值得金币数:price
物体的种类:Kind
物体被吊起来后移动的速度:speed
判断物体是否已被钓起来:visible
物体的成员函数:
对于物体所在位置的横纵坐标的获取:void set_position(const int
&xx,const int &yy)
对于物体长和宽的设置:void set_size(const int &wwidth,const
int &hheight)
对于物体所值金币数的设置:void set_price(const int &pprice);
对于物体被钓起来后的速度的设置: void set_speed(const double
&sspeed)
对于物体种类的设置: void set_kind(const int &kkind)
对于物体是否可见的设置: void set_visible();//设置为可见
void set_invisible();//设置为不可见
得到物体种类的函数: int get_kind(){return kind;
得到物体所值金币数的函数: int get_price(){return price;}
获取物体的 x、y 值: int get_x(){return x;}
int get_y(){return y;}
获取物体被钓起来后的速度大小:double get_speed(){return
speed;}
判断物体是否还存在: bool is_visible(){return visible;}
对物体属性的初始化函数: void init()
判断物体是否碰到钩子: bool detection(const int &xx,const int
&yy);
3.2.2 被钓的物体和物体位置的性质
被钓物体的属性:
所有物体存放的数组:arcle[15]
被钓物体的编号:cur_arcle
被钓物体和位置的函数:
获取被钓物体的位置:int get_cur_article(){return cur_article;}
获取被钓物体的移动速度: double get_cur_speed(){return
article[cur_article]->get_speed();}
获取被钓物体的所值金币数: int get_cur_price(){return
article[cur_article]->get_price();}
获取被钓物体的种类: int get_cur_kind(){return
article[cur_article]->get_kind();}
获取被钓物体所在位置的坐标: QPoint get_point(const int &i);
获取被钓物体的种类:int get_kind(const int &i);
判断某位置上的物体是否已被钓取: bool is_visible(const int &i);
碰撞检测: bool detection(const int &x,const int &y)
设置被钓物体不可见: void invisible()
随机生成矿石:void rrand();
对于物体所在位置的初始化: void init()
3.2.3 钩子及其行为性质
钩子的属性: