ロジックを作りたいのですが、
セル表示に悩んでいます。
テキストやWEBでも検索していますが、
いまいち分からない状態です。
言語:C言語
目標・サイズ10×10
・時間制限あり
・完成したときのみクリアできる
ロジックを研究していますが・・・
Re:ロジックを研究していますが・・・
お絵かきロジックですか?マ○オのピクロス的な?
>セル表示に悩んでいます。
printfでロジックの状態(0:□ 1:■)を表示すればいいのでは?
もう少し具体的な質問のほうが、求めている回答が得られるかも知れません。
>セル表示に悩んでいます。
printfでロジックの状態(0:□ 1:■)を表示すればいいのでは?
もう少し具体的な質問のほうが、求めている回答が得られるかも知れません。
Re:ロジックを研究していますが・・・
ご返信ありがとうございます。
マ○オのピOロスなものを研究しています。
作成までの計画は、=>基となるセル(マス)を作成する。
=>絵を作ってみる。(ご指摘の通り□■および01を使用します)
=>先画面を裏に格納する。(SetDrawScreen(DX_SCREEN_BACK) 等で表示させない)
=>マスを、キー入力で(マスの)反転 □⇔■
=>入力毎にチェックされ、裏の絵と一致したらゲームセット。
その後はオリジナル版へ発展させる計画です。
ピクロスにとって不可欠な、表ですが
int PixcellData[ PIXCELL_HEIGHT ][ PIXCELL_WIDTH ] =
{
{ 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}, //5*5のマスの初期状態
} ;
を用いて作成を考えていますが、表のようにできないです。
ほかの方法でないと作成(クリックで反転等)は不可能なのでしょうか?
マ○オのピOロスなものを研究しています。
作成までの計画は、=>基となるセル(マス)を作成する。
=>絵を作ってみる。(ご指摘の通り□■および01を使用します)
=>先画面を裏に格納する。(SetDrawScreen(DX_SCREEN_BACK) 等で表示させない)
=>マスを、キー入力で(マスの)反転 □⇔■
=>入力毎にチェックされ、裏の絵と一致したらゲームセット。
その後はオリジナル版へ発展させる計画です。
ピクロスにとって不可欠な、表ですが
int PixcellData[ PIXCELL_HEIGHT ][ PIXCELL_WIDTH ] =
{
{ 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}, //5*5のマスの初期状態
} ;
を用いて作成を考えていますが、表のようにできないです。
ほかの方法でないと作成(クリックで反転等)は不可能なのでしょうか?
Re:ロジックを研究していますが・・・
DXライブラリで作られているのでしょうか
サンプルを作ってみました
サンプルを作ってみました
#include "DxLib.h" #define OFFSET_X (100) // 表示位置 #define OFFSET_Y (100) #define PIXSIZE (16) // ピクセル1個の大きさ #define PIXEL_HEIGHT (5) // ピクセルの行数 #define PIXEL_WIDTH (5) // ピクセルの列数 int MyDrawPixel(int x, int y, int color) { int col[/url] = {GetColor(0,255,0), GetColor(0,0,255), GetColor(255,255,255)}; int sx, sy; if (color < 0 || color > 2) { return -1; } if (x < 0 || x >= PIXEL_WIDTH) { return -2; } if (y < 0 || y >= PIXEL_HEIGHT) { return -3; } sx = OFFSET_X + x * PIXSIZE; sy = OFFSET_Y + y * PIXSIZE; DrawBox(sx, sy, sx + PIXSIZE - 1, sy + PIXSIZE - 1, col[colo[/url], TRUE); return 0; } int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // 完成図 int PixelData[ PIXEL_HEIGHT ][ PIXEL_WIDTH ] = { { 1, 1, 1, 1, 1}, { 0, 0, 1, 0, 0}, { 0, 0, 1, 0, 0}, { 0, 0, 1, 0, 0}, { 0, 0, 1, 0, 0}, } ; // 作業用 int WorkData[ PIXEL_HEIGHT ][ PIXEL_WIDTH ] = {0}; int i, j; ChangeWindowMode(TRUE); if( DxLib_Init() == -1 ) { return -1; } // 初期画面表示 for (i = 0; i < PIXEL_HEIGHT; i++) { for (j = 0; j < PIXEL_WIDTH; j++) { MyDrawPixel(j, i, 0); } } // マウスカーソルを表示状態にする SetMouseDispFlag(TRUE); while(!ProcessMessage()) { int MouseX, MouseY; // マウス左クリック if((GetMouseInput() & MOUSE_INPUT_LEFT)) { // マウスボタンを放すまで待つ while (GetMouseInput() & MOUSE_INPUT_LEFT); // マウスの位置を取得 GetMousePoint(&MouseX, &MouseY); // マウス座標を配列値に変換 MouseX = (MouseX - OFFSET_X) / PIXSIZE; MouseY = (MouseY - OFFSET_Y) / PIXSIZE; // ピクセルの状態を変更 if (MouseX >= 0 && MouseX < PIXEL_WIDTH && MouseY >= 0 && MouseY < PIXEL_HEIGHT) { WorkData[ MouseY ][ MouseX ]++; if (WorkData[ MouseY ][ MouseX ] > 2) { WorkData[ MouseY ][ MouseX ] = 0; } MyDrawPixel(MouseX, MouseY, WorkData[ MouseY ][ MouseX ]); } } // 一定時間待つ WaitTimer(100); } DxLib_End() ; return 0 ; }
Re:ロジックを研究していますが・・・
toyoさんもサンプルで使っていますが、
DXライブラリでのマウスクリック判定、座標位置取得はそれぞれ
GetMouseInput()
GetMousePoint()
があります。
DXライブラリでのマウスクリック判定、座標位置取得はそれぞれ
GetMouseInput()
GetMousePoint()
があります。
Re:ロジックを研究していますが・・・
解決されたようですし、単なる戯言を。
プログラマにとって、ロジックとはアルゴリズムと同義語とは言えないけど、
それに近いような「論理」「論理学」などの英語の元の意味を連想します。
そこで最初の質問で「ロジックを作りたい」とあり、何のロジックか全く
書いてないあたりで、ぉぃぉぃ、と思ってしまいました。
しかし、パズルに造詣が深いプログラマである私としては、
目標として書かれた「サイズ10×10」「時間制限」「完成」等のキーワードで、
イラストロジックやお絵かきロジック、などを指していると気付きました。
質問の仕方がおかしいだろと思いましたが、指摘する以上の時間が取れず、
黙っていました。質問の不備を指摘するのは簡単ですが、質問の意図を
ほぼ確信できた以上は、できれば有効な回答を添えたいものですので。
放置している間に、ふと「ロジック」でググって見たところ、
なんと件のパズルが1位なんですね。きっとこのようにして言葉は
変わっていくんですね。質問者、ちっとも悪くねーじゃん。
とはいえ、英単語 logic は高校で習うくらいだし、質問者が大学生以上なら
少しは元の意味を考えてほしいかな。
いずれにしても、パズル好きが高じてプログラマになった私としては、
複雑な気分です。
プログラマにとって、ロジックとはアルゴリズムと同義語とは言えないけど、
それに近いような「論理」「論理学」などの英語の元の意味を連想します。
そこで最初の質問で「ロジックを作りたい」とあり、何のロジックか全く
書いてないあたりで、ぉぃぉぃ、と思ってしまいました。
しかし、パズルに造詣が深いプログラマである私としては、
目標として書かれた「サイズ10×10」「時間制限」「完成」等のキーワードで、
イラストロジックやお絵かきロジック、などを指していると気付きました。
質問の仕方がおかしいだろと思いましたが、指摘する以上の時間が取れず、
黙っていました。質問の不備を指摘するのは簡単ですが、質問の意図を
ほぼ確信できた以上は、できれば有効な回答を添えたいものですので。
放置している間に、ふと「ロジック」でググって見たところ、
なんと件のパズルが1位なんですね。きっとこのようにして言葉は
変わっていくんですね。質問者、ちっとも悪くねーじゃん。
とはいえ、英単語 logic は高校で習うくらいだし、質問者が大学生以上なら
少しは元の意味を考えてほしいかな。
いずれにしても、パズル好きが高じてプログラマになった私としては、
複雑な気分です。