トップページ > 過去ログ > 記事閲覧
アクションゲームの作成について
名前:びお 日時: 2010/03/25 18:30

アクションゲームを作ろうとしているのですが

Page: 1 |

Re: アクションゲームの作成について ( No.1 )
名前:びお 日時:2010/03/25 18:33

すいません、間違えました アクションゲームを作ろうとしているのですが 当たり判定、ジャンプはここのサンプルで出来て、それにスクロールをさせたいのですがやり方がいまいち分かりません よろしければ、どのようにすればできるかアドバイスが欲しいです
Re: アクションゲームの作成について ( No.2 )
名前:いっち 日時:2010/03/25 22:20

基本的には、以下のサンプルとの組み合わせだと思います。 4.マップスクロール基本 > ttp://homepage2.nifty.com/natupaji/DxLib/dxprogram.html#N4 いちおう、アクションゲームっぽいマップスクロールをするサンプルを作ってみました。 左右キーで移動します。当たり判定やジャンプ、重力等の処理は入っていません。 //-- サンプル --// #include "DxLib.h" const int SCR_W = 640; const int SCR_H = 480; const int CHIP_SIZE = 32; const int BLOCK_MAX_X = SCR_W / CHIP_SIZE; const int BLOCK_MAX_Y = SCR_H / CHIP_SIZE; const int MAP_W = BLOCK_MAX_X * 2; // マップの大きさ(2画面分) const int MAP_H = BLOCK_MAX_Y; const int SCR_LIMIT_L = 0; // キャラを移動する限界 const int SCR_LIMIT_R = SCR_W - CHIP_SIZE; const int MAP_LIMIT_L = 0; // マップを移動する限界 const int MAP_LIMIT_R = MAP_W * CHIP_SIZE - SCR_W; const int CHAR_LIMIT_L = SCR_LIMIT_L + CHIP_SIZE * 4; // キャラを移動するかマップを移動するかの閾値 const int CHAR_LIMIT_R = SCR_LIMIT_R - CHIP_SIZE * 4; const int MOVE_RATE = 5; // 移動速度 // マップデータ const char MapData[MAP_H][MAP_W] = { 1,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,1, 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,1, 1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1, 1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0, 0,0,0,0,1,0,0,0,0,0,0,1,1,1,1,1,0,0,0,1, 1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0, 0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1, 1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0, 0,0,0,0,1,0,0,0,0,0,0,1,1,1,1,1,0,0,0,1, 1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, 1,0,0,0,0,0,0,0,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,0,0,0,1, 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,1, 1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,0, 0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1, 1,0,0,0,0,1,1,1,1,1,0,0,0,0,1,1,0,0,0,0, 0,0,1,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,1, 1,0,0,0,0,1,1,1,1,1,0,0,0,1,1,1,0,0,0,0, 0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,1, 1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0, 0,0,1,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,1, 1,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,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, }; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode( TRUE ); if ( DxLib_Init( ) == -1 ) return -1; SetDrawScreen( DX_SCREEN_BACK ); int map_pos = MAP_LIMIT_L; int char_x = (640 - CHIP_SIZE) / 2; int char_y = (480 - CHIP_SIZE) / 2; int BlockColor = GetColor( 255, 255, 255 ); int CharColor = GetColor( 255, 0, 0 ); while ( ProcessMessage( ) == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) { if ( CheckHitKey( KEY_INPUT_LEFT ) ) { if ( char_x < CHAR_LIMIT_L && map_pos > MAP_LIMIT_L ) map_pos -= MOVE_RATE; else if ( char_x > SCR_LIMIT_L ) char_x -= MOVE_RATE; } if ( CheckHitKey( KEY_INPUT_RIGHT ) ) { if ( char_x > CHAR_LIMIT_R && map_pos < MAP_LIMIT_R ) map_pos += MOVE_RATE; else if ( char_x < SCR_LIMIT_R ) char_x += MOVE_RATE; } if ( map_pos < MAP_LIMIT_L ) map_pos = MAP_LIMIT_L; // 不正な値は補正しておく if ( map_pos > MAP_LIMIT_R ) map_pos = MAP_LIMIT_R; if ( char_x < SCR_LIMIT_L ) char_x = SCR_LIMIT_L; if ( char_x > SCR_LIMIT_R ) char_x = SCR_LIMIT_R; ClearDrawScreen( ); // マップ描画 int base_x = -(map_pos % CHIP_SIZE); // CHIP_SIZEで割り切れなければ画面外から描画開始 int base_y = 0; // 縦移動は無いので必要ないが、なんとなく・・・ int max_x = BLOCK_MAX_X + (base_x ? 1 : 0); // CHIP_SIZEで割り切れなければ1マス多く描画する int max_y = BLOCK_MAX_Y + (base_y ? 1 : 0); // 必要なし for ( int y = 0; y < max_y; y++ ) { for ( int x = 0; x < max_x; x++ ) { if ( MapData[y][x + (map_pos / CHIP_SIZE)] ) { DrawBox( base_x + x * CHIP_SIZE, base_y + y * CHIP_SIZE, base_x + x * CHIP_SIZE + CHIP_SIZE, base_y + y * CHIP_SIZE + CHIP_SIZE, BlockColor, TRUE ); } } } // キャラ描画 DrawBox( char_x, char_y, char_x + CHIP_SIZE, char_y + CHIP_SIZE, CharColor, TRUE ); DrawFormatString( 0, 0, CharColor, "map_pos = %4d char_x = %4d base_x = %4d", map_pos, char_x, base_x ); ScreenFlip( ); } DxLib_End( ); return 0; }

Page: 1 |