第一次写c++小游戏

#define  _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<graphics.h>
#include<conio.h>
#define MB_OK 0x00000000L

 

    int Map[12][12] =
    {
        0,0,0,0,0,0,0,0,0,0,0,0,
        0,1,1,10,0,1,1,5,1,1,1,0,
        0,1,1,1,0,1,1,0,1,1,3,0,
        0,1,0,1,0,6,1,0,1,3,4,2,
        0,1,0,1,5,4,1,0,1,1,3,0,
        0,0,0,0,0,0,0,0,0,0,0,0,
        0,1,1,1,5,6,0,1,1,1,1,0,
        0,1,1,1,0,0,0,6,1,1,1,0,
        0,1,1,1,7,4,5,1,1,1,9,0,
        0,1,1,1,0,0,0,6,1,1,1,0,
        0,8,1,1,6,1,0,1,1,1,1,0,
        0,0,0,0,0,0,0,0,0,0,0,0
    };
    struct Role
    {
        char 角色名[20];
        int 血量;
        int 蓝量;
        int 防御;
        int 攻击;
        int 蓝钥匙;
        int 黄钥匙;
        int 等级;
        int 经验;
    }role;
    struct monster
    {
        int 攻击;
        int 血量;
        int 防御;
        int 经验;
    };
    struct monster guard = { 50,15,10,50 };
    struct monster 李文振 = { 70,10,20,25 };

    IMAGE img[20], roleInfo;
    HWND hwnd;

    void inputRoleName()
    {
        printf("请输入角色名称:");
        scanf("%s", role.角色名);
        role.攻击 = 40;
        role.防御 = 100;
        role.等级 = 0;
        role.黄钥匙 = 0;
        role.蓝钥匙 = 0;
        role.蓝量 = 70;
        role.血量 = 135;
        role.经验 = 0;
    }
    //批量加载图片
    void loadResource()
    {
        loadimage(&roleInfo, "info.jpg",60,60*12);
        for (int i = 0; i < 11; i++)
        {
            char fileName[10] = "";
            sprintf(fileName, "%d.jpg", i);
            loadimage(img + i, fileName, 60, 60);
        }
    }
    //把整形转换为字符串
    char str[20] = "";
    char* intTowchar(int xNum)
    {
        sprintf(str, "%d", xNum);
        return str;
    }
    //加载地图
    void drawMap()
    {
        int i, j;
        int x, y;
        for (i = 0; i < 12; i++)
        {
            for (j = 0; j < 12; j++)
            {
                x = j * 60;
                y = i * 60;
                putimage(x, y, &img[Map[i][j]]);
            }
        }
        putimage(60 * 12, 0, &roleInfo);
        outtextxy(60 * 12 + 17, 60, role.角色名);
        outtextxy(60 * 12 + 25, 138, intTowchar(role.等级));
        outtextxy(60 * 12 + 25, 190, intTowchar(role.经验));
        outtextxy(60 * 12 + 20, 325, intTowchar(role.血量));
        outtextxy(60 * 12 + 20, 380, intTowchar(role.蓝量));
        outtextxy(60 * 12 + 22, 480, intTowchar(role.攻击));
        outtextxy(60 * 12 + 22, 535, intTowchar(role.防御));
        outtextxy(60 * 12 + 25, 660, intTowchar(role.黄钥匙));
    }
    
    //设置一套与怪物的PK系统
    bool PK(struct monster 怪物)
    

{
        int zhandouli,shijixieliang1,shijixieliang2;//战斗力,实际血量
        zhandouli = role.攻击 + role.蓝量 * 0.4;//人物的
        shijixieliang1 = 怪物.血量 + 怪物.防御 * 0.3;//怪物的
        shijixieliang2 = role.血量 + role.防御 * 0.3;//人物的
        if (zhandouli > 怪物.攻击)
        {
            role.经验 += 怪物.经验;
            role.血量 -= (怪物.攻击 * 0.1);
            if (role.血量 > 0)
                return true;
            else return false;
        }
        else
        {
            role.血量 -= 怪物.攻击 - role.防御 * 0.3;
            role.蓝量 -= (怪物.攻击 - role.防御 * 0.3) * 0.3;
            role.经验 += 怪物.经验;
            if (role.血量 > 0)
                return true;
            else return false;
        }
    }


    //开始写键盘操作部分
    void KeyDown()
    {
        char userKey;
        int i, j, m1,m2, n1,n2;
        for (i=0; i < 12; i++)
        {
            for (j=0; j < 12; j++)
            {
                if (Map[i][j] == 9)
                    break;
            }
            if (Map[i][j] == 9)
                break;
        }
        for (m1 = 0; m1 < 12; m1++)
        {
            for (n1 = 0; n1 < 12; n1++)
            {
                if (Map[m1][n1] == 8)
                break;
            }
            if (Map[m1][n1] == 8)
                break;
        }
        for (m2 = 0; m2 < 12; m2++)
        {
            for (n2 = 0; n2 < 12; n2++)
            {
                if (Map[m2][n2] == 10)
                    break;
            }
            if (Map[m2][n2] == 10 )
                break;
        }
        userKey = _getch();//_getch()表示不可见输入
        switch (userKey)
        {
        case 'W':
        case 'w':
        case 72:                      //数字是指小键盘的上下左右
            if (Map[i-1][j] == 1)
            {
                Map[i][j] = 1;
                Map[i-1][j] = 9;
            }
            else if (Map[i - 1][j] == 6)
            {
                Map[i - 1][j] = 9;
                Map[i][j] = 1;
                role.黄钥匙++;
            }
            else if (Map[i-1][j] == 5)
            {
                if (role.黄钥匙 != 0)
                {
                    Map[i-1][j] = 9;
                    Map[i][j] = 1;
                    role.黄钥匙--;
                }
            }
            else if (Map[i - 1][j] == 4)
            {
                int ID = MessageBox(hwnd, "遇到辅导员了!", "是否打死?", MB_YESNO);
                //MessageBox是弹出框,括号内hwnd指在句柄hwnd上方弹出,MB_YESNO是判断是或者否作为ID的返回值
                if (ID == IDYES)
                {
                    if (PK(李文振) == true)
                    {
                        Map[i - 1][j] = 9;
                        Map[i][j] = 1;
                    }
                    else
                    {
                        int ID1 = MessageBox(hwnd, "重开吧", "你被干掉了!", MB_YESNO);
                        if (ID1 == IDYES) return;
                        else closegraph;
                    }
                }
            }
            else if (Map[i - 1][j] == 3)
            {
                int ID = MessageBox(hwnd, "遇到保安大爷了!", "是否打死?", MB_YESNO);
                //MessageBox是弹出框,括号内hwnd指在句柄hwnd上方

if (ID == IDYES)
                {
                    if (PK(李文振) == true)
                    {
                        Map[i - 1][j] = 9;
                        Map[i][j] = 1;
                    }
                    else
                    {
                        int ID1 = MessageBox(hwnd, "重开吧", "你被干掉了!", MB_YESNO);
                        if (ID1 == IDYES) return;
                        else closegraph;
                    }
                }
            }
            else if (Map[i - 1][j] == 3)
            {
                int ID = MessageBox(hwnd, "遇到保安大爷了!", "是否打死?", MB_YESNO);
                //MessageBox是弹出框,括号内hwnd指在句柄hwnd上方弹出,MB_YESNO是判断是或者否作为ID的返回值
                if (ID == IDYES)
                {
                    if (PK(guard) == true)
                    {
                        Map[i - 1][j] = 9;
                        Map[i][j] = 1;
                    }
                    else
                    {
                        int ID1 = MessageBox(hwnd, "重开吧", "你被干掉了!", MB_YESNO);
                        if (ID1 == IDYES) return;
                        else closegraph;
                    }
                }
            }
            else if (Map[i - 1][j] == 4)
            {
                int ID = MessageBox(hwnd, "遇到保安大爷了!", "是否打死?", MB_YESNO);
                //MessageBox是弹出框,括号内hwnd指在句柄hwnd上方弹出,MB_YESNO是判断是或者否作为ID的返回值
                if (ID == IDYES)
                {
                    if (PK(guard) == true)
                    {
                        Map[i - 1][j] = 9;
                        Map[i][j] = 1;
                    }
                    else
                    {
                        int ID1 = MessageBox(hwnd, "重开吧", "你被干掉了!", MB_YESNO);
                        if (ID1 == IDYES) return;
                        else closegraph;
                    }
                }
            }
            else if (Map[i - 1][j] == 7)
            {
                int ID = MessageBox(hwnd, "是否喝掉药水", "捡到回血药水", MB_YESNO);
                if (ID == IDYES)
                {
                    role.血量 += 5;
                    Map[i - 1][j] = 9;
                    Map[i][j] = 1;
                }
                else
                {
                    Map[i - 1][j] = 9;
                    Map[i][j] = 1;
                }
            }
                if (Map[i - 1][j] == Map[m1][n1])
                {
                    Map[i][j] = 1;
                    Map[m2][n2 - 1] = 9;
                }
                else if (Map[i - 1][j] == Map[m2][n2])
                {
                    Map[i][j] = 1;
                    Map[m1][n1 + 1] = 9;
                }
                else if (Map[i - 1][j] == 2)
                {
                    if (role.经验 >= 225)
                    {
                        Map[i - 1][j] = 9;
                        Map[i][j] = 1;
                        int ID = MessageBox(hwnd, "历经千辛万苦,你终于逃出了校门!\n是否要开启下一关?", "恭喜!", MB_YESNO);
                        if (ID == IDYES)
                            MessageBox(hwnd, "下一关还没做呢。", "抱歉!", MB_OK);
                        else closegraph();
                    }
                    else
                    {
                        MessageBox(hwnd, "经验不够翻出大门,再去赚点儿吧!", "", MB_OK);

if (Map[i][j-1] == 1)
            {
                Map[i][j] = 1;
                Map[i][j-1] = 9;
            }
            else if (Map[i][j-1] == 6)
            {
                Map[i][j-1] = 9;
                Map[i][j] = 1;
                role.黄钥匙++;
            }
            else if (Map[i][j-1] == 5)
            {
                if (role.黄钥匙 != 0)
                {
                    Map[i][j-1] = 9;
                    Map[i][j] = 1;
                    role.黄钥匙--;
                }
            }
            else if (Map[i][j - 1] == 4)
            {
                int ID = MessageBox(hwnd, "遇到辅导员了!", "是否打死?", MB_YESNO);
                if (ID == IDYES)
                {
                    if (PK(李文振) == true)
                    {
                        Map[i][j - 1] = 9;
                        Map[i][j] = 1;
                    }
                    else
                    {
                        int ID1 = MessageBox(hwnd, "你被干掉了!", "重开吧", MB_YESNO);
                        if (ID1 == IDYES) return;
                        else closegraph;
                    }
                }
            }
            else if (Map[i][j - 1] == 3)
            {
                int ID = MessageBox(hwnd, "遇到保安大爷了!", "是否打死?", MB_YESNO);
                if (ID == IDYES)
                {
                    if (PK(guard) == true)
                    {
                        Map[i][j - 1] = 9;
                        Map[i][j] = 1;
                    }
                    else
                    {
                        int ID1 = MessageBox(hwnd, "你被干掉了!", "重开吧", MB_YESNO);
                        if (ID1 == IDYES) return;
                        else closegraph;
                    }
                }
            }
            else if (Map[i][j - 1] == 7)
            {
                int ID = MessageBox(hwnd, "是否喝掉药水", "捡到回血药水", MB_YESNO);
                if (ID == IDYES)
                {
                    role.血量 += 5;
                    Map[i][j - 1] = 9;
                    Map[i][j] = 1;
                }
                else
                {
                    Map[i][j - 1] = 9;
                    Map[i][j] = 1;
                }
            }
                else if (Map[i][j - 1] == Map[m1][n1])
                {
                    Map[i][j] = 1;
                    Map[m2][n2 - 1] = 9;
                }
                else if (Map[i][j - 1] == Map[m2][n2])
                {
                    Map[i][j] = 1;
                    Map[m1][n1 + 1] = 9;
                }
                else if (Map[i][j - 1] == 2)
            {
                if (role.经验 >= 225)
                {
                    Map[i][j - 1] = 9;
                    Map[i][j] = 1;
                    int ID = MessageBox(hwnd, "历经千辛万苦,你终于逃出了校门!\n是否要开启下一关?", "恭喜!", MB_YESNO);
                    if (ID == IDYES)
                        MessageBox(hwnd, "下一关还没做呢。", "抱歉!", MB_OK);
                    else closegraph();
                }
                else
                {
                    MessageBox(hwnd, "经验不够翻出大门,再去赚点儿吧!", "", MB_OK);
                }
            }
            break;

case 'D':
        case 'd':
        case 77:
            if (Map[i][j+1] == 1)
            {
                Map[i][j] = 1;
                Map[i][j+1] = 9;
            }
            else if (Map[i][j+1] == 6)
            {
                Map[i][j+1] = 9;
                Map[i][j] = 1;
                role.黄钥匙++;
            }
            else if (Map[i][j+1] == 5)
            {
                if (role.黄钥匙 != 0)
                {
                    Map[i][j+1] = 9;
                    Map[i][j] = 1;
                    role.黄钥匙--;
                }
            }
            else if (Map[i][j + 1] == 4)
            {
                int ID = MessageBox(hwnd, "遇到辅导员了!", "是否打死?", MB_YESNO);
                //MessageBox是弹出框,括号内hwnd指在句柄hwnd上方弹出,MB_YESNO是判断是或者否作为ID的返回值
                if (ID == IDYES)
                {
                    if (PK(李文振) == true)
                    {
                        Map[i][j + 1] = 9;
                        Map[i][j] = 1;
                    }
                    else
                    {
                        int ID1 = MessageBox(hwnd, "你被干掉了!", "重开吧", MB_YESNO);
                        if (ID1 == IDYES) return;
                        else closegraph;
                    }
                }
            }
            else if (Map[i][j + 1] == 3)
            {
                int ID = MessageBox(hwnd, "遇到保安大爷了!", "是否打死?", MB_YESNO);
                //MessageBox是弹出框,括号内hwnd指在句柄hwnd上方弹出,MB_YESNO是判断是或者否作为ID的返回值
                if (ID == IDYES)
                {
                    if (PK(guard) == true)
                    {
                        Map[i][j + 1] = 9;
                        Map[i][j] = 1;
                    }
                    else
                    {
                        int ID1 = MessageBox(hwnd, "你被干掉了!", "重开吧", MB_YESNO);
                        if (ID1 == IDYES) return;
                        else closegraph;
                    }
                }
            }
            else if (Map[i][j + 1] == 7)
            {
                int ID = MessageBox(hwnd, "是否喝掉药水", "捡到回血药水", MB_YESNO);
                if (ID == IDYES)
                {
                    role.血量 += 5;
                    Map[i][j + 1] = 9;
                    Map[i][j] = 1;
                }
                else
                {
                    Map[i][j + 1] = 9;
                    Map[i][j] = 1;
                }
            }
            else if (Map[i][j + 1] == Map[m1][n1])
                {
                    Map[i][j] = 1;
                    Map[m2][n2 - 1] = 9;
                }
            else if (Map[i][j + 1] == Map[m2][n2])
            {
                Map[i][j] = 1;
                Map[m1][n1 + 1] = 9;
            }
            else if (Map[i][j + 1] == 2)
            {
                if (role.经验 >= 225)
                {
                    Map[i][j + 1] = 9;
                    Map[i][j] = 1;
                    int ID = MessageBox(hwnd, "历经千辛万苦,你终于逃出了校门!\n是否要开启下一关?", "恭喜!", MB_YESNO);
                    if (ID == IDYES)
                        MessageBox(hwnd, "下一关还没做呢。", "抱歉!", MB_OK);
                    else closegraph();
                }
            

else
                {
                    MessageBox(hwnd, "经验不够翻出大门,再去赚点儿吧!", "", MB_OK);
                }
            }
            break;


        case 'S':
        case 's':
        case 80:
            if (Map[i+1][j] == 1)
            {
                Map[i][j] = 1;
                Map[i+1][j] = 9;
            }
            else if (Map[i+1][j] == 6)
            {
                Map[i+1][j] = 9;
                Map[i][j] = 1;
                role.黄钥匙++;
            }
            else if (Map[i+1][j] == 5)
            {
                if (role.黄钥匙 != 0)
                {
                    Map[i+1][j] = 9;
                    Map[i][j] = 1;
                    role.黄钥匙--;
                }
            }
            else if (Map[i + 1][j] == 4)
            {
                int ID = MessageBox(hwnd, "遇到辅导员了!", "是否打死?", MB_YESNO);
                //MessageBox是弹出框,括号内hwnd指在句柄hwnd上方弹出,MB_YESNO是判断是或者否作为ID的返回值
                if (ID == IDYES)
                {
                    if (PK(李文振) == true)
                    {
                        Map[i + 1][j] = 9;
                        Map[i][j] = 1;
                    }
                    else
                    {
                        int ID1 = MessageBox(hwnd, "你被干掉了!", "重开吧", MB_YESNO);
                        if (ID1 == IDYES) return;
                        else closegraph();
                    }
                }
            }
            else if (Map[i + 1][j] == 3)
            {
                int ID = MessageBox(hwnd, "遇到保安大爷了!", "是否打死?", MB_YESNO);
                if (ID == IDYES)
                {
                    if (PK(guard) == true)
                    {
                        Map[i + 1][j] = 9;
                        Map[i][j] = 1;
                    }
                    else
                    {
                        int ID1 = MessageBox(hwnd, "你被干掉了!", "重开吧", MB_YESNO);
                        if (ID1 == IDYES) return;
                        else closegraph();
                    }
                }
            }
            else if (Map[i + 1][j] == 7)
            {
                int ID = MessageBox(hwnd, "是否喝掉药水", "捡到回血药水", MB_YESNO);
                if (ID == IDYES)
                {
                    role.血量 += 5;
                    Map[i + 1][j] = 9;
                    Map[i][j] = 1;
                }
                else
                {
                    Map[i + 1][j] = 9;
                    Map[i][j] = 1;
                }
            }
                else if (Map[i + 1][j] == Map[m1][n1])
                {
                    Map[i][j] = 1;
                    Map[m2][n2 - 1] = 9;
                }
                else if (Map[i + 1][j] == Map[m2][n2])
                {
                    Map[i][j] = 1;
                    Map[m1][n1 + 1] = 9;
                }
                else if (Map[i + 1][j] == 2)
            {

if (role.经验 >= 225)
                {
                    Map[i + 1][j] = 9;
                    Map[i][j] = 1;
                    int ID = MessageBox(hwnd, "历经千辛万苦,你终于逃出了校门!\n是否要开启下一关?", "恭喜!", MB_YESNO);
                    if (ID == IDYES)
                        MessageBox(hwnd, "下一关还没做呢。", "抱歉!", MB_OK);
                    else closegraph();
                }
                else
                {
                    MessageBox(hwnd, "经验不够翻出大门,再去赚点儿吧!", "", MB_OK);
                }
            }
            break;
        }
    }


    int main()
    {
        
        inputRoleName();
        loadResource();
        hwnd=initgraph(60 * 13, 60 * 12);
        while (1)
        {
            drawMap();
            KeyDown();
        }
        closegraph();
        return 0;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值