トップページgamedev
1001コメント309KB

DXライブラリ 総合スレッド その12

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2012/02/23(木) 21:35:32.53ID:Si08WDH/
Cを習得した程度のスキルでも、
ゲームのグラフィックを比較的容易に描画する事のできる、
「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:NAt0MKlN
>>1
0003名前は開発中のものです。2012/02/23(木) 21:39:27.00ID:Si08WDH/
立てました
そろそろ過去スレを>>2に持ってこないと改行制限で辛そう
0004名前は開発中のものです。2012/02/23(木) 21:45:57.64ID:aVCkizLT
斜面こわいよー
0005名前は開発中のものです。2012/02/23(木) 21:50:15.75ID:GfO9a+tk
次スレの時期だというのに無駄に加速しやがって・・・
>>1
0006名前は開発中のものです。2012/02/23(木) 21:52:32.12ID:Si08WDH/
まあ1000と気付かずに書き込んじゃったのが俺なので
0007名前は開発中のものです。2012/02/23(木) 22:25:46.56ID:rTB5y/aj
前スレの>>998なんだけど何があほくさかったのか後学のために教えてくれないかな。
こんなこと混ぜ返すのもなんだけど、個人的にかなり大事なことだと思ってるんで。
0008名前は開発中のものです。2012/02/23(木) 22:30:39.00ID:aVCkizLT
物理法則がゲームをつまらなくした
アニメ的なデフォルメこそゲームに必要な要素だったのだ
0009名前は開発中のものです。2012/02/23(木) 22:31:55.46ID:Si08WDH/
前スレでID:00uFnE+fが言ってるのは「現実と同じ重力バランスにすれば強い重力によって坂でも問題は起こらない」ということ

坂で浮かないようにする方法が重力を強くするだけでは、
ゲーム特有のふわりとしたジャンプは実装できなくなってしまう

とかそういうこと
0010名前は開発中のものです。2012/02/23(木) 22:44:21.41ID:rTB5y/aj
ああ、そうだったのかなんか勘違いしてたよ
0011名前は開発中のものです。2012/02/24(金) 00:12:24.79ID:TJKzJquS
//#include <windows.h>
#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
VECTOR floors[] = { { 0, 64, 0 }, { 100, 64, 0 }, { 200, 96, 0 }, { 250, 104, 0 },
{ 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:TJKzJquS
// 経過時間の計測
cur_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:TJKzJquS

floor_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:TJKzJquS
double GetSlope( VECTOR* fdata, int numdata, int x ) {
double 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:tVPh3Z0Q
ソース貼るのに長くなるようなら適当なアップローダ使う方が良くない?
0017名前は開発中のものです。2012/02/24(金) 00:22:00.99ID:esL5m7/W
マリオに斜面なんてあったっけ?
0018名前は開発中のものです。2012/02/24(金) 00:25:49.77ID:85YduAT8
3辺りからしゃがむと滑ったり
0019名前は開発中のものです。2012/02/24(金) 00:33:34.77ID:TJKzJquS
>>16
めんどくせえよ

>>17
少なくとも3にはある

ちなみに俺は物理法則に完全に則るように作れなんてこれっぽっちも言ってねえから

>977 :名前は開発中のものです。:2012/02/23(木) 20:34:40.62 ID:aVCkizLT
>ユーザーが右ボタン押してるのに斜面に差し掛かったらキャラのY座標を操作しないといけないんだぜ?
>普通左右しか押してなかったらX座標しかいじらなくていいと思うじゃん

こんなことを言ったアホのこの点に関して言っただけ
現実に忠実に作るほど答えは限定され、没個性になる
現実に則する事を曲げてでも面白さを追求することは当然
0020名前は開発中のものです。2012/02/24(金) 00:39:23.57ID:pTxfx2Ou
ttp://ideone.com/
0021名前は開発中のものです。2012/02/24(金) 00:46:48.67ID:TJKzJquS
http://ideone.com/h2pVd
0022名前は開発中のものです。2012/02/24(金) 00:48:35.01ID:aLx23JaI
スレ開いたらいきなりソースでワロタ
0023名前は開発中のものです。2012/02/24(金) 00:52:44.42ID:jI7UDwGU
スレチかもしれませんが質問させてください。
部屋クラスに1〜4つの扉(扉の座標や別の部屋クラスへのポインタ)を設定したいのですがどうしたら良いですか?
1つしか扉が無い時に4つ分のメモリを確保するのはなんだかなぁ、と思います。
0024名前は開発中のものです。2012/02/24(金) 00:57:31.45ID:jI7UDwGU
>>19
解説お願い!
0025名前は開発中のものです。2012/02/24(金) 00:58:15.99ID:z7vSAMWW
キャラの左端と右端の差がn1以上n2以下なら坂として処理、
n2以上なら崖に立っている処理
みたいなのでいいんじゃないの
0026名前は開発中のものです。2012/02/24(金) 01:00:00.17ID:4gLak98i
 i をループで宣言してるのとしてないのでエラーがでるな。
0027名前は開発中のものです。2012/02/24(金) 01:00:13.94ID:z7vSAMWW
>>23
ビットで判定させるって手もあるけど、
4つぐらいなら別にいいんじゃないの
後はデフォルト引数で指定しなければ扉は常にゼロとか
0028名前は開発中のものです。2012/02/24(金) 01:01:10.29ID:TJKzJquS
>>23
質問の仕方を考えような
それクラスとか関係ねーから
「確保するメモリのサイズが不定のときに、メモリの無駄を減らしたいのですがどうしたらいいですか?」

つ 可変長配列

つっても実際にその程度のサイズなら全く気にするに値しないが
0029名前は開発中のものです。2012/02/24(金) 01:02:40.90ID:TJKzJquS
>>26
Cでコンパイルしてんじゃねーの?
つーかその程度自分で直せないカスは論外
0030名前は開発中のものです。2012/02/24(金) 01:05:36.33ID:4gLak98i
こんな短いソースでこれだけの事をやれるなんて凄いなぁ。
0031名前は開発中のものです。2012/02/24(金) 01:19:34.83ID:aLx23JaI
gccで作ってるんですか(驚愕)
0032名前は開発中のものです。2012/02/24(金) 02:18:03.04ID:z7vSAMWW
gccだとlinuxでも使えるからな
0033名前は開発中のものです。2012/02/24(金) 06:42:03.82ID:bw7u0bCS
現実に忠実に作ったらマリオはあんなジャンプできねーしあのジャンプないマリオとか面白くないわな
0034名前は開発中のものです。2012/02/24(金) 06:45:58.82ID:z7vSAMWW
現実に忠実に作ったら5ドットぐらいのジャンプで何度もジャンプすると即息切れか
1面クリアも厳しいな
0035名前は開発中のものです。2012/02/24(金) 10:40:18.96ID:quP1lX6L
アホな人はまだアホなこと言ってんのか
0036名前は開発中のものです。2012/02/24(金) 10:41:09.11ID:b1OOcw1t
誰のことをアホだと言ってるのかが検討つかない
0037名前は開発中のものです。2012/02/24(金) 11:41:16.49ID:quP1lX6L
ミスをめんどくせえよで誤魔化してるプライドの高い人
0038名前は開発中のものです。2012/02/24(金) 12:43:08.05ID:qwxqpbq7
「現実に忠実に作ったら」ってのは「何を」が抜けてるから抽象的過ぎて>>33,34みたいな不毛な会話にしかならないよね
0039名前は開発中のものです。2012/02/24(金) 13:19:01.93ID:rDbGAFKQ
ソースコード爆撃を控えめに怒られてるのに、すごい上から目線の初心者さんがいるのはこのスレですか
0040名前は開発中のものです。2012/02/24(金) 14:15:55.23ID:nmgbZBXU
そっとしておいてあげようよ
0041名前は開発中のものです。2012/02/24(金) 15:07:03.24ID:Mix8VUqs
>>38
>34はネタです。。。
0042名前は開発中のものです。2012/02/24(金) 15:09:00.04ID:quP1lX6L
5ドットじゃなくて10ドットくらいはいけるよね!(ネタ
0043名前は開発中のものです。2012/02/24(金) 15:16:53.04ID:9937kgcE
バッタは自分の身長の何倍も飛びます
0044名前は開発中のものです。2012/02/24(金) 15:42:18.71ID:Mix8VUqs
バッタ主人公にすれば解決じゃね?
俺って天才じゃね?
0045名前は開発中のものです。2012/02/24(金) 15:46:56.07ID:aLx23JaI
そんなバッタ物を作るのか
0046名前は開発中のものです。2012/02/24(金) 15:49:16.73ID:Mix8VUqs
>>43
ID重いな
0047名前は開発中のものです。2012/02/24(金) 16:10:27.80ID:8FKaZGwF
43を腹筋スレにぶち込みたいという欲求が怒髪天です
0048212012/02/24(金) 18:58:48.45ID:PQNzgB3d
ID被りとか初めてだわ

質問する時にソースを提示しやすくなるし
ideoneはテンプレに入れても良いんじゃないかな
と提案します
0049×21 ○202012/02/24(金) 19:01:42.80ID:PQNzgB3d
ごめん今のレスの1行目は忘れて
0050名前は開発中のものです。2012/02/24(金) 19:08:18.29ID:TJKzJquS
イチャモン付けるだけしか能の無いクズが、悔し紛れにレスせずにはいられなくなりゃ
そら>>31-のような見苦しい哀れなだけのレスになるわな
まあこういう無能知的障害者を俺は何度も見てきているから予想通りの反応でしかないわけだが

無能知的障害者共は人への要求と能書きだけは一人前だが、誰一人としてソースすら提示出来ねーな
まあ、能書きに具体性が全く無い時点で実際にやったら躓きまくって一向に実現出来ないクズなのは目に見えていたんだが

餌をママが持って来てくれるのを口を開けて待っているだけのクズニートは
表へ出ても何一つ変わりはしねえな
0051名前は開発中のものです。2012/02/24(金) 19:08:48.27ID:/hfwspmm
>>21のコードは単純に一次関数でやってるから坂道で浮くし
垂直を作ると底から上に一気にワープする。
それにラインのデータを先頭から探索していくため己型のマップだと下の空間に入れない。

const VECTOR floors[] = {
{0, 64, 0}, {100, 64, 0}, {100, 300, 0},{480, 300, 0},
{500, 200, 0}, {400, 200, 0},{400, 100, 0}, {1000, 120, 0} };

こんな感じのデータ。Dで塗りつぶし非表示にしてやってみるとわかる。
0052名前は開発中のものです。2012/02/24(金) 19:12:03.25ID:aLx23JaI
>>50
           ____
  .ni 7      /ノ   ヽ\   壁に向かってしゃべってろゴミ
l^l | | l ,/)   / /゚ヽ  /゚ヾ\      .n
', U ! レ' / /   ⌒   ⌒  \   l^l.| | /)
/    〈 |  (____人__)  |   | U レ'//)
     ヽ\    |lr┬-l|   /  ノ    /
 /´ ̄ ̄ノ    ゙=ニ二"   \rニ     |
0053名前は開発中のものです。2012/02/24(金) 19:13:10.90ID:quP1lX6L
>>50
まぁまぁ、まずは実力相応の言葉遣いを身に付けてこようよ
0054名前は開発中のものです。2012/02/24(金) 19:16:43.31ID:TJKzJquS
>>51
そうだよ
1時間ちょっとで作ったもんを端から端まで眺めて粗探しするくらいどんな馬鹿でも出来るよな

垂直を壁にしたけりゃ別途判定を加えればいいし、
下に入らせるなり、落ちたら戻れないようにしたいなら別途処理を追加すればいいだけだろ

言ったことをテンプレ的に実現したまでだ
そもそも2Dアクションなんて作る気はねえし、
自分の望む仕様通りにその処理を実装すればいいだけだろ

偉そうに人の粗探しと批判だけしている暇があったら
人から物を貰うだけでなくお前も相手に物を提供しようなクズ
0055名前は開発中のものです。2012/02/24(金) 19:18:31.11ID:TJKzJquS
>>52-53
知的障害者共、お前らソース提出な
後出しなんて自分で作ったもんに相手のいいとこくっつけりゃいいだけなんだからお前ほどの馬鹿でも出来るから
0056名前は開発中のものです。2012/02/24(金) 19:22:07.78ID:quP1lX6L
お前、提供したつもりになってるけど誰も望んでない物な件 ゴミの提出なら誰でもできるw
「坂が難しい」に対してお前は「簡単」って言い放ったが、「坂が難しい」とされている理由の「坂で浮く」ってのができてないじゃないか
ただ「誰でも書けるソース」を出しただけ なのに超偉そう 恥ずかしい
0057名前は開発中のものです。2012/02/24(金) 19:23:31.36ID:TJKzJquS
>>56
口を開けて待っているだけの分際で端から端まで与えて貰う気になってんじゃねえよ知的障害者
何度も言ってるだろ無能
0058名前は開発中のものです。2012/02/24(金) 19:24:42.33ID:TJKzJquS
>>56
ソースはまだですか
ゴミすら提出出来ない知的障害者ですか?
0059名前は開発中のものです。2012/02/24(金) 19:25:22.68ID:quP1lX6L
>>57
偉そうな口聞いてるくせにお前馬鹿だったんだなw
って言ってるだけだよ

俺は別にソース欲しがってなんかないし
自分から自分の馬鹿さをひけらかしておいて、それに耐えられず他人を馬鹿扱いか
親の顔が見てみたい
0060名前は開発中のものです。2012/02/24(金) 19:28:07.99ID:TJKzJquS
>>59
おっ、この知的障害者やっぱり煽りには食いつくね
批判だけなら「どんな馬鹿でも」出来るぜ
何年も生きてりゃそれくらい分かるよね
人を批判するからにはお前がそれ以上であることを証明しような、って言ってるだけ
そんなことすら知的障害者には難しいことなのかい?
0061名前は開発中のものです。2012/02/24(金) 19:31:58.87ID:quP1lX6L
まあ坂の実装ができない人たちが悩んでるところに、「俺が教えてやるよ」と上から目線で突っ込んだ奴が、
坂の実装できない連中と同じレベルだったってだけだ

叩かれてるのが「実力が上だと示せてないのに上から目線だから」ってのがなんでわかんないかな
「自分の発言は煽り」って「自分は言葉の通じ無い荒らし」って宣言と同じだね
0062名前は開発中のものです。2012/02/24(金) 19:33:35.88ID:/hfwspmm
アクションゲームの坂が難しいって話は
単純に一次関数でやれば解決って話じゃないんだよ。
はっきり言ってそんなレベルの話はしてないわけ。

それに端から端まで見て粗探ししたわけじゃない。
一次関数の単純な運用を見て指摘しただけ。
批判でもなんでもない。
0063名前は開発中のものです。2012/02/24(金) 19:35:08.24ID:TJKzJquS
>>61
相変わらずこの知的障害者は全部与えて貰えるつもりでいんのか
俺がそれを今考えて実装して公開したとしてお前らゴミにパクられるだけだろ
そんなことをわざわざ時間掛けてすると思ってんのか?
脳障害ってのは「全く」何も考えていないんだな
0064名前は開発中のものです。2012/02/24(金) 19:38:30.38ID:TJKzJquS
>>62
短時間で画像も使わず短いコードでと考えた結果そうなっただけだが?
上記条件の下にもっと良い方法は必ずあるからまあ是非見せて貰いたいものだね
他人に要求するだけのゴミ以下無能クズじゃないならな
0065名前は開発中のものです。2012/02/24(金) 19:41:39.12ID:quP1lX6L
>>63
論点をずらすなよ

俺イケメンだよってほざいてる奴が顔見せたらブサイクだったから笑われてるだけで、笑ってる側のレベルは関係ない
自信満々なのに実力がないお前がおかしいだけ
で、そんなウソツキが「時間がないからこれしかできなかった。本当はできる」って言っても信じられないだろ?
別にソースは要らないから「自分は実力不相応に偉そうにしてました。天才プログラマの振りしてました。ごめんなさい」って反省して欲しいだけだよ
0066名前は開発中のものです。2012/02/24(金) 19:49:26.18ID:TJKzJquS
>>65
何言ってんだ?この知的障害者は
誰も天才PGだなどと一言も言っていねーよクズ
別にそんなものは凡才でも出来るだろと言ってるだけだ
っつっとに知的障害者ってのは物事を脳内で勝手に自分の都合の良いように解釈するよな

まあ何度も言うが、お前が見苦しい口だけ無能知的障害者でないことを証明したいのなら
くだらないレスをしてる暇があったらさっさとコードを書く作業をしような
少しくらいは待ってやるからさ
■ このスレッドは過去ログ倉庫に格納されています