DXライブラリ 総合スレッド その12
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2012/02/23(木) 21:35:32.53ID:Si08WDH/ゲームのグラフィックを比較的容易に描画する事のできる、
「DXライブラリ」に関するスレッドです。
DXライブラリに関するテクニックなどの情報交換などを行う事で、
多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。
【公式】
http://homepage2.nifty.com/natupaji/DxLib/
【過去スレ】
DXライブラリ 総合スレッド
http://pc11.2ch.net/test/read.cgi/gamedev/1197468399/
DXライブラリ 総合スレッド 2008
http://pc11.2ch.net/test/read.cgi/gamedev/1224923873/
DXライブラリ 総合スレッド その3
http://pc11.2ch.net/test/read.cgi/gamedev/1238429676/
DXライブラリ 総合スレッド その4
http://pc11.2ch.net/test/read.cgi/gamedev/1249822550/
DXライブラリ 総合スレッド その5
http://pc11.2ch.net/test/read.cgi/gamedev/1259912953/
DXライブラリ 総合スレッド その6
http://hibari.2ch.net/test/read.cgi/gamedev/1267108154/
DXライブラリ 総合スレッド その7
http://hibari.2ch.net/test/read.cgi/gamedev/1286180687/
DXライブラリ 総合スレッド その8
http://hibari.2ch.net/test/read.cgi/gamedev/1301818631/
DXライブラリ 総合スレッド その9
http://hibari.2ch.net/test/read.cgi/gamedev/1310904069/
DXライブラリ 総合スレッド その10
http://hibari.2ch.net/test/read.cgi/gamedev/1313655495/
DXライブラリ 総合スレッド その11
http://toro.2ch.net/test/read.cgi/gamedev/1322844235/
0002名前は開発中のものです。
2012/02/23(木) 21:38:30.82ID:NAt0MKlN0003名前は開発中のものです。
2012/02/23(木) 21:39:27.00ID:Si08WDH/そろそろ過去スレを>>2に持ってこないと改行制限で辛そう
0004名前は開発中のものです。
2012/02/23(木) 21:45:57.64ID:aVCkizLT0005名前は開発中のものです。
2012/02/23(木) 21:50:15.75ID:GfO9a+tk>>1乙
0006名前は開発中のものです。
2012/02/23(木) 21:52:32.12ID:Si08WDH/0007名前は開発中のものです。
2012/02/23(木) 22:25:46.56ID:rTB5y/ajこんなこと混ぜ返すのもなんだけど、個人的にかなり大事なことだと思ってるんで。
0008名前は開発中のものです。
2012/02/23(木) 22:30:39.00ID:aVCkizLTアニメ的なデフォルメこそゲームに必要な要素だったのだ
0009名前は開発中のものです。
2012/02/23(木) 22:31:55.46ID:Si08WDH/坂で浮かないようにする方法が重力を強くするだけでは、
ゲーム特有のふわりとしたジャンプは実装できなくなってしまう
とかそういうこと
0010名前は開発中のものです。
2012/02/23(木) 22:44:21.41ID:rTB5y/aj0011名前は開発中のものです。
2012/02/24(金) 00:12:24.79ID:TJKzJquS#include "dxlib.h"
#define CX 1024
#define CY 768
#define BPP 16
#define WHITE GetColor( 255, 255, 255 )
#define GRAY(a) GetColor( a, a, a )
#define ACCELL 7.5
#define GRAVITY 15.0
#define CSLOPE 7.5
#define RESIST 2.5
#define JUMP 300.0
#define FERROR 2.5
#define PSIZE 8
double GetSlope( VECTOR* fdata, int numdata, int x );
int GetFloor( VECTOR* fdata, int numdata, int x );
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrev, LPSTR lpCmdLine, int nCmdShow)
{
SetGraphMode( CX, CY, BPP );
ChangeWindowMode( TRUE );
if( DxLib_Init() == -1 ) return -1;
SetDrawScreen( DX_SCREEN_BACK );
0012名前は開発中のものです。
2012/02/24(金) 00:14:19.57ID:TJKzJquS{ 500, 32, 0 }, { 800, 32, 0 }, { 1000, 256, 0 }, { 1500, 128, 0 }, { 2000, 64, 0 },
{ 2500, 96, 0 }, { 3000, 128, 0 }, { 3200, 160, 0 }, { 3400, 10, 0 }, { 5000, 64, 0 } };
int elements = sizeof(floors) / sizeof(VECTOR);
VECTOR player = { 50, 100, 0 };
VECTOR vec = { 0, 0 };
int cam_x;
double floor_y;
int pre_time, cur_time;
double past_time;
int bOnTheFloor = FALSE;
int bDrawAll = TRUE;
int bPreDKey = FALSE;
int bPreSPKey = FALSE;
pre_time = GetCurrentTime();
while ( ProcessMessage() != -1 ) {
ClearDrawScreen();
// 終了判定、表示切替
if ( CheckHitKey( KEY_INPUT_ESCAPE ) )
break;
if ( CheckHitKey( KEY_INPUT_D ) ) {
if ( !bPreDKey )
bDrawAll = !bDrawAll;
bPreDKey = TRUE;
}
else
bPreDKey = FALSE;
0013名前は開発中のものです。
2012/02/24(金) 00:15:00.45ID:TJKzJquScur_time = GetCurrentTime();
past_time = (double)( cur_time - pre_time) / 1000.0;
pre_time = cur_time;
// 計算、判定
if ( CheckHitKey( KEY_INPUT_RIGHT ) ) vec.x += ( bOnTheFloor ? ACCELL : (ACCELL * 0.25) );
if ( CheckHitKey( KEY_INPUT_LEFT ) ) vec.x -= ( bOnTheFloor ? ACCELL : (ACCELL * 0.25) );
if ( CheckHitKey( KEY_INPUT_SPACE ) ) {
if ( !bPreSPKey && bOnTheFloor )
vec.y += JUMP;
bPreSPKey = TRUE;
}
else
bPreSPKey = FALSE;
if ( bOnTheFloor )
vec.x -= GetSlope( floors, elements, player.x ) * CSLOPE;
if ( vec.x > 0.0 ) {
if ( ( vec.x -= ( bOnTheFloor ? RESIST : (RESIST * 0.25) ) ) < 0.0 ) vec.x = 0.0;
}
if ( vec.x < 0.0 ) {
if ( ( vec.x += ( bOnTheFloor ? RESIST : (RESIST * 0.25) ) ) > 0.0 ) vec.x = 0.0;
}
player.x += vec.x * past_time;
player.y += vec.y * past_time;
vec.y -= GRAVITY;
0014名前は開発中のものです。
2012/02/24(金) 00:16:19.83ID:TJKzJquSfloor_y = GetFloor( floors, elements, player.x );
if ( floor_y + FERROR > player.y ) {
player.y = floor_y;
vec.y = 0.0;
bOnTheFloor = TRUE;
}
else {
bOnTheFloor = FALSE;
}
cam_x = player.x - (CX >> 1);
// 描画
for ( int i = 0; i < elements - 1; i++ ) {
DrawLine( floors[i].x - cam_x, CY - floors[i].y, floors[i+1].x - cam_x, CY - floors[i+1].y, WHITE );
}
if ( bDrawAll ) {
for ( i = floors[0].x; i < floors[elements - 1].x; i++ ) {
DrawLine( i - cam_x, CY - GetFloor( floors, elements, i ), i - cam_x, CY, GRAY( 64 ) );
}
}
DrawBox( player.x - PSIZE - cam_x, CY - player.y - (PSIZE << 1), player.x + PSIZE - cam_x, CY - player.y, GetColor( 128, 128, 255 ), TRUE );
DrawFormatString( 0, 0, WHITE, "← →で移動" );
DrawFormatString( 0, 24, WHITE, "スペースキーでジャンプ" );
DrawFormatString( 0, 48, WHITE, "重い時は\"D\"キーで地面非表示" );
ScreenFlip();
}
DxLib_End();
return 0;
}
0015名前は開発中のものです。
2012/02/24(金) 00:16:48.21ID:TJKzJquSdouble slope;
for ( int i = 0; i < numdata - 1; i++ ) {
if ( fdata[i].x <= x && x < fdata[i+1].x )
break;
}
if ( i >= numdata - 1 )
slope = 0;
else
slope = (double)(fdata[i+1].y - fdata[i].y) / (double)(fdata[i+1].x - fdata[i].x);
return slope;
}
int GetFloor( VECTOR* fdata, int numdata, int x ) {
int floor_y;
for ( int i = 0; i < numdata - 1; i++ ) {
if ( fdata[i].x <= x && x < fdata[i+1].x )
break;
}
if ( i >= numdata - 1 )
floor_y = -1000;
else
floor_y = (int)((double)(fdata[i+1].y - fdata[i].y) / (double)(fdata[i+1].x - fdata[i].x) * (double)(x - fdata[i].x)) + fdata[i].y;
return floor_y;
}
0016名前は開発中のものです。
2012/02/24(金) 00:20:35.60ID:tVPh3Z0Q0017名前は開発中のものです。
2012/02/24(金) 00:22:00.99ID:esL5m7/W0018名前は開発中のものです。
2012/02/24(金) 00:25:49.77ID:85YduAT80019名前は開発中のものです。
2012/02/24(金) 00:33:34.77ID:TJKzJquSめんどくせえよ
>>17
少なくとも3にはある
ちなみに俺は物理法則に完全に則るように作れなんてこれっぽっちも言ってねえから
>977 :名前は開発中のものです。:2012/02/23(木) 20:34:40.62 ID:aVCkizLT
>ユーザーが右ボタン押してるのに斜面に差し掛かったらキャラのY座標を操作しないといけないんだぜ?
>普通左右しか押してなかったらX座標しかいじらなくていいと思うじゃん
こんなことを言ったアホのこの点に関して言っただけ
現実に忠実に作るほど答えは限定され、没個性になる
現実に則する事を曲げてでも面白さを追求することは当然
0020名前は開発中のものです。
2012/02/24(金) 00:39:23.57ID:pTxfx2Ou0021名前は開発中のものです。
2012/02/24(金) 00:46:48.67ID:TJKzJquS0022名前は開発中のものです。
2012/02/24(金) 00:48:35.01ID:aLx23JaI0023名前は開発中のものです。
2012/02/24(金) 00:52:44.42ID:jI7UDwGU部屋クラスに1〜4つの扉(扉の座標や別の部屋クラスへのポインタ)を設定したいのですがどうしたら良いですか?
1つしか扉が無い時に4つ分のメモリを確保するのはなんだかなぁ、と思います。
0024名前は開発中のものです。
2012/02/24(金) 00:57:31.45ID:jI7UDwGU解説お願い!
0025名前は開発中のものです。
2012/02/24(金) 00:58:15.99ID:z7vSAMWWn2以上なら崖に立っている処理
みたいなのでいいんじゃないの
0026名前は開発中のものです。
2012/02/24(金) 01:00:00.17ID:4gLak98i0027名前は開発中のものです。
2012/02/24(金) 01:00:13.94ID:z7vSAMWWビットで判定させるって手もあるけど、
4つぐらいなら別にいいんじゃないの
後はデフォルト引数で指定しなければ扉は常にゼロとか
0028名前は開発中のものです。
2012/02/24(金) 01:01:10.29ID:TJKzJquS質問の仕方を考えような
それクラスとか関係ねーから
「確保するメモリのサイズが不定のときに、メモリの無駄を減らしたいのですがどうしたらいいですか?」
つ 可変長配列
つっても実際にその程度のサイズなら全く気にするに値しないが
0029名前は開発中のものです。
2012/02/24(金) 01:02:40.90ID:TJKzJquSCでコンパイルしてんじゃねーの?
つーかその程度自分で直せないカスは論外
0030名前は開発中のものです。
2012/02/24(金) 01:05:36.33ID:4gLak98i0031名前は開発中のものです。
2012/02/24(金) 01:19:34.83ID:aLx23JaI0032名前は開発中のものです。
2012/02/24(金) 02:18:03.04ID:z7vSAMWW0033名前は開発中のものです。
2012/02/24(金) 06:42:03.82ID:bw7u0bCS0034名前は開発中のものです。
2012/02/24(金) 06:45:58.82ID:z7vSAMWW1面クリアも厳しいな
0035名前は開発中のものです。
2012/02/24(金) 10:40:18.96ID:quP1lX6L0036名前は開発中のものです。
2012/02/24(金) 10:41:09.11ID:b1OOcw1t0037名前は開発中のものです。
2012/02/24(金) 11:41:16.49ID:quP1lX6L0038名前は開発中のものです。
2012/02/24(金) 12:43:08.05ID:qwxqpbq7■ このスレッドは過去ログ倉庫に格納されています