ページ 1 / 1
DXライブラリ初心者
Posted: 2016年1月07日(木) 19:24
by けだま
コード:
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
//ウィンドウモード
ChangeWindowMode(true);
int Cr_white,Cr_brack;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
Cr_white = GetColor(255,255,255) ; // 白色の値を取得
Cr_brack = GetColor(0,0,0) ;
DrawBox(140,60,500,420,Cr_white,TRUE) ; //四角表示、360*360
DrawLine(260,40,260,400,Cr_brack) ; // 縦線を描画
DrawLine(380,40,380,400,Cr_brack) ;
DrawLine(140,180,500,180,Cr_brack) ; // 横線を描画
DrawLine(140,300,500,300,Cr_brack) ;
if(CheckHitKey( KEY_INPUT_A ) == 1)
DrawBox(140,60,500,420,Cr_white,TRUE) ; //重ね塗り
//エスケープ押したら終わり
while(1){
if(CheckHitKey( KEY_INPUT_ESCAPE ) == 1)
break;
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
DXライブラリ初心者です。
①Aのコードを押しても四角形の重ね塗りができません。ラインがある四角形の上に白い四角形を重ねて表示させたいです。
どうすればいいでしょうか?
Re: DXライブラリ初心者
Posted: 2016年1月07日(木) 22:30
by みけCAT
けだま さんが書きました:①Aのコードを押しても四角形の重ね塗りができません。
「①Aのコード」とは何ですか?
けだま さんが書きました:ラインがある四角形の上に白い四角形を重ねて表示させたいです。
どうすればいいでしょうか?
ラインがある四角形の上に白い四角形を重ねて表示させるプログラムを書き、コンパイルし、実行すればいいでしょう。
とりあえず、描画を1回だけするのではなく、
裏画面処理をして繰り返し描画するようにするといいかもしれません。
Re: DXライブラリ初心者
Posted: 2016年1月07日(木) 23:31
by けだま
Q 「①Aのコード」とは何ですか?
A Aのキーを押したら↓
if(CheckHitKey( KEY_INPUT_A ) == 1)
DrawBox(140,60,500,420,Cr_white,TRUE) ; //重ね塗り
この文が動くと思っていました。
裏画面処理の知識は無いので勉強します。
Re: DXライブラリ初心者
Posted: 2016年1月07日(木) 23:43
by Dixq (管理人)
DXライブラリのことならうちのゲームプログラミングの館を見てもらえたら十分勉強できますよ。
http://dixq.net/g/
> A Aのキーを押したら↓
> if(CheckHitKey( KEY_INPUT_A ) == 1)
> DrawBox(140,60,500,420,Cr_white,TRUE) ; //重ね塗り
> この文が動くと思っていました。
それは根本的にソースコードが分かっていないと言わざるを得ません。
C言語の処理をよく考えてみましょう。
一瞬でこの処理はwhile文に入り、ものすごい速さでこのwhile文が回ります。
もしかくなら
if(CheckHitKey( KEY_INPUT_A ) == 1)
DrawBox(140,60,500,420,Cr_white,TRUE) ; //重ね塗り
の処理をwhile文の中に入れるか・・ですが、これでは離しても重ね塗りされたままですしメッセージ処理もしていないのでよくありません。
while文で全部書いて全部消すというループでプログラムが動くように改良してみてください。
プログラムの組み方はゲームプログラミングの館を一通り見ていただければ分かります。
Re: DXライブラリ初心者
Posted: 2016年1月09日(土) 17:20
by けだま
コード:
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
//ウィンドウモード
ChangeWindowMode(true);
int Cr_white,Cr_brack;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
Cr_white = GetColor(255,255,255) ; // 白色の値を取得
Cr_brack = GetColor(0,0,0) ;
DrawBox(140,60,500,420,Cr_white,TRUE) ; //四角表示、360*360
DrawLine(260,40,260,400,Cr_brack) ; // 縦線を描画
DrawLine(380,40,380,400,Cr_brack) ;
DrawLine(140,180,500,180,Cr_brack) ; // 横線を描画
DrawLine(140,300,500,300,Cr_brack) ;
// if(CheckHitKey( KEY_INPUT_A ) == 1)
// DrawBox(140,60,500,420,Cr_white,TRUE) ; //重ね塗り
while(1){
if(CheckHitKey( KEY_INPUT_A ) == 1){
DrawBox(140,60,500,420,Cr_white,TRUE) ; //重ね塗り
break;
}
}
//エスケープ押したら終わり
while(1){
if(CheckHitKey( KEY_INPUT_ESCAPE ) == 1)
break;
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
Dixq (管理人)へ
上のプログラムが自分がしたかったことです。解決できました。ありがとうございます。
「一瞬でこの処理はwhile文に入り、ものすごい速さでこのwhile文が回ります。」この文を見て気づきました。