把Nodejs服务器后端上传

This commit is contained in:
2025-03-07 14:48:59 +08:00
parent 7fdd7adc47
commit 2201147ccc
9 changed files with 1632 additions and 0 deletions

330
Servers/Players/123456.json Normal file
View File

@@ -0,0 +1,330 @@
{
"experience": 0,
"farm_lots": [
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 3
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 3
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 3
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 3
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 3
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 5
}
],
"farm_name": "唐译",
"level": 0,
"money": 1000,
"user_name": "123456",
"user_password": "123456"
}

View File

@@ -0,0 +1,330 @@
{
"experience": 0,
"farm_lots": [
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 3
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 3
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 3
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 3
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 3
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 5
}
],
"farm_name": "1234567",
"level": 0,
"money": 1000,
"user_name": "1234567",
"user_password": "1234567"
}

View File

@@ -0,0 +1,330 @@
{
"experience": 1626,
"farm_lots": [
{
"crop_type": "人参",
"grow_time": 6600,
"is_dead": true,
"is_diged": true,
"is_planted": true,
"max_grow_time": 6600
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 4800
},
{
"crop_type": "松露",
"grow_time": 7200,
"is_dead": true,
"is_diged": true,
"is_planted": true,
"max_grow_time": 7200
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 1200
},
{
"crop_type": "西瓜",
"grow_time": 2400,
"is_dead": true,
"is_diged": true,
"is_planted": true,
"max_grow_time": 2400
},
{
"crop_type": "葡萄",
"grow_time": 1200,
"is_dead": true,
"is_diged": true,
"is_planted": true,
"max_grow_time": 1200
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "西瓜",
"grow_time": 2400,
"is_dead": true,
"is_diged": true,
"is_planted": true,
"max_grow_time": 2400
},
{
"crop_type": "西瓜",
"grow_time": 1906,
"is_dead": false,
"is_diged": true,
"is_planted": true,
"max_grow_time": 2400
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "甜菜",
"grow_time": 1903,
"is_dead": false,
"is_diged": true,
"is_planted": true,
"max_grow_time": 2160
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 3
},
{
"crop_type": "金橘",
"grow_time": 1900,
"is_dead": true,
"is_diged": true,
"is_planted": true,
"max_grow_time": 4800
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 3
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 4800
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 4800
}
],
"farm_name": "",
"level": 24,
"money": 35261,
"user_name": "3205788256",
"user_password": "tyh@19900420"
}

83
Servers/player.js Normal file
View File

@@ -0,0 +1,83 @@
const fs = require('fs');
const path = require('path');
const express = require('express');
const app = express();
const port = 3000;
// 使用 express.json() 中间件来解析 JSON 请求体
app.use(express.json());
// 处理用户登录请求
app.post('/login', (req, res) => {
const { user_name, user_password } = req.body;
const filePath = path.join(__dirname, `Players/${user_name}.json`);
fs.readFile(filePath, 'utf8', (err, data) => {
if (err) {
console.error('读取文件时出错:', err);
console.error("用户:", user_name, '读取文件:', userData.user_name, ".json", "失败!", "原因:用户不存在");
return res.status(404).json({ message: '用户不存在' });
}
try {
const userData = JSON.parse(data);
if (userData.user_password === user_password) {
console.error("用户:", user_name, '读取文件:', userData.user_name, ".json", "成功!");
return res.json({ message: '登录成功', data: userData });
} else {
console.error("用户:", user_name, '读取文件:', userData.user_name, ".json", "失败!","原因:密码错误");
return res.status(401).json({ message: '密码错误' });
}
} catch (parseError) {
console.error('解析 JSON 时出错:', parseError);
return res.status(500).json({ message: '服务器错误', error: parseError });
}
});
});
// 处理保存数据请求
app.post('/save', (req, res) => {
const receivedData = req.body;
const filePath = path.join(__dirname, `Players/${receivedData.user_name}.json`);
// 将数据写入文件
fs.writeFile(filePath, JSON.stringify(receivedData, null, 2), (err) => {
if (err) {
console.error('保存数据时出错:', err);
return res.status(500).json({ message: '数据保存失败', error: err });
}
console.log(`数据已保存到 ${receivedData.user_name}.json`);
console.log("用户:", receivedData.user_name, '保存数据到:', receivedData.user_name, ".json", "成功!");
return res.json({ message: '数据保存成功', data: receivedData });
});
});
// 处理新用户注册请求
app.post('/register', (req, res) => {
const newUserData = req.body;
const filePath = path.join(__dirname, `Players/${newUserData.user_name}.json`);
// 检查用户名是否已经存在
if (fs.existsSync(filePath)) {
console.error("新用户:", newUserData.user_name, '注册数据到:', newUserData.user_name, ".json", "失败!", "原因:用户名已存在");
return res.status(400).json({ message: '用户名已存在' });
}
// 将新用户数据写入文件
fs.writeFile(filePath, JSON.stringify(newUserData, null, 2), (err) => {
if (err) {
console.error("新用户:", newUserData.user_name, '注册数据到:', newUserData.user_name, ".json", "失败!", "原因:",err);
return res.status(500).json({ message: '数据保存失败', error: err });
}
console.log("新用户:", newUserData.user_name, '注册数据到:', newUserData.user_name, ".json", "成功!");
return res.json({ message: '注册成功', data: newUserData });
});
});
app.listen(port, () => {
console.log(`萌芽后端服务器正在运行在: http://localhost:${port}`);
});

View File

@@ -0,0 +1,330 @@
{
"experience": 4193,
"farm_lots": [
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 3
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 3
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 3
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 3
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 3
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": false,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 5
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 5
}
],
"farm_name": "3205788256的农场",
"level": 8,
"money": 1493,
"user_name": "3205788256",
"user_password": "tyh@19900420"
}

137
Servers/server.js Normal file
View File

@@ -0,0 +1,137 @@
const express = require('express');
const fs = require('fs');
const path = require('path');
const bodyParser = require('body-parser');
const cors = require('cors');
// 创建 Express 应用
const app = express();
const PORT = 3000;
// 配置中间件
app.use(cors()); // 允许跨域资源共享
app.use(bodyParser.json()); // 解析 JSON 请求体
// 服务器存储目录,模拟远程存储位置
const SERVER_STORAGE_PATH = path.join(__dirname, 'game_saves');
// 确保存储目录存在
if (!fs.existsSync(SERVER_STORAGE_PATH)) {
fs.mkdirSync(SERVER_STORAGE_PATH);
}
/**
* 保存游戏数据到服务器
* @route POST /save_game
* @param {Object} req.body - 游戏保存数据
* @returns {Object} 保存结果
*/
app.post('/save_game', (req, res) => {
try {
// 从请求体中获取用户名和完整的游戏数据
const { user_name, ...gameData } = req.body;
// 检查用户名是否存在
if (!user_name) {
return res.status(400).json({
success: false,
message: '用户名不能为空'
});
}
// 构建保存文件路径
const filePath = path.join(SERVER_STORAGE_PATH, `${user_name}.json`);
// 将游戏数据转换为 JSON 字符串
const saveData = JSON.stringify(req.body, null, 2);
// 写入文件
fs.writeFileSync(filePath, saveData, 'utf8');
res.json({
success: true,
message: '游戏数据保存成功'
});
} catch (error) {
console.error('保存游戏数据时发生错误:', error);
res.status(500).json({
success: false,
message: '服务器保存数据失败',
error: error.message
});
}
});
/**
* 从服务器加载游戏数据
* @route POST /load_game
* @param {string} req.body.user_name - 用户名
* @param {string} req.body.user_password - 用户密码
* @returns {Object} 游戏数据或错误信息
*/
app.post('/load_game', (req, res) => {
try {
const { user_name, user_password } = req.body;
// 检查用户名和密码是否存在
if (!user_name || !user_password) {
return res.status(400).json({
success: false,
message: '用户名和密码不能为空'
});
}
// 构建文件路径
const filePath = path.join(SERVER_STORAGE_PATH, `${user_name}.json`);
// 检查文件是否存在
if (!fs.existsSync(filePath)) {
return res.status(404).json({
success: false,
message: '未找到用户数据'
});
}
// 读取文件内容
const fileContent = fs.readFileSync(filePath, 'utf8');
const userData = JSON.parse(fileContent);
// 验证密码
if (userData.user_password !== user_password) {
return res.status(401).json({
success: false,
message: '密码错误'
});
}
res.json({
success: true,
message: '游戏数据加载成功',
data: userData
});
} catch (error) {
console.error('加载游戏数据时发生错误:', error);
res.status(500).json({
success: false,
message: '服务器加载数据失败',
error: error.message
});
}
});
/**
* 服务器健康检查路由
* @route GET /health
* @returns {Object} 服务器状态
*/
app.get('/health', (req, res) => {
res.json({
status: 'healthy',
message: 'Godot农场游戏服务器正在运行'
});
});
// 启动服务器
app.listen(PORT, () => {
console.log(`农场游戏后端服务已启动,监听端口:${PORT}`);
});

21
Servers/测试/json.js Normal file
View File

@@ -0,0 +1,21 @@
const fs = require('fs');
const path = require('path');
// 构建 JSON 文件的路径
const filePath = path.join(__dirname, 'Players', 'player.json');
// 读取 JSON 文件
fs.readFile(filePath, 'utf8', (err, data) => {
if (err) {
console.error('读取文件时出错:', err);
return;
}
try {
// 解析 JSON 数据
const playerData = JSON.parse(data);
console.log('玩家数据:', playerData);
} catch (parseErr) {
console.error('解析 JSON 数据时出错:', parseErr);
}
});

52
Servers/测试/json2.js Normal file
View File

@@ -0,0 +1,52 @@
const fs = require('fs');
const path = require('path');
// 构建 JSON 文件的路径
const filePath = path.join(__dirname, 'Players', '3205788256.json');
// 读取 JSON 文件
fs.readFile(filePath, 'utf8', (err, data) => {
if (err) {
console.error('读取文件时出错:', err);
return;
}
try {
// 解析 JSON 数据
const playerData = JSON.parse(data);
//console.log('玩家数据:', playerData);
// 对解析后的数据进行分析
analyzePlayerData(playerData);
} catch (parseErr) {
console.error('解析 JSON 数据时出错:', parseErr);
}
});
// 分析玩家数据的函数
function analyzePlayerData(playerData) {
// 打印玩家的基本信息
console.log(`用户名: ${playerData.user_name}`);
console.log(`用户密码: ${playerData.user_password}`);
console.log(`农场名称: ${playerData.farm_name}`);
console.log(`金钱: ${playerData.money}`);
console.log(`经验值: ${playerData.experience}`);
console.log(`等级: ${playerData.level}`);
// 统计农场地块的状态
const totalLots = playerData.farm_lots.length;
const diggedLots = playerData.farm_lots.filter(lot => lot.is_diged).length;
const plantedLots = playerData.farm_lots.filter(lot => lot.is_planted).length;
const deadLots = playerData.farm_lots.filter(lot => lot.is_dead).length;
console.log(`总地块数: ${totalLots}`);
console.log(`已挖掘地块数: ${diggedLots}`);
console.log(`已种植地块数: ${plantedLots}`);
console.log(`已枯死地块数: ${deadLots}`);
// 检查每个地块的生长状态
playerData.farm_lots.forEach((lot, index) => {
console.log(`地块 ${index + 1}: 已挖掘 - ${lot.is_diged}, 已种植 - ${lot.is_planted}, 已枯死 - ${lot.is_dead}, 作物类型 - ${lot.crop_type}, 生长时间 - ${lot.grow_time}/${lot.max_grow_time}`);
});
}

19
Servers/测试/login.js Normal file
View File

@@ -0,0 +1,19 @@
const fs = require('fs');
const path = require('path');
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.json({ message: 'GET 请求已收到!' });
console.log('GET 请求已收到!');
});
app.post('/', (req, res) => {
res.json({ message: 'POST 请求已收到!', data: req.body });
console.log('POST 请求已收到!');
});
app.listen(port, () => {
console.log(`萌芽后端服务器正在运行在: http://localhost:${port}`);
});