回答編集履歴

1

見直しキャンペーン中

2023/08/12 14:56

投稿

TN8001
TN8001

スコア9898

test CHANGED
@@ -1,169 +1,85 @@
1
1
  `Player player = null;`としておくのが手間がないですが、コンパイラに分かりやすいフロー?にすればエラーを消せます。
2
-
3
-
4
2
 
5
3
  あと`int.TryParse`は失敗時に0になるので戻り値をチェックしてください(もしくは選択肢を1/2にする等)
6
4
 
7
-
8
-
9
- ```C#
5
+ ```cs
10
-
11
6
  using System;
12
-
13
7
  using System.IO;
14
8
 
15
-
16
-
17
9
  namespace Questions300161
18
-
19
10
  {
20
-
21
11
  class Program
22
-
23
12
  {
24
-
25
13
  static void Main()
26
-
27
14
  {
28
-
29
15
  //Logger.Inject(new ConsoleLogger(), new ConsoleInput());
30
-
31
16
  var currentDirectory = Directory.GetCurrentDirectory();
32
-
33
17
  var jsonPath = currentDirectory + "\playerData.json";
34
-
35
18
  Player player;
36
19
 
37
-
38
-
39
20
  Logger.Log("Start Game!");
40
-
41
21
  while(true)
42
-
43
22
  {
44
-
45
23
  Logger.Log("新しく始めますか:0\n続きから始めますか:1");
46
-
47
24
  var start = Logger.ReadInput();
48
-
49
25
  if(int.TryParse(start, out var num))
50
-
51
26
  {
52
-
53
27
  if(num == 0)
54
-
55
28
  {
56
-
57
29
  Logger.Log("プレイヤーの名前を入力してください");
58
-
59
30
  var Playname = Logger.ReadInput();
60
-
61
31
  player = new Player(Playname, 100f, 10f, 5f, 1, 0);
62
32
 
63
-
64
-
65
33
  Logger.Log("プレイヤーデータを生成します");
66
-
67
34
  Logger.Log("出力先:" + jsonPath);
68
-
69
35
  SaveUserJson(player, jsonPath);
70
36
 
71
-
72
-
73
37
  break;
74
-
75
38
  }
76
-
77
39
  else if(num == 1)
78
-
79
40
  {
80
-
81
41
  if(!LoadUserJson(jsonPath, out player))
82
-
83
42
  {
84
-
85
43
  return;
86
-
87
44
  }
88
-
89
45
  break;
90
-
91
46
  }
92
-
93
47
  }
94
48
 
95
-
96
-
97
49
  Logger.Log("0か1以外が入力されました");
98
-
99
50
  Logger.Log("もう一度入力してください");
100
-
101
51
  }
102
52
 
103
-
104
-
105
53
  var world = new World(player);
106
-
107
54
  while(world.Loop())
108
-
109
55
  {
110
-
111
56
  Logger.ReadInput();
112
-
113
57
  }
114
-
115
58
  Logger.Log("game over.");
116
-
117
59
  }
118
60
 
119
-
120
-
121
61
  private static bool LoadUserJson(string jsonPath, out Player loadedData)
122
-
123
62
  {
124
-
125
63
  loadedData = new Player("Player", 100f, 10f, 5f, 1, 0);
126
-
127
64
  return true;
128
-
129
65
  }
130
-
131
66
  private static void SaveUserJson(Player player, string jsonPath) { }
132
-
133
67
  }
134
68
 
135
-
136
-
137
69
  internal class World
138
-
139
70
  {
140
-
141
71
  public World(Player player) { }
142
-
143
72
  internal bool Loop() => false;
144
-
145
73
  }
146
-
147
74
  internal class Player
148
-
149
75
  {
150
-
151
76
  public Player(string playname, float v1, float v2, float v3, int v4, int v5) { }
152
-
153
77
  }
154
-
155
78
  internal class Logger
156
-
157
79
  {
158
-
159
80
  internal static void Log(string v) => Console.WriteLine(v);
160
-
161
81
  internal static string ReadInput() => Console.ReadLine();
162
-
163
82
  }
164
-
165
83
  }
166
-
167
84
  ```
168
-
169
85
  提示されていない部分は雑にでっち上げました^^;