プログラミング暦は3~4ヶ月くらいです。
龍神録はなんとなくはやりました。
タマを発射させたいのですが、うまくいきません;;
当たり判定はそのうちつけるとしても、タマが発射できなければどうしようもないですよね・・・。
当たり判定はキャラクター画像全体にする予定です。その方が簡単だと思ったので。
こうすればタマを発射させられる。という考えを教えてください!
あと、こうすれば綺麗なプログラムになるよ。というのがあればそれもお願いします。
#include "DxLib.h"
typedef struct{
int x,y,img;
}ch_1;
typedef struct{
int x,y,img;
}ch_2;
typedef struct{
int x,y,img;
}ch_tama;
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
int image1[16];
int image2[16];
int tama_b[1];
int tamafrag = 0;
char Key[256];
ch_1 ch1;
ch_2 ch2;
ch_tama tama;
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //ウィンドウ化と初期化処理
//1p 場所
ch1.x =120;
ch1.y =240;
//2p 場所
ch2.x =480;
ch2.y =240;
SetDrawScreen( DX_SCREEN_BACK ) ; //描画先を裏画面に設定
LoadDivGraph( "picture/char.png" , 16 , 4 , 4 , 32 , 32 , image1 ) ;//画像を分割してimage配列に保存
LoadDivGraph( "picture/char2.png" , 16 , 4 , 4 , 32 , 32 , image2 ) ;//画像を分割してimage配列に保存
LoadDivGraph( "picture/tama.bmp" , 1 , 1 , 1 , 37 , 7 , tama_b ) ;//画像を分割してimage配列に保存
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){
//↑メッセージ処理 ↑画面をクリア ↑キーボード入力状態取得 ↑ESCが押されると終了
//================================================
// 操作、描写処理
//================================================
////////////////
/// player 1 ///
////////////////
if( Key[ KEY_INPUT_D ] == 1 ) //右
ch1.x += 2.0f ;
if( Key[ KEY_INPUT_A ] == 1 ) //左
ch1.x -= 2.0f ;
if( Key[ KEY_INPUT_S ] == 1 ) //下
ch1.y += 2.0f ;
if( Key[ KEY_INPUT_W ] == 1 ) //上
ch1.y -= 2.0f ;
if( Key[ KEY_INPUT_H ] == 1 )
tama.img=tama_b[1];
DrawGraph( tama.x , tama.y , tama.img ,TRUE);
ch1.img=image1[12];
DrawGraph( ch1.x , ch1.y ,ch1.img , TRUE ) ;
////////////////
/// player 2 ///
////////////////
if( Key[ KEY_INPUT_RIGHT ] == 1 ) //右
ch2.x += 2.0f ;
if( Key[ KEY_INPUT_LEFT ] == 1 ) //左
ch2.x -= 2.0f ;
if( Key[ KEY_INPUT_DOWN ] == 1 ) //下
ch2.y += 2.0f ;
if( Key[ KEY_INPUT_UP ] == 1 ) //上
ch2.y -= 2.0f ;
ch2.img=image2[4];
DrawGraph( ch2.x , ch2.y ,ch2.img , TRUE ) ;
//=========================================================
//=========================================================
ScreenFlip();//裏画面を表画面に反映
}
DxLib_End();
return 0;
}