画面表示されなくなった・・・
Posted: 2016年9月12日(月) 13:11
初めて投稿させていただきます。
当方、C言語の勉強を始めて1ヶ月の素人です。
いろんなサイトを参考にしつつ、簡単なタイピングのプログラムを組んでいるのですが、画面がまっくらになり、何も表示されなくなってしまいました。
いろいろいじってみたところ、裏画面設定のSetDrawScreen(DX_SCREEN_BACK)を付けると画面が真っ黒になるようなのです。
裏画面処理をおこなった状態で表示するのにどこが間違っているのでしょうか?
素人ゆえ、基本的なミスなのかもしれませんがご教授願えませんでしょうか?
[code]
#include"DxLib.h"
#include<string>
#include<time.h>
#include<stdlib.h>
#define NUM_Q 4
int Cr;
void Judge(char Seikai[], int n) {
static int i = 0;
static char Nyuryoku;
static char Nyuryoku_end[30];
Nyuryoku = GetInputChar(TRUE);//文字入力バッファから一文字取得
if (Nyuryoku != 0 && Nyuryoku >= CTRL_CODE_CMP) {
Nyuryoku_end[i] = Nyuryoku;
if (Seikai[i] == Nyuryoku) {
i++;
}
else {
DrawFormatString(240 + 20 * i, 260, GetColor(250, 0, 0), "×");
}
Nyuryoku_end[i] = '\0';
DrawFormatString(240, 300, Cr, Nyuryoku_end);
if (i == n) {
i = 0;
DrawFormatString(640/2-40, 200, Cr, "正解です");
return;
}
}
}
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
ChangeWindowMode(TRUE), DxLib_Init(),SetDrawScreen(DX_SCREEN_BACK);
while(ScreenCopy() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0) {
srand((unsigned int)time(NULL));
char *Seikai[] = {
"haro-","dadanmaku","ganbare","kansei"
};
SetFontSize(20);
Cr = GetColor(255, 255, 255);
int StrWidth_Q, StrLen_Q, StrWidth_S, StrLen_S;
DrawFormatString(640 / 2 - 130, 240 - 32, Cr, "キーを押すとスタートします");
int j;
j = rand() % NUM_Q;
StrLen_Q = strlen("ハロー");
StrWidth_Q = GetDrawStringWidth("ハロー", StrLen_Q);
StrLen_S = strlen(Seikai[j]);
StrWidth_S = GetDrawStringWidth(Seikai[j], StrLen_S);
WaitKey();
ClearDrawScreen();
ClearInputCharBuf();
DrawFormatString(640 / 2 - StrWidth_Q / 2, 30, Cr, "ハロー");
DrawFormatString(640 / 2 - StrWidth_S / 2, 50, Cr, Seikai[j]);
while (CheckHitKey(KEY_INPUT_ESCAPE) == 0) {
Judge(Seikai[j], StrLen_S);
}
WaitKey();
DxLib_End();
return 0;
}
}
[/code]
よろしくお願いします。
当方、C言語の勉強を始めて1ヶ月の素人です。
いろんなサイトを参考にしつつ、簡単なタイピングのプログラムを組んでいるのですが、画面がまっくらになり、何も表示されなくなってしまいました。
いろいろいじってみたところ、裏画面設定のSetDrawScreen(DX_SCREEN_BACK)を付けると画面が真っ黒になるようなのです。
裏画面処理をおこなった状態で表示するのにどこが間違っているのでしょうか?
素人ゆえ、基本的なミスなのかもしれませんがご教授願えませんでしょうか?
[code]
#include"DxLib.h"
#include<string>
#include<time.h>
#include<stdlib.h>
#define NUM_Q 4
int Cr;
void Judge(char Seikai[], int n) {
static int i = 0;
static char Nyuryoku;
static char Nyuryoku_end[30];
Nyuryoku = GetInputChar(TRUE);//文字入力バッファから一文字取得
if (Nyuryoku != 0 && Nyuryoku >= CTRL_CODE_CMP) {
Nyuryoku_end[i] = Nyuryoku;
if (Seikai[i] == Nyuryoku) {
i++;
}
else {
DrawFormatString(240 + 20 * i, 260, GetColor(250, 0, 0), "×");
}
Nyuryoku_end[i] = '\0';
DrawFormatString(240, 300, Cr, Nyuryoku_end);
if (i == n) {
i = 0;
DrawFormatString(640/2-40, 200, Cr, "正解です");
return;
}
}
}
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
ChangeWindowMode(TRUE), DxLib_Init(),SetDrawScreen(DX_SCREEN_BACK);
while(ScreenCopy() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0) {
srand((unsigned int)time(NULL));
char *Seikai[] = {
"haro-","dadanmaku","ganbare","kansei"
};
SetFontSize(20);
Cr = GetColor(255, 255, 255);
int StrWidth_Q, StrLen_Q, StrWidth_S, StrLen_S;
DrawFormatString(640 / 2 - 130, 240 - 32, Cr, "キーを押すとスタートします");
int j;
j = rand() % NUM_Q;
StrLen_Q = strlen("ハロー");
StrWidth_Q = GetDrawStringWidth("ハロー", StrLen_Q);
StrLen_S = strlen(Seikai[j]);
StrWidth_S = GetDrawStringWidth(Seikai[j], StrLen_S);
WaitKey();
ClearDrawScreen();
ClearInputCharBuf();
DrawFormatString(640 / 2 - StrWidth_Q / 2, 30, Cr, "ハロー");
DrawFormatString(640 / 2 - StrWidth_S / 2, 50, Cr, Seikai[j]);
while (CheckHitKey(KEY_INPUT_ESCAPE) == 0) {
Judge(Seikai[j], StrLen_S);
}
WaitKey();
DxLib_End();
return 0;
}
}
[/code]
よろしくお願いします。