什么游戏可以练c手(正在学习CC想要往游戏方面发展的注意咯)
对这方面感兴趣想学习C/C 或者正在学习C/C 的同学可以加群:558502932,群内有大量C/C 学习资料,也有大神答疑,大家一起学习交流咯!!
对于正在学习C/C 的同学来说,学了C/C 之后能做什么这是一个很大的问题。然后就会出现很多迷茫的同学们,有些同学知道学了能作什么,但是不知道具体该怎么学,那也开始迷茫了起来。
而我今天就是给大家发送一个福利了,对于正在学习C/C 想去往游戏方面发展的人来说,一个游戏的核心部分,就是游戏的心脏,而怎么样才能写好这个心脏呢?我就来分享一下,我之前一直在更新的梦幻西游游戏中的心脏部分,希望能对你们有所帮助咯!
在学习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 学习资料,大家一起学习交流咯!
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com