C++ 开发的第一款游戏

从iOS转入游戏行业,转眼间一个月了,十几天完成了自己的第一款小游戏。感觉还是有点不适应的,从编程语言到编译工具等,用惯了苹果电脑,突然转到Windows下,好多都不习惯了。


首先,从编程工具说起,vs2010说起来不陌生,大学学习那会儿用过。毕业后就没怎么用过,好多东西都不会,对于新手了来说,那就是两眼一抹黑,不懂咋办呢?问度娘呗,问同事。记一些常用的快捷键,对于编程还是很有好处的。


谈谈游戏吧,做的这款游戏是一个多人玩的游戏,摇骰子押大小。这里写图片描述
上面这个UI整体效果图,一开始接手这个项目完全懵逼的,不知道从哪里下手。想了半天,分析各种问题。一开始就觉得中奖区域好难算,根据3个骰子的随机值,算出来。开始写的算法,逻辑用了200多行代码来完成。这个游戏个人感觉最难的就是根据骰子随机值算出中奖区域,以及那些中奖了,什么赔率。在此处附上我写的根据骰子随机值计算中奖区域代码:

void CServerGameDesk::GetDiceLottery(BYTE dice[3]){

    BYTE arrayHe[14];
    BYTE arrayDouble[6];
    BYTE arrayThree[6];
    //int arrayLottry[7] = {0};
    int i;

    //单骰
    for (i = 0;i < 3;i++)
    {
        m_LottryArea[i] = dice[i];
    }


    //骰子和
    BYTE sumDice = dice[0]+ dice[1] + dice[2];
    for ( i = 0;i < 14;i++)
    {
        arrayHe[i] = 7+i;
    }
    if (((sumDice-4) >= 0) && ((sumDice-4)<=13)){
        m_LottryArea[3]  = arrayHe[sumDice - 4];

    }else{
        m_LottryArea[3] = 0;
    }

    //双骰
    for (i = 0;i < 6;i++)
    {
        arrayDouble[i] = 21 + i;
    }
    if ((dice[0] == dice[1]) || (dice[0] == dice[2])|| (dice[1] == dice[2]))
    { 
        if ((dice[0] == dice[1]))
        {

            m_LottryArea[4] = arrayDouble[dice[0]-1];

        }

        if ((dice[1] == dice[2]))
        {
            m_LottryArea[4] = arrayDouble[dice[1]-1];

        }

        if ((dice[0] == dice[2]))
        {
            m_LottryArea[4] = arrayDouble[dice[0]-1];

        }
    }else{
        m_LottryArea[4] = 0;
    }


    //骰子大小
    if ((sumDice >= 4) && (sumDice <= 10))
    {
        m_LottryArea[6] = 34;
    }
    else
    {
        m_LottryArea[6] = BET_AREA;
    }


    //三骰(围骰)
    for (i = 0;i < 6;i++)
    {
        arrayThree[i] = 27 + i;
    }
    if ((dice[0] == dice[1]) && (dice[0] == dice[2]))
    {  
        m_LottryArea[5] = arrayThree[dice[0]-1];
        m_LottryArea[7] = 33;
        m_LottryArea[6] = 0;

    }else{
        m_LottryArea[5] = 0;
    }

}

这是说说当时的想法,把中奖区域分为8块。单骰(用3个区域表示)、骰和、大小、双骰、全骰、围骰。在根据每个区域定义的枚举类型的值来算出随机骰子出现的中奖区域。
定义的枚举类型如下:

//下注区域类型
enum BetType
{             

    // 单点
    BET_TYPE_SINGLE_1 = 1,                      
    BET_TYPE_SINGLE_2 = 2,
    BET_TYPE_SINGLE_3 = 3,
    BET_TYPE_SINGLE_4 = 4,
    BET_TYPE_SINGLE_5 = 5,
    BET_TYPE_SINGLE_6 = 6,

    // 骰子的和数
    BET_TYPE_SUM_4 = 7,                  
    BET_TYPE_SUM_5,
    BET_TYPE_SUM_6,
    BET_TYPE_SUM_7,
    BET_TYPE_SUM_8,
    BET_TYPE_SUM_9,
    BET_TYPE_SUM_10,
    BET_TYPE_SUM_11,
    BET_TYPE_SUM_12,
    BET_TYPE_SUM_13,
    BET_TYPE_SUM_14,
    BET_TYPE_SUM_15,
    BET_TYPE_SUM_16,
    BET_TYPE_SUM_17,

    // 双骰
    BET_TYPE_DOUBLE_1 = 21,                     
    BET_TYPE_DOUBLE_2 = 22,
    BET_TYPE_DOUBLE_3 = 23,
    BET_TYPE_DOUBLE_4 = 24,
    BET_TYPE_DOUBLE_5 = 25,
    BET_TYPE_DOUBLE_6 = 26,


    //  围骰
    BET_TYPE_THREE_1 = 27,                      
    BET_TYPE_THREE_2 = 28,
    BET_TYPE_THREE_3 = 29,
    BET_TYPE_THREE_4 = 30,
    BET_TYPE_THREE_5 = 31,
    BET_TYPE_THREE_6 = 32,

    // 全围
    BET_TYPE_ALL = 33,

    // 大
    BET_TYPE_MAX = 35, 

    //小
    BET_TYPE_MIN = 34,      

};

一个游戏做下来,感觉基础东西很重要,在这个游戏开发中,主要用到很多基础的数据类型,外加一些STL基本库的几种基本类型(vector,deque);
O(∩_∩)O就扯这么多了,赶紧搬砖去/(ㄒoㄒ)/~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值