teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

訂正

2019/03/10 11:34

投稿

cateye
cateye

スコア6851

answer CHANGED
@@ -52,9 +52,9 @@
52
52
  ```text
53
53
  usr ~/Project/test/teratail % c++ t178700.cpp
54
54
  usr ~/Project/test/teratail % ./a.out
55
- 200,200,200,200,200
55
+ 201,202,203,204,205
56
- usr ~/Project/test/teratail % cat savefile.txt
56
+ usr ~/Project/test/teratail % cat savefile.txt
57
- 200 200 200 200 200
57
+ 201 202 203 204 205
58
58
 
59
59
  usr ~/Project/test/teratail %
60
60
  ```

2

ソース修正

2019/03/10 11:34

投稿

cateye
cateye

スコア6851

answer CHANGED
@@ -2,11 +2,13 @@
2
2
  また、読み込みは空白で区切られた文字列となるはずですが、savefile.txtはそうは成っていないみたいです。なので、"200200200200200"はintの範囲を超えていると思います。追記にも書きましたが空白で分けたらどうでしょう?
3
3
  「ソース追記」
4
4
  ```c++
5
+ #include <iostream>
5
6
  #include <fstream>
6
7
  using namespace std;
7
8
 
8
9
  class MainAdmin
9
10
  {
11
+ public:
10
12
  MainAdmin() { Init(); }
11
13
 
12
14
  protected:
@@ -18,7 +20,7 @@
18
20
  int Clear_Score_init;
19
21
  //
20
22
  void Init();
21
- void SaveFile();
23
+ // void SaveFile();
22
24
  //
23
25
  };
24
26
 
@@ -32,31 +34,27 @@
32
34
 
33
35
  fileinput >> Player_initX >> Player_initY >> Player_initHP >> Enemy_initHP
34
36
  >> Clear_Score_init;
35
-
37
+ //
36
38
  fileinput.close();
39
+ //
40
+ cout << Player_initX << ',' << Player_initY << ',' << Player_initHP << ','
41
+ << Enemy_initHP << ',' << Clear_Score_init << endl;
37
42
  }
38
-
43
+ //
39
- void MainAdmin::SaveFile()
44
+ int main(void)
40
45
  {
41
- ofstream fileoutput;
46
+ MainAdmin ma;
42
- if (!fileoutput.is_open()) {
43
- fileoutput.open(filename);
44
- }
45
- //ファイルに出力する
47
+ //
46
- fileoutput << 200 << 200 << 200 << 200 << 200;
47
-
48
- DrawString(320, 240, "セーブしました", GetColor(255, 255, 255));
49
- fileoutput.close();
48
+ return 0;
50
49
  }
51
50
 
51
+ ```
52
+ ```text
52
53
  usr ~/Project/test/teratail % c++ t178700.cpp
53
- t178700.cpp:39:25: error: use of undeclared identifier 'filename'
54
+ usr ~/Project/test/teratail % ./a.out
54
- fileoutput.open(filename);
55
+ 200,200,200,200,200
55
- ^
56
- t178700.cpp:44:51: error: use of undeclared identifier 'GetColor'
57
- DrawString(320, 240, "セーブしました", GetColor(255, 255, 255));
56
+ usr ~/Project/test/teratail % cat savefile.txt
58
- ^
59
- 2 errors generated.
57
+ 200 200 200 200 200
60
58
 
59
+ usr ~/Project/test/teratail %
61
- ```
60
+ ```
62
- このコードでfileoutput.open(filename);のfilenameが不明です。

1

ソース追記

2019/03/10 11:30

投稿

cateye
cateye

スコア6851

answer CHANGED
@@ -1,2 +1,62 @@
1
1
  通常は、class(構造体)にしてInit()に渡すのでしょうが、そうはなってないみたいですね?
2
- また、読み込みは空白で区切られた文字列となるはずですが、savefile.txtはそうは成っていないみたいです。なので、"200200200200200"はintの範囲を超えていると思います。追記にも書きましたが空白で分けたらどうでしょう?
2
+ また、読み込みは空白で区切られた文字列となるはずですが、savefile.txtはそうは成っていないみたいです。なので、"200200200200200"はintの範囲を超えていると思います。追記にも書きましたが空白で分けたらどうでしょう?
3
+ 「ソース追記」
4
+ ```c++
5
+ #include <fstream>
6
+ using namespace std;
7
+
8
+ class MainAdmin
9
+ {
10
+ MainAdmin() { Init(); }
11
+
12
+ protected:
13
+ //エディターを読み込んだ時の、自機の初期位置
14
+ int Player_initX;
15
+ int Player_initY;
16
+ int Player_initHP;
17
+ int Enemy_initHP;
18
+ int Clear_Score_init;
19
+ //
20
+ void Init();
21
+ void SaveFile();
22
+ //
23
+ };
24
+
25
+ void MainAdmin::Init()
26
+ {
27
+ ifstream fileinput;
28
+
29
+ fileinput.open("savefile.txt");
30
+
31
+ //ファイルに書き込みがあったらファイルの値を読み込む
32
+
33
+ fileinput >> Player_initX >> Player_initY >> Player_initHP >> Enemy_initHP
34
+ >> Clear_Score_init;
35
+
36
+ fileinput.close();
37
+ }
38
+
39
+ void MainAdmin::SaveFile()
40
+ {
41
+ ofstream fileoutput;
42
+ if (!fileoutput.is_open()) {
43
+ fileoutput.open(filename);
44
+ }
45
+ //ファイルに出力する
46
+ fileoutput << 200 << 200 << 200 << 200 << 200;
47
+
48
+ DrawString(320, 240, "セーブしました", GetColor(255, 255, 255));
49
+ fileoutput.close();
50
+ }
51
+
52
+ usr ~/Project/test/teratail % c++ t178700.cpp
53
+ t178700.cpp:39:25: error: use of undeclared identifier 'filename'
54
+ fileoutput.open(filename);
55
+ ^
56
+ t178700.cpp:44:51: error: use of undeclared identifier 'GetColor'
57
+ DrawString(320, 240, "セーブしました", GetColor(255, 255, 255));
58
+ ^
59
+ 2 errors generated.
60
+
61
+ ```
62
+ このコードでfileoutput.open(filename);のfilenameが不明です。