65.9K
CodeProject 正在变化。 阅读更多。
Home

游戏应用程序“Memory Plus +”

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.25/5 (14投票s)

2008年7月17日

CPOL

2分钟阅读

viewsIcon

45899

downloadIcon

3246

简单的记忆游戏

引言

我想重温我对 MFC 的了解,所以在中断两年后,我开始开发这个应用程序作为游戏软件 + Memory Plus。这是一个简单的游戏应用程序,你可能已经见过。我一直对编写游戏软件很感兴趣。我最初获得了实现这个记忆游戏逻辑。后来,我又添加了一个额外的选项并使其正常工作。我希望探索更多 VC++ 和 MFC 库,所以我完全使用 VC++ 和 MFC 库进行开发。

关于游戏

Memory plus 是一款通用游戏,简单易玩。界面显示一组没有图像的砖块或按钮。单击任何一个砖块时,会显示特定的图像,然后单击下一个紧接着的砖块时,会显示其图像。现在,如果两个图像匹配,则这两个砖块将从视图中清除。否则,用户必须通过记住匹配项来尝试匹配图像。完成游戏的诀窍是清除所有砖块,用最少的点击次数和最短的时间,然后记录你的名字以获得高分。

游戏开始后(通过单击“开始”菜单或单击任何砖块)时间将开始计时。游戏可以随时暂停,在这种情况下,时间切片也会停止。可以通过单击“新建”菜单重新启动游戏。单击“高分”菜单时,将提供高分信息。

游戏选项

游戏提供以下选项

  • 图像:图像选项允许用户灵活地随时更改砖块上使用的图像,即使在玩游戏或开始游戏之前也是如此。
  • 大小:大小选项用于修改偶数矩阵,以减少或增加砖块区域。
    注意:如果修改了大小,游戏将作为新游戏重新启动。
  • 游戏帮助”将为用户提供有关游戏规则和选项的简要说明。

Using the Code

理解代码对用户来说会很容易。这段代码将指导你如何

  1. 使用 MFC 编写一个小游戏应用程序
  2. 在按钮上加载图像
  3. 在文本控件上加载图像
  4. 在对话框背景上加载图像
  5. 更改静态文本和文本控件的背景颜色和文本颜色

游戏的核心代码

void CSundar_GameDlg::LoadIcons(int NoBtns)
{
    int hIndex, index1;
    int ran;

    index1 = hIndex = 0;
    ran = 0;

    srand( (unsigned)time( NULL ) );
    for(int index = 0; index < (NoBtns) ; index++)
    {
        do
        {
            ran = rand();
            ran %= (NoBtns);
            index1 = 0;
            for(index1 = 0; index1 < index ; index1++)
            {
                if(ran == Array[index1])
                {
                    index1 = -1;
                    ran = rand();
                    ran %= (NoBtns);
                    continue;
                }
            }
        }while ( ran < 0 || ran >= NoBtns);

        Array[hIndex] = ran;

        hIndex++;
    }

    for(index = 0; index < NoBtns ; index++)
    {
        if(Array[index] >= (NoBtns/2))
        {
            Array[index] -= (NoBtns/2);
        }
    }
}

void CSundar_GameDlg::CheckMatchIcon(int BtnIndex)
{
    NumClick++;

    if(Init == FALSE)
    {
        Init = TRUE;
        OnGamePause();
    }

    if(ClickNo > 2)
    {
        DisplayIcon(CurBtnIndex, NULL);
        DisplayIcon(SelBtnIndex, NULL);
        SelBtnIndex = BtnIndex;
        CurBtnIndex = BtnIndex;
        DisplayIcon(CurBtnIndex, hIcon[Array[BtnIndex]]);
        ClickNo = 2;
    }
    else
        if(ClickNo == 2)
        {
            CurBtnIndex = BtnIndex;
            DisplayIcon(CurBtnIndex, hIcon[Array[BtnIndex]]);
            ClickNo++;

            if(CurBtnIndex != SelBtnIndex)
            {
                unsigned int diff = Array[CurBtnIndex] - Array[SelBtnIndex];
                if( diff == 0)
                {
                    DisplayIcon(CurBtnIndex, NULL, TRUE);
                    DisplayIcon(SelBtnIndex, NULL, TRUE);
                    if(CheckNoOfButton <= 0)
                    {
                        DlgState = 1;
                        Init = FALSE;
                        KillTimer(2);

                        TimeScore = Min;
                        NoOfClick = NumClick;
                        CScoreDlg Dlg;
                        Dlg.DoModal();

                        DlgState = 2;
                        Dlg.DoModal();
                    }
                }
                else
                {
                    SetTimer(1, 1500, NULL);
                }
            }
        }
        else if(ClickNo == 1)
        {
            SelBtnIndex = BtnIndex;
            CurBtnIndex = BtnIndex;
            ClickNo++;

            DisplayIcon(CurBtnIndex, hIcon[Array[BtnIndex]]);
        }
}

结论

我要感谢所有在我制作这款游戏时提出更好想法和建议的朋友和同事。希望你喜欢这款游戏。

历史

  • 2008 年 7 月 17 日:初始版本
© . All rights reserved.