zoukankan      html  css  js  c++  java
  • 软件工程迭代开发第四篇

    由于周末我们更新了服务器系统,我周日晚上才拿到,所以这篇博客更新较晚。这篇是补的上周末的博客。

    周末我做的内容就是存储下线经验值。

    左侧的5是cout的具体经验值。经验条是紫色的那个。

    我打一个怪之后会涨10点经验。

    然后我关闭游戏,重新登录。

     经验条成功保存。

    具体实现是,我们将获取经验的代码放到了服务端。就是用户杀死怪,传信息到服务器,服务器计算涨的经验,然后将数值发回客户端。客户端接收到数值之后,计算出现有经验然后显示。

    下面是怪物被玩家打的函数:

    bool monster::fight(double damage, int id) {        //被玩家打
        hp -= damage;
        if (hp <= 0) {
            hp = 10;
            initPosition();
            for (int i = 0; i < curmap->csz.size(); i++) {
                if (curmap->csz[i]->p.id == id) {
                    curmap->csz[i]->p.getexp(getexp);
                }
            }
        }
        sprintf(buffer, "MG %d %d %d %lf %lf %lf", curmap->id, this->id, 0,wx, wy, hp);
        //Send to 所有玩家
        GengXinMonster(buffer);
        return true;
    }

    中间那段,if中的内容就是杀怪玩家调用getexp(int ge)函数。

    服务端clientplayer.cpp下的getexp(int ge)函数实现如下:

    void Player::getexp(int ge) {            //获得经验
        char buf[MAXSIZE + 1];
        exp += ge;
        sprintf(buf, "HE %d %d %d", curmap->id, id, ge);        //发送获得经验消息
        SendAcquireInfo(buf);
        while (exp > maxexp) {
            exp -= maxexp;
            lvup();
        }
    }

    服务端获得经验值,发送HE消息传给客户端。

    而客户端接收信息的代码如下:

    else if (c == 'H') {
        ss >> c;
        if (c == 'E') {
            ss >> temp;
            p1.exp += temp;
        }
    }

    显示经验条可见之前博客。

  • 相关阅读:
    Kubernetes 部署微服务电商平台(16)
    Android开发如何去除标题栏title
    eclipse中logcat偶尔不显示log的问题解决办法
    Two Sum
    事件的解除与绑定
    使用 Canvas 绘图
    表单脚本
    事件
    DOM2 和 DOM3
    DOM扩展
  • 原文地址:https://www.cnblogs.com/Dmmuistirci/p/5640494.html
Copyright © 2011-2022 走看看