お絵かきロジックについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
デジキャメ

お絵かきロジックについて

#1

投稿記事 by デジキャメ » 15年前

ファイルから数字を読み込み、イラストロジックの問題を作成しています。
ファイルは3つあり、1つはmasu.txtの問題を読み込むファイル、
yokoは、9X9のマスの横に数字が表示される。(1が表示されます)
yokoiroは9X9のマスの横に□を出力するファイルです。

yokoiroのファイルで、いつも実行が止まってしまうのですが、
問題があるのでしょうか?


#include "DxLib.h"
#define SET_XY (5)
#define size (20)
#define SIZE (10)
#define PI_H (9)
#define PI_W (9)
#pragma warning(disable:4996)

int YokoPixel(int x, int y, int color){
int sx, sy, Wh=GetColor(255,255,255), Bl=GetColor(70,70,255), Yl=GetColor(249,230,0);
int Gr=GetColor(70,255,70),Rd=GetColor(255,70,255), col[/url] = {Wh,Bl,Rd,Yl,Gr};

sx=205+x*size; sy=SET_XY+y*size;
DrawBox(sx, sy, sx+size-1, sy+size-1, col[colo[/url], TRUE);return 0;
}
int MyDrawPixel(int x, int y, int color){
int sx, sy, Wh=GetColor(255,255,255), Bk=GetColor(0,0,0), col[/url] = {Wh,Bk};

sx=SET_XY+x*size; sy=SET_XY+y*size;
DrawBox(sx, sy, sx+size-1, sy+size-1, Wh, TRUE);
DrawBox(sx+1, sy+1, sx+size-1-1, sy+size-1-1, col[colo[/url], TRUE);
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){

int SetFontThickness(int TinckPal),CheckHitKey(int KeyCode), MouseX, MouseY;char String[256];
int WorkData[PI_H][PI_W] = {0}, PixelData[PI_H][PI_W], PixellData[PI_H][PI_W];
int i, j, cnt=0, y=0, FileHandle, Bk=GetColor(0,0,0), Wh, Gy,Min=0; FILE *file;

  file=fopen("masu.txt","r");if(file==NULL){printfDx("FILE ERORR");exit(0);}
/*for(i=0; i<PI_H; i++){
for(j=0; j<PI_W; j++){
fscanf(file,"%d", &PixelData[j]);
}
}
fclose(file);
file=fopen("yokoiro.txt","r");
for(i=0; i<PI_H; i++){
for(j=0; j<PI_W; j++){
fscanf(file,"%d", &PixellData[j]);
}
}
fclose(file);
for(i=0; i<PI_H; i++){
for(j=0; j<PI_W; j++){
YokoPixel(j, i, PixellData[j]);
}
}*/
ChangeWindowMode(TRUE); if(DxLib_Init() == -1){return -1;}
Bk=GetColor(0,0,0); Wh=GetColor(255,255,255);Gy=GetColor(200,200,200);

FileHandle = FileRead_open("yoko.txt");y=PI_H*size+SET_XY;y=0;
while(FileRead_eof(FileHandle) == 0){
FileRead_gets(String, 256, FileHandle);
DrawString(SET_XY+PI_W*size, SET_XY+y, String, Wh);y+=20;
}
FileRead_close(FileHandle);
DrawBox(SET_XY, SET_XY, size*PI_W+SET_XY-1, size*PI_H+SET_XY-1, Gy, TRUE);
for(i=0; i<PI_H; i++){
for(j=0; j<PI_W; j++){
MyDrawPixel(j, i, 0);
}
}
SetMouseDispFlag(TRUE);
while(!ProcessMessage()){
if(memcmp(PixelData, WorkData, sizeof(int)*PI_H*PI_W) == 0) break;
if(GetMouseInput() & MOUSE_INPUT_LEFT){
while (GetMouseInput() & MOUSE_INPUT_LEFT);
GetMousePoint(&MouseX, &MouseY);
if(MouseX>SET_XY && MouseY>SET_XY){
MouseX = (MouseX-SET_XY)/size;
MouseY = (MouseY-SET_XY)/size;
if(Min<=MouseX&&MouseX<PI_W&&Min<=MouseY&&MouseY<PI_H){
WorkData[MouseY][MouseX]++;
if(WorkData[MouseY][MouseX] > 1) WorkData[MouseY][MouseX] = 0;
MyDrawPixel(MouseX, MouseY, WorkData[MouseY][MouseX]);cnt++;
}
}
}
  }
DrawString(40,400,"Clear!!",Wh);
WaitTimer(3000);DxLib_End();return 0;
}
ファイル(masu)  ファイル(yokoiro)

1 0 0 0 0 0 0 0 0 1(←成功すると、9X9のマスのこの位置に青い■が表示されます。)
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0  ファイル(yoko)
0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0

box

Re:お絵かきロジックについて

#2

投稿記事 by box » 15年前

> yokoiroのファイルで、いつも実行が止まってしまうのですが、
> 問題があるのでしょうか?
>
>   file=fopen("masu.txt","r");if(file==NULL){printfDx("FILE ERORR");exit(0);}

この直後の18行分がコメントになっています。
それは正しいですか?

デジキャメ

Re:お絵かきロジックについて

#3

投稿記事 by デジキャメ » 15年前

>boxさん

回答およびご指摘ありがとうございます。

コメントマーク/**/を消し忘れていました。

デジキャメ

追加です

#4

投稿記事 by デジキャメ » 15年前

実行しましたが、YokoPixcel関数内の

DrawBox(sx, sy, sx+size-1, sy+size-1, col[colo[/url], TRUE);return 0;

で止まってしまい、困っています。

デジキャメ

直りました

#5

投稿記事 by デジキャメ » 15年前

入力位置を間違えていました。

皆様、お騒がせしました。

閉鎖

“C言語何でも質問掲示板” へ戻る