少し前まではHSPで作ろうと思っていたのですが、HSPでRPGゲームを作るのは難しいらしいので、C++で作ろうと思います。
C++のプログラミングは初めてですので、みんなの力が必要です。
お願いします。
あと質問ですが、C++ってMMORPGつくれますか?
探検
C++でRPGゲームを作成する
レス数が900を超えています。1000を超えると表示できなくなるよ。
1じっち
04/11/23 07:14:50ID:CCsv+84e805名前は開発中のものです。
2011/03/10(木) 01:39:12.81ID:zj8b7q7C 最終的に作成した3つのメンバー関数はWinMaiに以下のように組み込みます。
window.open();
do {
GameSystemInit();
while ( window.peek() ) {
if ( !window.sync() ) { continue; }
if ( !GameSystemMain()) { break; }
}
GameSystemFree();
} while ( window.sync() );
↓これらがゲームっぽいプログラムを入れるところです。
bool GameSystemInit( void ){ return true; }
bool GameSystemMain( void ){ return true; }
bool GamaSystemFree( void ){ return true; }
とりあえず空関数を適当に作成しておきます。
window.open();
do {
GameSystemInit();
while ( window.peek() ) {
if ( !window.sync() ) { continue; }
if ( !GameSystemMain()) { break; }
}
GameSystemFree();
} while ( window.sync() );
↓これらがゲームっぽいプログラムを入れるところです。
bool GameSystemInit( void ){ return true; }
bool GameSystemMain( void ){ return true; }
bool GamaSystemFree( void ){ return true; }
とりあえず空関数を適当に作成しておきます。
806名前は開発中のものです。
2011/03/10(木) 01:41:06.36ID:zj8b7q7C807名前は開発中のものです。
2011/03/10(木) 01:47:57.19ID:zj8b7q7C (806続き)
混乱するので、以降はそのまま持ってくるようにします。
sync変数と関数は下記になります。
private:
bool sync;
public:
bool Sync( void ) const { return sync; }
混乱するので、以降はそのまま持ってくるようにします。
sync変数と関数は下記になります。
private:
bool sync;
public:
bool Sync( void ) const { return sync; }
808名前は開発中のものです。
2011/03/10(木) 01:51:46.72ID:LV/Xv7hB809名前は開発中のものです。
2011/03/10(木) 01:53:56.05ID:zj8b7q7C Peek関数の中でタイマーを処理しているので、WINDOWクラスに下記のメンバーを追加してください。
struct {
unsigned int old;
unsigned int now;
} time;
コンストラクターで初期化します。
WINDOW::WINDOW() {
timeBeginPeriod( 1 );
time.old = timeGetTime();
}
で、デストラクターで後始末します。
WINDOW::~WINDOW(){
timeEndPeriod( 1 );
}
struct {
unsigned int old;
unsigned int now;
} time;
コンストラクターで初期化します。
WINDOW::WINDOW() {
timeBeginPeriod( 1 );
time.old = timeGetTime();
}
で、デストラクターで後始末します。
WINDOW::~WINDOW(){
timeEndPeriod( 1 );
}
810名前は開発中のものです。
2011/03/10(木) 07:13:10.95ID:zj8b7q7C811名前は開発中のものです。
2011/03/10(木) 22:22:49.60ID:zj8b7q7C Peekの実装です。これでWindowsが表示されると思います。
bool WINDOW::Peek( void ){
sync = false;
if ( PeekMessage( &message, NULL, 0, 0, PM_NOREMOVE ) ) {
switch ( GetMessage( &message, NULL, 0, 0 ) ) {
case 0:
case -1:
return false;
}
TranslateMessage( &message );
DispatchMessage( &message );
}
time.now = timeGetTime();
if ( time.now - time.old >= 1000/60 ) {
time.old = time.now;
sync = true;
}
return true;
}
bool WINDOW::Peek( void ){
sync = false;
if ( PeekMessage( &message, NULL, 0, 0, PM_NOREMOVE ) ) {
switch ( GetMessage( &message, NULL, 0, 0 ) ) {
case 0:
case -1:
return false;
}
TranslateMessage( &message );
DispatchMessage( &message );
}
time.now = timeGetTime();
if ( time.now - time.old >= 1000/60 ) {
time.old = time.now;
sync = true;
}
return true;
}
812名前は開発中のものです。
2011/03/11(金) 00:55:58.78ID:jGNSe99R >>811
Window表示できました
Window表示できました
813名前は開発中のものです。
2011/03/11(金) 07:34:09.43ID:tT3vlqKS >>812
VC++上でのデバッガー実行はよくわからないんで自前でやっていただくとして、
先々、デバッグ目的で何かを表示するのに、よくprintfとMessageBoxを使ったりします。
これらに加えて、Windows上で表示されるフォントがあると便利なので、
デバッグ用にSpriteによる文字表示を作成するのがよいかと思います。
SpriteはDirectXの機能を使います。
VC++上でのデバッガー実行はよくわからないんで自前でやっていただくとして、
先々、デバッグ目的で何かを表示するのに、よくprintfとMessageBoxを使ったりします。
これらに加えて、Windows上で表示されるフォントがあると便利なので、
デバッグ用にSpriteによる文字表示を作成するのがよいかと思います。
SpriteはDirectXの機能を使います。
814名前は開発中のものです。
2011/03/11(金) 11:57:07.06ID:cb9oR2jl #include <windows.h>
OutputDebugStringA("これはデバッグ出力\n");
OutputDebugStringA("これはデバッグ出力\n");
815名前は開発中のものです。
2011/03/19(土) 10:31:39.54ID:zpjTizC+816名前は開発中のものです。
2011/03/19(土) 10:35:30.95ID:zpjTizC+ それにしても、意外とDirectX9の解説サイト少ないですね
8以前だと結構あるんですが
特にプログラマブルシェーダーに対応したサイトは少ない
固定機能パイプラインとかもう廃止なので使いたくないし
DirectXの知識は全くないので、情報が無いとなかなか進まない
8以前だと結構あるんですが
特にプログラマブルシェーダーに対応したサイトは少ない
固定機能パイプラインとかもう廃止なので使いたくないし
DirectXの知識は全くないので、情報が無いとなかなか進まない
817名前は開発中のものです。
2011/03/19(土) 10:41:37.55ID:zpjTizC+ マップチップとかって、どうやって読み込むんだろう
RPGツクールVXなどを見てみると、マップチップ数に制限が無い
仮に32*32ドットのマップチップ数が65536個だとすると
RPGツクール仕様だと、横8個分のチップを縦方向に無限なので
256*262144ドットの巨大テクスチャとして読み込むのだろうか
こんな巨大なテクスチャ作れるのかな?
RPGツクールVXなどを見てみると、マップチップ数に制限が無い
仮に32*32ドットのマップチップ数が65536個だとすると
RPGツクール仕様だと、横8個分のチップを縦方向に無限なので
256*262144ドットの巨大テクスチャとして読み込むのだろうか
こんな巨大なテクスチャ作れるのかな?
818名前は開発中のものです。
2011/03/19(土) 11:54:43.83ID:tf/j5S+W 俺なら複数枚のテクスチャを切り替えて表示するかな >817
1枚目のテクスチャにあるチップを描画して、SetTextureで切り替えて2枚目とか
どんな方法がベストなのかは知らないけど
1枚目のテクスチャにあるチップを描画して、SetTextureで切り替えて2枚目とか
どんな方法がベストなのかは知らないけど
819名前は開発中のものです。
2011/03/19(土) 12:16:09.47ID:zpjTizC+820名前は開発中のものです。
2011/03/21(月) 11:39:21.38ID:t1zoR9O5 ここ数日DirectXの情報サイトばかり見ているけど
リソースの解放とか凄い面倒そうだ
ある程度フレームワーク化しなきゃ駄目なのかな
HLSLとかもさっぱりだし、先はかなり長そうだ・・・
リソースの解放とか凄い面倒そうだ
ある程度フレームワーク化しなきゃ駄目なのかな
HLSLとかもさっぱりだし、先はかなり長そうだ・・・
821名前は開発中のものです。
2011/03/21(月) 11:47:38.69ID:KbfIo3Ze 楽をしたいならOgreとかirrlichtとかDXLibとか高レベルライブラリを使うべき
Directxばかりに固執するといいことは何も無い
それに良いフレームワークに触れない限り、
自分でフレームワークを組み立てることなどできないしな
Directxばかりに固執するといいことは何も無い
それに良いフレームワークに触れない限り、
自分でフレームワークを組み立てることなどできないしな
822785
2011/03/23(水) 21:00:30.42ID:NMGIfDjO Window表示が出来たなら、次は入力回りを整備するのがよいかと思います。
DirectInputでよいですかね?(他はわからないです)
DirectInputでよいですかね?(他はわからないです)
823名前は開発中のものです。
2011/03/23(水) 21:36:41.78ID:iioYpWXA824名前は開発中のものです。
2011/03/23(水) 21:40:39.44ID:iioYpWXA >>821
ゲーム自体をすぐに作りたいというよりは
DirectXと最近のゲームの作り方を勉強したいので
Win32API+DirectXでやっていきたいと思います
DXライブラリは便利そうですね、いずれこういうライブラリも作りたいです
ゲーム自体をすぐに作りたいというよりは
DirectXと最近のゲームの作り方を勉強したいので
Win32API+DirectXでやっていきたいと思います
DXライブラリは便利そうですね、いずれこういうライブラリも作りたいです
825785
2011/03/23(水) 22:48:06.18ID:NMGIfDjO >>823
入力関連をまとめるクラスを作成しましょう。
クラス名(XXXXX)はお好みで変えてください。
class XXXXX {
public:
static bool Init( void ); // 初期化処理を記述する関数
static bool Main( void ); // 毎ループ呼び出される関数
static bool Free( void ); // 終了時処理を記述する関数
};
bool XXXXX::Init( void ){ return true; }
bool XXXXX::Free( void ){ return true; }
bool XXXXX::Main( void ){ return true; }
上記の関数はそれぞれ前述(>>805)のGameSystem系の対応する関数内で呼び出します。
InitとFreeの中身は対称(確保⇔解放)になる事が多いです。
また、Mainはどうしても記述量が多くなります。
なので、Init/Free/Mainの順に記載するとソースの見通しがよくなります。
入力関連をまとめるクラスを作成しましょう。
クラス名(XXXXX)はお好みで変えてください。
class XXXXX {
public:
static bool Init( void ); // 初期化処理を記述する関数
static bool Main( void ); // 毎ループ呼び出される関数
static bool Free( void ); // 終了時処理を記述する関数
};
bool XXXXX::Init( void ){ return true; }
bool XXXXX::Free( void ){ return true; }
bool XXXXX::Main( void ){ return true; }
上記の関数はそれぞれ前述(>>805)のGameSystem系の対応する関数内で呼び出します。
InitとFreeの中身は対称(確保⇔解放)になる事が多いです。
また、Mainはどうしても記述量が多くなります。
なので、Init/Free/Mainの順に記載するとソースの見通しがよくなります。
826名前は開発中のものです。
2011/03/24(木) 12:02:48.79ID:+jtjlJX2 入力関連なんてゲーム内で一つあればいいんだからグローバル関数でもなんでもいいよ
827名前は開発中のものです。
2011/03/24(木) 17:44:17.05ID:7A5Wm0Sp 全部staticにするくらいなら潔くグローバル関数でいいな
シングルトンでもいいが
シングルトンでもいいが
828名前は開発中のものです。
2011/03/25(金) 00:33:52.87ID:DZniurx+829名前は開発中のものです。
2011/03/25(金) 00:49:34.24ID:VJVVC59h830名前は開発中のものです。
2011/03/25(金) 00:51:14.65ID:VJVVC59h とはいってもまあデザパタ使っていいならシングルトンでも使えばおk
ところで、すごく基本的な質問ですけど
staticなメンバ関数だと何が問題なんでしょう?
特に駄目だという理由が思い付かないんですけど
staticなメンバ関数だと何が問題なんでしょう?
特に駄目だという理由が思い付かないんですけど
833名前は開発中のものです。
2011/03/25(金) 02:00:59.85ID:t5g0UlGF C++ でシングルトンなんか持ち出すくらいなら素直にグローバル変数にしといたほうがよくないか?
>>828
私もゲームの作り方を勉強したいと思って、
DirectXをつい最近やり始めたという状況で、
自分のやった事を再確認的にお伝えするのが限界です。
いづれ追いつかれて飽和すると思いますので、
より抽象的な概念や高度な作法はいろいろな意見を参考にしてください。
ちなみにXXXXXの部分は何と命名しました?
私もゲームの作り方を勉強したいと思って、
DirectXをつい最近やり始めたという状況で、
自分のやった事を再確認的にお伝えするのが限界です。
いづれ追いつかれて飽和すると思いますので、
より抽象的な概念や高度な作法はいろいろな意見を参考にしてください。
ちなみにXXXXXの部分は何と命名しました?
>>834
クラス名は GameInput としておきました
クラス名は GameInput としておきました
836名前は開発中のものです。
2011/03/25(金) 17:44:09.60ID:VJVVC59h 最初からデザイン云々いいだしても進まないから、
とりあえず動くことを目的としてけばええと思う
動き始めてからいくらでもデザインは改良できるし。
最初は処理の手順を覚えるのが先、
アルゴリズムの訓練をするのが先決
とりあえず動くことを目的としてけばええと思う
動き始めてからいくらでもデザインは改良できるし。
最初は処理の手順を覚えるのが先、
アルゴリズムの訓練をするのが先決
必要な変数(静的メンバ)を設定します。
.h
public:
enum { JOY1,JOY2,JOYMAX,};
private:
static IDirectInput8* input;
static IDirectInputDevice8* keyboard;
static IDirectInputDevice8* mouse;
static IDirectInputDevice8* joypad[];
static unsigned int joycnt;
.cpp
namespace {
IDirectInput8* GameInput::input;
IDirectInputDevice8* GameInput::keyboard;
IDirectInputDevice8* GameInput::mouse;
IDirectInputDevice8* GameInput::joypad[JOYMAX];
unsigned int GameInput::joycnt;
}
.h
public:
enum { JOY1,JOY2,JOYMAX,};
private:
static IDirectInput8* input;
static IDirectInputDevice8* keyboard;
static IDirectInputDevice8* mouse;
static IDirectInputDevice8* joypad[];
static unsigned int joycnt;
.cpp
namespace {
IDirectInput8* GameInput::input;
IDirectInputDevice8* GameInput::keyboard;
IDirectInputDevice8* GameInput::mouse;
IDirectInputDevice8* GameInput::joypad[JOYMAX];
unsigned int GameInput::joycnt;
}
DirectInputの初期化です。
GameInput::Init
input = NULL;
DirectInput8Create( GetModuleHandle( NULL ), DIRECTINPUT_VERSION, IID_IDirectInput8, reinterpret_cast< void** >( &input ), NULL );
GameInput::Free
if ( input ) {
input->Release();
input = NULL;
}
>>837
.hに#include <dinput.h>が必要でした。
GameInput::Init
input = NULL;
DirectInput8Create( GetModuleHandle( NULL ), DIRECTINPUT_VERSION, IID_IDirectInput8, reinterpret_cast< void** >( &input ), NULL );
GameInput::Free
if ( input ) {
input->Release();
input = NULL;
}
>>837
.hに#include <dinput.h>が必要でした。
839名前は開発中のものです。
2011/03/26(土) 11:36:25.84ID:oFPuFWap デザインとか気にするんだったら、まずはDirectInputデバイスを晒すのをやめるべき。
入力を取得する関数かクラスを作って、直接デバイスにアクセスするのはその中だけに制限する。
入力を取得する関数かクラスを作って、直接デバイスにアクセスするのはその中だけに制限する。
keyboardの初期化です。
GameInput::Init
input->CreateDevice( GUID_SysKeyboard, &keyboard, NULL );
keyboard->SetDataFormat( &c_dfDIKeyboard );
keyboard->SetCooperativeLevel( Window.Handle(), DISCL_FOREGROUND|DISCL_NONEXCLUSIVE );
{
DIPROPDWORD dipd = {};
dipd.diph.dwSize = sizeof( DIPROPDWORD );
dipd.diph.dwHeaderSize = sizeof( DIPROPHEADER );
dipd.diph.dwObj = 0;
dipd.diph.dwHow = DIPH_DEVICE;
dipd.dwData = 8;
keyboard->SetProperty( DIPROP_BUFFERSIZE, &dipd.diph );
}
keyboard->Acquire();
GameInput::Free
if ( keyboard ) {
keyboard->Unacquire();
keyboard = NULL;
}
GameInput::Init
input->CreateDevice( GUID_SysKeyboard, &keyboard, NULL );
keyboard->SetDataFormat( &c_dfDIKeyboard );
keyboard->SetCooperativeLevel( Window.Handle(), DISCL_FOREGROUND|DISCL_NONEXCLUSIVE );
{
DIPROPDWORD dipd = {};
dipd.diph.dwSize = sizeof( DIPROPDWORD );
dipd.diph.dwHeaderSize = sizeof( DIPROPHEADER );
dipd.diph.dwObj = 0;
dipd.diph.dwHow = DIPH_DEVICE;
dipd.dwData = 8;
keyboard->SetProperty( DIPROP_BUFFERSIZE, &dipd.diph );
}
keyboard->Acquire();
GameInput::Free
if ( keyboard ) {
keyboard->Unacquire();
keyboard = NULL;
}
WINDOWクラスに下記の関数を作成してください。
public:
const HWND Handle( void ) const { return handle; }
>>842
GameInput::Init
keyboard = NULL // ねんのため追加してください
input->CreateDevice( GUID_SysKeyboard, ...
GameInput::Free:
解放の順番は初期化と反対にしてください。
input初期化->keyboard初期化 〜 keyboard解放→input解放
public:
const HWND Handle( void ) const { return handle; }
>>842
GameInput::Init
keyboard = NULL // ねんのため追加してください
input->CreateDevice( GUID_SysKeyboard, ...
GameInput::Free:
解放の順番は初期化と反対にしてください。
input初期化->keyboard初期化 〜 keyboard解放→input解放
変数のスコープとかよく分からなくなってきた・・・
Window.Handle()のWindowって、最初の方で定義したWindow window;の
windowっていうインスタンスだと思うんですけど
GameInput::Initが書かれているファイルGameInput.cppからアクセスするには
インスタンスを渡すしかないと思うんですけど
そこの処理はまだ書いてませんよね?
あれ、それともなんか勘違いしてるかな
Window.Handle()のWindowって、最初の方で定義したWindow window;の
windowっていうインスタンスだと思うんですけど
GameInput::Initが書かれているファイルGameInput.cppからアクセスするには
インスタンスを渡すしかないと思うんですけど
そこの処理はまだ書いてませんよね?
あれ、それともなんか勘違いしてるかな
846名前は開発中のものです。
2011/03/26(土) 16:01:06.60ID:QDwsR5XB いいかげんスレ違い
RPGのロジックに入るまでブログでやれ
RPGのロジックに入るまでブログでやれ
847名前は開発中のものです。
2011/03/26(土) 16:35:54.83ID:ai5/F2yB どうせ他に使うやついないのになにいっちゃってんの?アホなの?
extern WINDOW Window; でした(最初大文字)
ソース全体でこれだけはグローバル変数にしています。
他の変数はクラスの静的メンバでprivateにしています(IDirectInput8* input等)。
ここに書いてやり取りするのは楽でいいんですけど先々難しそうですね。
スレッドのリサイクル法が適用されて日記帳扱いになればOKかも。
ソース全体でこれだけはグローバル変数にしています。
他の変数はクラスの静的メンバでprivateにしています(IDirectInput8* input等)。
ここに書いてやり取りするのは楽でいいんですけど先々難しそうですね。
スレッドのリサイクル法が適用されて日記帳扱いになればOKかも。
>>846
>>1の書き込みとスレッドの中身を見る限り、このレベルからやっても
良いように感じましたが・・・
>>1さんもC++のプログラミングは初めてって書いてますし
>>848
確かにこのままソース書いていくのは難しいと感じてました
どんどん大きくなっていきますからね
とりあえず
http://gmdev.xrea.jp/
このアップローダが、この板でプログラムを作っている方々が
使用しているアップローダのようです
今後はここにソース置きましょうか
>>849
common.hみたいなヘッダを作成して
#include "WINDOW.h"
extern Window window;
として
WINDOWクラスにアクセスする必要があるクラス全部に
インクルードしたら良いんですね
>>1の書き込みとスレッドの中身を見る限り、このレベルからやっても
良いように感じましたが・・・
>>1さんもC++のプログラミングは初めてって書いてますし
>>848
確かにこのままソース書いていくのは難しいと感じてました
どんどん大きくなっていきますからね
とりあえず
http://gmdev.xrea.jp/
このアップローダが、この板でプログラムを作っている方々が
使用しているアップローダのようです
今後はここにソース置きましょうか
>>849
common.hみたいなヘッダを作成して
#include "WINDOW.h"
extern Window window;
として
WINDOWクラスにアクセスする必要があるクラス全部に
インクルードしたら良いんですね
>>850
gmdevにDirectInputの.h/.cppを置きました。
ttp://gmdev.xrea.jp/st/up/245.txt
>common.hみたいなヘッダ
そうです。自分専用のマクロとか定義とかの置き場にヘッダ作りますよね。
そこに入れておいてください。
ついでに↓もお願いします。
#define ARRAY(a) (sizeof(a)/sizeof(a[0]))
配列の要素数のマクロです。
置いたソースですが現在の自分のソースからいろいろはしょって整形しているので、
部分的に文法がおかしくなったりで、エラーがでるかも知れません。
それはすいませんがうまく直してください。
gmdevにDirectInputの.h/.cppを置きました。
ttp://gmdev.xrea.jp/st/up/245.txt
>common.hみたいなヘッダ
そうです。自分専用のマクロとか定義とかの置き場にヘッダ作りますよね。
そこに入れておいてください。
ついでに↓もお願いします。
#define ARRAY(a) (sizeof(a)/sizeof(a[0]))
配列の要素数のマクロです。
置いたソースですが現在の自分のソースからいろいろはしょって整形しているので、
部分的に文法がおかしくなったりで、エラーがでるかも知れません。
それはすいませんがうまく直してください。
>>851
すごく見やすいソースですね、大体の感じは理解出来ました
GameInput.cppのunsigned int GameInput::index;で
静的でないメンバーはクラスの外側で定義できませんと出たので
ヘッダの宣言でstatic付けときましたけど、staticにして大丈夫ですか?
それと、DATA_MAXが未定義だったので、適当に#define DATA_MAX 256
と、とりあえずしておきました
以上でコンパイルできました
これからじっくりとソース見ていきたいと思います
すごく見やすいソースですね、大体の感じは理解出来ました
GameInput.cppのunsigned int GameInput::index;で
静的でないメンバーはクラスの外側で定義できませんと出たので
ヘッダの宣言でstatic付けときましたけど、staticにして大丈夫ですか?
それと、DATA_MAXが未定義だったので、適当に#define DATA_MAX 256
と、とりあえずしておきました
以上でコンパイルできました
これからじっくりとソース見ていきたいと思います
今ソース眺めてたら
enum { DATAMAX = 0x100, };ってあるけど
これがDATA_MAXかな?
enum { DATAMAX = 0x100, };ってあるけど
これがDATA_MAXかな?
855名前は開発中のものです。
2011/03/27(日) 19:06:12.75ID:7F6awSJl ここ二日でDirectInputについては大体理解できた気がする
今頃気が付いたけど、DirectInputって今後非推奨なのか
今頃気が付いたけど、DirectInputって今後非推奨なのか
858名前は開発中のものです。
2011/03/27(日) 22:49:20.93ID:7F6awSJl >>856
いや、だからインスタンスを生成しないのはなんで?って話だったんだけど。
まぁプログラム中で1回だけしかやらないなら、 Init()/Free() 呼び忘れや2重呼び出しも
そうそう起こらないだろうから、コンストラクタやデストラクタ使ってもそんなにおいしくないの
かもね。
いや、だからインスタンスを生成しないのはなんで?って話だったんだけど。
まぁプログラム中で1回だけしかやらないなら、 Init()/Free() 呼び忘れや2重呼び出しも
そうそう起こらないだろうから、コンストラクタやデストラクタ使ってもそんなにおいしくないの
かもね。
860名前は開発中のものです。
2011/03/27(日) 23:12:17.94ID:BpzKp4Cl 「趣味の範疇」なら何回もつっこまれないと思うけどなぁ
自分も「えー」って思ったし
自分も「えー」って思ったし
>>860
クラスのないCで作ってから、あとでclass{}で括るとこんな感じになりますよ。
そこからC++ならではの形に作り変えるまでに至らずというところです。
>◆MBbNHCnf2Mさん
この先こんな感じで趣味っぽいところが満載なので自分流に変更するなり、
他の意見を参考いただくなりで、そこは適当にやってください。
ウィンドウ表示⇒コントローラ入力と来たので、次は描画&ファイル読み込みですが、
ここから私としてはタスクシステムをご提案になります。
すごーく突っ込みが入るテーマのようなんで少々気が重いです。
クラスのないCで作ってから、あとでclass{}で括るとこんな感じになりますよ。
そこからC++ならではの形に作り変えるまでに至らずというところです。
>◆MBbNHCnf2Mさん
この先こんな感じで趣味っぽいところが満載なので自分流に変更するなり、
他の意見を参考いただくなりで、そこは適当にやってください。
ウィンドウ表示⇒コントローラ入力と来たので、次は描画&ファイル読み込みですが、
ここから私としてはタスクシステムをご提案になります。
すごーく突っ込みが入るテーマのようなんで少々気が重いです。
862名前は開発中のものです。
2011/03/28(月) 00:17:25.15ID:Dt+tXZ6j >>861
わかってるならやめとけばいいのに。どうせ必要性もないんだろ?
やるなら自分でわかってる範囲の突っ込み所と、それでも敢えて押し通す意義(必要性)を
最初にひととおり明示しておけば、繰り返しツッコミが入ってグダグダになるのは避けられる、
かもしれない。
わかってるならやめとけばいいのに。どうせ必要性もないんだろ?
やるなら自分でわかってる範囲の突っ込み所と、それでも敢えて押し通す意義(必要性)を
最初にひととおり明示しておけば、繰り返しツッコミが入ってグダグダになるのは避けられる、
かもしれない。
863名前は開発中のものです。
2011/03/28(月) 00:29:53.10ID:iY/f3p70 RPGの描画や更新なんてすることもタイミングも決まりきってるのにタスクシステムなんか何に使うんだよw
上の人も言ってるけど、まずどういうものを作ろうとしててそのためにこういう技術が必要だというのを
はっきりさせてくれ
上の人も言ってるけど、まずどういうものを作ろうとしててそのためにこういう技術が必要だというのを
はっきりさせてくれ
>>861
自分的には分かりやすいので、全然問題ないです
まあ、細かい実装はそれぞれのやり方があるでしょうからね
私なんかCにしてもC++にしても言語仕様も十分に理解しないまま
やってるので、基本的に何でも参考になります
本当はちゃんと勉強した方が良いんでしょうけど
タスクシステムは、確かにこの板のスレ見ると荒れてますね
そもそも、タスクシステムの定義自体が曖昧というか
人によって微妙に違う感じですね
タスクシステムは一度勉強してみたかったので、ちょうど良かったです
自分的には分かりやすいので、全然問題ないです
まあ、細かい実装はそれぞれのやり方があるでしょうからね
私なんかCにしてもC++にしても言語仕様も十分に理解しないまま
やってるので、基本的に何でも参考になります
本当はちゃんと勉強した方が良いんでしょうけど
タスクシステムは、確かにこの板のスレ見ると荒れてますね
そもそも、タスクシステムの定義自体が曖昧というか
人によって微妙に違う感じですね
タスクシステムは一度勉強してみたかったので、ちょうど良かったです
どうやら風邪をひいてしまったようで、喉が痛い
ところで話は今までの流れと急に変わりますけど
今時のRPGってアイテムのデータはどのように持ってるんだろう
昔なら、アイテム番号だけを持ってて(ゲーム全体で256個までなら1バイト
65536個までなら2バイト)、その番号からアイテムデータを参照してたけれど
例えば、武器にランダム性があって、ショートソードに+1とかの強さの幅がある場合
アイテム番号1がショートソード、アイテム番号2がショートソード+1みたいな
のだと無駄にアイテムデータ増えるからあり得ないかな
昔だと、メモリも少ないし、データをセーブする媒体の容量も少ないから
アイテムのインデックスだけを持っていたけれど、今はデータ全体を
そのまま持っているのかな
ところで話は今までの流れと急に変わりますけど
今時のRPGってアイテムのデータはどのように持ってるんだろう
昔なら、アイテム番号だけを持ってて(ゲーム全体で256個までなら1バイト
65536個までなら2バイト)、その番号からアイテムデータを参照してたけれど
例えば、武器にランダム性があって、ショートソードに+1とかの強さの幅がある場合
アイテム番号1がショートソード、アイテム番号2がショートソード+1みたいな
のだと無駄にアイテムデータ増えるからあり得ないかな
昔だと、メモリも少ないし、データをセーブする媒体の容量も少ないから
アイテムのインデックスだけを持っていたけれど、今はデータ全体を
そのまま持っているのかな
多分、基本となるデータのみ存在していて、入手時にそのデータ元に
ランダムで性能を確定させて、そのデータを全部を持ってるのか
ランダムで性能を確定させて、そのデータを全部を持ってるのか
867名前は開発中のものです。
2011/03/29(火) 23:19:08.33ID:W0uoKekZ これだ!っていうデータ構造なんて無いんじゃないかな
ゲームごとにチューニングする必要があるわけで
パフォーマンスに余裕があればリレーショナルデータベースとか使っちゃうのかな
ゲームごとにチューニングする必要があるわけで
パフォーマンスに余裕があればリレーショナルデータベースとか使っちゃうのかな
868名前は開発中のものです。
2011/03/30(水) 00:26:46.80ID:jEpUZgct アイテムのインスタンスに持たせた方がいいんじゃないかなぁ
手持ちの装備を強化できるようなシステムが追加したくなった場合とかやりやすいし
手持ちの装備を強化できるようなシステムが追加したくなった場合とかやりやすいし
869名前は開発中のものです。
2011/03/30(水) 01:14:37.31ID:fixmLHL7 >>865
仕様に沿って素直なコードを組むのが最強。
リソース制約が顔を出しにくくなった「今時」ならこれでいいでしょ。
"Premature optimization is the root of all evil."
仕様に沿って素直なコードを組むのが最強。
リソース制約が顔を出しにくくなった「今時」ならこれでいいでしょ。
"Premature optimization is the root of all evil."
>>867-869
やっぱりデータが変化するようなものだと、インデックスだけで
管理は無理ですね。よく考えたら当たり前の事だった。
まあ、今ならアイテム程度のバイナリデータいくつ持ってても
問題無いか。携帯とかモバイル環境だと制限あるかもしれないけど
そんな環境だと、そもそもそれ程大規模のゲームも作らないだろうし。
やっぱりデータが変化するようなものだと、インデックスだけで
管理は無理ですね。よく考えたら当たり前の事だった。
まあ、今ならアイテム程度のバイナリデータいくつ持ってても
問題無いか。携帯とかモバイル環境だと制限あるかもしれないけど
そんな環境だと、そもそもそれ程大規模のゲームも作らないだろうし。
871名前は開発中のものです。
2011/04/03(日) 21:06:06.82ID:t0UP3s0y しーん
>>871
ちょうど今書こうと思ってた所です
今週は、風邪をひいてあまり集中して出来なかったので
とりあえず、ポリゴン出したりテクスチャ貼ったりというのは理解したと思う
これで音を出す以外の大体の事は何とかなるような気がする
ちょうど今書こうと思ってた所です
今週は、風邪をひいてあまり集中して出来なかったので
とりあえず、ポリゴン出したりテクスチャ貼ったりというのは理解したと思う
これで音を出す以外の大体の事は何とかなるような気がする
で、マップスクロールについて考えていたんですけど
http://d.hatena.ne.jp/aidiary/20040918/1251373370
上記のサイトのRPGの項目にあるような、マップ全体を裏画面に描画して
そこから表示画面分だけ切り出すという方法が結構検索していると
見つかるのに驚いたわけです
これって結構スタンダードな方法なのかな?
いくらメモリを気にしなくてもいいPC環境とはいえ、マップ全体を描画って
あり得るのだろうか、少なくとも市販作品では無いような気がする
http://d.hatena.ne.jp/aidiary/20040918/1251373370
上記のサイトのRPGの項目にあるような、マップ全体を裏画面に描画して
そこから表示画面分だけ切り出すという方法が結構検索していると
見つかるのに驚いたわけです
これって結構スタンダードな方法なのかな?
いくらメモリを気にしなくてもいいPC環境とはいえ、マップ全体を描画って
あり得るのだろうか、少なくとも市販作品では無いような気がする
昔はマップスクロールというと、RPG作成において一番の難所で
これが出来たらもうRPGは出来たも同然というような感じだった
特に私が使っていたMSXなんかだと、ハードウェアスクロール機能が
縦方向しかなかったので、1ドットスクロールは厳しかった
本当に最初の頃は、レイヤという概念も無くて(知らなかっただけかも)
そもそもレイヤをいくつも重ね合わせられるほどの処理速度もメモリも無かった
これが出来たらもうRPGは出来たも同然というような感じだった
特に私が使っていたMSXなんかだと、ハードウェアスクロール機能が
縦方向しかなかったので、1ドットスクロールは厳しかった
本当に最初の頃は、レイヤという概念も無くて(知らなかっただけかも)
そもそもレイヤをいくつも重ね合わせられるほどの処理速度もメモリも無かった
875名前は開発中のものです。
2011/04/03(日) 21:27:16.75ID:/2gPwasz 昔とかどうでもいい話してないでDirectX使えよ。
無理ならDXライブラリでも使え
無理ならDXライブラリでも使え
そこで、どういう風にマップスクロールを実装していたかと言うと
裏画面に表示画面より、縦・横共にマップチップ1個分大きいマップを描画し
そこから1ドットずつずらしてコピーするという方法だった
ページフリッピングも出来ないわけではなかったけど、VRAM容量を考えると
そんなもったいない方法は許されなかった
今でも縦・横でマップチップ一個分だけの裏画面からコピーするのが
定番だと思っていたけれど、マップ全体からコピーするという方法が
多く見つかるというのは、そっちの方が定番のかな
裏画面に表示画面より、縦・横共にマップチップ1個分大きいマップを描画し
そこから1ドットずつずらしてコピーするという方法だった
ページフリッピングも出来ないわけではなかったけど、VRAM容量を考えると
そんなもったいない方法は許されなかった
今でも縦・横でマップチップ一個分だけの裏画面からコピーするのが
定番だと思っていたけれど、マップ全体からコピーするという方法が
多く見つかるというのは、そっちの方が定番のかな
877名前は開発中のものです。
2011/04/03(日) 21:34:32.01ID:t0UP3s0y >>873
256*256のマップだけで256MB消費ってのは普通じゃないと思う
256*256のマップだけで256MB消費ってのは普通じゃないと思う
>>877
そうですか、やはり普通じゃないのか
説明しやすいからそうしているのが多いのかな
今考えている方法は
用意すべき画面
1. 表示画面分の表・裏のサーフェイス(DirectX初期標準)
2. 最終的に合成する画面、ここから1ドットずつすらして裏サーフェイスにコピー
(表示画面より縦・横1チップだけ大きい画面を確保)
3. レイヤを3つ使うとして、各レイヤ分の裏画面(これも表示画面より1チップ分だけ大きい)
4. マップチップ・キャラやNPC等のグラフィック
処理
1. まず、方向キーが押されたら、3の各レイヤ用の画面にマップ描画
2. 最下層のレイヤ分を2に画面にコピー
3. 最下層上にいるキャラクタ・NPCを2に描画
4. 2-3をレイヤ分処理
5. 2の画面から1の裏画面にコピーして裏画面を表に
6. 2-5までを1ドットずらして1チップ分処理
無駄がありそうだけれど、これでいけそうな気がする
でもテクスチャって座標指定でコピーできないから
1ドットずつコピーするのが難しそうな気が
もっとテクスチャについて勉強する必要がありそう
そうですか、やはり普通じゃないのか
説明しやすいからそうしているのが多いのかな
今考えている方法は
用意すべき画面
1. 表示画面分の表・裏のサーフェイス(DirectX初期標準)
2. 最終的に合成する画面、ここから1ドットずつすらして裏サーフェイスにコピー
(表示画面より縦・横1チップだけ大きい画面を確保)
3. レイヤを3つ使うとして、各レイヤ分の裏画面(これも表示画面より1チップ分だけ大きい)
4. マップチップ・キャラやNPC等のグラフィック
処理
1. まず、方向キーが押されたら、3の各レイヤ用の画面にマップ描画
2. 最下層のレイヤ分を2に画面にコピー
3. 最下層上にいるキャラクタ・NPCを2に描画
4. 2-3をレイヤ分処理
5. 2の画面から1の裏画面にコピーして裏画面を表に
6. 2-5までを1ドットずらして1チップ分処理
無駄がありそうだけれど、これでいけそうな気がする
でもテクスチャって座標指定でコピーできないから
1ドットずつコピーするのが難しそうな気が
もっとテクスチャについて勉強する必要がありそう
879名前は開発中のものです。
2011/04/03(日) 22:06:51.98ID:/2gPwasz あのさ?座標にマイナスを指定できるの知ってる?
881名前は開発中のものです。
2011/04/03(日) 23:07:20.50ID:mqRgK4Gz あなたの文章を読んでいて思ったのだが。
まさか、一枚のテクスチャに複数のレイヤーを重ねて最終的に
画面に描画しようとしている?
DirectXのバージョンをいくつ使うか知らないけど
いくらなんでも概念が古すぎるよ。
(DirectDrawとか使おうとしてる?)
WindiwsXPターゲットのDirectX9ならポリゴンまたはスプライト使えば解決できることを
わざわざ難しい方法でやろうとしているように見える。
ここで説明するのは無理があるからいくつかサイトのURL貼っとく
DirectX8の解説サイト
http://rina.jpn.ph/~rance/directx8/index.html
Microsoft本家のゲームプログラミング入門資料(数学の知識必須)
http://msdn.microsoft.com/ja-jp/academic/cc998598
まさかとは思うがDirectX7ならこの辺り
http://rina.jpn.ph/~rance/directx7/directx7study/index.html
入門者ならDirectXと言わずDXライブラリを使うのもありだと思う。
DXライブラリを使った解説サイト
http://dixq.net/g/
あと、ネットの情報は色々不足な部分や整理されていないから
一冊、入門書を買うことをお勧めする。
まさか、一枚のテクスチャに複数のレイヤーを重ねて最終的に
画面に描画しようとしている?
DirectXのバージョンをいくつ使うか知らないけど
いくらなんでも概念が古すぎるよ。
(DirectDrawとか使おうとしてる?)
WindiwsXPターゲットのDirectX9ならポリゴンまたはスプライト使えば解決できることを
わざわざ難しい方法でやろうとしているように見える。
ここで説明するのは無理があるからいくつかサイトのURL貼っとく
DirectX8の解説サイト
http://rina.jpn.ph/~rance/directx8/index.html
Microsoft本家のゲームプログラミング入門資料(数学の知識必須)
http://msdn.microsoft.com/ja-jp/academic/cc998598
まさかとは思うがDirectX7ならこの辺り
http://rina.jpn.ph/~rance/directx7/directx7study/index.html
入門者ならDirectXと言わずDXライブラリを使うのもありだと思う。
DXライブラリを使った解説サイト
http://dixq.net/g/
あと、ネットの情報は色々不足な部分や整理されていないから
一冊、入門書を買うことをお勧めする。
882879
2011/04/03(日) 23:08:21.00ID:mqRgK4Gz あれID変ったw
全然連続で書き込めない、この板人が少な過ぎるのか・・・
>>881
DirectX 9.0c でやろうと思ってます
つまり、DirectDrawでなくて、DirectX Graphicsですね
そのサイトも読んだんですけど、多分ポリゴンにテクスチャに貼り付けて
2Dの処理をするのがよく理解できてないんですね
特にテクスチャの扱いが多分よく分かってないので、勉強しときます
ポリゴンに単純にテクスチャ貼るところまでは理解できてる(と思う)んですが
>>881
DirectX 9.0c でやろうと思ってます
つまり、DirectDrawでなくて、DirectX Graphicsですね
そのサイトも読んだんですけど、多分ポリゴンにテクスチャに貼り付けて
2Dの処理をするのがよく理解できてないんですね
特にテクスチャの扱いが多分よく分かってないので、勉強しときます
ポリゴンに単純にテクスチャ貼るところまでは理解できてる(と思う)んですが
884名前は開発中のものです。
2011/04/04(月) 00:57:26.26ID:EfnOmkqq885名前は開発中のものです。
2011/04/04(月) 01:16:24.28ID:EfnOmkqq 一つのレイヤ内で使われるタイルを一つの大きなテクスチャにまとめておいて
レイヤ全体を一つの図形とみなしてテクスチャ座標でマッピングするのが
多分一番速くて効率の良い方法
スプライトはそれと同じようなことを自動でやってくれるから
毎フレーム大量の描画を行ってもわりと速い
レイヤ全体を一つの図形とみなしてテクスチャ座標でマッピングするのが
多分一番速くて効率の良い方法
スプライトはそれと同じようなことを自動でやってくれるから
毎フレーム大量の描画を行ってもわりと速い
886名前は開発中のものです。
2011/04/23(土) 16:35:48.28ID:CvPk8hGJ ゲーム制作メンバーを募集しています。
http://yuzuru.2ch.net/test/read.cgi/ff/1298538064/l50
http://www31.atwiki.jp/fftsukurou/
・最近のFFが嫌い
・昔のFFが好き
どちらかに当てはまれば誰でも結構です。
昔ながらのFFをみんなで作りましょう。
http://yuzuru.2ch.net/test/read.cgi/ff/1298538064/l50
http://www31.atwiki.jp/fftsukurou/
・最近のFFが嫌い
・昔のFFが好き
どちらかに当てはまれば誰でも結構です。
昔ながらのFFをみんなで作りましょう。
887名前は開発中のものです。
2011/04/28(木) 16:06:00.10ID:odTXZLNY 募集要項の大雑把さにフイタ
889名前は開発中のものです。
2011/07/08(金) 21:16:59.44ID:nxuNDnA1 マップ画面から事ある事に戦闘画面に行くよくあるRPGを作ろうと思うんだけど、
戦闘画面を呼び出すのはマップ画面の中で関数呼び出す感じにするもんなの?
それともデータ保存してマップ画面終了してから戦闘画面に行くもんなの?
作る時は前者が楽だけど、メモリがちょっと心配。
戦闘画面を呼び出すのはマップ画面の中で関数呼び出す感じにするもんなの?
それともデータ保存してマップ画面終了してから戦闘画面に行くもんなの?
作る時は前者が楽だけど、メモリがちょっと心配。
890名前は開発中のものです。
2011/07/08(金) 21:29:25.17ID:TDxk0CvB メッセージループ内でシーン分岐
891名前は開発中のものです。
2011/07/08(金) 21:34:45.63ID:nxuNDnA1 ああ、やっぱそれか……ありがとう。
892名前は開発中のものです。
2011/07/13(水) 17:30:26.96ID:7GbeQNs3 > それともデータ保存してマップ画面終了してから戦闘画面に行くもんなの?
毎回状態を記憶した一時セーブデータみたいなの書き出して読み込んで、
オブジェクトの生成と破棄とリソースの読み込みと開放してまた再現するって事?
その処理を作ってテストするのが大変そうだなぁ…
所謂普通のセーブデータと共用できればマシそうだけど…
仕様にもよるけど、マップ画面でのbgmを元の位置から再生したい時とかも少し面倒だね。
イベントなんかの途中で戦闘が始まるようなのは復元するの大変そうだなぁ…
どんなゲームなのか判らないから一概には言えないけど、
メモリなんてせいぜい該当マップで利用する敵グラや音のリソースが+されるだけなんだし、
そこまで気にする程でも無いような。
昨今のPC事情で考えたらCPUやメモリの容量は異常だよね。
10万満たない簡素なPCでも凄い積んでる。
ところがHDアクセスはまだまだ遅いんだよね。
だから前者でいいんでね?
> 戦闘画面を呼び出すのはマップ画面の中で関数呼び出す感じにするもんなの?
↓
> メッセージループ内でシーン分岐
要するにマップ画面に戦闘画面への遷移を固定化するコードを持たさないで部品化した方がいいよねって話かと。
方法はいろいろあって、FSM(有限オートマトン)やstateパターンでシーン単位で切り替えるのが有名だけど、
遷移を管理する側にごちゃごちゃさせたくないなら、マップと戦闘を保持したクラスを用意してやれば済む話だよね。
つーか別に仕様が完全固定化されてるなら戦闘からマップ直接呼んでもいいと思うよ。
あの手の技法なんて納期とか変更とかに厳しい世界の人たちが使ってる苦肉の策なんだしw
難しい事や汎用的な事は手段であって、それが目的化するよりはゲームが動くほうがいいよね。
それからこれも仕様によるけど、
所謂シーン単位での完全切り替えだとマップの上に戦闘を描くスタイルできないけどいいの?
あとエンカウントのアニメーションなんか必要な場合、マップ画面側にその処理だけが残るとかキモクない?
毎回状態を記憶した一時セーブデータみたいなの書き出して読み込んで、
オブジェクトの生成と破棄とリソースの読み込みと開放してまた再現するって事?
その処理を作ってテストするのが大変そうだなぁ…
所謂普通のセーブデータと共用できればマシそうだけど…
仕様にもよるけど、マップ画面でのbgmを元の位置から再生したい時とかも少し面倒だね。
イベントなんかの途中で戦闘が始まるようなのは復元するの大変そうだなぁ…
どんなゲームなのか判らないから一概には言えないけど、
メモリなんてせいぜい該当マップで利用する敵グラや音のリソースが+されるだけなんだし、
そこまで気にする程でも無いような。
昨今のPC事情で考えたらCPUやメモリの容量は異常だよね。
10万満たない簡素なPCでも凄い積んでる。
ところがHDアクセスはまだまだ遅いんだよね。
だから前者でいいんでね?
> 戦闘画面を呼び出すのはマップ画面の中で関数呼び出す感じにするもんなの?
↓
> メッセージループ内でシーン分岐
要するにマップ画面に戦闘画面への遷移を固定化するコードを持たさないで部品化した方がいいよねって話かと。
方法はいろいろあって、FSM(有限オートマトン)やstateパターンでシーン単位で切り替えるのが有名だけど、
遷移を管理する側にごちゃごちゃさせたくないなら、マップと戦闘を保持したクラスを用意してやれば済む話だよね。
つーか別に仕様が完全固定化されてるなら戦闘からマップ直接呼んでもいいと思うよ。
あの手の技法なんて納期とか変更とかに厳しい世界の人たちが使ってる苦肉の策なんだしw
難しい事や汎用的な事は手段であって、それが目的化するよりはゲームが動くほうがいいよね。
それからこれも仕様によるけど、
所謂シーン単位での完全切り替えだとマップの上に戦闘を描くスタイルできないけどいいの?
あとエンカウントのアニメーションなんか必要な場合、マップ画面側にその処理だけが残るとかキモクない?
893名前は開発中のものです。
2011/07/14(木) 16:32:39.19ID:0xB3ByY3 ふぅ…
894名前は開発中のものです。
2011/12/06(火) 13:22:55.40ID:oDkZLgbY あげ
895名前は開発中のものです。
2012/03/26(月) 23:19:50.12ID:q+Fv8Yng >>889
グラフィック関連はさすがに解放すると思う
でもドラクエみたいな2Dロープレなら何をどう作ってもメモリ不足なんてありえない
もう1つの質問の意図はマップ画面の下位に戦闘画面が来るか
それともマップ画面と戦闘画面を同じ立場において別途切り替える機構を作るかっていう問題だと思うけど
何らかのイベントやミニゲームなどで戦闘シーンを使う場合に上下関係が密接に関係してると
後で再利用しづらいのにで戦闘画面は独立させておいたほうがいいと思う。
グラフィック関連はさすがに解放すると思う
でもドラクエみたいな2Dロープレなら何をどう作ってもメモリ不足なんてありえない
もう1つの質問の意図はマップ画面の下位に戦闘画面が来るか
それともマップ画面と戦闘画面を同じ立場において別途切り替える機構を作るかっていう問題だと思うけど
何らかのイベントやミニゲームなどで戦闘シーンを使う場合に上下関係が密接に関係してると
後で再利用しづらいのにで戦闘画面は独立させておいたほうがいいと思う。
896名前は開発中のものです。
2012/05/10(木) 12:17:40.31ID:CvbrCj71 FFよりダンマスみたいなの作ってよ
いっとくけどMSX版の方じゃないよw
いっとくけどMSX版の方じゃないよw
897名前は開発中のものです。
2012/08/23(木) 21:04:32.49ID:8Fyjiw0F MSXのダンジョンマスターをオンライン対応でリメイクして欲しいけど
スレ違いだし他力本願だねw
スレ違いだし他力本願だねw
898名前は開発中のものです。
2012/09/07(金) 19:10:16.76ID:M4WerZHY あげ
899名前は開発中のものです。
2012/09/16(日) 21:05:26.04ID:3z6vfuIt ダンマスならRTC版じゃいかんのか?
900あずにゃん ◆PaaSYgVvtw
2012/11/29(木) 18:47:56.93ID:T/exNI7l c始めたばかりなのですが質問です。
tp//codepad.org/WsNDfYIs
これをビルドしたら実行結果が
a = 1
&a = 18ff44
*pa = 1
&pa = 18ff3c
b = 1
と表示されたんですが&aと&paが何故こう表示されるのか分かりません
16進数で表示される事は分かるんですが
printf("&pa = %04x\n",&pa);
実行結果が18ff3c
これが特に分かりません^^;
数学的に考えるとpa=&a;でアドレスがaに代入されるからaの16進数表示に
ならないんですか?
仕組みはよく分からなくてどなたか教えて下さい。
まずは基礎から勉強してるので宜しくです。
まずはcからなのでc+はまだ先のことですが^^;
ゲ制作も遠い道のりです。。。
tp//codepad.org/WsNDfYIs
これをビルドしたら実行結果が
a = 1
&a = 18ff44
*pa = 1
&pa = 18ff3c
b = 1
と表示されたんですが&aと&paが何故こう表示されるのか分かりません
16進数で表示される事は分かるんですが
printf("&pa = %04x\n",&pa);
実行結果が18ff3c
これが特に分かりません^^;
数学的に考えるとpa=&a;でアドレスがaに代入されるからaの16進数表示に
ならないんですか?
仕組みはよく分からなくてどなたか教えて下さい。
まずは基礎から勉強してるので宜しくです。
まずはcからなのでc+はまだ先のことですが^^;
ゲ制作も遠い道のりです。。。
901名前は開発中のものです。
2012/11/29(木) 19:15:49.60ID:f6gZcj+t paのアドレスじゃん
902名前は開発中のものです。
2012/12/01(土) 19:58:04.77ID:CrVsmJCK903名前は開発中のものです。
2012/12/01(土) 20:18:25.61ID:CrVsmJCK904名前は開発中のものです。
2012/12/28(金) 09:37:26.68ID:8KDAkRIs ズルするならマップでエンカウント直前のスクリーンを保持しておいて、戦闘画面の背景にあてれば出来るね。
動くマップチップで戦闘中も動かしたいなら見えてる部分をきちんとしたデータで渡して戦闘シーンで再構築しないといけないけどたぶん難しくないか。
やっぱマップと戦闘だと載せるUI違うから分けた方が見やすくなるんじゃないかと思ってる。
背景がマップだと戦闘場面が戦闘UIという意識でマップにのっかってるって感覚が強くなりそうだから一緒に書くのが自然に思えなくもないけど、
ほかのシーンは分けてるのにマップと戦闘はくっついてるというのは汎用的ではないような気がする。
でも面倒になったら分けない。
動くマップチップで戦闘中も動かしたいなら見えてる部分をきちんとしたデータで渡して戦闘シーンで再構築しないといけないけどたぶん難しくないか。
やっぱマップと戦闘だと載せるUI違うから分けた方が見やすくなるんじゃないかと思ってる。
背景がマップだと戦闘場面が戦闘UIという意識でマップにのっかってるって感覚が強くなりそうだから一緒に書くのが自然に思えなくもないけど、
ほかのシーンは分けてるのにマップと戦闘はくっついてるというのは汎用的ではないような気がする。
でも面倒になったら分けない。
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 【足立区ひき逃げ事故】意識不明の20代女性が死亡 死者2人に [Ailuropoda melanoleuca★]
- ■緊急地震速報 熊本など [人気者★]
- 足立区11人ひき逃げ・37歳男逮捕 取り調べ中に暴れたり、会話がかみ合わないなど“異常行動“か [Hitzeschleier★]
- 相次ぐ中国公演中止に、シンガーソングライターらが続々高市首相に怒り表明「隣国の仲間たちに対して申し訳ない」 [muffin★]
- 相次ぐ中国公演中止に、シンガーソングライターらが続々高市首相に怒り表明「隣国の仲間たちに対して申し訳ない」★2 [muffin★]
- 🇺🇸🇨🇳米中関係は「極めて強固」とトランプ氏… ★8 [BFU★]
- 【実況】博衣こよりのえちえちFantasy map simulatorミニキャラ死闘編🧪★2
- 【実況】博衣こよりのえちえちFantasy map simulatorミニキャラ死闘編🧪
- 【モンスト】モンスターストライク総合11/25【クソ浪人立てる時コマンドの補充をしろ🏡】
- 政府、高市さんの答弁は従来の政府見解を完全に維持していると閣議決定。特定野党、完全敗北 [519511584]
- 高市早苗、ガチで「メス」丸出し。各国女性首脳陣の中で1人だけ「スカート」 [165981677]
- 【悲報】立川志らく「別に高市さんはおかしな事言ってないのに叩いてる奴は馬鹿!!むしろ中国にキレろよ!!」 [522666295]
