C++打小怪游戏3

发布于:2024-12-23 ⋅ 阅读:(11) ⋅ 点赞:(0)

副文件

mosters.h
%怪物们的头文件%
结束
开始
开启让防止头文件重复包含的开关
导入io流
释放std作用域下的所有东西
导入moster.h头文件
导入M_o.h头文件
导入M&.h头文件
导入M^.h头文件
导入MO.h头文件
导入M+.h头文件
导入MX.h头文件
isvp.h(结构体isvp)
结束
开始
开启让防止头文件重复包含的开关
导入io流
释放std作用域下的所有东西
导入vector类文件
导入string类文件
导入moster.h头文件
定义结构体isv,想知道结构体isv的定义方式请点这里
draw.h(结构体draw)
结束
开始
开启让防止头文件重复包含的开关
导入io流
释放std作用域下的所有东西
定义结构体draw,想知道结构体draw的定义方式请点这里
枚举WASD
WASD.h
结束
开始
开启让防止头文件重复包含的开关
导入io流
释放std作用域下的所有东西
没有定义宏onceb?
定义宏onceb
定义枚举WASD,想知道枚举WASD的定义方式请点这里
声明重载的前置++运算符,参数有枚举WASD的引用w%枚举WASD类型数据的前置++,无后置++%
WASD.cpp
结束
开始
导入io流
释放std作用域下的所有东西
导入WASD.h头文件
定义重载的前置++运算符,参数有枚举WASD的引用w
重载的参数有枚举WASD的引用w的前置++运算符
返回枚举WASD变量的引用w
否(返回枚举WASD变量的引用w)
结束
开始
把有5个枚举WASD的数组warr初始化为W, A, S, D和E%把WASD枚举类型的每一种东西都转化成数字%
w < E?
设枚举WASD变量w为枚举WASD数组warr第枚举WASD变量w加1项的结果%warr[w + 1](WASD) == w + 1(int)%
假函数cmpm
cmpm.h
结束
开始
开启让防止头文件重复包含的开关
没有定义宏oncea?
定义宏oncea
导入io流
释放std作用域下的所有东西
导入moster.h头文件
定义假函数cmpm,想知道假函数cmpm的定义方式请点这里
cmpm.cpp
结束
开始
导入io流
导入cmpm.h头文件
导入moster.h头文件
释放std作用域下的所有东西
定义重载的函数调用运算符,参数有指向moster抽象基类的指针mp和指向moster抽象基类的指针mpa
重载的参数有指向moster抽象基类的指针mp和指向moster抽象基类的指针mpa的函数调用运算符
返回指向moster抽象基类的指针mp指向的血量数是否小于指向moster抽象基类的指针mpa指向的血量数的结果的布尔值%比较两个怪物的生命值%
结束
开始
假函数Cmp
Cmp.h
结束
开始
开启让防止头文件重复包含的开关
导入io流
导入vector类文件
导入Player.h头文件
释放std作用域下的所有东西
定义假函数cmp,想知道假函数cmp的定义方式请点这里
Cmp.cpp
结束
开始
导入io流
导入Cmp.h头文件
导入Player.h头文件
释放std作用域下的所有东西
定义重载的函数调用运算符,参数有结构体trir变量t和结构体trir变量ta
重载的参数有结构体trir变量t和结构体trir变量ta的函数调用运算符
返回结构体trir变量t的成员变量iy是否小于结构体trir变量ta的成员变量iy的结果的布尔值%比较两个子弹的y坐标%
结束
开始
玩家Player类
Player.h
结束
开始
开启让防止头文件重复包含的开关
导入io流
释放std作用域下的所有东西
导入vector类文件
定义宏JUMPHIGH为3
没有定义宏oncea?
定义宏oncea
定义枚举XYHS,想知道枚举XYHS的定义方式请点这里
定义结构体trir,想知道结构体trir的定义方式请点这里
定义Player类,想知道Player类的定义方式请点这里
Player.cpp
结束
开始
导入io流
导入Player.h头文件
导入Cmp.h头文件
导入algorithm头文件
导入Windows.h头文件
释放std作用域下的所有东西
定义Player类里的构造函数
定义Player类里的printmap方法,参数有11行11列的二维数组strmap,常量布尔值bwait和常量整型iunmd
定义Player类里的printmap重载方法,参数有指向有11行11列的二维字符数组的指针strmap,常量布尔值bwait,常量整型ir和常量整型iunmd
定义Player类里的jump方法
定义Player类里的left_move方法
定义Player类里的right_move方法
定义Player类里的sgetxyhs方法,参数有枚举XYHS类型的xyhsmode
定义Player类里的sgetxyhs重载方法,无参
定义Player类里的upOrDown方法
定义Player类里的shoot方法
定义Player类里的shootmove方法
Player类里的构造函数
结束
开始
设整型ijh为1
设布尔值blr为1
Player类里的参数有指向有11行11列的二维字符数组的指针strmap,常量布尔值bwait,常量整型ir和常量整型iunmd的printmap方法%打印地牢方法%
结束
开始
定义整型i为0
定义整型ia为0
前面输出“\​033[”,如果布尔值bwait等于0,或者5小于整型iheal,那么中间输出“32;1m”,否则如果2小于整型iheal,那么中间就输出“33m”,否则中间就输出“31;1m”,后面则输出“P * ”,整型iheal和“\​033[0m\​n\​n\​n”%打印玩家的血量%
输出“-----------@\​n”
i < 11?
设ia为0
ia < 11?
前面输出“\​033[”,如果字符“G”为二维字符数组strmap第i行第ia列的元素,那么中间就输出“32;1m”,否则如果字符“v”为二维字符数组strmap第i行第ia列的元素,那么中间就输出“36m”,否则如果字符“&”,字符“^”,字符“o”,字符“O”或者字符“X”为二维字符数组strmap第i行第ia列的元素,那么中间就输出“31;1m”,否则如果字符“+”,字符“#”或者字符“@”为二维字符数组strmap第i行第ia列的元素,那么中间就输出“33m”,否则如果字符“P”为二维字符数组strmap第i行第ia列的元素,并且整型iunmd不为0,那么中间就输出“30;1m”,否则中间就输出“0m”,后面则输出二维字符数组strmap第i行第ia列的元素和“\​033[0m”%打印地图%
ia自增1
输出“|\​n”%竖的外边框%
i自增1
输出“-----------@\​n”%底下的外边框%
Player类里参数有指向有11行11列的二维字符数组的指针strmap,常量布尔值bwait,常量整型ir和常量整型iunmd的printmap重载方法%打印地牢函数(右偏版本)%
%清空左边的墙(除边框)%
结束
开始
定义整型i为0
定义整型ia为0
前面输出“[”,如果,如果布尔值bwait等于0,或者5小于整型iheal,那么中间输出“32;1m”,否则如果2小于整型iheal,那么中间就输出“33m”,否则中间就输出“31;1m”,后面则输出“P * ”,整型iheal和“\​033[0m\​n\​n\​n”%打印血量%
输出“-----------@\​n”
i < 11?
设ia为ir
11 > ia - ir?
21 > ia && ia >= 12 && i && 10 != i?
设解引用之后的指向有11行11列的二维字符数组的指针strmap第i行第ia模上11的结果列的元素为空格
前面输出“[”,如果字符“P”为解引用之后的指向有11行11列的二维字符数组的指针strmap第i行第ia模上11的结果列的元素,并且整型iunmd不为0,那么中间就输出“40;1m”,否则中间就输出“0m”,后面输出解引用之后的指向有11行11列的二维字符数组的指针strmap第i行第ia模上11的结果列的元素和“\​033[0m”%打印右偏之后的地图%
ia自增1
输出“|\​n”%竖的外边框%
i自增1
输出“-----------@\​n”%底下的外边框%
Player类里的jump方法%跳跃方法%
结束
开始
10 == ix || '*' == (*cpp)[11]?
设整型ijh为宏JUMPHIGH的值
Player类里的left_move方法%左移方法%
结束
开始
iy && '*' != *(*cpp - 1)?
把解引用的二级字符指针cpp向左移动一位
设布尔值blr为假
Player类里的right_move方法%右移方法%
结束
开始
10 != iy && '*' != *(*cpp + 1)?
把解引用的二级字符指针cpp向右移动一位
设布尔值blr为真
Player类里参数有枚举XYHS类型的xyhsmode的sgetxyhs方法%用于设置或获得玩家的x坐标,y坐标或血量%
是(返回整型ix的引用)
是(返回整型iy的引用)
是(返回整型iheal的引用)
否(break)
结束
开始
X == xyhsmode?
Y == xyhsmode?
HEAL == xyhsmode?
报错
Player类里的无参sgetxyhs重载方法%设置或获得玩家射出的子弹%
返回装trir结构体的vector容器v的地址
结束
开始
Player类里的upOrDown方法%使玩家上升或下坠%
结束
开始
ijh > 0 && ix && '*' != (*cpp)[-11]?%跳跃后%
整型ijh自减1
把解引用的二级字符指针cpp向左移动11位
ijh > 0 && '*' == (*cpp)[11]?%撞墙或跳好后%
设整型ijh为0
'*' != (*cpp)[11] && (!ix || '*' == (*cpp)[-11])?%落下时%
'*' != (*cpp)[11] && 10 != ix?%防磕头后还能跳%
把解引用的二级字符指针cpp向右移动11位
把解引用的二级字符指针cpp向右移动11位
Player类里的shoot方法%射击方法%
结束
开始
(!i) && (iy && (!blr) || 10 != iy && blr)?%检测冷却时间已过并且是否在地牢的边界射过%
把装trir结构体的vector容器v往后添加一个结构体trir,这个结构体里有解引用之后的二级字符指针cpp,整型iy,布尔值blr和0
设i为3
Player类里的shootmove方法%子弹的移动方法%
%便于显示之前子弹的移动%
%显示%
结束
开始
bmode?
定义用于装结构体trir的vector容器的迭代器it为装trir结构体的vector容器v的起始迭代器
v.end() != it?
' ' == *it->cp || '@' == *it->cp?
设解引用的迭代器it指向的成员变量cp为空格
'*' == *it->cp || it->bk || (!it->iy && (!it->b)) || (21 == it->iy && it->b)?
设迭代器it指向的成员变量iy为-1%子弹的销毁%
0 <= it->iy?
把迭代器it指向的成员变量cp向左移动1减去迭代器it指向的成员变量b乘2的结果的结果位%子弹的移动%
迭代器it指向的成员变量iy自减1减去迭代器it指向的成员变量b乘2的结果的结果%子弹y坐标的移动%
' ' == *it->cp || '@' == *it->cp?
设解引用的迭代器it指向的成员变量cp为字符“@”
把迭代器it给向右移动一位
对装trir结构体的vector容器v里的所有元素按假函数cmp进行排列%按子弹的y坐标进行升序排列%
(!v.empty()) && 0 > v.begin()->iy?
删除装trir结构体的vector容器v的第0项%销毁子弹%
怪物M_o类(继承抽象基类moster)
M_o.h
结束
开始
开启让防止头文件重复包含的开关
导入io流
导入moster.h头文件
释放std作用域下的所有东西
定义继承moster抽象基类的M_o类,想知道M_o类的定义方式请点这里
M_o.cpp
结束
开始
导入io流
导入ctime头文件
导入M_o.h头文件
释放std作用域下的所有东西
定义M_o类里的near方法
定义M_o类里的mosterdo方法
定义M_o类里的getm方法
M_o类里的near方法
break
结束
开始
把有8个整型的数组arr初始化为-12, -11, -10, -1, 1, 10, 11和12%根据向量来检测是否旁边有墙%
定义整型i为0
i < 8?
'*' == (*m_cpp)[arr[i]]?
设整型m_iheal为1%去死,并生其他怪物(main函数)%
i自增1
M_o类里的mosterdo方法
%便于移动之后的显示%​
%防指针的链式移动​​​%
%曾有bug点:一级指针会“带动”二级指针%
结束
开始
把有8个整型的数组arr初始化为-12, -11, -10, -1, 1, 10, 11和12%可能的移动方向%
定义整型ir为0%随机数%
'*' != **m_cpp?
设两次解引用之后的m_cpp为空格
先执行M_o类里的near方法,无参,再设字符指针tempcp为解引用的二级字符指针m_cpp%临时一级指针,无可用二级指针%
设二级字符指针m_cpp为空指针
'*' != tempcp[arr[ir = rand() % 8]]?
把字符指针tempcp向左移动整型数组arr的第ir项的值位
设二级字符指针m_cpp为字符指针cp的地址%移动%
M_o类里的getm方法
返回字符“o”
结束
开始
怪物Mplus类(继承抽象基类moster)
M+.h
结束
开始
开启让防止头文件重复包含的开关
导入io流
释放std作用域下的所有东西
导入moster.h头文件
导入vector类文件
定义继承moster抽象基类的Mplus类,想知道Mplus类的定义方式请点这里
M+.cpp
结束
开始
导入io流
释放std作用域下的所有东西
导入M+.h头文件
定义Mplus类里的mosterdo方法
定义Mplus类里的getm方法
Mplus类里的mosterdo方法
结束
开始
设两次解引用之后的二级指针m_cpp为字符“+”%后面根据**m_cpp的内容来执行summon方法%
Mplus类里的getm方法
返回字符“+”
结束
开始
怪物MX类(继承抽象基类moster)
MX.h
结束
开始
开启让防止头文件重复包含的开关
导入io流
释放std作用域下的所有东西
导入moster.h头文件
定义继承moster抽象基类的MX类,想知道MX类的定义方式请点这里
MX.cpp
结束
开始
导入io流
释放std作用域下的所有东西
导入cstring头文件
导入MX.h头文件
定义MX类里的set方法
定义MX类里的exset方法
定义MX类里的mosterdo方法
定义MX类里的getm方法,无参
定义MX类里的getm重载方法,参数有占位布尔值
MX类里的set方法%怪物MX的设置函数%
结束
开始
设指向装trir结构体的vector容器的指针m_v为装trir结构体的vector容器v
nullptr == cpp?
设二级字符指针m_cpp为二级字符指针cpp
设二级字符指针m_pcpp为二级字符指针pcpp
nullptr != strmap?
设指向有11行11列的二维字符数组的指针m_strmap为指向有11行11列二维字符数组的指针strmap
设整型m_iheal为整型iheal
设布尔值setb为1
设字符指针tempcp为解引用之后的二级字符指针cpp
设二级指针cpp为空指针
设二级字符指针m_cpp为字符指针tempcp的地址
MX类里的exset方法%怪物MX的额外设置函数%
结束
开始
把有11行11列的二维字符数组strmapr的全部元素都拷贝到有11行11列的二维字符数组m_strmapr的里面去
MX类里的构造函数
结束
开始
执行MX类里的set方法,无参
MX类里的mosterdo方法%被玩家碰到传,受伤传(两旁有砖不传),并见%
%如果怪物受伤了就停止这个循环%
%​​​​防指针的链式移动%
%便于移动之后的显示%
%记录盖住的块,不记录“@”子弹,“P”玩家和“X”怪物MX自己%
是(break)
设装两个整型的对组pxy的第一个元素为随机值模上9加上1的结果,设装两个整型的对组pxy的第二个元素为随机值模上9加上1的结果,并设字符指针tempcp为解引用之后的指向有11行11列的二维字符数组的指针m_strmap第装两个整型的对组pxy的第一个元素的值行第装两个整型的对组pxy的第二个元素的值列的元素地址%怪物MX的移动%
开始
定义用于装trir结构体的vector容器的迭代器it为指向装trir结构体的vector容器的指针m_v指向的起始迭代器
setb?
设装两个整型的对组pxy为二级字符指针m_cpp与解引用之后的指向有11行11列的二维字符数组的指针m_strmap第0行第0列的地址之间的元素个数除以11的结果和二级字符指针m_cpp与解引用之后的指向有11行11列的二维字符数组的指针m_strmap第0行第0列的地址之间的元素个数模上11的结果%设置怪物MX的坐标%
设字符m_cc为二维字符数组strmapr第装两个整型的对组pxy的第一个元素的值行第装两个整型的对组pxy的第二个元素的值列的元素,并设布尔值setb为0%设置盖住的块%
m_v->end() != it?
*m_cpp == it->cp || *m_cpp == it->cp - (1 - it->b * 2)?
m_iheal > 0 && (*m_cpp == *m_pcpp || m_v->end() != it)?%如果刚才的这个循环停止了,并且还有生命且不在玩家的位置上%
设字符指针tempcp为解引用之后的二级字符指针m_cpp
定义字符指针tempcpb为字符指针tempcp
定义布尔值tempb为1%防误覆盖空位%
设二级字符指针m_cpp为空指针
tempb && m_v->end() != it?
设解引用之后的字符指针tempcp为空格
(tempcp == &(*m_strmap)[9][1] || '@' == (*m_strmap)[pxy.first][pxy.second] || '@' == (*m_strmap)[pxy.first][pxy.second - 1] || '@' == (*m_strmap)[pxy.first][pxy.second + 1] || tempcp == *m_pcpp || '*' == tempcp[-1] || '*' == tempcp[1] || 'X' == (tempcp)[-1] || 'X' == *tempcp || 'X' == (tempcp)[1]) && (tempb = 0, 1)?%如果满足上述的条件,就把误覆盖空位的“开关”启动%
设二级字符指针m_cpp为字符指针tempcp的地址
设解引用的字符指针tempcpb为字符m_cc
'@' != m_strmapr[pxy.first][pxy.second] || 'X' != m_strmapr[pxy.first][pxy.second] && 'P' != m_strmapr[pxy.first][pxy.second]?
设字符m_cc为二维字符数组m_strmapr第装两个整型的对组pxy的第一个元素的值行第装两个整型的对组pxy的第二个元素的值列的元素
结束%main函数使见%
把迭代器it给向右移动一位
MX类里的无参getm方法
返回字符“X”
结束
开始
MX类里的参数有占位布尔值的getm重载方法
返回字符m_cc
结束
开始
怪物MO类(继承抽象基类moster)
MO.h
结束
开始
开启让防止头文件重复包含的开关
导入io流
释放std作用域下的所有东西
导入类文件map
导入Player.h头文件
导入moster.h头文件
定义继承moster抽象基类的MO类,想知道MO类的定义方式请点这里
MO.cpp
结束
开始
导入io流
释放std作用域下的所有东西
导入MO.h头文件
定义带参数A和B的宏NNEG为“如果A小于B,那么这个宏返回1,否则如果A大于B,那么那么这个宏就返回-1,否则就这个宏返回0”%判断宏%
定义MOWAIT宏为1%怪物MO等待的回合数%
设MO类里的装两个int类型的pair静态队组s_m_pxy为0和0%玩家坐标的初始化%
定义MO类的构造函数
定义MO类里的mosterdo方法
定义MO类里的set_s_pxy方法
定义MO里类的getm方法
MO类里的构造函数
结束
开始
执行MO类里的set方法,无参
MO类里的set方法%MO的设置函数%
结束
开始
设指向装trir结构体的vector容器的指针m_v为装trir结构体的vector容器v
设二级字符指针m_cpp为二级字符指针cpp
设整型m_iheal为整型iheal
设装两个整型的对组m_pxy的第一个元素为整型ix
设装两个整型的对组m_pxy的第二个元素为整型iy
设整型imove为0
nullptr != m?
设装二级字符指针和枚举WASD的map容器m_m为解引用之后的指向装二级字符指针和枚举WASD的map容器的指针m
MO类里的mosterdo方法%遇向则转,看路前行(1),或追玩者(2)%
%​​便于移动之后的显示%
​​%防指针的链式带动%
%沿路模式%
%追踪模式%
break
break
break
break
否(break)
结束
开始
'*' != **m_cpp?
设两次解引用之后的二级字符指针m_cpp为空格
设字符指针tempcp为解引用之后的m_cpp
设二级字符指针m_cpp为空指针
!m_m.empty()?
把有4个整型的数组arr初始化为-11, -1, 11和1
定义用于装二级字符指针和枚举WASD的map容器的迭代器it为装二级字符指针和枚举WASD的map容器m_m的起始迭代器
m_m.end() != it?
E != it->second && tempcp == *it->first?
设枚举WASD类型的m_wasd为迭代器it指向的第二个元素
把迭代器it给向右移动一位
把字符指针tempcp向右移动整型数组arr的第枚举WASD类型的m_wasd的值项的值位
W == m_wasd?
装两个整型的对组m_pxy的第二个元素自减1
设二级字符指针m_cpp为字符指针tempcp的地址
A == m_wasd?
装两个整型的对组m_pxy的第一个元素自减1
S == m_wasd?
装两个整型的对组m_pxy的第二个元素自加1
D == m_wasd?
装两个整型的对组m_pxy的第一个元素自加1
MOWAIT == imove % (MOWAIT + 1)%如果MO等待了MOWAIT回合% && ('*' != *(tempcp + 11 * NNEG(m_pxy.first, s_m_pxy.first))?%并且垂直移动的方向上没有墙%
把字符指针tempcp向右移动11乘带装两个整型的对组m_pxy的第一个元素和装两个整型的静态对组s_m_pxy的第一个元素这两个参数的NNEG宏的返回值的结果位
装两个整型的对组m_pxy的第一个元素自增装两个整型的对组m_pxy的第一个元素和装两个整型的静态对组s_m_pxy的第一个元素这两个参数的NNEG宏的返回值的结果位
MOWAIT == imove++ % (MOWAIT + 1) && ('*' != *(tempcp + NNEG(m_pxy.second, s_m_pxy.second)%并且水平移动的方向上没有墙%)?
把字符指针tempcp向右移动带装两个整型的对组m_pxy的第二个元素和装两个整型的静态对组s_m_pxy的第二个元素这两个参数的NNEG宏的返回值位
装两个整型的对组m_pxy的第二个元素自增装两个整型的对组m_pxy的第二个元素和装两个整型的静态对组s_m_pxy的第二个元素这两个参数的NNEG宏的返回值
MO类里的set_s_pxy方法%设置玩家的坐标%
结束
开始
设装两个整型的静态对组s_m_pxy为整型ix和整型iy
MO类里的getm方法
返回字符“O”
结束
开始
怪物MUD类(继承抽象基类moster)
M^.h
结束
开始
导入moster.h头文件
定义继承moster抽象基类类的MUD类,想知道MUD类的定义方式请点这里
释放std作用域下的所有东西
M^.cpp
结束
开始
导入io流
释放std作用域下的所有东西
导入M^.h头文件
定义MUD类的构造函数
定义MUD类里的set方法
定义MUD类里的mosterdo方法
定义MUD类里的getm方法
MUD类里的构造函数
结束
开始
执行MUD类里的set方法,无参
MUD类里的set方法%M^的设置函数%
结束
开始
设指向装trir结构体的vector容器的指针m_v为装trir结构体的vector容器v
设二级字符指针m_cpp为二级字符指针cpp
设整型m_iheal为整型iheal
设布尔值mblr为布尔值b
设布尔值mbud为布尔值ba
MUD类里的mosterdo方法%撞墙换方向,碰地会反落%
%​便于移动之后的显示%
%​防指针的链式带动%
%​左右移%
%​撞墙换方向%
%碰地会反转%
%上下落%
结束%后面main函数中Mshow函数使见%
开始
'*' != **m_cpp?
设两次解引用之后的二级字符指针m_cpp为空格
!mblr && '*' == (*m_cpp)[-1]?%如果怪物M^往左移动,并且左边有墙%
设布尔值mblr为1%怪物M^就往右移动%
设字符指针tempcp为解引用之后的二级字符指针m_cpp
设二级字符指针m_cpp为空指针
'*' != tempcp[-(1 - 2 * mblr)]?
把字符指针tempcp向左移动1减去2乘布尔值mblr的结果的结果位
mbud && '*' == tempcp[11]?%如果怪物M^往下移动,并且下边有墙%
设布尔值mbud为0%如果怪物M^往下移动,并且下边有墙%
'*' != tempcp[-(11 * (1 - 2 * mbud))]?
把字符指针tempcp向左移动11乘1减去2乘布尔值mblr的结果的结果的结果位
设二级字符指针m_cpp为字符指针tempcp的地址
mblr && '*' == (*m_cpp)[1]?%如果怪物M^往右移动,并且右边有墙%
设布尔值mblr为0%怪物M^就往左移动%
!mbud && '*' == tempcp[-11]?%如果怪物M^往上落,并且上边有墙%
设布尔值mbud为1%怪物M^就往下落%
MUD类里的getm方法
是(返回字符“v”)
否(返回字符“^”)
结束
开始
mbud?
怪物Mand类(继承抽象基类moster)
M&.h
结束
开始
开启让防止头文件重复包含的开关
释放std作用域的所有东西
导入moster.h头文件
定义继承moster抽象基类的Mand类,想知道Mand类的定义方式请点这里
M&.cpp
结束
开始
导入io流
释放std作用域下的所有东西
导入M&.h头文件
定义Mand类里的构造函数
定义Mand类里mosterdo方法
定义Mand类里的getm方法
Mand类里的构造函数
结束
开始
执行Mand类里的set方法,无参
Mand类里的set方法
结束
开始
设指向装trir结构体的vector容器的指针m_v为装trir结构体的vector容器v
设二级字符指针m_cpp为二级字符指针cpp
设整型m_iheal为整型iheal
设布尔值mblr为布尔值b
Mand类里的mosterdo方法%撞墙换方向,会自然下落%
%便于移动之后的显示%​​​​​​​​​​​​​​​​​​​​​​​​
%防指针的链式带动%
%左右移%
%下落%
%撞墙换方向%
结束%后面main函数中用Mshow函数使见%
开始
'*' != **m_cpp?
设两次解引用之后的二级字符指针m_cpp为空格
!mblr && '*' == (*m_cpp)[-1]?%如果怪物M&往左移动,并且左边有墙%
设布尔值mblr为1%怪物M&就往右移动%
设字符指针tempcp为解引用之后的二级字符指针m_cpp
设二级字符指针m_cpp为空指针
'*' != tempcp[-(1 - 2 * mblr)]?
把字符指针tempcp向左移动i减去2乘布尔值mblr的结果的结果位
'*' != tempcp[11]?
把字符指针tempcp向右移动11位
设二级字符指针m_cpp为字符指针tempcp的地址
mblr && '*' == (*m_cpp)[1]?%如果怪物M^往右移动,并且左边有墙%
设布尔值mblr为0%怪物M&就往左动%
设二级字符指针m_cpp为字符指针tempcp的地址
Mand类里的getm方法
返回字符“&”
结束
开始
moster抽象基类
moster.h
结束
开始
开启让防止头文件重复包含的开关
导入io流
释放std作用域下的所有东西
导入Player.h头文件
导入WASD.h头文件
导入map类文件
定义moster类,想知道moster类的定义方式请点这里
moster.cpp
结束
开始
导入io流
释放std作用域下的所有东西
导入moster.h头文件
定义moster类里的构造函数
定义moster类里的set方法
定义moster类里的hunt方法
定义moster类里的getheal方法
定义moster类里的getcp方法
moster类里的构造函数
结束
开始
定义装trir结构体的vector容器v
设指向装vector容器的指针m_v为装trir结构体的vector容器v的地址
moster类里的set方法%怪物对象的设置函数%
结束
开始
设指向装trir结构体的vector容器的指针m_v为装trir结构体的vector容器v
设二级字符指针m_cpp为二级字符指针cpp
设整型m_iheal为整型iheal
moster类里的hunt方法%受伤%
%检测扣血(如果子弹没杀过怪物并且子弹在怪物正中或者前面就扣怪物的血)%
结束%Game.cpp的main函数中检测怪物的死亡%
开始
定义用于装trir结构体的迭代器it为指向装vector容器的指针m_v的起始迭代器
m_v->end() != it?
!it->bk && (*m_cpp == it->cp || *m_cpp == (it->cp - (1 - 2 * it->b)))?
m_iheal自减1
设迭代器it指向的成员变量bk为1
把迭代器it给向右移动一位
moster类里的getheal方法
返回整型m_iheal
结束
开始
moster类里的getcp方法
返回解引用之后的二级字符指针m_cpp的引用
结束
开始

程序游玩的效果

C++打小怪游戏

结尾

感谢你看到了这里。该游戏是我独自制作的第一个稍大型游戏,创建了很多的类,写了很多的代码,修了很多的bug。期间由于我编写代码时太太太累,编写出来的bug太太太烦,掉的头皮屑太太太多,因此曾有过几次想要放弃的念头。但最终,我依然完成了这个游戏,虽然这个游戏的代码写的有点不好,但至少还是完成了这个游戏;虽然这个游戏的代码写的有点还是不好,但至少也为我的游戏开发迈出了一大步。现在,如果你想看看这个游戏到底怎么样的话,就赶紧点击这个资源下载一下吧,不要50积分不要一个下载码点击即送为何等待? 快来下吧!

下一篇博客要说的东西

Qt简单迷宫游戏


网站公告

今日签到

点亮在社区的每一天
去签到