package Caocao;
import java.net.*;
import java.io.*;
import java.util.*;
import org.xsocket.connection.*;
public class LufyServer {
private IServer srv2 = null;
private ServerSocket server;
private Boolean serverStop = true;
private RPGManager bMan = new RPGManager();
private int ServerCount = 0;
//private HashMap userList = new HashMap();
private HashMap userNameList = new HashMap();
private ArrayList<User> userlist = new ArrayList<User>();
private static String lock = "";
private int roomCount = 9;
private int runIndex = 0;
public LufyServer() {
}
private HashMap<String,String> strToHash(String value){
HashMap<String,String> result = new HashMap<String,String>();
String[] arrValue = value.split("&");
for(int i=0;i<arrValue.length;i++){
String[] keyvalue = arrValue[i].split("=");
if(keyvalue.length == 1){
result.put(keyvalue[0], "");
}else{
result.put(keyvalue[0], keyvalue[1]);
}
}
return result;
}
void startServer() {
try {
srv2 = new Server(843,new CheckSafe());
srv2.start();
server = new ServerSocket(8210);
System.out.println("startServer ExplosionServer is run!");
while (true) {
Socket socket = server.accept();
Chat_Thread chatThread = new Chat_Thread(socket, "socket"
+ ServerCount);
chatThread.start();
//userList.put("socket" + ServerCount, chatThread);
bMan.add(socket);
ServerCount++;
//bMan.sendToSocket(socket, "socketId:socket" + (ServerCount++));
bMan.sendClientInfo();
if(!serverStop){
break;
}
}
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) {
LufyServer server = new LufyServer();
server.startServer();
}
class Chat_Thread extends Thread {
String msg;
User user = new User();
Socket socket;
//Socket socket_0;
/*
String socketId;
String socketName;
int roomId;
int x;
int y;
*/
private BufferedReader reader;
// private PrintWriter writer;
private BufferedWriter writer;
private String xml = "<cross-domain-policy><allow-access-from domain=\"*\" to-ports=\"8210\"/></cross-domain-policy>\0";
Chat_Thread(Socket socket) {
this.socket = socket;
//this.socket = socket;
}
Chat_Thread(Socket socket, String socketidvalue) {
this.socket = socket;
//this.socketId = socketidvalue;
}
public void run() {
try {
reader = new BufferedReader(new InputStreamReader(socket
.getInputStream(), "utf8"));
writer = new BufferedWriter(new OutputStreamWriter(socket
.getOutputStream(), "UTF-8"));
while ((msg = reader.readLine()) != null) {
if(msg.compareTo("<policy-file-request/>") == 1){
System.out.println("Server run ");
bMan.sendToAll(xml);
writer.flush();
}
HashMap<String,String> result = strToHash(msg);
System.out.println("RPGServer run msg = " + msg);
if ("login".equals(result.get("type"))) {
if("123".equals(result.get("pass"))){
if (userNameList.get(result.get("name")) != null) {
String returnName = result.get("name");
result.remove("name");
result.put("name", returnName + ServerCount);
}
user.setName(result.get("name"));
user.setSocket(this.socket);
userNameList.put(user.getName(), user.getName());
String roomStr = "";
String roomAdd = "";
bMan.sendToSocket(this.socket,"type=in");
bMan.sendToAll("type=talk&name=" + user.getName() + "&msg=@o^¬÷I");
if(userlist.size() > 0){
String userlistStr = "";
String addStr = "";
for(int i=0;i<userlist.size();i++){
User thisuser = userlist.get(i);
userlistStr += (addStr + thisuser.getRoomIndex() + ":" + thisuser.getId() + ":" + thisuser.getName());
addStr = ",";
}
bMan.sendToSocket(this.socket,"type=isin&userlist=" + userlistStr);
}
}
}else if ("startin".equals(result.get("type"))) {
user.setId(Integer.parseInt(result.get("id")));
for(int i=0;i<userlist.size();i++){
if(userlist.get(i).getName() == user.getName()){
bMan.sendToAll("type=removeselect&index=" + userlist.get(i).getRoomIndex());
userlist.remove(i);
}
}
user.setRoomIndex(Integer.parseInt(result.get("index")));
bMan.sendToAll("type=select&name=" + user.getName() + "&index=" + user.getRoomIndex() + "&id=" + user.getId());
userlist.add(user);
if(userlist.size() == 4){
ArrayList<User> ourlist = new ArrayList<User>();
ArrayList<User> enemylist = new ArrayList<User>();
ArrayList speedlist = new ArrayList();
speedlist.add(13);
speedlist.add(10);
speedlist.add(11);
speedlist.add(12);
for(int i=0;i<userlist.size();i++){
int index = userlist.get(i).getRoomIndex();
int intspeed = Integer.parseInt(speedlist.get(index).toString());
userlist.get(i).setSpeed(intspeed);
if(userlist.get(i).getRoomIndex() < 2){
ourlist.add(userlist.get(i));
}else{
enemylist.add(userlist.get(i));
}
}
userlist.clear();
userlist.add(ourlist.get(0));
userlist.add(enemylist.get(1));
userlist.add(enemylist.get(0));
userlist.add(ourlist.get(1));
String startXml = "<data>" +
"<Map>1</Map>" +
"<DataMap>" +
"<list>1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1</list>" +
"<list>3,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1</list>" +
"<list>3,3,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1</list>" +
"<list>3,3,3,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,3,3</list>" +
"<list>3,3,3,3,1,1,1,0,0,0,0,1,1,1,1,1,1,3,3,3</list>" +
"<list>3,3,3,3,3,1,1,0,0,0,0,0,1,1,1,1,1,3,3,3</list>" +
"<list>3,3,3,3,3,4,4,4,4,0,0,4,4,4,4,1,1,3,3,3</list>" +
"<list>3,3,3,3,3,4,6,0,0,0,0,0,0,6,4,1,3,3,3,3</list>" +
"<list>3,3,3,3,3,4,6,0,0,0,0,0,0,6,4,1,3,3,3,3</list>" +
"<list>3,3,3,3,0,4,6,0,0,0,0,0,0,0,4,1,3,3,3,3</list>" +
"<list>3,3,3,0,0,0,0,0,0,4,4,0,0,0,4,3,3,3,3,3</list>" +
"<list>3,3,0,0,0,0,0,0,0,5,7,0,0,0,4,3,3,3,3,3</list>" +
"<list>3,0,0,0,0,4,0,0,0,0,0,0,0,0,4,3,3,3,3,3</list>" +
"<list>0,0,0,0,0,4,6,6,0,0,0,0,0,7,4,0,3,3,3,3</list>" +
"<list>0,0,0,0,0,4,4,4,4,0,0,4,4,4,4,0,1,1,3,3</list>" +
"<list>0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,3</list>" +
"<list>1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1</list>" +
"<list>1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1</list>" +
"<list>1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1</list>" +
"<list>1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1</list>" +
"</DataMap>" +
"<Our>" +
"<List x@\"9\" y@\"12\" speed@\"" + ourlist.get(0).getSpeed() + "\" username@\"" + ourlist.get(0).getName() + "\">" + ourlist.get(0).getId() + "</List>" +
"<List x@\"10\" y@\"13\" speed@\"" + ourlist.get(1).getSpeed() + "\" username@\"" + ourlist.get(1).getName() + "\">" + ourlist.get(1).getId() + "</List>" +
"</Our>" +
"<Enemy>" +
"<List x@\"8\" y@\"13\" speed@\"" + enemylist.get(0).getSpeed() + "\" username@\"" + enemylist.get(0).getName() + "\">" + enemylist.get(0).getId() + "</List>" +
"<List x@\"11\" y@\"13\" speed@\"" + enemylist.get(1).getSpeed() + "\" username@\"" + enemylist.get(1).getName() + "\">" + enemylist.get(1).getId() + "</List>" +
"</Enemy>" +
"</data>";
bMan.sendToAll("type=start&xml=" + startXml);
bMan.sendToAll("type=charatorun&name=" + userlist.get(runIndex++).getName());
}
}else if ("getrunchara".equals(result.get("type"))) {
if(runIndex >= userlist.size()){
没有合适的资源?快使用搜索试试~ 我知道了~
slg游戏之多人对战版
共60个文件
gif:19个
as:14个
xml:7个
5星 · 超过95%的资源 需积分: 50 67 下载量 48 浏览量
2010-12-08
16:46:15
上传
评论 2
收藏 3.63MB RAR 举报
温馨提示
简陋版已经完成,提供下载 但是因为只是想学习一下如何做网络游戏,简单实现下功能而已,而且是在原来代码上改的,可以说代码写的乱七八糟, 如果想看一看,AS和JAVA如何通信的话,可以参照一下,如果想学习的话,就不要看代码了 关于测试,打开目录 slg\as3.0\bin 先运行服务器文件CaocaoServer.jar,双击就可以了,但是打开了也没有什么提示,只是在任务管理器里多了一个javaw.exe进程 关闭的方法有两个,一个是用任务管理器里直接关闭,一个就是在游戏的对话框里发送stop 服务器启动后,启动游戏CaoCao.exe文件,当页面不是当前页的时候,flash的自动动态帧频会自动降到每秒2帧,定时器也只会每秒触发2次,游戏基本上等于停止状态,所以没办法,只能发布成exe文件了 进入游戏后添入用户名和密码,用户名任意,密码是123 然后,先从下面的四个角色中选择一个,然后点击甲方或者乙方对应的位置 然后,再点击CaoCao.exe文件,填写另外一个用户名 如此,一共打开四个游戏文件,相当于四个人在玩游戏 四个人都选择好相应的角色和位置后,就会进入游戏的战场界面,看看左上角的人物,黑白表示当前不可操作,彩色表示当前可以操作,还有游戏右下角也会有文字提示 结论,AS3.0做网络游戏,还是比较轻松的
资源推荐
资源详情
资源评论
收起资源包目录
slg.rar (60个子文件)
slg
as3.0
CaoCao.fla 581KB
bin
Fight
1S.xml 1KB
Arms.xml 3KB
save.xml 57B
CaocaoServer.jar 345KB
Terrain.xml 304B
data.xml 138B
people.xml 2KB
people
1.xml 0B
Images
Other
1.gif 9KB
menu.gif 2KB
Unit_atk
1.gif 8KB
103.gif 7KB
Thumbs.db 5KB
98.gif 7KB
100.gif 6KB
HM
1.gif 538KB
Thumbs.db 8KB
Unit_mov
1.gif 7KB
103.gif 6KB
Thumbs.db 10KB
98.gif 6KB
100.gif 6KB
Face
1.gif 3KB
103.gif 4KB
Thumbs.db 10KB
98.gif 4KB
100.gif 4KB
Unit_spc
1.gif 3KB
103.gif 3KB
Thumbs.db 7KB
98.gif 3KB
100.gif 3KB
CaoCao.exe 4.97MB
Caocao
Character
CharacterMC.as 12KB
Character.as 5KB
CharacterIndex.as 894B
socket
LufySocket.as 7KB
ot
RoadQuery.as 14KB
Mains
Login.as 2KB
Sav.as 878B
GameStart.as 11KB
FightMap.as 53KB
.flashProjectProperties 2KB
java
.project 382B
bin
Caocao
User.class 3KB
LufyServer$Chat_Thread.class 10KB
RPGManager.class 2KB
CheckSafe.class 2KB
LufyServer.class 4KB
.settings
org.eclipse.jdt.core.prefs 629B
src
Caocao
CheckSafe.java 2KB
User.java 2KB
LufyServer.java 12KB
.classpath 384B
Lufy
Sprite
SpriteRemove.as 522B
Hash
HashMap.as 2KB
Xml
XMLLoader.as 27KB
Charset.as 18KB
Images
ImageCtrl.as 3KB
共 60 条
- 1
资源评论
- mozart-ye2014-01-15太实用了 正式我需要的
- wawa_sk2013-06-04看了客户端与服务器socket通信代码受益匪浅
- l58266592013-04-05就想看下AS和JAVA如何通信
- bbk35402013-09-28写的真好,运行了感觉很强大, 喜欢战棋游戏,期待以后能够写出完整的
- atseashawk2015-08-10谢谢,真的很详细,解决了困扰我多时的问题
lufy
- 粉丝: 3909
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功