【问题标题】:Simple console game, list for calculate sum of each player简单的控制台游戏,计算每个玩家总和的列表
【发布时间】:2014-08-13 16:27:28
【问题描述】:

我正在创建一个简单的控制台应用程序。基本思想是让用户输入玩家数量,然后循环将根据用户输入的数量在 x 时间内开始询问玩家姓名。然后游戏部分开始,循环遍历玩家列表,每个玩家要扔球3次,每次用户输入一个分数;当该用户完成投掷时,这些分数将被添加并显示。循环转到下一个玩家并重复另外 3 次投掷。当总分小于100分时,循环从第一个玩家开始,让第一个玩家再次投掷3次,投掷结束时,他的得分为第一轮得分加上第二轮得分.

现在我不确定如何创建这样的列表和循环来分隔玩家之间的分数。我有两个列表,一个用于存储玩家,一个用于存储分数,来自不同玩家的分数存储在同一个列表中,因此我无法正确计算每个玩家的总和。任何想法和提示都会非常有帮助!

【问题讨论】:

  • 为什么不创建一个将分数作为私有变量的 Player 类并创建一个返回它的方法?
  • 您需要重新开始您的设计。您的score 列表只是ints 的列表 - 它不会跟踪每个分数属于哪个玩家。
  • 你可以使用 Dictionary> (key = player, value = list of score)
  • 我建议您也可以从 GameDevelopment 获得有用的帮助:gamedev.stackexchange.com
  • @WhyCry 我已经让积分返回工作,但我试图在每个用户达到 100 之前每 3 次将积分加起来。有什么想法吗?

标签: c# list loops for-loop foreach


【解决方案1】:

一种不添加类的方法是使用字典>。 Key = 玩家姓名,Value = 该玩家的得分列表。

首先将字典中的每个玩家添加一个空列表。

然后在你的循环中你可以有类似的东西:

int total = 0;
if(playerDictionary.ContainsKey(playerName))
    foreach(int score in playerDictionary[playerName])
        total += score;

Console.WriteLine(total)

【讨论】:

  • 如果 OP 想要存储其他数据(例如移动、错误答案等)怎么办。重新设计代码?更好的方法是保存 Player 类的列表/HashSet/KeyedCollection。 public class Player { public string Name; public int Score; }
  • @L.B 嘿,实际上我没有考虑过这些,我是 c# 的新手,只尝试基本的东西,希望尽可能简单。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-23
  • 2012-10-30
  • 2019-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-24
相关资源
最近更新 更多