MC新手入门(四十五)------游戏网络功能二

来源:互联网 发布:centos中文输入法 编辑:程序博客网 时间:2024/05/19 17:56
绘画功能
         绘画功能是实现用鼠标在画布上面画图。

1.设置画笔
     给角色act_drawActor.添加事件里添加<创建角色>事件,在创建角色添加脚本来设置默认画笔,如下图8-2-2-1 所示:

8-2-2-1.jpg

图8-2-2-1  

8-2-2-2.jpg

图8-2-2-2

2.设置鼠标
   实现鼠标左键按下开始绘画,鼠标左键弹起时停止绘画。在添加鼠标事件之前先在全局脚本里添加idraw变量,来标识鼠标是按下还是弹起,0表示弹起,1表示按下。给角色act_drawActor.添加事件里添加<鼠标键按下>事件,在鼠标键按下添加脚本,如下图8-2-2-3所示:

8-2-2-3.jpg

图8-2-2-3

8-2-2-4.jpg

图8-2-2-4

给角色act_drawActor.添加事件里添加<鼠标键弹起>事件,在鼠标键弹起添加脚本,如下图8-2-2-5所示:

8-2-2-5.jpg


 

图8-2-2-5

8-2-2-6.jpg

图8-2-2-6

3.给角色act_drawActor添加事件里添加<绘制角色>事件,用来绘画图形。在绘制角色事件添加脚本,如下图8-2-2-7所示:

8-2-2-7.jpg

图8-2-2-7

8-2-2-8.jpg

图8-2-2-8

到这里绘画功能算完成了,运行一下。是否能用鼠标绘画呢?
数据传输功能
数据传输是实现了<你画我猜>游戏图形的传输,比如:用户1在游戏界面画图通过服务器可以马上传输到用户2游戏界面,这样就可以让用户2来猜用户1在画什么东西。
1.  修改act_drawActor.添加事件里添加<鼠标键按下>事件,在鼠标键按下添加脚本添加发送数据脚本,如下图8-2-3-1所示:

8-2-3-1.jpg

图8-2-3-1

代码如下:
                            SendNetDataf("%s &%d&%d", "act_drawActor", xmouse, ymouse);
2.修改角色act_drawActor.添加事件里添加<绘制角色>事件,在绘制角色事件添加发送数据脚本,如下图8-2-3-2所示:

8-2-3-2.jpg

图8-2-3-2

代码如下:
                            SendNetDataf("%s %d&%d", "act_drawActor", xmouse, ymouse);
3. 给角色drawActor.添加事件里添加<接收网络信息>事件,在网络信息事件添加发送数据脚本,如下:
                            nt i = 0;
                            int iflag = 0;
                            char chMsg[256] , chAcX[256] , chAcY[256];
                            int iX , iY;
                            GetNetData(chMsg);

                            for(i = 0 ; i < 256 ; i++)
                            {
                                  if(38 == chMsg[0])        //第一个字符为“&”表示鼠标刚刚按下开始作画,应该移动画笔
                                  {
                                         iflag = 1;
                                  }
                                  if(38 == chMsg && i != 0)
                                  {
                                         if(1 == iflag)
                                         {
                                                  strncpy(chAcX, chMsg + 1, i - 1);
                                                  strcpy(chAcY, chMsg + i + 1);
                                         }
                                         else
                                         {
                                                  strncpy(chAcX , chMsg , i);
                                                  strcpy(chAcY, chMsg + i + 1);
                                         }
                                  }
                            }
                            iX = atoi(chAcX);
                            iY = atoi(chAcY);
                            screen_to_actor(&iX, &iY); //获得鼠标坐标
                            if(1 == iflag)
                            {
                                  moveto(iX, iY);
                            }
                            lineto(iX, iY); //画一条线至鼠标坐标

4.游戏网络设置
   既然要网络传输,那肯定要设置网络传输协议、服务器IP等设置。如下图8_16所示:

8-2-3-3.jpg

图 8-2-3-3

注意:
在运行测试之前要注意:测试之前须将服务器打开。
服务器:MC安装目录下NetServer文件夹中Server.exe。
服务器端口配置要与游戏设置中的服务器端口一样。
到这里总算大功告成了,测试运行一下。是否在一个游戏界面画图,另一个游戏界面马上就出现所画的图呢?

练习与思考:
  通过上面的例子,我想大家对网络通信有一定了解了,现在做一个类似QQ聊天软件工具,实现两个用户聊天。

Demo下载地址:http://www.dongyo.cn/bbs/forum.php?mod=viewthread&tid=2527&extra=page%3D1%26filter%3Dauthor%26orderby%3Ddateline%26orderby%3Ddateline

 

原创粉丝点击