对这方面感兴趣想学习C/C 或者正在学习C/C 的同学可以加群:558502932,群内有大量C/C 学习资料,也有大神答疑,大家一起学习交流咯!!

对于正在学习C/C 的同学来说,学了C/C 之后能做什么这是一个很大的问题。然后就会出现很多迷茫的同学们,有些同学知道学了能作什么,但是不知道具体该怎么学,那也开始迷茫了起来。

而我今天就是给大家发送一个福利了,对于正在学习C/C 想去往游戏方面发展的人来说,一个游戏的核心部分,就是游戏的心脏,而怎么样才能写好这个心脏呢?我就来分享一下,我之前一直在更新的梦幻西游游戏中的心脏部分,希望能对你们有所帮助咯!

什么游戏可以练c手(正在学习CC想要往游戏方面发展的注意咯)(1)

在学习C/C 或者想学习C/C 可以加群:558502932

代码如下:

//-----------------------------------【Game_Main( )函数】--------------------------------------

//描述:游戏Main函数,游戏的心脏,处理游戏大大小小函数的合理调用与运作

//--------------------------------------------------------------------------------------------------

VOID Game_Main(HWND hwnd)

{

wchar_t str[100];

//先在mdc中贴上背景图

SelectObject(g_bufdc, g_hBackGround);

BitBlt(g_mdc, 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, g_bufdc, 0, 0, SRCCOPY);

//下雪效果的绘制

if (!g_bGameOver)//如果游戏未结束

{

Snow_Paint(); //调用封装了雪花飞舞粒子效果的函数,模拟下雪场景

}

//显示对战消息

SetTextColor(g_mdc, RGB(255, 255, 255));

for (int i = 0; i<g_iTxtNum; i )

TextOut(g_mdc, 20, 410 i * 18, text[i], wcslen(text[i]));

//贴上怪物图以及显示怪物血量

if (Boss.NowHp>0)

{

//贴上怪物图360

SelectObject(g_bufdc, g_hMonsterBitmap);

//BitBlt(g_mdc, 60, 100, 250, 250, g_bufdc, 250, 0, SRCAND);

//BitBlt(g_mdc, 60, 100, 250, 250, g_bufdc, 0, 0, SRCPAINT);

TransparentBlt(g_mdc, 90, 150, 250, 250, g_bufdc, g_Bnum*250, 0, 250, 250, RGB(0, 0, 0));//采用TransparentBlt透明贴图函数

//显示怪物血量

swprintf_s(str, L"%d / %d", Boss.NowHp, Boss.MaxHp);

SetTextColor(g_mdc, RGB(255, 10, 10));

TextOut(g_mdc, 155, 345, str, wcslen(str));

g_Bnum ;

if (g_Bnum == 16)

g_Bnum = 0;

}

//贴上玩家图以及玩家生命值,魔法值的显示

if (Hero.NowHp>0)

{

//贴上人物图

SelectObject(g_bufdc, g_hHeroBitmap);

TransparentBlt(g_mdc, 330, 280, 250, 250, g_bufdc, g_Hnum*250, 0, 250, 250, RGB(0, 0, 0));//透明色为RGB(0,0,0)纯黑色

//BitBlt(g_mdc, 400, 300, 150, 227, g_bufdc, 150, 0, SRCAND);

//BitBlt(g_mdc, 400, 300, 150, 227, g_bufdc, 0, 0, SRCPAINT);

//显示血量

swprintf_s(str, L"%d / %d", Hero.NowHp, Hero.MaxHp);

SetTextColor(g_mdc, RGB(255, 10, 10));

TextOut(g_mdc, 436, 500, str, wcslen(str));

//显示魔法值

swprintf_s(str, L"%d / %d", Hero.NowMp, Hero.MaxMp);

SetTextColor(g_mdc, RGB(10, 10, 255));

TextOut(g_mdc, 450, 515, str, wcslen(str));

g_Hnum ;

if (g_Hnum == 14)

g_Hnum = 0;

}

//判断游戏是否结束

if (g_bGameOver)

{

if (Hero.NowHp <= 0) //玩家阵亡,就贴出“GameOver”图片

{

SelectObject(g_bufdc, g_hGameOver);

BitBlt(g_mdc, 120, 50, 543, 396, g_bufdc, 543, 0, SRCAND);

BitBlt(g_mdc, 120, 50, 543, 396, g_bufdc, 0, 0, SRCPAINT);

}

else //怪物阵亡,就贴出“胜利”图片

{

SelectObject(g_bufdc, g_hVictory);

TransparentBlt(g_mdc, 240, 195, 294, 147, g_bufdc, 0, 0, 294, 147, RGB(0, 0, 0));//透明色为RGB(0,0,0)

}

}

//如果游戏没结束,且为玩家可攻击状态,便依次贴上技能图标

else if (!g_bCanAttack)//贴上技能按钮

{

SelectObject(g_bufdc, g_hSkillButton1);

BitBlt(g_mdc, 590, 200, 40, 40, g_bufdc, 0, 0, SRCCOPY);

SelectObject(g_bufdc, g_hSkillButton2);

BitBlt(g_mdc, 590, 250, 40, 40, g_bufdc, 0, 0, SRCCOPY);

SelectObject(g_bufdc, g_hSkillButton3);

BitBlt(g_mdc, 590, 300, 40, 40, g_bufdc, 0, 0, SRCCOPY);

SelectObject(g_bufdc, g_hSkillButton4);

BitBlt(g_mdc, 590, 350, 40, 40, g_bufdc, 0, 0, SRCCOPY);

}

//游戏没结束,且为玩家不可攻击状态,便开始接下来的绘图

else

{

g_iFrameNum ;

//想要学习C/C 或者对这方面感兴趣可以加群:558502932,大家一起学习交流。

//第5~10个画面时显示玩家攻击效果图

if (g_iFrameNum >= 5 && g_iFrameNum <= 10)

{

//第5个画面时根据之前的输入计算出游戏逻辑并进行消息显示

if (g_iFrameNum == 5)

{

HeroAction_Logic();

Die_Check(Boss.NowHp, false);

}

//根据人物的动作类型进行相应贴图

HeroAction_Paint();

}

//第15个画面时判断怪物进行哪项动作

if (g_iFrameNum == 15)

{

BossAction_Logic();

}

//第26~30个画面时显示怪物攻击图标

if (g_iFrameNum >= 26 && g_iFrameNum <= 30)

{

BossAction_Paint();

}

if (g_iFrameNum == 30)//回合结束

{

g_bCanAttack = false;

g_iFrameNum = 0;

//每回合的魔法自然恢复,6点固定值加上0到智力值之间的一个随机值的三倍

if (!g_bGameOver)

{

int MpRecover = 2 * (rand() % Hero.Intelligence) 6;

Hero.NowMp = MpRecover;

if (Hero.NowMp >= Hero.MaxMp)

{

Hero.NowMp = Hero.MaxMp;

}

swprintf_s(str, L"回合结束,自动恢复了【%d】点魔法值", MpRecover);

Message_Insert(str);

}

}

}

//将mdc中的全部内容贴到hdc中

BitBlt(g_hdc, 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, g_mdc, 0, 0, SRCCOPY);

g_tPre = GetTickCount(); //记录此次绘图时间

}

以上,就是今天的游戏内容核心的全部内容辣!!希望能对你们有所帮助。不喜勿喷

想要学习C/C 或者正在学习C/C 可以加群:558502932,群内有大量C/C 学习资料,大家一起学习交流咯!

,