发布网络版珠宝大对决(带完全源代码) 喜欢网络游戏编程的朋友别错过:)(300分)

  • 主题发起人 主题发起人 mmzmagic
  • 开始时间 开始时间
M

mmzmagic

Unregistered / Unconfirmed
GUEST, unregistred user!
下载地址 http://www.2ccc.com/
网络版珠宝大对决
基于我给朋友写的一个游戏对战平台
Sources目录为源代码,包含所有公共单元BaseClass|客户端服务DLL GemFight|服务端 GemFightServer
BIN目录为运行程序的目录

执行顺序
先运行bin目录下的/服务端/CenterServer.exe
此程序是登陆服务器 负责在线服务信息的路由。

bin目录下的/服务端/GemFightGameServer.exe
此程序是游戏服务器 负责珠宝大对决的游戏信息处理信息。

/Bin/客户端/Client.exe
这个就是客户端了也就是游戏大厅 运行后
输入登陆服务器IP即可
账号可以使用 1~5登陆密码和账号相同
登陆后选择珠宝大对决服务器 任意加入2张桌子选择举手,双方都举手后即可开始2人对战。支持多人游戏。

申明
发布的代码是免费绿色的,您可以随意修改或传播,但请误做商业用途。
代码只包括网络版的珠宝大对决。给爱好游戏编程的朋友研究,相信在这些代码内会找到不少有用的技巧。有问题欢迎邮件讨论。
最后支持DELPHI支持盒子支持开源,共同学习,共同提高。
发布人 马敏钊 Mail: mmzmagic@sina.com

用到的第3方控件
Bsf 3.0 | Raize 3.10 | DXSock 3.00 |AspHyre Ex 3.0 |FastMM
以上控件在盒子搜索都有下载
运行前请安装Directx 9.0c以保证程序能正常工作


音乐
将游戏界面左下的音乐 钩去再钩上就会有首挺逗的MP3播放






珠宝大对决
游戏使用DELPHI的基于DIRECTX组件(MPL协议)开发
游戏规则
2人对战(以后可根据情况增加对战人数)
游戏玩法

玩家可以通过键盘 上、下、左、右 键来移动 选择框
Delete键是将选择框内的宝石向左边顺序旋转
pageDown键是将选择框内的宝石向右边顺序旋转
当某一颜色2颗以上宝石在 横 竖 斜 方向连成一线时宝石就将消去同时增加自己的时间槽,并且给对手造成攻击效果(时间槽降低)
某一家时间槽降为0时就算输
游戏小技巧
尽量思考如何一次消除最多的宝石,以最大程度的增加自己生命,并且减少对方生命。不要转太快,转的太快生命损失的更快。
游戏规则
每消去一个宝石给自己加1点生命,减少对手1点生命。
每秒所有玩家的生命都将减少N点,每旋转一次将增加每秒减低生命N+1点 每2秒会消除每秒减低生命N-1
当每次同时消去6个以上宝石时,攻击和奖励效果加1倍
当每次同时消去10个以上宝石时,攻击和奖励效果加2倍
游戏道具
每消去1个宝石将得到1个奖励点,奖励点可以购买道具 道具有不同的辅助效果

按1键 生命蛋
当你有40个奖励点的时候 可以增加自己50点生命
按2键 冻结蛋
当你有60个奖励点的时候 购买此道具可以冻结对手15秒(对手不能动荡)
按3键 无敌蛋
当你有70个奖励点的时候 购买此道具可以使自己在20秒内不受对手的攻击(对手攻击无效)
按4键 混乱蛋
当你有70个奖励点的时候 购买此道具可以使对手在30秒内看不清楚自己球的颜色(但是旋转后实际颜色正确仍然能消除)



GemFight 珠宝大对决 协议
为了提高服务器的负载,所有的判断逻辑均在客户端实现,服务器端实现信息的转发
大厅协议定义在UntProtocol
游戏协议定义在UntGemFightProcotol

1.用户进入桌子后 点开始游戏 也就是举手
(进入的时候将已经在桌子内的用户传递给游戏DLL 如果有新用户进来了也是大厅处理了传递给游戏 DLL)
C-GS>CCTOGSSetGameState GS-广播到其它客户端>GSTOCCUserSetGameState 用户ID
此时判断如果所有用户都举手了 就通知开始游戏

2.开始游戏
Gs-广播到其它客户端>GemFightGSTOCCGiveRandomArr
array[0..69] of byte (1P随机数组)
array[0..69] of byte (2P随机数组)
array[0..99] of byte (准备好的100个球的随机数组)

3.玩家开始游戏中
玩家移动光标
CC-GS>GemFightCCTOGSMoveMouse Byte 玩家移动光标的方向
Gs-广播到其它客户端>GemFightGSTOCCMoveMouse RUsermoveMouse
玩家旋转光标
CC-GS>GemFightCCTOGSTurnGem Byte 玩家旋转光标的方向
Gs-广播到其它客户端>GemFightGSTOCCTurnGem RUserTurnGem
一旦后备数组的数量少于20个就像服务器请求 array[0..99] of byte (后备的100个球的随机数组)
CC-GS>GemFightCCTOGSGetRandomBack array[0..99] of byte 玩家请求后备球
Gs-广播到其它客户端>GemFightGSTOCCGetRandomBack array[0..99] of byte 玩家请求后备球

4.直到有一玩家时间槽被减完发出失败命令

5庄家客户端计算总积分后通知服务端并且显示得分情况 服务端根据客户端的通知处理积分后记录到数据库
CC-GS>GemFightCCTOGSFinishGame ROneGameScore
服务器(由于特殊情况 比如道具 经过处理的分)转发给各个客户端
Gs-广播到其它客户端GS>GSTOCCFinishGame ArrPlayerRecordScore
 
对楼主滴开源的精神,鼓掌!
 
哇!出新作了阿,前辈!我是小雨阿!
呵呵!!!支持一下!
顶!!!
 
哇,好也,又有新游戏玩了
 
哇!出新作了阿,前辈!我是文生阿!
 
支持下~~~~~~
 
有机会玩玩!
 
谢谢,正想看看这方面的东西。。。
 
呵呵 看来喜欢游戏编程的朋友不多啊 哎。。。
 
不是不多,只是用delphi编程游戏的不多。
支持~~
 
好,学习
技术交流QQ:136293586
 
顶上去 。。。
 
好东东
要顶的
[:D]
 
想楼主学习
 
后退
顶部