Advertisement
Guest User

Untitled

a guest
Sep 13th, 2015
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.67 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using Wintellect.PowerCollections;
  6.  
  7. namespace Scoreboard
  8. {
  9. internal class Program
  10. {
  11. private static void Main(string[] args)
  12. {
  13. SortedDictionary<string, string> Users = new SortedDictionary<string, string>();
  14. SortedDictionary<string, Game> Games = new SortedDictionary<string, Game>();
  15.  
  16. string content, command, line;
  17. while (true)
  18. {
  19. line = Console.ReadLine();
  20.  
  21. if (line == "End")
  22. break;
  23.  
  24. if (line != "")
  25. {
  26. command = line.Substring(0, line.IndexOf(' '));
  27. content = line.Substring(line.IndexOf(' ') + 1);
  28. var parameters = content.Split(' ');
  29. switch (command)
  30. {
  31. case "RegisterUser":
  32. {
  33. string user = parameters[0];
  34. string password = parameters[1];
  35. if (Users.ContainsKey(user))
  36. Console.WriteLine("Duplicated user");
  37. else
  38. {
  39. Users.Add(user, password);
  40. Console.WriteLine("User registered");
  41. }
  42. break;
  43. }
  44. ;
  45.  
  46. case "RegisterGame":
  47. {
  48. string game = parameters[0];
  49. string password = parameters[1];
  50. if (Games.ContainsKey(game))
  51. Console.WriteLine("Duplicated game");
  52. else
  53. {
  54. Games.Add(game, new Game(password));
  55. Console.WriteLine("Game registered");
  56. }
  57. }
  58. break;
  59. case "AddScore":
  60. {
  61. string user = parameters[0];
  62. string userPassword = parameters[1];
  63. string game = parameters[2];
  64. string gamePassword = parameters[3];
  65. int score = int.Parse(parameters[4]);
  66. if (Games.ContainsKey(game)
  67. && Games[game].Password == gamePassword
  68. && Users.ContainsKey(user)
  69. && Users[user] == userPassword)
  70. {
  71. var scoreGame = new GameScore(user, score);
  72. Games[game].Scores.Add(scoreGame);
  73. Console.WriteLine("Score added");
  74.  
  75. }
  76. else
  77. Console.WriteLine("Cannot add score");
  78. }
  79. break;
  80.  
  81. case "ShowScoreboard":
  82. {
  83. string game = parameters[0];
  84. if (Games.ContainsKey(game))
  85. {
  86. OrderedBag<GameScore> scores = Games[game].Scores;
  87. var size = scores.Count;
  88. if (size == 0)
  89. Console.WriteLine("No score");
  90. else
  91. {
  92. int num = 1;
  93. foreach (var score in scores)
  94. {
  95. if (num == 11)
  96. break;
  97. Console.WriteLine("#{0} {1} {2}", num, score.User, score.Score);
  98. num++;
  99. }
  100.  
  101. }
  102.  
  103. }
  104. else
  105. Console.WriteLine("Game not found");
  106. }
  107. break;
  108. case "ListGamesByPrefix":
  109. {
  110. string prefix = parameters[0];
  111. var results = Games.Where(g => g.Key.StartsWith(prefix)).OrderBy(g => g.Key);
  112. int count = 0;
  113. StringBuilder str = new StringBuilder();
  114. foreach (var result in results)
  115. {
  116. if (count == 10)
  117. break;
  118. str.Append(result.Key + ", ");
  119. count++;
  120. }
  121. if (count == 0)
  122. Console.WriteLine("No matches");
  123. else
  124. {
  125. Console.WriteLine(str.ToString(0, str.Length - 2));
  126. }
  127. }
  128. break;
  129. case "DeleteGame":
  130. {
  131. string game = parameters[0];
  132. string password = parameters[1];
  133. if (Games.ContainsKey(game))
  134. {
  135. if (Games[game].Password != password)
  136. Console.WriteLine("Cannot delete game");
  137. else
  138. {
  139. Games.Remove(game);
  140. Console.WriteLine("Game deleted");
  141. }
  142. }
  143. else
  144. Console.WriteLine("Cannot delete game");
  145. }
  146. break;
  147. }
  148. }
  149. }
  150. }
  151. }
  152.  
  153.  
  154. public class GameScore : IComparable<GameScore>
  155. {
  156. public string User { get; set; }
  157. public int Score { get; set; }
  158.  
  159. public int CompareTo(GameScore other)
  160. {
  161. if (Score < other.Score)
  162. return 1;
  163. if (Score == other.Score && User == other.User)
  164. return 0;
  165. if (Score == other.Score && string.Compare(User, other.User, 0) > 0)
  166. return 1;
  167. return -1;
  168.  
  169. }
  170.  
  171. public GameScore(string user, int score)
  172. {
  173. User = user;
  174. Score = score;
  175. }
  176. }
  177.  
  178. public class Game
  179. {
  180. public string Password { get; set; }
  181. public OrderedBag<GameScore> Scores { get; set; }
  182.  
  183. public Game(string password)
  184.  
  185. {
  186. Password = password;
  187. Scores = new OrderedBag<GameScore>();
  188. }
  189. }
  190. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement