asp.net - ASP.NET/SQL 函数不在循环中存储所有值
问题描述
所以我正在创建一个垄断游戏,我有两个函数可以在数据库中读取/写入有关游戏的信息,以便可以在回发之间检索它。我还有一个启动游戏函数,它将所有内容初始化为 0,然后调用 writeToDatabase()。createArrays() 只是创建一个玩家/方块列表,方块已被删除,因为它们不相关。
我遇到的问题是我相信它只是在循环中存储一些值。当调用 start game 函数时,它正确地将玩家位置设置为 0,并将他们的钱设置为 1500,但是由于某种原因,当再次从数据库中读取时,第 4 位玩家的详细信息会立即返回到前一会话期间的状态。
private void readFromDatabase()
{
createArrays();
for (int i = 0; i < players.Count(); i++)
{
players[i].SetID(Convert.ToInt32(players_table.GetRow(i)["ID"]));
players[i].SetPosition(Convert.ToInt32(players_table.GetRow(i)["position"]));
players[i].SetMoney(Convert.ToInt32(players_table.GetRow(i)["money"]));
players[i].SetInJail(Convert.ToBoolean(players_table.GetRow(i)["isInJail"]));
players[i].SetIsBankrupt(Convert.ToBoolean(players_table.GetRow(i)["isBankrupt"]));
}
currentPlayerID = Convert.ToInt32(gameinfo_table.GetRow(0)["CurrentPlayerID"]);
currentSquareID = Convert.ToInt32(gameinfo_table.GetRow(0)["CurrentSquareID"]);
freeParkingAmount = Convert.ToInt32(gameinfo_table.GetRow(0)["FreeParkingAmount"]);
currentPlayer = players[currentPlayerID];
CurrentSquare = squares[currentSquareID];
}
private void writeToDatabase()
{
CurrentSquare = squares[currentSquareID];
for (int i = 0; i < players.Count(); i++)
{
SQLDatabase.DatabaseRow prow = players_table.GetRow(players[i].GetID());
prow["ID"] = players[i].GetID().ToString();
prow["position"] = players[i].GetPosition().ToString();
prow["money"] = players[i].GetMoney().ToString();
prow["isInJail"] = players[i].IsInJail().ToString();
prow["isBankrupt"] = players[i].IsBankrupt().ToString();
players_table.Update(prow);
}
SQLDatabase.DatabaseRow girow = gameinfo_table.GetRow(0);
girow["CurrentPlayerID"] = currentPlayerID.ToString();
girow["CurrentSquareID"] = CurrentSquare.GetID().ToString();
girow["FreeParkingAmount"] = freeParkingAmount.ToString();
gameinfo_table.Update(girow);
}
private void startGame()
{
createArrays();
currentPlayerID = 0;
currentPlayer = players[0];
CurrentSquare = squares[0];
writeToDatabase();
}
private void createArrays()
{
for (int i = 0; i < 4; i++)
{
Player player = new Player(i);
players.Add(player);
}
}
我真的不知道为什么会这样,因为当它创建播放器数组时,它循环了 4 次,因此创建了 4 个全新的播放器,并立即覆盖了数据库中的详细信息。对于前 3 名玩家来说,这似乎很奇怪,但第 4 名的细节似乎没有改变。任何帮助将不胜感激,我确信这很简单,但我已经花了几个小时在这上面,却一无所获。
解决方案
推荐阅读
- typescript - 我正在使用柏树来自动化。我需要打开窗口文件上传对话框并附加任何文件。我该怎么做?
- c++ - 带参数的 QT 信号如何工作
- git - 将文件添加到不准确的 git 存储库
- javascript - Next.js Reload on Save
- python - 如何使用 tf.keras 从 savedModel 访问图层
- c++ - Gurobi 中 LP 的最佳基数的大小
- laravel - 将类添加到操作按钮
- c# - 广告在编辑器中有效,但在 Android 中无效
- reactjs - 添加“ag-grid-enterprise”时,最简单的 ag-grid 过滤器示例失败
- latex - 我的母语特殊字符在 LaTeX 上不起作用