c言語を初めて3か月ほど やっとゲームのプログラムまでこぎつけました
いつもなら1週間くらい悩んで解決策を見つけられたのですが、まだ動きのあるc言語に慣れていないためtどこが間違いなのか見つけられません
wakuをキーボードの方向入力で一マスずつ動くようにしたいのですが、wakuがどうしても出力されてくれません
どこがいけないのか、もしよければみてください
//othello
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow )
{
char Key[256];
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1;
{
int i,j;
int White,Red,Green,Blue,Black;
White=GetColor(255,255,255);
Red=GetColor(255,0,0);
Green=GetColor(0,255,0);
Blue=GetColor(0,0,255);
Black=GetColor(0,0,0);
DrawBox(80,0,560,480,Green,TRUE);
for(i=0;i<8;i++)
for(j=0;j<8;j++)
DrawBox(i*60+80,j*60,i*60+140,j*60+60,Black,FALSE);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if((i+j)%2==0)
DrawCircle(i*120+200,j*120+120,3,Black,TRUE);
for(i=0;i<2;i++)
for(j=0;j<2;j++)
if((i+j)%2==0)
DrawCircle(i*60+290,j*60+210,25,White,TRUE);
else
DrawCircle(i*60+290,j*60+210,25,Black,TRUE);
}// 表示完了
SetDrawScreen( DX_SCREEN_BACK ) ;
while(!ProcessMessage() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE])
{
int i,j=0;
int Red;
Red=GetColor(255,0,0);
if ( Key[ KEY_INPUT_UP ] == 1 )
j--;
DrawBox(i*60+500,i*60+420,i*60+560,i*60+480,Red,FALSE);
ScreenFlip();
}
DxLib_End();
return 0;
}
カーソルの移動について
Re:カーソルの移動について
#include "DxLib.h" void Glaph(); int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ) { char Key[256]; int x1=0; int y1=0; int x2 = 0; int y2 = 0; SetDrawScreen( DX_SCREEN_BACK ) ; if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; while(!ProcessMessage() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]) { int Red; Red=GetColor(255,0,0); if ( Key[ KEY_INPUT_UP ] == 1 ) { y1--; y2--; } Glaph(); DrawBox(x1*60+500,y1*60+420,x2*60+560,y2*60+480,Red,TRUE); ScreenFlip(); } DxLib_End(); return 0; } //表示するだけの関数 void Glaph(){ ClearDrawScreen(); int i,j; int White,Green,Blue,Black; White=GetColor(255,255,255); Green=GetColor(0,255,0); Blue=GetColor(0,0,255); Black=GetColor(0,0,0); DrawBox(80,0,560,480,Green,TRUE); for(i=0;i<8;i++){ for(j=0;j<8;j++){ DrawBox(i*60+80,j*60,i*60+140,j*60+60,Black,FALSE); } } for(i=0;i<3;i++){ for(j=0;j<3;j++){ if((i+j)%2==0){ DrawCircle(i*120+200,j*120+120,3,Black,TRUE); } } } for(i=0;i<2;i++){ for(j=0;j<2;j++){ if((i+j)%2==0){ DrawCircle(i*60+290,j*60+210,25,White,TRUE); }else{ DrawCircle(i*60+290,j*60+210,25,Black,TRUE); } } } }
こんな感じで如何ですか?
確認し易いように枠は塗りつぶしにしてあります。
DrawBox(x1*60+500,y1*60+420,x2*60+560,y2*60+480,Red,False);
にすれば枠だけが赤くなるハズです。
Re:カーソルの移動について
中の処理はまだ追ってないので分かりませんが・・・
最初の
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1;
{
int i,~
ですが、{の前にelseが抜けてませんか?
また、
if ( Key[ KEY_INPUT_UP ] == 1 )
j--;
DrawBox(i*60+500,i*60+420,i*60+560,i*60+480,Red,FALSE);
ScreenFlip();
ですが、j--したのにDrawBoxで使用していないですよね??
その辺確認されましたか?
最初の
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1;
{
int i,~
ですが、{の前にelseが抜けてませんか?
また、
if ( Key[ KEY_INPUT_UP ] == 1 )
j--;
DrawBox(i*60+500,i*60+420,i*60+560,i*60+480,Red,FALSE);
ScreenFlip();
ですが、j--したのにDrawBoxで使用していないですよね??
その辺確認されましたか?