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

質問編集履歴

4

編集

2020/06/20 17:51

投稿

KZK13
KZK13

スコア43

title CHANGED
File without changes
body CHANGED
@@ -229,4 +229,7 @@
229
229
  ```
230
230
 
231
231
  for文を使い編集してみました。3と入力するとどんな映画が好きなんですか?と出ますが、適当に14356と入力すると無反応です。14356をループして3を見つけたら反応すると思ったのですが。
232
- [編集したプログラム](https://pastebin.com/PvhwYjH0)
232
+ [2020/06/20に編集したプログラム](https://pastebin.com/PvhwYjH0)
233
+
234
+
235
+ [2020/06/21に編集したプログラム](https://pastebin.com/mjmsBXXN)

3

編集

2020/06/20 17:51

投稿

KZK13
KZK13

スコア43

title CHANGED
File without changes
body CHANGED
@@ -37,7 +37,7 @@
37
37
  int rireki = 0;
38
38
  int rireki2 = 0;
39
39
  int LEFTmark = 0;
40
- const char* str[2] = { "にちわ!","申し訳ございません! "};//ここで文字を直接書いてるので、この文字のバイト数が各posmozi[]に入るだけ
40
+ const char* str[2] = { "な映画が好きなんですか?","申し訳ございません! "};//ここで文字を直接書いてるので、この文字のバイト数が各posmozi[]に入るだけ
41
41
  int frame[2] = { 10,10};//次の一文字が出るまでのカウンタとして働いている、ここの数値を変えることで文字が一文字ずつ出るまでの間隔を設定できる。
42
42
  int posmozi[20];//文字のバイト数が入る箱を表している。
43
43
  int countS[2];//次の文字が出るまでのカウントするためのもの
@@ -56,7 +56,7 @@
56
56
  DrawFormatString(300, 300, (0,0,255), "countS[0]は%d", countS[0]);
57
57
  }
58
58
 
59
- const char* str2[2] = { "にちわ!","申し訳ございません! " };//ここで文字を直接書いてるので、この文字のバイト数が各posmozi[]に入るだけ
59
+ const char* str2[2] = { "な映画が好きなんですか?","申し訳ございません! " };//ここで文字を直接書いてるので、この文字のバイト数が各posmozi[]に入るだけ
60
60
  int frame2[2] = { 10,10 };//次の一文字が出るまでのカウンタとして働いている、ここの数値を変えることで文字が一文字ずつ出るまでの間隔を設定できる。
61
61
  int posmozi2[20];//文字のバイト数が入る箱を表している。
62
62
  int countS2[2];//次の文字が出るまでのカウントするためのもの
@@ -127,7 +127,7 @@
127
127
 
128
128
  DrawString(0, 0, input.c_str(), GetColor(255, 255, 255));
129
129
  if (strcmp(input.c_str(), "映画") == 0) {
130
- message = "どんな映画が好きなんですか?";
130
+ // message = "どんな映画が好きなんですか?";
131
131
  konnnitiwasound = LoadSoundMem("line-girl1-konnichiha1.mp3");
132
132
  PlaySoundMem(konnnitiwasound, DX_PLAYTYPE_BACK);
133
133
 

2

編集

2020/06/20 08:30

投稿

KZK13
KZK13

スコア43

title CHANGED
File without changes
body CHANGED
@@ -56,6 +56,25 @@
56
56
  DrawFormatString(300, 300, (0,0,255), "countS[0]は%d", countS[0]);
57
57
  }
58
58
 
59
+ const char* str2[2] = { "こんにちわ!","申し訳ございません! " };//ここで文字を直接書いてるので、この文字のバイト数が各posmozi[]に入るだけ
60
+ int frame2[2] = { 10,10 };//次の一文字が出るまでのカウンタとして働いている、ここの数値を変えることで文字が一文字ずつ出るまでの間隔を設定できる。
61
+ int posmozi2[20];//文字のバイト数が入る箱を表している。
62
+ int countS2[2];//次の文字が出るまでのカウントするためのもの
63
+ int z2;//関数drawString外でも使えるように外にも定義を書いた。zの数値は関係なく、文字列が入った数列がif文により同じ変数zの時にframe[z]と同じになるまで+1されていったり、+2バイトor+1バイトされていくため、
64
+ //文字が一文字ずつ入っていく、なんでzの変数に値を入れて動かす必要がないのだ。ちなみにfor (z = 0; z < 3; ++z)で書いてしまうとキーAを押した際のif文に関係なく関数drawStringの最初のzどこかに値が入っただけで繰り返しを開始してしまうため、今回のように同じ変数zの時にフレームを利用して描画するようにした。
65
+ char c2 = str[z2][posmozi[z2]];//関数drawString外でも使えるように外にも定義を書いた。
66
+
67
+ void drawString2(int z2, int x, int y, int color)
68
+ {
69
+ c = str2[z2][posmozi2[z2]];//posmozi[z2]
70
+ if (countS2[z2] == 0 && c2 != '\0')
71
+ posmozi2[z2] += IsDBCSLeadByte(c2) ? 2 : 1;
72
+ if (++countS2[z2] == frame2[z2]) countS2[z2] = 0;
73
+ DrawFormatString(x, y, color, "%.*s", posmozi2[z2], str2[z2]);
74
+ DrawFormatString(300, 400, (0, 0, 255), "countS2[0]は%d", countS2[0]);
75
+ }
76
+
77
+
59
78
  int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
60
79
  {
61
80
 

1

編集編集

2020/06/20 08:29

投稿

KZK13
KZK13

スコア43

title CHANGED
File without changes
body CHANGED
@@ -56,25 +56,6 @@
56
56
  DrawFormatString(300, 300, (0,0,255), "countS[0]は%d", countS[0]);
57
57
  }
58
58
 
59
- const char* str2[2] = { "こんにちわ!","申し訳ございません! " };//ここで文字を直接書いてるので、この文字のバイト数が各posmozi[]に入るだけ
60
- int frame2[2] = { 10,10 };//次の一文字が出るまでのカウンタとして働いている、ここの数値を変えることで文字が一文字ずつ出るまでの間隔を設定できる。
61
- int posmozi2[20];//文字のバイト数が入る箱を表している。
62
- int countS2[2];//次の文字が出るまでのカウントするためのもの
63
- int z2;//関数drawString外でも使えるように外にも定義を書いた。zの数値は関係なく、文字列が入った数列がif文により同じ変数zの時にframe[z]と同じになるまで+1されていったり、+2バイトor+1バイトされていくため、
64
- //文字が一文字ずつ入っていく、なんでzの変数に値を入れて動かす必要がないのだ。ちなみにfor (z = 0; z < 3; ++z)で書いてしまうとキーAを押した際のif文に関係なく関数drawStringの最初のzどこかに値が入っただけで繰り返しを開始してしまうため、今回のように同じ変数zの時にフレームを利用して描画するようにした。
65
- char c2 = str[z2][posmozi[z2]];//関数drawString外でも使えるように外にも定義を書いた。
66
-
67
- void drawString2(int z2, int x, int y, int color)
68
- {
69
- c = str2[z2][posmozi2[z2]];//posmozi[z2]
70
- if (countS2[z2] == 0 && c2 != '\0')
71
- posmozi2[z2] += IsDBCSLeadByte(c2) ? 2 : 1;
72
- if (++countS2[z2] == frame2[z2]) countS2[z2] = 0;
73
- DrawFormatString(x, y, color, "%.*s", posmozi2[z2], str2[z2]);
74
- DrawFormatString(300, 400, (0, 0, 255), "countS2[0]は%d", countS2[0]);
75
- }
76
-
77
-
78
59
  int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
79
60
  {
80
61
 
@@ -226,4 +207,7 @@
226
207
  // 終了
227
208
  return 0;
228
209
  }
229
- ```
210
+ ```
211
+
212
+ for文を使い編集してみました。3と入力するとどんな映画が好きなんですか?と出ますが、適当に14356と入力すると無反応です。14356をループして3を見つけたら反応すると思ったのですが。
213
+ [編集したプログラム](https://pastebin.com/PvhwYjH0)