控制台RPG游戏


花了大概一周的时间写的一个RPG类游戏,功能完善,模块清晰,供相互学习参考
资源截图
代码片段和文件信息
#include “CBagSys.h“
#include “CPlayer.h“

CBagSys::CBagSys(int _row int _col)
{
row = _row;
col = _col;

for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
CBagUnit* pTmpBagUnit = new CBagUnit(CPosition(i j));
m_LogicBag.insert(make_pair(CPosition(i j) pTmpBagUnit));
}
}
// 初始化光标和文本输出点位置
cursorPos = CPosition();
posOfTextOut = CPosition(2 20);
posOfTextOut1 = CPosition(20 2);
}

CBagSys::~CBagSys()
{
// 释放堆内存
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
auto pTmp = m_LogicBag.at(CPosition(i j));
// 首先判断背包不为空
if (pTmp)
{
// 首先释放背包中的物品
if (pTmp->getItem())
{
delete pTmp->getItem();
pTmp->setItem(0);
}
// 然后在释放背包单元
delete pTmp;
pTmp = 0;
}
}
}
}

void CBagSys::enterBagSys()
{
system(“cls“);
// 打印背包信息
printBagUI();
printSelectedItemInfo();
updateCursorPos(0 0);
// 操作背包
while (true)
{
if (_kbhit())
{
switch (_getch())
{
case ‘a‘:
case ‘A‘:
{
updateCursorPos(0 -1);
break;
}
case ‘d‘:
case ‘D‘:
{
updateCursorPos(0 1);
break;
}
case ‘W‘:
case ‘w‘:
{
updateCursorPos(-1 0);
break;
}
case ‘s‘:
case ‘S‘:
{
updateCursorPos(1 0);
break;
}
case ‘q‘:
case ‘Q‘:
{
setcolor();
gotoXY(20 0);
return;
}
case ‘
‘:
{
useItem(1);
break;
}
}
printSelectedItemInfo();
}
}
}

bool CBagSys::isHavedItemID(ItemID id)
{
for (map::iterator itr = m_LogicBag.begin(); itr != m_LogicBag.end(); itr++)
{
// 当物品遍历完还没有找到,就直接退出
if (itr->second == nullptr)
{
continue;
}
// 但物品时空的也直接退出
if (itr->second->getItem() == nullptr)
{
continue;
}
// 当找到钥匙时
if (itr->second->getItem()->id == id)
{
return true;
}
}

return false;
}

bool CBagSys::useItemID(ItemID id int num)
{
if (isHavedItemID(id))
{
// 找到对应的物品位置
for (map::iterator itr = m_LogicBag.begin(); itr != m_LogicBag.end(); itr++)
{
// 如果为空就直接返回false
if (itr->second == nullptr)
{
continue;
}
// 找到对应的物品
if (itr->second->getItem() == nullptr)
{
continue;
}
if (itr->second->getItem()->id == id)
{
auto pTmp = itr->second;
// 判断物品是否够用
if (pTmp->getNumOfItem() < num)
{
return false;
}
else
{
// 更新玩家身上的状态,然后在更新背包的状态

// 同时玩家身上需要装备上对应的物品
if (id == ID_Knife || id == ID_Sword || id == ID_Gun)
{
// 先判断玩家身上是否已经有装备如果有释放掉之前的装备
if (CPlayer::getInstancePtr()->getCurWeapon())
{
delete CPlayer::getInstancePtr()->getCurWeapon();
CPlayer::getInstancePtr()->setCurWeapon(0);
}
// 给玩家装备上新的装备
auto pTmp = CItemFactory::create(id);
CPlayer::getInstanceP

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      14651  2017-05-31 15:36  K1_RPG_DemoCBagSys.cpp

     文件       1218  2017-05-31 15:29  K1_RPG_DemoCBagSys.h

     文件        201  2017-05-26 14:54  K1_RPG_DemoCBagUnit.cpp

     文件        379  2017-05-22 09:14  K1_RPG_DemoCBagUnit.h

     文件      17043  2017-05-31 14:38  K1_RPG_DemoCBirthScene.cpp

     文件        567  2017-05-26 09:16  K1_RPG_DemoCBirthScene.h

     文件        818  2017-05-27 16:42  K1_RPG_DemoCBullet.cpp

     文件        331  2017-05-26 17:40  K1_RPG_DemoCBullet.h

     文件        103  2017-05-24 17:29  K1_RPG_DemoCBulletCtrl.cpp

     文件        112  2017-05-24 17:29  K1_RPG_DemoCBulletCtrl.h

     文件        827  2017-05-31 13:27  K1_RPG_DemoCDirection.cpp

     文件        340  2017-05-30 17:46  K1_RPG_DemoCDirection.h

     文件      32564  2017-05-31 14:38  K1_RPG_DemoCGameScene1.cpp

     文件        784  2017-05-23 16:10  K1_RPG_DemoCGameScene1.h

     文件      33717  2017-05-31 16:25  K1_RPG_DemoCGameScene2.cpp

     文件       1814  2017-05-31 09:28  K1_RPG_DemoCGameScene2.h

     文件      30922  2017-05-31 16:40  K1_RPG_DemoCGameScene3.cpp

     文件       1119  2017-05-31 16:43  K1_RPG_DemoCGameScene3.h

     文件        279  2017-05-30 21:21  K1_RPG_DemoCItem.cpp

     文件        488  2017-05-30 21:21  K1_RPG_DemoCItem.h

     文件       1699  2017-05-26 14:24  K1_RPG_DemoCItemFactory.cpp

     文件        256  2017-05-21 15:37  K1_RPG_DemoCItemFactory.h

     文件       1362  2017-05-25 12:00  K1_RPG_DemoCMonster1.cpp

     文件        130  2017-05-25 17:20  K1_RPG_DemoCMonster1.h

     文件       1366  2017-05-25 12:00  K1_RPG_DemoCMonster2.cpp

     文件        130  2017-05-25 17:20  K1_RPG_DemoCMonster2.h

     文件       1366  2017-05-25 12:00  K1_RPG_DemoCMonster3.cpp

     文件        130  2017-05-25 17:20  K1_RPG_DemoCMonster3.h

     文件       1366  2017-05-25 12:00  K1_RPG_DemoCMonster4.cpp

     文件        130  2017-05-25 17:20  K1_RPG_DemoCMonster4.h

............此处省略73个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)