C言語何でも質問掲示板


Total hit  今日  昨日  

必ずお読み下さい → 規約と注意事項  アンケートはこちら  エラーで投稿できない方はこちら  過去ログ検索はこちら

 
   ShellExecuteについて   
     ・[50402] たいちう 
     ・[50403] 筑前煮 
     ・[50405] たいちう 
     ・[50410] 筑前煮 
     ・[50411] たいちう 
     ・[50413] 筑前煮 
     ・[50414] たいちう 
     ・[50416] 筑前煮 
     ・[50417] たいちう 
     ・[50418] 筑前煮 
     ・[50419] tom 
     ・[50425] 筑前煮 
   VC++とC++   
     ・[50397] たいちう 
     ・[50400] softya 
     ・[50412] ひろぽん 
   AIの基礎について教え ....   
     ・[50341] Dixq (管理人) 
     ・[50342] softya 
     ・[50348] たいちう 
     ・[50353] lbfuvab 
     ・[50371] やっくん 
     ・[50374] たいちう 
     ・[50378] lbfuvab 
     ・[50409] やっくん 
   人員募集。   
     ・[50312] situmon 
     ・[50314] ジジ猫 
     ・[50315] situmon 
     ・[50317] softya 
     ・[50318] ジジ猫 
     ・[50321] Dixq (管理人) 
     ・[50338] softya 
     ・[50340] name 
     ・[50343] Dixq (管理人) 
     ・[50344] たかぎ 
     ・[50345] softya 
     ・[50349] あ〜る 
     ・[50354] Ma 
     ・[50365] dic 
     ・[50373] DG 
     ・[50377] conio 
     ・[50385] ジジ猫 
     ・[50387] ジジ猫 
     ・[50394] ROM 
     ・[50398] ジジ猫 
     ・[50399] ジジ猫 
   ソケットSMTPメール送 ....   
     ・[50356] softya 
     ・[50360] ひょう 
     ・[50361] YuO 
     ・[50362] ひょう 
     ・[50363] YuO 
     ・[50364] dic 
     ・[50366] dic 
   .netでの文字列の配列   
     ・[50297] YuO 
     ・[50346] セレン 
     ・[50359] YuO 
   IPアドレス取得   
     ・[50305] softya 
     ・[50311] ひょう 
     ・[50316] softya 
     ・[50319] たかぎ 
     ・[50320] softya 
     ・[50350] ひょう 
     ・[50352] ひょう 
   C言語やHPやiPhoneアプ ....   
     ・[50251] Ma 
     ・[50252] たいちう 
     ・[50253] Dixq (管理人) 
     ・[50327] Dixq (管理人) 
     ・[50328] Dixq (管理人) 
     ・[50329] Dixq (管理人) 
     ・[50330] Dixq (管理人) 
     ・[50351] Ma 
   C言語〜ゲームプログラ ....   
     ・[50323] Dixq (管理人) 
     ・[50324] ガジェット 
     ・[50326] Dixq (管理人) 
     ・[50331] ガジェット 
     ・[50332] ムンバ 
     ・[50333] Dixq (管理人) 
     ・[50334] ムンバ 
     ・[50335] ガジェット 
     ・[50336] Dixq (管理人) 
   またまたSLG。   
     ・[50301] ジジ猫 
     ・[50304] softya 
     ・[50306] ジジ猫 
     ・[50307] softya 
     ・[50308] ジジ猫 
     ・[50309] ジジ猫 
     ・[50313] あ〜る 
     ・[50325] Dixq (管理人) 
   通信プログラムについ ....   
     ・[50269] Ma 
     ・[50282] ひょう 
     ・[50283] やんち 
     ・[50284] YuO 
     ・[50285] softya 
     ・[50286] ひょう 
   【お勧めC/C++本ありま ....   
     ・[50239] たかぎ 
     ・[50260] yskey 
   RPGのサンプルがダ ....   
     ・[50255] softya 
     ・[50257] ひろぽん 
   CGI(Perl)の環境変数 ....   
     ・[50201] softya 
     ・[50207] ムンバ 
     ・[50216] softya 
     ・[50217] ムンバ 
     ・[50235] ムンバ 
     ・[50256] ムンバ 
   無題   
     ・[50124] パプリカ 
     ・[50125] Ma 
     ・[50126] fatens 
     ・[50127] softya 
     ・[50128] バグ 
     ・[50129] パプリカ 
     ・[50130] softya 
     ・[50132] パプリカ 
     ・[50133] Ma 
     ・[50134] fatens 
     ・[50135] softya 
     ・[50136] パプリカ 
     ・[50138] Ma 
     ・[50139] softya 
     ・[50141] dic 
     ・[50143] たかぎ 
     ・[50144] パプリカ 
     ・[50146] たかぎ 
     ・[50147] Tororo 
     ・[50149] パプリカ 
     ・[50150] sizuma 
     ・[50151] パプリカ 
     ・[50153] パプリカ 
     ・[50154] sizuma 
     ・[50155] あ〜る 
     ・[50248] asd 
   C言語ゲームプログラミ ....   
     ・[50106] たかぎ 
     ・[50113] softya 
     ・[50117] Dixq (管理人) 
     ・[50234] msc 
     ・[50236] softya 
   コンパイルオプション   
     ・[50214] たかぎ 
     ・[50218] そら 
     ・[50219] たかぎ 
     ・[50220] たいちう 
     ・[50221] そら 
     ・[50223] たかぎ 
     ・[50224] YuO 
     ・[50225] そら 
     ・[50226] softya 
     ・[50227] たかぎ 
     ・[50228] そら 
     ・[50229] softya 
     ・[50230] そら 
     ・[50231] そら 
   無題   
     ・[50002] テツ 
     ・[50004] たいちう 
     ・[50006] 初級者 
     ・[50008] テツ 
     ・[50014] たいちう 
     ・[50015] テツ 
     ・[50017] ideyan 
     ・[50026] たいちう 
     ・[50027] テツ 
     ・[50028] テツ 
     ・[50030] テツ 
     ・[50034] ideyan 
     ・[50035] Ma 
     ・[50039] テツ 
     ・[50041] Ma 
     ・[50042] テツ 
     ・[50043] たいちう 
     ・[50044] Ma 
     ・[50045] たいちう 
     ・[50047] テツ 
     ・[50048] kaiten 
     ・[50049] テツ 
     ・[50062] テツ 
     ・[50148] テツ 
     ・[50152] sizuma 
     ・[50158] たいちう 
     ・[50171] テツ 
     ・[50173] たいちう 
     ・[50176] テツ 
     ・[50177] たいちう 
     ・[50178] テツ 
     ・[50179] Ma 
     ・[50180] テツ 
     ・[50181] sizuma 
     ・[50182] たいちう 
     ・[50183] テツ 
     ・[50184] テツ 
     ・[50185] Ma 
     ・[50186] Ma 
     ・[50187] テツ 
     ・[50188] たいちう 
     ・[50189] テツ 
     ・[50190] たいちう 
     ・[50191] Ma 
     ・[50192] Ma 
     ・[50194] テツ 
     ・[50196] たいちう 
     ・[50198] テツ 
     ・[50202] Ma 
     ・[50203] テツ 
     ・[50204] たいちう 
     ・[50205] テツ 
     ・[50206] テツ 
     ・[50208] Ma 
     ・[50209] たいちう 
     ・[50210] Ma 
     ・[50211] Ma 
     ・[50215] テツ 
     ・[50222] テツ 
   フローチャートについ ....   
     ・[50195] mnkr 
     ・[50197] ヒガモリ 
     ・[50200] Ma 
     ・[50213] ヒガモリ 
   メモリを馬鹿食いする ....   
     ・[50170] Tororo 
     ・[50174] xaion 
     ・[50175] xaion 
   フォント異常   
     ・[50116] Justy 
     ・[50156] シノニム 
     ・[50159] Justy 
     ・[50162] シノニム 
     ・[50163] Justy 
     ・[50172] シノニム 
   C++初心者、SLG製作。   
     ・[50057] Dixq (管理人) 
     ・[50066] ジジ猫 
     ・[50070] Dixq (管理人) 
     ・[50168] ジジ猫 
   TrackPopupMenuは、別 ....   
     ・[50073] Ma 
     ・[50109] Justy 
     ・[50114] Ma 
     ・[50115] Justy 
     ・[50120] Ma 
     ・[50131] Justy 
     ・[50137] Ma 
     ・[50140] Justy 
     ・[50142] Ma 
     ・[50145] Justy 
     ・[50157] Ma 
     ・[50160] Ma 
     ・[50161] Justy 
     ・[50164] Ma 
     ・[50165] Justy 
     ・[50166] Ma 
     ・[50167] Ma 
   Xファイルのアニメ作り ....   
     ・[50091] ryu 
     ・[50097] Justy 
     ・[50110] ryu 
     ・[50111] Justy 
     ・[50121] ryu 
     ・[50122] ryu 
   クラスについて   
     ・[50119] 初心者 
   dxlibp.hとDxLib.libの ....   
     ・[50096] Justy 
     ・[50098] kazuoni 
     ・[50099] Justy 
     ・[50100] kazuoni 
     ・[50101] Justy 
     ・[50103] kazuoni 
     ・[50105] Justy 
     ・[50108] kazuoni 

Name: 筑前煮  ..かけだし(1,077ポイント)   Date: 2010/04/10(土) 12:34   No:50401       
Title: ShellExecuteについて    
こんにちは。
ここのページを利用させてもらっている者です。

ゲームプログラミングの館の33.選択画面の作り方を参考に(ほとんどコピーですが・・・)NewGameを選択すればメモ帳を起動するプログラムを作りました。

ここで、メモ帳ではなく龍神録プログラミングの館のプロジェクトにある「RyuJin.exe」を起動したいのですが、その方法が分かりません。

試しにnotepad.exeをRyuJin.exeに変えてみたところ、何も表示されずに終了しました。
以下は現在のプログラムです。

#include "DxLib.h"
 
int GetHitKeyStateAll_2(int KeyStateBuf[]){
        char GetHitKeyStateAll_Key[256];
        GetHitKeyStateAll( GetHitKeyStateAll_Key );
        for(int i=0;i<256;i++){
                if(GetHitKeyStateAll_Key[i]==1) KeyStateBuf[i]++;
                else                            KeyStateBuf[i]=0;
        }
        return 0;
}
 
void char_disp(int White,int y){
        DrawString( 490 , y   , "■"            , White );
        DrawString( 510 , 400 , "NEW GAME"  , White );
        DrawString( 510 , 420 , "EXIT"   , White );
}
 
 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
        
    int Key[256];
    int White , y=400;                                       //色とy座標の宣言
 
    ChangeWindowMode(TRUE);//ウィンドウモード
    if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
 
    White = GetColor( 255 , 255 , 255 ) ;                    //色の取得
 
 
    while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
          //↑メッセージ処理         ↑画面をクリア         ↑入力状態を保存       ↑ESCが押されていない
 
        char_disp(White,y);                              // 文字を描画
 
        if( Key[KEY_INPUT_DOWN]==1 ||( Key[KEY_INPUT_DOWN]%5==0 && Key[KEY_INPUT_DOWN]>30)){
        // たった今押したか、30カウンター以上押しっぱなしかつ5回に一度
            y+=20;                                           
            if(y==440)                            // y座標が260なら(選択が一番下なら)
                y=400;                        // 選択座標を一番上に
        }
  if( Key[KEY_INPUT_UP]==1 ||( Key[KEY_INPUT_DOWN]%5==0 && Key[KEY_INPUT_UP]>30)){
        // たった今押したか、30カウンター以上押しっぱなしかつ5回に一度
            y-=20;                                           
            if(y==380)                            // y座標が380なら(選択が一番上なら)
                y=420;                        // 選択座標を一番下に
        }
  if(Key[KEY_INPUT_Z]==1){ 
 //zキーで選択     
      if(y==400){//NewGameの場合
      DrawString(  0,  0, "NewGame起動" , White);            //文字列表示
    ShellExecute(NULL,"open","notepad.exe",NULL,NULL,SW_SHOWNORMAL);
            break;
      }
 
   if(y==420){//Exitの場合
      DrawString(  0,  0, "GAME END" , White);            //文字列表示
      break;
      }  
  
  }
        ScreenFlip();//裏画面反映
    }
 
    DxLib_End();
    return 0;
}

 編集済み


1,077ポイント を手に入れた。


Name: たいちう  ..熟練のプログラマー(69,465ポイント)   Date: 2010/04/10(土) 12:40   No:50402     
Title: Re:ShellExecuteについて    
> 試しにnotepad.exeを RyuJin.exeに変えてみたところ、何も表示されずに終了しました。

フルパスで指定してみては?


9ポイント を手に入れた。

Name: 筑前煮  ..かけだし(1,136ポイント)   Date: 2010/04/10(土) 12:44   No:50403     
Title: Re:ShellExecuteについて    
たいちうさん>
返信ありがとうございます。
フルパスで指定してみたところ、RyuJin.exeを指定したときと同じ結果でした。


59ポイント を手に入れた。

Name: たいちう  ..熟練のプログラマー(69,696ポイント)   Date: 2010/04/10(土) 12:55   No:50405     
Title: Re:ShellExecuteについて    
筑前煮さんのスキルレベルが判らないので、まずは単純な見落としを疑っています。

・指定したパスは正しいですか?
・エクスプローラからRyuJin.exeを起動することはできますか?
・フルパス指定のエスケープはしていますか?
・ShellExecuteの直前にMessageBoxを追加すると、メッセージボックスが表示されますか?
  (ShellExecuteが呼ばれていることと、
   編集中のソースコードと試しているexeファイルが対応していることの確認です)
・コマンドプロンプトからRyuJin.exeを起動させることはできますか?


231ポイント を手に入れた。

Name: 筑前煮  ..かけだし(1,294ポイント)   Date: 2010/04/10(土) 13:35   No:50410     
Title: Re:ShellExecuteについて    
フルパス、ってファイルパスのことですよね?
指定したフルパスをファイル名を指定して実行に入れて実行したら起動したので正しいと思います。
エクスプローラからの起動は出来ました。
メッセージボックスは表示されました。

エスケープは出来てないとおもいます。
というか、恥ずかしながらエスケープの意味がわかってません。
言い訳になりますが、あまりスキルレベルは高くないのでShellexecuteの使い方もあまりよく分かっていません・・・
使い方について調べてきます。

コマンドプロンプトからの起動はできませんでした。


158ポイント を手に入れた。

Name: たいちう  ..熟練のプログラマー(69,900ポイント)   Date: 2010/04/10(土) 14:03   No:50411     
Title: Re:ShellExecuteについて    
> というか、恥ずかしながらエスケープの意味がわかってません。

↓このように書きましたか?ということです。

ShellExecute(NULL,"open","c:¥¥test¥¥RyuJin.exe",NULL,NULL,SW_SHOWNORMAL);
(掲示板上での文字化けを避けるために¥を全角で書いています。)

cf. http://www9.plala.or.jp/sgwr-t/c/sec05.html#s5-1-2


> コマンドプロンプトからの起動はできませんでした。

起動の仕方がわからないのか何か問題があるのか。
コマンドプロンプトからnotepad.exeを起動させることはできますか?


117ポイント を手に入れた。

Name: 筑前煮  ..かけだし(1,782ポイント)   Date: 2010/04/10(土) 14:42   No:50413     
Title: Re:ShellExecuteについて    
返信ありがとうございます!
そのように書けています。

コマンドプロンプトですが、notepadの起動は出来ました。
RyuJin.exeについてはいろいろな方法を試しましたが、いずれも起動できませんでした。

メモ帳以外に試しに電卓やワードパッドを以下のように書いたら両方起動しました。
 ShellExecute(NULL,"open","calc.exe",NULL,NULL,SW_SHOWNORMAL);
 ShellExecute(NULL,"open","wordpad.exe",NULL,NULL,SW_SHOWNORMAL);
とりあえずnotepadと同じフォルダにRyuJin.exeを入れて試そうかな、と思いましたが、重要そうなフォルダに入っていたので編集するのを止めました。

ShellExecute以外にファイルへアクセスする方法はありますか?


2倍のポイントを手に入れた! 488ポイント を手に入れた。

Name: たいちう  ..熟練のプログラマー(69,904ポイント)   Date: 2010/04/10(土) 14:48   No:50414     
Title: Re:ShellExecuteについて    
ShellExecuteよりも望ましいのはCreateProcessかな。
しかしコマンドプロンプトで成功させる方が先だと思います。
コマンドプロンプトでもフルパスで指定しましたか?
(この場合はエスケープなし)

コマンドcdでRyuJin.exeのあるフォルダに移動して、
ファイル名のみで試しましたか?


4ポイント を手に入れた。

Name: 筑前煮  ..かけだし(1,813ポイント)   Date: 2010/04/10(土) 16:00   No:50416     
Title: Re:ShellExecuteについて    
コマンドプロンプトで起動できました!
たいちうさん、ありがとうございます。

では、CreateProcessをつかう場合どのようにすればいいですか? 編集済み


31ポイント を手に入れた。

Name: たいちう  ..比類無きプログラマー(70,011ポイント)   Date: 2010/04/10(土) 16:10   No:50417     
Title: Re:ShellExecuteについて    
コマンドプロンプトで成功してShellExecuteではできない、というのは考えにくいです。
さっき起動できずに今は起動できたという、その差は何だったのでしょうか?
どうしたら成功したのですか?


> では、CreateProcessをつかう場合どのようにすればいいですか?

CreateProcessの使い方を調べます。


107ポイント を手に入れた。

Name: 筑前煮  ..かけだし(1,906ポイント)   Date: 2010/04/10(土) 16:30   No:50418     
Title: Re:ShellExecuteについて    
さっきはパスをを直接キーボードで入力して、とりあえずコマンドプロンプトのウィンドウにRyuJin.exeをドラッグして、エンターを押しました。
タイプミスですかね・・・。一応パスはチェックしたんですが・・・すいません。

ShellExecuteでとりあえずもう一度パスを入力してみます。


93ポイント を手に入れた。

Name: tom  ..ぴよぴよ(18ポイント)   Date: 2010/04/10(土) 16:31   No:50419     
Title: Re:ShellExecuteについて    
手当たりしだいやってみるのも当然ありだと思いますが
まずはShellExecuteからの戻り値を確認する方が先だと思います。
http://msdn.microsoft.com/ja-jp/library/cc422072.aspx
に戻り値が書いてあるので確認してみてはいかがでしょうか?


18ポイント を手に入れた。

Name: 筑前煮  ..かけだし(1,939ポイント)   Date: 2010/04/10(土) 18:18   No:50425     
Title: Re:ShellExecuteについて    
tomさん>
よく見てみたらビルドのときに
 warning C4129: ''っていうのがでてました。
ちょっと調べてきます・・・

エスケープシーケンスのエラーみたいですね。
たいちうさん、すいません。 編集済み


33ポイント を手に入れた。



Name: ひろぽん  ..ぴよぴよ(46ポイント)   Date: 2010/04/10(土) 10:59   No:50395       
Title: VC++とC++    
レベルの低い質問で申し訳ないのですが、VC++とC++の違いがわかりません。

C++でMFCというライブラリを使うときはVC++と表現するのでしょうか。


46ポイント を手に入れた。


Name: たいちう  ..熟練のプログラマー(69,456ポイント)   Date: 2010/04/10(土) 11:18   No:50397     
Title: Re:VC++とC++    
C++ : プログラミング言語
VC++ : マイクロソフトの統合開発環境(製品名)

あなたがWordで日本語の文章を書くときと比べてみましょう。

日本語 : 言語
Word : マイクロソフトの文書作成ソフト(製品名)


80ポイント を落としてしまった。

Name: softya [URL]  ..ハッカー(147,403ポイント)   Date: 2010/04/10(土) 11:38   No:50400     
Title: Re:VC++とC++    
>レベルの低い質問で申し訳ないのですが、VC++とC++の違いがわかりません。
C++はISOなど国際規格で決められた文法・仕様の言語です。
http://ja.wikipedia.org/wiki/C++
で、これは仕様に過ぎませんので実際に使えるコンパイラとして実装しなくてはいけません。
それが、マイクロソフトのVC++だったり、gccだったり、BorandC++だったりするわけです。
決してVC++だけがC++のコンパイラではありません。

>C++でMFCというライブラリを使うときはVC++と表現するのでしょうか。
MFCはWin32APIをC++で楽に使えるようにするライブラリとしてマイクロソフトが開発したものです。
現状ExpressEdtionにはMFCは実装されていませんので、VC++ならMFCが使えるわけではありません。


260ポイント を手に入れた。

Name: ひろぽん  ..ぴよぴよ(81ポイント)   Date: 2010/04/10(土) 14:11   No:50412 解決!     
Title: Re:VC++とC++    
質問に答えてくださりありがとうございました。

C++とVC++、MFCの関係について理解することができました。


35ポイント を手に入れた。



Name: やっくん  ..上級者(15,122ポイント)   Date: 2010/04/08(木) 23:17   No:50339       
Title: AIの基礎について教えてください。    
最近、遊びでCUIのオセロを作りました。
しかし、コンピュータ(AI)を製作できませんでした。
(思いつくのは打てる場所に打つAIくらいしか・・・)

ボードゲーム全般のAIはどのような考え方を元に実装すればいいでしょうか。
人間が考えて打つようなことを理論的な形としてプログラムすれば良いのでしょうか。
市販のオセロなどは強いAIがありますが、あれはどうやったら作れるんだろうか・・・。

私はAIの知識は全くありませんので宜しければ参考になる良いサイトや技術書を教えてもらえないでしょうか。


160ポイント を手に入れた。


Name: Dixq (管理人) [URL]  ..ウィザード(1,173,629ポイント)   Date: 2010/04/08(木) 23:32   No:50341     
Title: Re:AIの基礎について教えてください。    
オセロ、チェス、将棋関連のAIは研究論文級な話のような気がしますが・・^^;

なんちゃってAIなら、私はよくバーチャルシミュレートします。
例えばですが、私がぷよ○よ作った時の敵AIは、
ぷよを落とす前に一度COMの頭の中ですべてのパターンで落としてみています。

・一番左で一度回転して落とす
・一番左で二度回転して落とす
・一番・・・

こんな感じですべてのパターンで落としてみて(実際に落とすわけじゃないです。落としたとしてどうなるか計算します)
どの操作が最適か判断します。

落ちた状況について点数を私は付けました。
ぷよ○よは左から3つ目がつみあがると負けですから、その列が高くなるとマイナスポイント。
両サイドが高くなる方がプラスポイント。
落としたことによってぷよが消えればかなりプラスポイント。
連鎖するならもっとプラスポイント・・。

みたいな感じで、4手位先まで全てのパターンで落としてスコアを計算し、
パターンの最適解を見つけました。
でもぷよは1手が最大24種類しか無いので(6列にぷよの方向が4)4手先まで読んだとしても
24*24*24*24でそう多くありません。

でも将棋でこんなことをやったらとんでもないことに・・。
その分野によって適切なアルゴリズムは違うでしょう。
ゲームAIは私も興味があって調べましたが、本格的なものを作るのはやはり難しいですね。
私の知識では回答出来ないので、関連がありそうなキーワードを置いておきます。

・ニューラルネットワーク
・遺伝的アルゴリズム
・ベイジアンネットワーク
・モンテカルロ法

後こんなページもあるようです。

http://uguisu.skr.jp/othello/algo.html

既に調べていらっしゃると思いますが一応・・。
http://www.google.co.jp/search?hl=ja&source=hp&q=%E3%82%AA%E3%82%BB%E3%83%AD+%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0&lr=&aq=0r&aqi=g-r2&aql=&oq=%E3%82%AA%E3%82%BB%E3%83%AD+%E3%81%82%E3%82%8B%E3%81%94&gs_rfai=



848ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(146,422ポイント)   Date: 2010/04/08(木) 23:47   No:50342     
Title: Re:AIの基礎について教えてください。    
オセロでしたら、参考サイトをいくつか紹介出来ます。

http://www.kitsunemimi.org/vsotha/algorithm.html
http://fible.s5.xrea.com/laboratory/othello/
http://hp.vector.co.jp/authors/VA015468/platina/algo/

参考になれば幸いです。
ちなみに私はオセロは思考ルーチンを組んだことが無いので、突っ込まれると細かいところは応えられないかも知れません。

ざっとだけ思考ルーチンの考え方のひとつを示しておきます。
(1)自分の石を置ける所を探索します。
(2)順番に置いてみて評価点をつける。 → 端は点数が高い。ひっくり返せる数が多ければ点が高い。
(3)次に相手が石を置ける場所を探索します。
(4)相手の石を置いてみて、評価点を付けます。
(5)一番、評価点の高い所を相手の石の評価点とします。
(6)自分の石の評価点から相手の石の評価点をマイナスします。これが今自分が置いた石の評価点です。
(7)自分が石が置ける所全部の評価点を算出して、一番点が高い場所に石を置きます。
で、実はこれだと2手先までしか読んでいませんから、(5)で止めずに自分→相手→自分→相手となるべく深い手の先まで評価点を付けていけば強くなります。
ただ、当然ながら読み手の分岐は指数関数的に増えていくので何十手も読むとすごく遅くなっていきます。なので途中で遅くなりすぎない程度の先読みで先読みをやめる必要があります。

あと定石と呼ばれる置き方がありますので、そのパターンデータを持っていて一致したら、その手を打つと強くなります。これが出来るのは終盤での戦いになりますが。


483ポイント を手に入れた。

Name: たいちう  ..熟練のプログラマー(69,086ポイント)   Date: 2010/04/09(金) 01:08   No:50348     
Title: Re:AIの基礎について教えてください。    
書籍を紹介します。
『リバーシのアルゴリズム C++&Java対応―「探索アルゴリズム」「評価関数」の設計と実装』
http://www.amazon.co.jp/dp/4875934289

この本を参考に作ってみたら、私如きでは勝てないプログラムができました。
うれしいやら悲しいやら。まぁどっちも低レベルってことなんだけど。


88ポイント を手に入れた。

Name: lbfuvab  ..プログラマー(25,041ポイント)   Date: 2010/04/09(金) 02:10   No:50353     
Title: Re:AIの基礎について教えてください。    
評価関数は作れますか?
後、ミニマックス法やアルファベータ法を理解していますか?


25ポイント を手に入れた。

Name: やっくん  ..上級者(15,625ポイント)   Date: 2010/04/09(金) 19:56   No:50371     
Title: Re:AIの基礎について教えてください。    
>キューさん
助言ありがとうございます。
研究論文並みなんですね(^^;
ニューラルネットワークについては今期の講義で学習する予定なのでそこで詳しく学んでみようと思います。

点数を付けてやるというのは評価関数というものですか?
これは少し自分でAIについて調べたとき出てきました。
評価関数を作ったことないので2、3手先まで評価する関数を作ってみようかと思います。

参考URL助かりました!!キーワードを「アルゴリズム」じゃなく「AI」と入れていたためか、良いのが出てこなかった・・・



>softyaさん
参考サイト、思考ルーチンを示してくださりありがとうございます。
まだ評価関数については最近その単語を知ったばかりで知識がありませんが・・・
 >端は点数が高い。ひっくり返せる数が多ければ点が高い。
この部分を盤自体に外枠なら〜点、その一つ内枠なら〜点と予め点数を付けて評価してみることにします。

>たいちうさん
返信ありがとうございます。
ここに示された本の表紙を見てみるとC++&JAVA対応とありますが、主にどの言語が使われてるのでしょうか?
一応CとC++はできます。(C++は最近、入門書を1冊読んだ程度ですが)
JAVAも一応入門書を読みましたが私には合わなかったため深く学んでません。

>lbfuvab
他の方への返信にも書きましたが、評価関数については最近知ったばかりです。
探索アルゴリズムについてはリストと初歩的な木くらいしかの知識しかありません。

------------------

評価関数という言葉がキーワードになるみたいなので皆さんから頂いたサイトや書物などを参考に学んでみます。


503ポイント を手に入れた。

Name: たいちう  ..熟練のプログラマー(69,204ポイント)   Date: 2010/04/09(金) 23:49   No:50374     
Title: Re:AIの基礎について教えてください。    
> ここに示された本の表紙を見てみると C++&JAVA対応とありますが、
> 主にどの言語が使われてるのでしょうか?

両方のサンプルが載っていますので、どちらか片方だけ知っていれば理解できます。
別の言い方をすれば、ソースコードの部分は内容が半分しかありません。
長所と見るか短所と見るか。私には冗長に思えました。


2倍のポイントを手に入れた! 118ポイント を手に入れた。

Name: lbfuvab  ..プログラマー(25,401ポイント)   Date: 2010/04/10(土) 01:46   No:50378     
Title: Re:AIの基礎について教えてください。    
>探索アルゴリズムについてはリストと初歩的な木くらいしかの知識しかありません。 
ぶっちゃけると、再帰さえ知っておけば何とかなります。
私はNegaMax法とAlphaBeta法を合わせたNegaAlpha法で組みました(http://ray.sakura.ne.jp/search_problem/が分かりやすく、詳しいです)


分かりやすい評価関数としては
・重み付け評価(http://uguisu.skr.jp/othello/index.html等に詳しいです)
・発展的開放度理論(↑のサイト内に詳しく書いてあります)
・確定石の数(後半になると重要度が増しますが、正確に見積もるのは難しい)
などがあります。



もっと強くしたい時は
http://sealsoft.jp/thell/
http://www.kitsunemimi.org/vsotha/等を見るといいかもしれません。



2倍のポイントを手に入れた! 360ポイント を手に入れた。

Name: やっくん  ..上級者(15,649ポイント)   Date: 2010/04/10(土) 13:26   No:50409 解決!     
Title: Re:AIの基礎について教えてください。    
>たいちうさん
両方のサンプルが載ってるんですか・・・。
いつかJAVAもしっかり学ぶと思うので前向きに捉えます。
この本のレビューを見ると皆さんが絶賛しているので購入を考えてみます。

>lbfuvabさん
参考サイトの紹介ありがとうございます。
一通り目を通してみることにします。


-------------

>皆さん
ご親切にありがとうございました(^-^
CUIで作ってのでできても公開はしませんがもしGUIに移植する機会があればせっかくなので公開しようかと思います。
だけど、暇つぶしに少し作ったオセロがAIを追加しようとするだけでこんな本格的なものになるなんて・・・。

これで解決とさせてもらいます。


24ポイント を手に入れた。



Name: ジジ猫  ..かけだし(1,094ポイント)   Date: 2010/04/08(木) 18:57   No:50310       
Title: 人員募集。    
背景、音楽、プログラムのアシストなど。
無償でSLG製作に協力してくれる方募集しています。

参加される方に詳しい話をします。
協力お願いします。


41ポイント を手に入れた。


Name: situmon  ..熟練のプログラマー(49,275ポイント)   Date: 2010/04/08(木) 18:59   No:50312     
Title: Re:人員募集。    
どんなゲームでどのくらいの長さで、音楽のジャンルはどんな感じですか?


27ポイント を手に入れた。

Name: ジジ猫  ..かけだし(1,211ポイント)   Date: 2010/04/08(木) 19:13   No:50314     
Title: Re:人員募集。    
参加される方ですか?
ありがとうございます!!

ゲームは製作期間の都合上、約一年間。
なのでとりあえず、一作目を作り、続編を出すかは未定という風にしたいです。

話せば長くなりますが、学園・能力ものバトル、という風になってます。
アドレスを教えてくれればまたお話しますよ。

アドレス(プライベート用ではないです。)
G.G.artproject@gmail.com

メールを送ってください。お待ちしてます。


117ポイント を手に入れた。

Name: situmon  ..熟練のプログラマー(49,281ポイント)   Date: 2010/04/08(木) 19:23   No:50315     
Title: Re:人員募集。    
送りました。

6ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(144,869ポイント)   Date: 2010/04/08(木) 19:25   No:50317     
Title: Re:人員募集。    
やる気を削ぐ気はないですが、あまり先走って人員を募集するのはどうかなぁと。
プログラムがある程度出来て、最終的なプログラミングの目処が立ってきたら人員を募集した方が良いんじゃないでしょうかね?それまではフリーの素材でなんとかなると思います。
ネットで人員を集めたが良いが、なかなか進まず一人抜け二人抜けて計画頓挫ってのを良く見かけます。人員を集めてしまうと先に進まないことがプレッシャーになりますし、逆に素材を作ってもらう人に催促したり、制作管理のストレスで続けなくなるというパターンもありえます。良い経験にはなると思いますけどね。

募集を掛ける場合は、お願いする作業の細かい項目、作業の量、完成期日の目処など出来るだけ具体的に記載することが望ましいです。それと、シナリオとかゲームパラメータはご自分で作られるんでしょうか?

最後に、初心者のジジ猫さんがプログラムのアシストを募集するのは、そちらの方にメインを任せたいんでしょうか?ジジ猫さんは、ゲームプランナーをメイン作業にして、プログラミングとかは補助的にする程度でしょうか?
実のところ実力がある人は自分で作りたいものを作りたがりますので、アシストしてもらうと言うのは無理があると思います。


332ポイント を手に入れた。

Name: ジジ猫  ..かけだし(1,307ポイント)   Date: 2010/04/08(木) 19:37   No:50318 解決!     
Title: Re:人員募集。    
そう・・・ですか。
アドバイスありがとうございます。
まだ参加者は募集してます。
先ほどsitumonからメールが届き、今返信しました。

プログラマーも募集してます。
一応ストーリー、ゲームシステムの構造(プログラムはまだ)は完成してます。
暇つぶしにやってくれる方、待ってます。


96ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,170,165ポイント)   Date: 2010/04/08(木) 20:27   No:50321     
Title: Re:人員募集。    
ゲーム制作に夢が膨らみますね。

うちの公開しているゲームを見ていただければわかるとおり、私は絵心がないので、
私も素材提供してくれる人がずっととても欲しいと思っていました。
まぁゲーム制作好きなプログラマーは似たような悩みをみんなお持ちなのでしょうけど。

私の少ない経験から少しコメントすると・・


今現在「とりあえず募集。詳しくはメールをくれたらそちらへ」
そんな流れでしょうけど、こういう募集は初めに出来るだけ詳しく情報を提示した方がいいですよ。
たとえばジジ猫さん自体、見知らぬ人から「とりあえず何か一緒にしませんか?」といわれても戸惑うでしょう。
また、そのような誘いに自分からなかなか乗りに行きにくいものです。

ですから、何を、どれ位の期間で、どういう進行プランで制作予定で、
規模はどれ位で、担当はどんな配分で・・など詳しく情報開示する必要があるでしょう。


更に、自分よりスキルの高い人と一緒に制作をしたいと思うのものです。
例えば自分はプロでも通用する位のプログラミングスキルを持っていたとしましょう。
でも音楽担当の人が、小学生で、初めて作曲した曲を提供してきたとしましょう。

喜んで採用出来るでしょうか?
無償で呼びかけて、わざわざ自分のために提供してくれたものに対して
「クオリティが低いので採用しません」
なんてなかなか言いにくいですよ。
有償なら言えるでしょうけど、無償では親しい友人同士ですら、なかなかいいにくいのですから、
会ったこともない人にはなかなか言えるものではないと思います。

逆のパターンもあるでしょう。
自分はゲーム制作の経験も知識も無い状態で、呼びかけて、素材を提供してくれる人がプロの世界で通用するような人だと、
制作を進めるうちに自分のスキルがわかるととても残念がられるでしょう。

見ず知らずの人と共同制作する時は情報開示がとても大事だと思います。
お互いにどれ位の経験があって、どれくらいのものが作れるのか、過去の作品など見せ合って、お互いを知り、深く交流することが大事だと思います。

交流することも無く、例えば音楽が一曲送られてきて、それを採用したって共同制作したとは言えないでしょう。
「素材を借りた」といった感じでしょうか。
自分が考えてる世界観も満足に伝わってないとどこか違和感のある素材になると思います。

また、ジジ猫さんがどの担当をされるかは分かりませんが、
募集をかける以上自分がリーダーになると思います。
例えば自分がプログラム担当のリーダーになるなら、人一倍ゲーム制作の経験が無いと難しいと思います。

複数で一つのプログラムを作るのはすごく大変です。
まず簡単でもいいから仕様書が要りますし、それこそ深くコミュニケーションをとることが大事でしょう。
プログラムの実装前に仕様書がかけるレベルになるには、数多くの経験が必要です。
経験があっても、規模にもよりますが、修正することなく仕様書と完全に一致するコーディングで実装を終えることはよほどのプロでない限り難しいでしょう。

私が思うにジジ猫さんは何かサークルのようなところで活躍されるのがよい気がします。
ジジ猫さんはおいくつですか?
学校に通っていらっしゃるならそのようなサークルを見つけてみてはいかがでしょう。
まず人とコミュニケーションをとりながらゲームを作る経験がないと、
メールだけで作るのは難しいですよ。

・・なんて否定的な意見ばかり言いましたけど、何事も経験することはいいことだと思います。

私もこんなにグダグダいうのは私にも似たような経験があるからです。
そして失敗した経験・・。

挑戦することはよいことです。
ただ、万が一失敗しそうでダメだと思った時は相手に失礼の無いように計画を断念する話を持ちかけましょう。
くれぐれも面倒になったからといって突然音信不通になるようなことがないように・・


106ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(145,939ポイント)   Date: 2010/04/08(木) 22:40   No:50338     
Title: Re:人員募集。    
えーと、厳しいことを言わせてもらいます。
一応元プロのゲームプログラマーとゲームデザイナー(プランナー)の経験があるので言わせてもらいますが、開発規模が見積もれないプロジェクトは必ず破綻します。
締め切りは決めてあるみたいですが、それは開発人数や開発規模から決めたものじゃないですよね?単に一年で終わりたいという希望に過ぎないと思います。ゲームなんて、まともに作ったら一年で終わらない可能性の方が高いです。
ゲーム会社の中でも破綻していくゲームを沢山見てきました。規模の見積もりの甘さ、ゲーム構造の考えの甘さ、チーム内のコミュニケーションの破綻、いろいろな原因で破綻は起こります。始めてなら、まともにゲーム作ろうと思っても失敗して当たり前だと思ってください。ただ、参加者を募集した以上は、ジジ猫さんがゲームを完成させるが参加者に対する礼儀です。


>一応ストーリー、ゲームシステムの構造(プログラムはまだ)は完成してます。

始めてデザインしたゲームシステム構造なんて穴だらけが普通です。
途中で修正の嵐になるのは目にみえてます。
例えば、ひとつ突っ込んでみましょう。
質問にあったシステムの部分です。

>まず、移動させたいキャラの上でコマンド→移動を選択します。
キャラを選ぶためのカーソルは、どの様に表示されますか?必要なCGパーツは?
メニューはどのように表示されるのでしょうか?独自のウィンドウですか?

>次に、その移動ルートのマスを十字キーで描いていきます。
移動可能範囲は表示しなくて良いですか?SLGだと当たり前のように表示されていると思いますが。

> そのときカーソルの代わりの逆三角形▽が画面の中心となるようスクロールもします。
移動可能範囲はキャラから数マスはなれた場所(縦横合計七マスなど)とし、その範囲内なら何マスでも進めます。
マップ形状も四角なのかヘックスなのか提示されていません。
後移動に関して、地形毎の移動力消費量やキャラごとに移動が苦手な地形、移動が得意な地形、ZOCなどによる進行を阻む部分などシミュレーションゲームによくあるものは盛り込まれていないのでしょうか?

などなど、実際にプログラムに落としこんで行くには仕様が曖昧すぎるのです。
分担して作業する場合は、出来るだけ曖昧な部分をなくし、かつ必要な作業を見積もれるだけの情報が記載されている必要があるのです。そこまでゲームシステムの仕様は文章としてまとまっていますか?


>プログラマーも募集してます。
>暇つぶしにやってくれる方、待ってます。

暇つぶしのレベルで済むとは思えません。
それと、ネット越しに分担作業を未経験者がやるのは不可能といって良いと思います。的確に分担や下回り、ライブラリなど設計、開発、計画してくれるベテランあっての分担作業です。そんな人を望むことは不可能だと行って良いでしょう。
だったら、ジジ猫さんに出来るかといえばそれも不可能でしょう。例えば、今日から初心者で参加してくれた人がいるとして、何をやってもらいますか?


1,099ポイント を手に入れた。

Name: name  ..ぴよぴよ(320ポイント)   Date: 2010/04/08(木) 23:23   No:50340     
Title: Re:人員募集。    
なんなのこいつらw ここってC言語でゲーム作ったりいろいろ楽しく交流するところじゃないの?なんでそのきっかけ作りに対してこんな批判的なレスしかないの。はじめから素人みたいな人はやるなってこと?素直にそう書けよ特にお前↑↑ お前業界のプロなの?

>マジでここ最悪だね。レビューといい素人叩きとしか思えないこの扱いwwこれからいろいろ技術面で交流していこうとする人がここ見てたらどう思う?新しくプロジェクト立ち上げようとしてもひどい初心者扱いされてひどく叩かれるって思うよwww実際そうだし。自分の経験から物事教えてるんだろうけどあからさまな初心つぶし。もっと交流的に会話できないんですかw?

ジジ猫さん>>ここで新規開発はあきらめたほうがいいですよw 気分悪いでしょ?がんばってとか応援の声もない、しかも交流を楽しみながら教えていこうとする奴がいないなんて可愛そうだしね。


320ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,174,491ポイント)   Date: 2010/04/08(木) 23:54   No:50343     
Title: Re:人員募集。    
> nameさん

確かに私はせっかくのやる気をそぐようなことを言ってしまったかもしれません。
それにここは初心者でも熟練者でもみんなが楽しく交流出来たらいいなと思って作ったところですから、
仰るような「素人叩き」のような雰囲気になってしまったのでしたら残念です。

ただ私もsoftyaさんも(私の場合は数少ない経験ですが)経験から、
きっとジジ猫さんの考え方のまま人を募ると破綻してしまうだろうと思ってしまうので、
そうならないようにアドバイスがしたかったのです。

>お前業界のプロなの?

私は先日なったばかりですし見習いレベルなので、あてはまりませんが、
一応私もsoftyaさんもプログラマーとして仕事しています。(ですよね?softyaさん)
特に、常連者の中で最もベテランのsoftyaさんの経験は私たちの中では最も多いと思います。
だからこそ思われることも多いと思います。


私は上でも言っているように挑戦することに対して大賛成です。経験も大事だと思います。
私のコメントもsoftyaさんのコメントもジジ猫さんに問いかけるものです。
私たちが見てきた、経験した失敗をしてほしくないと思ってコメントしているのですから
素人はゲーム制作はやるな、なんて思っていません。
そんなことを思ったら私はこのようなHPは作っていないでしょう。
なるべく初心者でもわかりやすいように、ずっと考えてきたつもりです。


とはいえ、そんな偉そうなことを言いながらも、普段の回答では偉そうに回答する人もいると思います。
質問者の為と言いながら自分の知識を見せびらかして自己満足するだけのいやな人もいるでしょう。
実は私は過去に質問サイトでそんな人たちにいやな思いをさせられて、こんなHPを作ろうとしたのです。
私はコテンパンに叩かれました。
そう、あの時は、それこそ「初心者は黙れ」のようなことを直接言われたと思います。
その時、「初心者でも気軽に質問できる場が欲しい」と思ってこのHPを作りました。
専門性の高い交流の場は「初心者黙れ」の雰囲気が強いです。
でもここではそんなことにはなってほしくないと今まで努力してきたつもりです。
掲示板の規約もそれに従って作ったつもりです。
(このことはもちろん今こんなことがあったから作ったような話でもありません。過去に何度も話したことがあるので、過去ログにもあります。)

しかし、次第にその時思った感情は薄れていくだろうと思ってました。
段々プログラムのことがわかってくると、簡単なことを調べもしないで聞いてくる人に対して
「なんで努力もしないで結果を手に入れようとするんだ」
と思ってくるだろうと。
でも最初のうちは何がなんだか分からず、熟練者が5秒で調べられるようなことも半日かかったりしますよね。
今でも見習いレベルですが、自分が段々初心者ではなくなるにつれて初心を忘れることのないようにしようとずっと思っていました。

しかし、私の言葉がnameさんが仰るように受け取られたのなら、知らず知らずのうちに忘れてしまっていたのかもしれません。
厭味を言うつもりはなくても、そう受け取ってしまっては結果が全てですね。

私は最初に思っていたことを忘れないようにこれからも努めていきたいと思います。
助言ありがとうございます。
厭味のお礼ではありません。
普段このようなことをはっきり言われるような事が無いので指摘していただけてよかったと思います。

ただ、ここの規約として丁寧語を使っていただくことになっていますので次からお願いしますね。


862ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(174,453ポイント)   Date: 2010/04/08(木) 23:59   No:50344     
Title: Re:人員募集。    
何か物事を成し遂げようとすると、初期の段階に行わなければならないこととして...

1. 自分が何をやろうとしているのか、つまりゴールを明確にする。
2. ゴールに到達するまでに障害となりそうなことを洗い出す。

といったことがあります。
softyaさんやDixqさんのアドバイスは、もちろん完全ではありませんが、上記の1.と2.についてのヒントがかなり盛り込まれています。

あと、もうひとつアドバイスするなら、金銭的な報酬が出せないのであれば、それに代わる何かがないと、メンバーのモチベーションを維持するのが困難です。

例えば、そのプロジェクトに参加して、スキルアップを果たしたいと考えているほぼ素人の自称プログラマがいたとします。
そのメンバーのモチベーションを維持するには、きちんと指導してあげられる体制が必要でしょう。

あるいは、そのプロジェクトのメンバーに名を連ねることで知名度を上げたいような人もいるでしょう。
そのメンバーのモチベーションを維持するには、きちんとした事業計画を立てて、普及計画とその具体的な実現方法まで睨んでおくか、すでにそこそこの知名度のあるプロジェクトにあらかじめ育てておく必要があるでしょう。

参加の動機はさまざまだと思いますが、メンバーに対して何の拘束力もないわけですから、仕事で関わるプロジェクト以上に大変なことは十分予想できます。
この問題は、メンバーを募集する段階では必ず考えておくようにしてください。


409ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(146,819ポイント)   Date: 2010/04/09(金) 00:26   No:50345     
Title: Re:人員募集。    
>ジジ猫さんへ。
やりたい様にやってもらって構いません。
ただ、仲間を募る以上は仲間に責任を持つ必要があります。
そうですね。旅行の仲間を募って楽しそうな旅行先を掲げたは良いがホテルの予約も電車の時間も調べていないまま旅行に出てしまおうとしている感じに近いでしょか。そんな事をしたら仲間から非難轟々ですよね。
なので、旅行の計画が出来るようになるまで下調べをしませんか?旅行雑誌を調べたり時刻表を調べてちゃんと移動や施設を回ってゆっくり旅行が出来る時間割を作って予算も決めてみませんか?って話をしたいのです。

前の質問から分かることは、ジジ猫さんが本当にゲームプログラミングの入口にたったばかりである人だと言うことだけです。だからこそ、フリーのパーツで良いのでプログラムの原型を、これならちゃんと完成出来るというレベルまで組んでみる必要があると私は思います。と言うか、私は、こんな大きなそうなSLGゲームのプログラムは初心者の頃には作れませんでした。
まず、プログラムを一人で作ってみませんか?この掲示板の範囲で良ければ基本的ミスの修正、考え方やちょっとしたアドバイスなど出来ると思います。みなさんも手伝ってくれると思います。ご検討ください。

>一応私もsoftyaさんもプログラマーとして仕事しています。(ですよね?softyaさん) 
はい、そうですね。
私の場合、ゲームプログラムを15年ぐらいやってました(過去形)。
都合で、どんな仕事だったかは明かせません。
ARPG、RPG、SRPG、ADV、ノベル系などの制作経験があります。 編集済み


397ポイント を手に入れた。

Name: あ〜る  ..上級者(18,167ポイント)   Date: 2010/04/09(金) 01:24   No:50349     
Title: Re:人員募集。    
一人でプログラム、画像、音楽全部作ってる寂しいあ〜る君です
まぁ僕も最初は友達と作ろうとしたんですけどモチベーションの差に絶望して一人で作り始めましたw
色々大変ですけどそれはそれで楽ですし、やっぱ、このゲームは自分の力で作ったんだ、って思えるのも嬉しいですよ(実際基盤は管理人さまのシューティングですけど…)

でまぁSLGなんですけど、皆さん出来ないと言いますが、2D(アドバンスのスパロボみたいな)で戦闘アニメーション無しなら、割りといけんじゃないかとひそかに思ったりしてますw
プログラム自体がしょぼくても画像を頑張って作れば見掛けのクオリティなら上がるという裏技もありますし(2Dシューティングなんて昔から変わったの画像とエフェクトぐらいですし)
僕の中では、初心者のゲーム作りは継ぎ足して作るものだと思ってます
最初にウィンドウを表示して、出来たら画像を表示して、次はそれを動かしてみて…
最初から綺麗になんて誰も出来ないので、めげずに頑張れば、段々と出来てきて、出来たのが嬉しくてまた作って…
いくらでも作れますね(^^)

躓いたら質問すれば大丈夫です
この掲示板の人達は厳しく教える人も居ますし、優しく教える人も居ますけど、こっちのやる気があればきっと親身に教えてくれて、最後には出来てるはずです
まぁ僕は基本質問者なんであまり勝手な事は言えませんが…(-.-;)

僕もまだまだぜんぜん初心者で(上ではポイントで上級者ってなってますが、あれ初心者にとってはどれだけ質問したかみたいなもんですからwww)はやくゲームが作りたいって気持ちすごくわかります
けど何事も順序は肝心です
Try&errorで頑張って行きましょう(^^)

>>nameさん
なんだかこの掲示板に来たばかりで判断してるみたいですが…
ここの人達は最初は僕もちょっと怖かったですけど、間違った事はほとんど言わないし、どんな質問でも誰かしらがちゃんと回答してくれます
僕がここの掲示板に来た時もなんか今思うと訳のわからないような質問をしてましたが、ちゃんと答えてもらえましたし
少しだけ見て、すぐに判断するのはとてももったいないです
事実今回の件でも、誰も馬鹿にしたりせずにしっかりと導いてあげてる筈です
ここの掲示板の雰囲気とか、少なくとも僕は大好きなので、あまりそう言われると、凄く悲しいし不快です…


長文乱文失礼しました


843ポイント を手に入れた。

Name: Ma  ..比類無きプログラマー(80,305ポイント)   Date: 2010/04/09(金) 04:02   No:50354     
Title: Re:人員募集。    
いいたいことは、他の方が言ってくれたみたいなので、とりあえず応援だけw

ジジ猫さんがんばれーb
グループプロジェクトの経験は、すごく貴重になると思います。

という、私は半年間でシューティングを(非商業としては)そこそこな規模(ネット声優さん10人前後、重役スタッフ4人前後)でリーダーをやった身で(当時高校1年生)、
この規模でも、全体のモチベーション等、グループをまとめあげるのは「かなり」、そう「か・な・り」大変でした。
ちなみに、冗談抜きに朝起きてから夜寝るまで、夏休みはほぼ全部使って、休み以外でも宿題と学校以外のほぼすべて時間をささげてしまいましたね・・・w

プログラミング以外を勉強しなかったのが少し悔いですが、いまではかなりいい経験をしたと思っております。(将来いかせられるといいな・・・)

ということで、なにごとも時間があるうちにチャレンジですね!
応援してますね。

*プチ裏話
人を集めて採用者を選定する作業が一番大変でしたね…。
企画者としての応募者への誠意ある対応の義務がありますので、50人越えのCV希望者から数人の選定はすさまじく大変。
面接官の気持ちがちょっぴり分かった日でした。 編集済み


242ポイント を手に入れた。

Name: dic  ..熟練のプログラマー(59,456ポイント)   Date: 2010/04/09(金) 17:11   No:50365     
Title: Re:人員募集。    
私の掲示板ではないので強制力も説得力もないのですが
ゲームメンバー 募集
などで検索すればもっといろんなところで募集できますよ
管理も大変になるので、ほどほどがいいと思います

詳しい内容はわからないですが、まずは、1作品
「私はこれくらいの規模の作品ができます」って提示
できたら、だいたいわかってもらえて
もうちょっとこった作品を作らないといけないのか
メンバー募集した時期が悪かったのかなど
色々検討できますよ

私も、超ゆっくり作成してますが、あとはグラフィックを追加するだけ
という形で、ほぼできあがってます

softya さんのおっしゃる通り
キャラクターはどうやって選ぶの?クリック?右クリック?キーボード?
カーソルは?サイズは?色は?など、ちょっとつまんだだけでも
プログラマにとっては大変な作業になります

いろいろ掲示板を渡り歩いてきましたが、ここほど親切なところはないですね


292ポイント を手に入れた。

Name: DG  ..かけだし(1,360ポイント)   Date: 2010/04/09(金) 23:20   No:50373     
Title: Re:人員募集。    
>nameさん

私は2、3ヶ月ほど前から時々この掲示板を訪れているのですが、nameさんのような語り口は初めて見ておどろきました。
しかし、素人叩きがされているのかと思われたのであれば、口調が荒くなるのもある程度納得の行くことではあるとおもいます。(もちろん、そうしないべきではありますが)

ただ、「素人叩きとしか思えない」「あからさまな初心つぶし」等と発言されていますが、これは、あなたからしてみれば、という話なのです。
大抵の人はこう思うだろう、と思っての「〜としか思えない」、「あからさまな〜」という表現だったのでしょうけれども、私はそうは思いません。

具体的に様々な問題点をあげることは、ただ叩きたいという人もすることではありますが、今回の場合はそうでないと言い切って良いのではないかと考察されるわけであります。
というのが、ゲームプログラミングの初心者を支援する目的で作られたサイト、そして掲示板を作った人が初心者叩き(初心者支援の逆と言える行動)をするということは矛盾しているわけです。
つまり、Dixqさんがよほど乱心でもしない限りは、彼が初心者叩きをするとはなかなか考えられないことになります。(彼が乱心していないことは、今回のように問題点を挙げる際は気遣いの言葉を忘れることが無いことなどから明らかでしょう)

論理的に言うとこういう事なのですが、このような考察をせずとも、今回の件では、初心者叩きがなされていると思う人は少ないのではないか、と私は思います。

何かしらの物事について、自分と他人の意見が同じだとは限らない事は当然のこととして分かってらっしゃるでしょうけれども、もう少し周りを見て発言されると良いのではないかと思います。


682ポイント を手に入れた。

Name: conio [URL]  ..比類無きプログラマー(81,246ポイント)   Date: 2010/04/10(土) 01:13   No:50377     
Title: Re:人員募集。    
んー。
とにかく作業を始めてしまって、
その後に計画がどんどん破綻して行くのを事前に防ぐための アドバイスだと思いますよ。
別に潰している訳では無いと思います。
(「すぐ作業(計画)に取り掛かる、という行動を潰している」と表現できるかもしれませんが。)


実際、複数のメンバーでやろうとすると頓挫したりする事が多いです。

就職活動での事ですが、
----------------------------------------------------------
「東京ゲームショーに出展する」という目標は定めたものの、
うまく計画を進めたり、連絡などの意思疎通をする事が出来ず、
そのまま自然消滅してしまった
----------------------------------------------------------
という経験を話されている方がいらっしゃいました。

主に
画像や3Dモデルの作成を担当する人と、音楽を担当する人、プログラムを担当する人など、
担当する仕事の違う人たちの間で行き違いが生まれてくるようです。
(今後の計画が不透明になったり、出来上がるはずの生成物(ソースコード、画像など)が
                        期限になっても上がってこなかったり とか)


耳に痛いかもしれませんが、それぞれ実際の経験を踏まえた上での
重要な指摘ではないかなと思います。 編集済み


69ポイント を手に入れた。

Name: ジジ猫  ..かけだし(1,536ポイント)   Date: 2010/04/10(土) 09:08   No:50385     
Title: Re:人員募集。    
長い間放置して見ていました。

確かに皆さんの言う通り、ゲーム作りは大変だということは分かっています。
この計画を発案した以上、参加者の全ての責任を負うのも分かっています。

だからなんです。
失敗してもあきらめず、次に改めてがんばればいいのです。
失敗は成功のもと、というのはこういうことだと思います。

何が起きるか分かりません。
ちゃんと責任も取ります。

難しいことでもがんばればできると思います。


この掲示板に書き込みをしたのは誰か自分よりも優秀なプログラマー(初心者ですからこのサイトの誰でもか・汗)が、僕の計画に参加してくれるのを期待したからです。

僕はグラフィックが得意です。
でもプログラムは全くできません。
そういう個人が持っている短所を補えるようにチーム組むようにしたいんです。


229ポイント を手に入れた。

Name: ジジ猫  ..かけだし(1,716ポイント)   Date: 2010/04/10(土) 09:22   No:50387     
Title: Re:人員募集。    
一番最初にメールを下さったsitumonさんが年齢を聞いてきたのでここでも言います。

僕は高校生で何年生かは言えません。
16・8ぐらいだと思ってください。
風姿はご想像にお任せします。

ストーリーが東方のアレンジでは?というのも聞かれました。

別にアレンジでもいいと思います。
僕が東方を知ったのは一年前で、ストーリー製作は二年前からしています。
あと、皆さんもいろいろストーリー案を持っていると思います。
スパロボではさまざまなアニメが参加しています。
この計画でも同じようにいろんなストーリーのいろんなキャラクターを出そうと思っています。(版権以外)

みんなの意見を見ていてなんだかわくわくしてきました。


180ポイント を手に入れた。

Name: ROM  ..かけだし(1,542ポイント)   Date: 2010/04/10(土) 10:53   No:50394     
Title: Re:人員募集。    
初めに素人叩きではないこと断っておきましょう。

>失敗してもあきらめず、次に改めてがんばればいいのです。 
>失敗は成功のもと、というのはこういうことだと思います。 

これは一人で制作をした時に言うことならわかりますが、集団のリーダーとなるとそうはいきませんよ。
顔を合わせたサークルなどなら、そんなことも軽く許されるかもしれませんが、
顔を全く知らない者同士だと難しい場合が多いでしょう。

>何が起きるか分かりません。ちゃんと責任も取ります。 

とありますが、ジジ猫さんの言う「責任を取る」とはどういう意味ですか?何をその時するのですか?
具体的な言葉が無いと単に言葉を並べているだけととらえられることがありますよ。

また、指摘することが素人叩きだという意見が出ているようですが、
未経験者に経験者が指摘・アドバイスをすることに何が悪いのかわかりませんね。
そもそもこんな指摘を受けただけでやる気がなくなってしまうような人間なら最初からリーダーは務まらないでしょうね。


170ポイント を手に入れた。

Name: ジジ猫  ..かけだし(2,112ポイント)   Date: 2010/04/10(土) 11:24   No:50398     
Title: Re:人員募集。    
ここではないですが、別のトピックで厳しく分かりやすくアドバイスしてくださいといいました。
なので、素人叩きとは思ってはいません。
すべて熟練者からのアドバイスとして受けています。
僕の計画が破綻しても、また機会があれば呼んでくださいという人もいます。

金銭的なことではお金がないので無償で手伝ってもらうしかありません。
しかし、ゲームの著作権を分け与えます。

まだやる気は十分にあります。
仲間を集めてがんばっていきたいです。


2倍のポイントを手に入れた! 396ポイント を手に入れた。

Name: ジジ猫  ..かけだし(2,125ポイント)   Date: 2010/04/10(土) 11:30   No:50399     
Title: Re:人員募集。    
自分の絵画レベルはこれぐらいです。まだ本気じゃないですが。イラスト作成中です。
ピクシブ内で「ジジ猫」でイラストをUPしています。他の絵もあります。
 編集済み


13ポイント を手に入れた。



Name: ひょう  ..かけだし(1,967ポイント)   Date: 2010/04/09(金) 07:24   No:50355       
Title: ソケットSMTPメール送信    
度々すみません・・・
ソケット繋がってHTTPリクエストもできました。
そこで本来ソケット通信したかった目的、
SMTP接続メール送信をしようと思いました。

----------------------------------------------------------------
/*ソケット初期化*/
ret = WSAStartup(0x0101, &wsaData);
if(ret != 0)
{
    printf(">Socket initialization ERROR.\n");
}
else
{
    hostent = gethostbyname(host);
    memcpy(&inaddr,hostent->h_addr_list[0],4);
    strcpy(szIP,inet_ntoa(inaddr));
    printf(">Socket initialization OK.\n");
}
Sleep(1000);

/*ソケット作成*/
s = socket(AF_INET,SOCK_STREAM,0);
if(s == SOCKET_ERROR)
{
    printf(">Socket making ERROR.\n");
}
else
{
    printf(">Socket making OK.\n");
}
Sleep(1000);

/*送信先セット*/
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = inet_addr(szIP);
sa.sin_port = htons(25);

/*サーバー接続*/
check = connect(s,(SOCKADDR *)&sa,sizeof(sa));
if(check == SOCKET_ERROR)
{
    printf(">Server connection ERROR.\n");
}
else
{
    printf(">Server connection OK.\n");
}
Sleep(1000);

 /*送受信*/
strcpy(buf,"HELO ");
strcat(buf,host);
strcat(buf,"\r\n");
strcat(buf,"MAIL FROM:<");
strcat(buf,from);
strcat(buf,">\r\n");
strcat(buf,"RCPT TO:<");
strcat(buf,to);
strcat(buf,">\r\n");
strcat(buf,"DATE\r\n");
strcat(buf,sub);
strcat(buf,"\r\n");
strcat(buf,body);
strcat(buf,"\r\n");
strcat(buf,"\r\n.\r\n");
strcat(buf,"RSET\r\n");

send(s,buf,strlen(buf),0);
recN = recv(s,buf,sizeof(buf),0);

for(i=0; i<recN; i++)
{
    printf("%s",buf);
}

// ソケットの破棄
closesocket(s);

// クリーンアップ
WSACleanup();
-----------------------------------------------------------------
どこか間違ってますか?
メールは送れないし
最後の
for(i=0; i<reN; i++)
{
printf("%s",buf);
}
で受信文字列も見れないし・・・

わかる方ご教授お願いします。


900ポイント を手に入れた。


Name: softya [URL]  ..ハッカー(146,923ポイント)   Date: 2010/04/09(金) 09:45   No:50356     
Title: Re:ソケットSMTPメール送信    
ここにサンプルがあるので違いを比べてみてください。
http://a-gamyl.hp.infoseek.co.jp/Clang/list_86.html


2倍のポイントを手に入れた! 104ポイント を手に入れた。

Name: ひょう  ..かけだし(2,041ポイント)   Date: 2010/04/09(金) 13:14   No:50360     
Title: Re:ソケットSMTPメール送信    
ありがとうございます。

拝見させていただきましたが、
データ送信に使っている関数を
write関数にしているところ以外
私と大差ないと思ったのですが、
send関数はsmtpメール送信には
使用できないのでしょうか?


74ポイント を手に入れた。

Name: YuO  ..熟練のプログラマー(43,413ポイント)   Date: 2010/04/09(金) 13:37   No:50361     
Title: Re:ソケットSMTPメール送信    
ちゃんとプロトコルを守りましょう。
SMTPはリクエスト - レスポンスを繰り返すプロトコルです。
HTTPのように,原則1回のリクエスト - レスポンスで完結するプロトコルとは異なります。

そもそも,仕様書のAppendix. Dにサンプルシナリオまで載っているのですから,
これに沿った送受信をしてみてはどうでしょうか。
IETF: RFC 5321 Simple Mail Transfer Protocol
http://www.ietf.org/rfc/rfc5321.txt


113ポイント を手に入れた。

Name: ひょう  ..かけだし(2,386ポイント)   Date: 2010/04/09(金) 15:05   No:50362     
Title: Re:ソケットSMTPメール送信    
YuOさん

私もそのことに気付き
編集して
---------------------------------
strcpy(buf,"HELO ");
strcat(buf,host);
strcat(buf,"\r\n");
send(s,buf,strlen(buf),0);

strcpy(buf,"MAIL FROM:<");
strcat(buf,from);
strcat(buf,">\r\n");
send(s,buf,strlen(buf),0);

strcpy(buf,"RCPT TO:<");
strcat(buf,to);
strcat(buf,">\r\n");
send(s,buf,strlen(buf),0);

strcpy(buf,"DATE\r\n");
send(s,buf,strlen(buf),0);

strcpy(buf,sub);
strcat(buf,"\r\n");
send(s,buf,strlen(buf),0);

strcpy(buf,body);
strcat(buf,"\r\n");
send(s,buf,strlen(buf),0);

strcpy(buf,"\r\n.\r\n");
strcat(buf,"RSET\r\n");
send(s,buf,strlen(buf),0);
----------------------------------
このようにしたのですが
できませんでした。

何が悪いのでしょうか?


345ポイント を手に入れた。

Name: YuO  ..熟練のプログラマー(43,580ポイント)   Date: 2010/04/09(金) 15:47   No:50363     
Title: Re:ソケットSMTPメール送信    
・sendをループにしていないのはなぜですか。
sendに指定したサイズ分だけ確実に送出されることは保証されていません。
MSDN: send function (Windows)
http://msdn.microsoft.com/en-us/library/ms740149.aspx

・recvしていないのはなぜですか。
仕様ではEHLOに対する応答が250であることを確認してからMAIL FROMを送る,ということになっていますよね。

# 誤字も疑っていたりしますが,応答をちゃんと見れば気づくはず……。


167ポイント を手に入れた。

Name: dic  ..熟練のプログラマー(59,164ポイント)   Date: 2010/04/09(金) 16:44   No:50364     
Title: Re:ソケットSMTPメール送信    
大丈夫なの?

5ポイント を手に入れた。

Name: dic  ..熟練のプログラマー(59,520ポイント)   Date: 2010/04/09(金) 17:26   No:50366     
Title: Re:ソケットSMTPメール送信    
語弊があるといけないので
大丈夫なの?というのは
こういったある程度のレベル以上のプログラムになると
英語しか資料がなくなります(私の知っている範囲ですが
つまり、先人達はある程度の教養を必要としてるのでは?
という意味で言っているわけです

これをもにゃもにゃして もにゃもにゃになったら
もにゃもにゃになってしまうとか

心配性なだけかもしれませんが
ひとりごと すいません
 編集済み


64ポイント を手に入れた。



Name: セレン  ..かけだし(1,098ポイント)   Date: 2010/04/08(木) 13:33   No:50287       
Title: .netでの文字列の配列    
private: array<String^>^ Path;
のようにいつ確保しているのですが配列の個数を指定したいです。
char型とかでしたら[10]とかでかけたのですがこの様には書けないのでしょうか?


80ポイント を手に入れた。


Name: YuO  ..熟練のプログラマー(43,209ポイント)   Date: 2010/04/08(木) 17:06   No:50297     
Title: Re:.netでの文字列の配列    
.NET Frameworkにおいて,配列型はあくまで参照型です。
# System::Arrayを継承している形になる。
なので,gcnewを使って構築しないといけません。
Path = gcnew array<String^>(10);

unmanagedのイメージで書くならば,
std::vector<std::String *> * Path;
に対して,
Path = new std::vector<std::String *>(10);
としないといけないのと同じことです。


143ポイント を手に入れた。

Name: セレン  ..かけだし(1,293ポイント)   Date: 2010/04/09(金) 00:33   No:50346     
Title: Re:.netでの文字列の配列    
回答ありがとうございます。

クラスで使う為に
private: String^ Path = gcnew array<String^>(10); 
と書いたのですが
error C3845: 'KanadeMemo::Form1::Path': ref クラス または値型の内部で、スタティック データ メンバのみ初期化することができます
というエラーが出てしまうのでてしまいます。


Path = gcnew array<String^>(10); でもエラーが出てしまうのですがクラスには書けないのでしょうか?


195ポイント を手に入れた。

Name: YuO  ..熟練のプログラマー(43,300ポイント)   Date: 2010/04/09(金) 12:44   No:50359     
Title: Re:.netでの文字列の配列    
メンバ変数の初期化の問題ですか。

であれば,C++ですから,直接的にデータメンバを初期化することはできません。
コンストラクタの初期化子を使います。

e.g.)
ref class Test
{
public:
    Test () : dataMember_(gcnew array<String^>(10))
    {
    }

private:
    array<String^>^ dataMember_ ;
};


91ポイント を手に入れた。



Name: ひょう  ..ぴよぴよ(743ポイント)   Date: 2010/04/08(木) 18:21   No:50302       
Title: IPアドレス取得    
wsock32.libの質問をした
ひょうです。

IPアドレスを取得ところで早速つまずいてしまいました・・・


-------------------------------------------------------
scanf("%s",&host);

/*ソケット初期化*/
ret = WSAStartup(0x0101, &wsaData);
if(ret != 0){
    printf("Socket initialization ERROR.\n");
}else{
    printf("Socket initialization OK.\n");
}
hostent = gethostbyname(host);
printf("%s",hostetn->h_addr);
--------------------------------------------------------
※struct hostent *hostent は最初に定義しているものとします。

ためしに"www.yahoo.co.jp"と入力してみましたが
よくわからない文字列になって返ってきました。。。

どのようにすればIPアドレスを取得することが出来るのでしょうか?


375ポイント を手に入れた。


Name: softya [URL]  ..ハッカー(144,396ポイント)   Date: 2010/04/08(木) 18:32   No:50305     
Title: Re:IPアドレス取得    
hostetn->h_addr
は文字列ではなく数値データです。
なので、
printf("%d.%d.%d.%d",hostetn->h_addr[0],hostetn->h_addr[1],hostetn->h_addr[2],hostetn->h_addr[3]); 
で良かったと思いますが。
記憶違いだったらごめんなさい。


88ポイント を手に入れた。

Name: ひょう  ..ぴよぴよ(770ポイント)   Date: 2010/04/08(木) 18:57   No:50311     
Title: Re:IPアドレス取得    
私も%dをやってみたのですが
-51など負の数が出てしまうことがありました・・・


27ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(144,537ポイント)   Date: 2010/04/08(木) 19:23   No:50316     
Title: Re:IPアドレス取得    
あっ、失礼しました。char型(-128〜127)でしたね。
(unsigned int)でキャストしてください。0〜255のデータになります。


51ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(174,044ポイント)   Date: 2010/04/08(木) 19:40   No:50319     
Title: Re:IPアドレス取得    
> (unsigned int)でキャストしてください。0〜255のデータになります。

unsigned charですよね。


14ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(144,840ポイント)   Date: 2010/04/08(木) 20:21   No:50320     
Title: Re:IPアドレス取得    
あっ、すいません2度ボケです。たかぎさん、ありがとうございます。
(unsigned char)
ですね。申し訳ないです。


29ポイント を落としてしまった。

Name: ひょう  ..ぴよぴよ(949ポイント)   Date: 2010/04/09(金) 01:31   No:50350     
Title: Re:IPアドレス取得    
できない・・・

unsigned char IPaddr[7];
宣言したあと
IPaddr[0] = (unsigned char)hostent->h_addr[0];
IPaddr[1] = '.';
IPaddr[2] = (unsigned char)hostent->h_addr[1];
IPaddr[3] = '.';
IPaddr[4] = (unsigned char)hostent->h_addr[2];
IPaddr[1] = '.';
IPaddr[6] = (unsigned char)hostent->h_addr[3];
こんな感じで書いて
printf("%s",IPaddr);
で表示させようとしましたが
どうもうまくいきませんでした。
%dでやってみたりfor文で%cを使ってみたり
いろいろやってみましたがどれもうまくいきません・・・

どこが間違っているのでしょうか?


179ポイント を手に入れた。

Name: ひょう  ..かけだし(1,067ポイント)   Date: 2010/04/09(金) 02:02   No:50352 解決!     
Title: Re:IPアドレス取得    
すみません自己解決しました。
memcpy(&inaddr,hostent->h_addr_list[0],4);
strcpy(szIP,inet_ntoa(inaddr));
このようにしました。

ご教示してくださった方々、ありがとうございました。

これからもお世話になります。


118ポイント を手に入れた。



Name: rajan  ..ぴよぴよ(273ポイント)   Date: 2010/04/07(水) 13:16   No:50250       
Title: C言語やHPやiPhoneアプリや勉強の仕方について    
いつもありがとうございます
今 会社 で 働いてます が 分からない 事一杯 あって たいへん です
ホムページ 作る 時 c言語 使いますか
使う なら どんな 風に 使えば ホムページ もっと うつくしいに なりますか おしえて くれますか 

(タイトルを管理人が修正しました)
(良いタイトルが思い浮かばなかった・・)


108ポイント を手に入れた。


Name: Ma  ..比類無きプログラマー(79,356ポイント)   Date: 2010/04/07(水) 13:23   No:50251     
Title: Re:無題    
>ホムページ 作る 時 c言語 使いますか 
普通使いません。(使う事がなくもないですが、普通のホームページはあまり使いません。eg. CGI)
一般的な(個人の)ホームページで使うのは、HTMLがメインです。CSSスタイルシートも。


>使う なら どんな 風に 使えば ホムページ もっと うつくしいに なりますか おしえて くれますか  
とりあえず、日本語に不自由しているようなので外国の方なら母国語で勉強することをおすすめします。
それがかなわないなら、ネット上にあるHTMLの講座やホームページ作りに関する書籍をやってみるといいかと思います。


202ポイント を手に入れた。

Name: たいちう  ..熟練のプログラマー(67,776ポイント)   Date: 2010/04/07(水) 13:43   No:50252     
Title: Re:無題    
もしも日本語よりも英語の方が得意ならば、
英語のサイトの方が情報が充実しています。

日本語で学習するのならば、入門サイトを紹介します。
http://www.tohoho-web.com/wwwbeg.htm
http://www.shoshinsha.com/hp/link/link_sho.html

紹介したサイトで判らない点があれば、この掲示板に質問してもOKです。
(管理人さんも歓迎してくれることでしょう)


145ポイント を手に入れた。

Name: Dixq (管理人)  ..ウィザード(1,170,059ポイント)   Date: 2010/04/07(水) 14:27   No:50253     
Title: Re:無題    
プログラマーが集まる場所ですから英語なら私以外の誰かがお分かりになると思いますよ(ぇ

いいですね、英語のトピが一つ位あっても。見る側も勉強になりそう


62ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,168,695ポイント)   Date: 2010/04/08(木) 20:52   No:50327     
Title: Re:無題    
複数のトピックに似たような内容の投稿があるので、以下にまとめます。

23ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,169,999ポイント)   Date: 2010/04/08(木) 20:59   No:50328     
Title: Re:無題    
================================================================

Name: rajan  ..ぴよぴよ(433ポイント)   Date: 2010/04/07(水) 18:52   No:50258       返信  引用  編集 
Title: 無題    
i studied in japan two years SE in vocational school,
now i just entered japanes company as a programmer ,
 i sudied c language programming too , but in school teacher gave some not 
and we type in editor(Terapad, ) 
than compiler thats all i dont know any idea please do you have any idea for being programmer ,
 i am  really regret i paid huge money in school nothing got really,
please give me advice how i become programmer 

================================================================

Name: sizuma  ..プログラマー(38,711ポイント)   Date: 2010/04/07(水) 21:06   No:50261       引用  編集 
Title: Re:無題    
First,I cant use English well. 

Japanese people think the world of polite. 
I don't now what to behave in the other country people.   
So I suggest to you write thank to people who answered your question at before Thread. 

Now,to return to the subject. 
I don't know that vocational school.How and What teaching. 
Can you listen Japanese? 
If you cant listen Japanese,you must able to do. 
If you can communicate in Japanese, you can work as programmer. 


英語難しい。 
勉強しなくては。 
ちゃんとした回答は他の出来る人がしてくれることをexcept。 

================================================================

Name: sizuma  ..プログラマー(38,777ポイント)   Date: 2010/04/07(水) 21:19   No:50262       引用  編集 
Title: Re:無題    
This page's rule.(very simple) 

・When solved question,check the solved mark. 
 And thank for person who answered. 
マーク□解決!←this! 

・Write question summary in title 
タイトル|____________|←this! 

・Be polite.

================================================================

Name: lbfuvab  ..プログラマー(25,016ポイント)   Date: 2010/04/07(水) 23:01   No:50263       引用  編集 
Title: Re:無題    
日本語訳としては 
「私は職業訓練学校で2年間システムエンジニアリングを学び、つい先日日本の企業にプログラマとして就職しました。 
学校ではC言語も習いましたが、教師はあまり教えてくれず、コンパイラよりエディタばかりを使っていました。(←の和訳は適当です) 
プログラマになるにはどうすればいいでしょう。 
私は現在学校に莫大なお金を払った事をとても後悔しています。 
私がどうすればプログラマになれるかアドバイスしてもらえませんか? 
」 

といった感じだと思います(一行で書かれると読み辛い・・・)

================================================================

Name: たいちう  ..熟練のプログラマー(68,192ポイント)   Date: 2010/04/08(木) 00:51   No:50265       引用  編集 
Title: Re:無題    
No communication, no job. 

It is not difficult to study programming by yourself. 
But even if you have had great skill of programming, 
no one can give you job without way of mutual understanding. 
Many Japanese programmers, born in Japan and can speak only Japanese, 
have poor communication skill, so therefore their works are poor. 

You don't have to be able to speak Japanese fluently like native speakers. 
But you have to be able to understand Japanese language enough, 
otherwise someone have to check all your work completely. 

You said you are employed as a programmer in Japan. 
For now, keep studying programming and Japanese (and English too, if possible). 
Keep showing your improvement to your colleagues, 
you will find better days, I hope and I believe.

================================================================


1,304ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,170,806ポイント)   Date: 2010/04/08(木) 20:59   No:50329     
Title: Re:無題    


Name: Ma  ..比類無きプログラマー(79,484ポイント)   Date: 2010/04/08(木) 01:51   No:50268       引用  編集 
Title: Re:無題    
I have no idea how well you do in programming, but I bet you have enough skills to became a programmer as a career. 
And because you certainly got the job, I assume that you understand most of the basic grammer rules of what ever language you used in the vocational school. 
(I never been in such a school, so I'm just assuming.) 

Similar to what others have said, in order to learn programming from japanese colleagues who don't speak English well, you must first learn Japanese well enough to communicate. 

I believe the primary learning source when someone gets a job is people who are there in your working environment. 
And therefore, I think you would learn the most out of those colleagues. 
If you don't want your colleagues to teach you the programming, you better learn it by yourself using Internet or get a new job. 

It is your responsibility to become adequate to perform your tasks as long as you get to live with the your job. 

If you want a further advice, I think you need to ask more specific question rather than asking how to become a better programmer. 

Good luck. 


* And are you really an English native speaker? 

================================================================

Name: dic  ..熟練のプログラマー(59,146ポイント)   Date: 2010/04/08(木) 11:35   No:50275       引用  編集 
Title: Re:無題    
obama say "change!" 

================================================================

Name: たいちう  ..熟練のプログラマー(68,511ポイント)   Date: 2010/04/08(木) 12:01   No:50278       引用  編集 
Title: Re:無題    
Maさん 

> And are you really an English native speaker? 

誰も一言もそのような発言はしてないと思いますが。 
"really"は不要じゃないかと。

================================================================

Name: Ma  ..比類無きプログラマー(79,721ポイント)   Date: 2010/04/08(木) 12:25   No:50281       引用  編集 
Title: Re:無題    
>誰も一言もそのような発言はしてないと思いますが。  
>"really"は不要じゃないかと。 
たしかに、そのとおりですね。

================================================================

Name: 通り  ..かけだし(1,230ポイント)   Date: 2010/04/08(木) 16:29   No:50296       引用  編集 
Title: Re:無題    
英語でも日本語でもコミュニケーション取れないんじゃ、何なら取れるの? 
母国語は何?

================================================================

Name: 通り  ..かけだし(1,254ポイント)   Date: 2010/04/08(木) 17:39   No:50298       引用  編集 
Title: Re:無題    
 what you talking? 
i am english native speaker  

================================================================

Name: たかぎ [URL]  ..ハッカー(174,030ポイント)   Date: 2010/04/08(木) 17:56   No:50299       引用  編集 
Title: Re:無題    
外国人なら英語ができると考えるのが、そもそもの間違いですね。 
おそらく母国語は、シナ・チベット語族のどれかだと思いますよ。 

================================================================


Name: ジジ猫  ..ぴよぴよ(981ポイント)   Date: 2010/04/08(木) 18:24   No:50303       引用  編集 
Title: Re:無題    
僕もエディタばっかりだったんで(だから初心者なんですが) 

アイデアはこの掲示板使ってる人のほとんどが持っていると思うんですよ。 
でも、それは私たちは教えることができないんです。 
自分たちのアイデアは使われたくないし、もし使えてもそれはあなたのアイデアじゃないんですよ。 
アイデアは自分で考えて作るべきです。 

↑英語得意じゃないんで三行目から六行目まで誰か訳してください・・・。 
首突っ込んですみませんでした。

================================================================

Name: rajan  ..ぴよぴよ(367ポイント)   Date: 2010/04/08(木) 11:10   No:50274       返信  引用  編集 
Title: 無題    
いつも ありがとうございます  

c言語 から ipod とか iphone みたい application(アップリケション)作りたい 
もし なにか idea あれば お願いします 

================================================================

Name: dic  ..熟練のプログラマー(59,159ポイント)   Date: 2010/04/08(木) 11:36   No:50276       引用  編集 
Title: Re:無題    
持ってない 私 idea 


================================================================


Name: 通り  ..かけだし(1,186ポイント)   Date: 2010/04/08(木) 11:56   No:50277       引用  編集 
Title: Re:無題    
頑張って話してるのに茶化す書き込みはかわいそうだと思う

================================================================


807ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,172,438ポイント)   Date: 2010/04/08(木) 20:59   No:50330     
Title: Re:無題    

Name: Ma  ..比類無きプログラマー(79,672ポイント)   Date: 2010/04/08(木) 12:05   No:50279       引用  編集 
Title: Re:無題    
過去 レス 返信して。 
放置 禁止 

勉強して プログラミング。 遊んでないでさ。 


>茶化す 
これ以外のスレ(2件?)でも付き合ってる人にとっては茶化したくもなります(笑 

* Abandoning the past posted thread without any reply to the answers is considered very rude and immoral in this forum. 
(At least I believe so.) 

Just post a message to thank for reply or push the "解決" button and post to represent that the question has been resolved. 

================================================================

Name: sizuma  ..プログラマー(38,799ポイント)   Date: 2010/04/08(木) 12:25   No:50280       引用  編集 
Title: Re:無題    
勝手ながら削除 

================================================================

Name: たいちう  ..熟練のプログラマー(68,793ポイント)   Date: 2010/04/08(木) 14:04   No:50288       引用  編集 
Title: Re:無題    
まずはリンク先を読み、自分にできそうか考えてください。 

http://gihyo.jp/dev/serial/01/iphone/0001 
http://ameblo.jp/5min-programming/entry-10122409260.html 


# To Japanese people 

# 質問者に問題があるとは思うけど情状酌量の余地は多分にあると思う。 
# もっと優しくなれないかな。 

# この掲示板を見ている人の大半は中学から英語を習っている大学生以上の日本人だと思うけど、 
# アメリカにプログラマとして就職して、この質問者よりもうまく立ち回る 
# 自信のある人はどの位いますか? 
# この質問者を日本人に例えると英語圏ですらない国に就職しているようなものだと思うよ。

================================================================

Name: rajan  ..ぴよぴよ(374ポイント)   Date: 2010/04/08(木) 14:28   No:50289       引用  編集 
Title: Re:無題    
> 持ってない 私 idea 
>  
thanks 

================================================================

Name: ラジャン  ..ぴよぴよ(30ポイント)   Date: 2010/04/08(木) 14:37   No:50290       返信  引用  編集 
Title: 無題    
遊んでないよ 
ただ 分らない どこから 
勉強 したら いいか

================================================================

Name: ROM  ..かけだし(1,342ポイント)   Date: 2010/04/08(木) 15:03   No:50293       引用  編集 
Title: Re:無題    
日本語がわからないとしても掲示板のシステム位はわかると思う。 

いつも新しいトピ立てるんじゃなくて、既にあるトピに返信投稿して下さい。 
投稿した後何か変じゃないか確かめましょう。そして言われた事をきちんと理解しましょう 

後単語ごとにスペースあけるのはやめましょう。かけてるって事はスペースあけなくても意味がわかってるはず。スペースあける利点がない。

================================================================

Name: sizuma  ..プログラマー(38,733ポイント)   Date: 2010/04/08(木) 14:49   No:50291       引用  編集 
Title: Re:無題    
>たいちうさん 
もっともですね。 
この人よりは、とは思いますが、周りに不快な思いをさせることもあるでしょう。 
確かにフランス、イタリアのカンファレンスで研究発表って言われても出来ないです。 

僕はやさしくなれない人なので、こんな場合の回答は控えようと思います。 


================================================================

Name: たかぎ [URL]  ..ハッカー(173,964ポイント)   Date: 2010/04/08(木) 15:02   No:50292       引用  編集 
Title: Re:無題    
仕事でやっているのなら、まずは勤務先の同僚や先輩に質問するのが筋です。 

事情に関しては心情的には察します。 
けれども、心情的なことを持ち出すなら、別の心情もあるわけで、残念ながら私にはそれを乗り越えられるような「友愛」精神はなさそうです。 

# だったら何もいうな! といわれそうですが、この発言の意味がわかる人にはわかるということで... 

================================================================

Name: rajan  ..ぴよぴよ(411ポイント)   Date: 2010/04/08(木) 16:08   No:50294       返信  引用  編集 
Title: 無題    
ohi 出来るなら 正しいこと 教えて くれ 
出来ない なら (不適切な発言であったため管理人が削除しました)

================================================================

Name: ROM  ..かけだし(1,372ポイント)   Date: 2010/04/08(木) 16:15   No:50295       引用  編集 
Title: Re:無題    
どう見てもわざと荒れそうな発言して反応をおもしろおかしく見ているようにしか見えません。 
本当は流暢に話せるんでは? 

どんな書き込みをしても勝手ですが、このように発言するたびに新しいトピをたてては他の人に迷惑です。 
迷惑な行為だけはしないように。

================================================================


1,632ポイント を手に入れた。

Name: Ma  ..比類無きプログラマー(80,063ポイント)   Date: 2010/04/09(金) 01:50   No:50351     
Title: Re:無題    
I believe the best advice is "go to company where you can do the best."
Not where you can't communicate.
Maybe it is harsh advice, but I believe that is the reality.

And to study, learn from people who you can really talk to.
Obviously, you are not communicating enough even in this forum.


To: other than rajan.
残念ながら、何人であろうと掲示板に書き込む以上責任を持って書き込まなければなりません。
私がどこかの国の掲示板に書き込む時、私はその掲示板のルール等を軽く理解した上である程度の責任を持って書き込みべきだと思います。
だからこそ、私は自分の知らない言語の掲示板には書き込みません。

それから、ネットでは人種も性別も関係ありません。
全員が同じ立場であって、誰々であるから荒らしに近い行為が許されるわけではありません。
あまり無返信、放置、スレッド乱立が続くようなら投稿禁止等の処置も考慮するべきだと思います。


342ポイント を手に入れた。



Name: ガジェット  ..ぴよぴよ(464ポイント)   Date: 2010/04/08(木) 20:28   No:50322       
Title: C言語〜ゲームプログラミングの館〜について    
いつもお世話になっております。今、C言語について勉強中です。困ったことに26節の「シューティング基本。」をサンプル通りにやってみたのですが、エラーメッセージは無いのですが画面が真っ暗なんですが、
どうしたらいいのですか?
OS;WindowsXP SP3
です。どうかご指導お願いします!!


139ポイント を手に入れた。


Name: Dixq (管理人) [URL]  ..ウィザード(1,170,213ポイント)   Date: 2010/04/08(木) 20:32   No:50323     
Title: Re:C言語〜ゲームプログラミングの館〜について    
多分画像の保存場所がおかしいのではないでしょうか?
画像を使っている他の章のプログラムならうまくいきますか?

まず、1章は済んでいますか?


48ポイント を手に入れた。

Name: ガジェット  ..ぴよぴよ(536ポイント)   Date: 2010/04/08(木) 20:41   No:50324     
Title: Re:C言語〜ゲームプログラミングの館〜について    
いえ、キャラクター移動等はちゃんとできるのですが、何故か26節からできなくなってしまいました。
保存位置もしっかりとできているのですが、どうしたらいいのでしょうか?


72ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,168,672ポイント)   Date: 2010/04/08(木) 20:46   No:50326     
Title: Re:C言語〜ゲームプログラミングの館〜について    
うむむ・・そんなはずは・・。

では


#include "DxLib.h"
 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
        ChangeWindowMode( TRUE ) ;                  // ウィンドウモードに変更
        if( DxLib_Init() == -1 ) return -1 ;        // DXライブラリ初期化処理
 
 
        SetDrawScreen( DX_SCREEN_BACK ) ;           // 描画先を裏画面に設定
 
        int i ;
        for( i = 0 ; i < 300 ; i ++ )
        {
                ClearDrawScreen();                            // 裏画面のデータを全て削除
                LoadGraphScreen( i, 0, "char.png" , TRUE ) ; //裏画面へ画像を描写
                ScreenFlip() ;                                // 裏画面データを表画面へ反映
        }
 
 
        WaitKey();              // 何かキー入力があるまで待つ
        DxLib_End() ;           // DXライブラリ使用の終了処理
        return 0 ;              // ソフトの終了
}



これと



#include "DxLib.h"
 
struct shot{
        int x,y;
        int flag;
};
 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
        ChangeWindowMode( TRUE ) ;          // ウインドウモードに変更
        if( DxLib_Init() == -1 ) return -1; //DXライブラリ初期化 エラーが起きたら終了 
 
        int image[16],i,counter=0; //counter=発射してからのカウントをする変数。
        char Key[256];
        struct shot tama[10];               //tamaを10個作る。
 
        for(i=0;i<10;i++){                  //初期化処理
                tama[i].x=640/2; tama[i].y=480; //座標代入
                tama[i].flag=0;                 //飛んでいない事を示すフラグ=0
        }
 
        SetDrawScreen( DX_SCREEN_BACK ) ;//描画先を裏画面に設定
 
        LoadDivGraph( "char.png" , 16 , 4 , 4 , 32 , 32 , image ) ;//画像を分割してimage配列に保存
                                
        while(1){
                ClearDrawScreen();                   //裏画面のデータを全て削除
                GetHitKeyStateAll( Key ) ;           // すべてのキーの状態を得る
 
                if( ProcessMessage() == -1 ) break ; //異常がおきたら終了
 
                if(counter<5)                        //前にエンターを押してから5カウント未満なら
                        counter++;                       //カウントアップ
 
                else if( Key[ KEY_INPUT_RETURN ]  == 1 ){//5カウント以上たっていたら
                        counter=0;                       //カウンターを戻す
                        for(i=0;i<10;i++){             
                                if(tama[i].flag==0){     //発射していない玉を探し、
                                        tama[i].flag=1;  //発射フラグを立てる
                                        break;
                                }
                        }
                }
                for(i=0;i<10;i++){
                        if(tama[i].flag==1){              //発射している玉なら
                                tama[i].y-=8;             //座標を8減らす
                                DrawGraph( tama[i].x , tama[i].y , image[1] , TRUE );//玉を描画
                                if(tama[i].y < -32){      //もし画面外まで来たら
                                        tama[i].y=480;    //初期値に戻し、
                                        tama[i].flag=0;   //発射フラグを戻す
                                }
                        }
                }
                
                if( Key[ KEY_INPUT_ESCAPE ]  == 1 ) break;//Escボタンが押されたらブレイク
 
                ScreenFlip() ;//裏画面データを表画面へ反映
        }
        DxLib_End() ;// DXライブラリ使用の終了処理
        return 0 ;// ソフトの終了
}



これ、両方画像が表示されることを確認してみてください。


1,977ポイント を落としてしまった。

Name: ガジェット  ..ぴよぴよ(607ポイント)   Date: 2010/04/08(木) 21:09   No:50331     
Title: Re:C言語〜ゲームプログラミングの館〜について    
上のサンプルプログラムでは正常に動くのですが、下のサンプルプログラムは真っ暗な画面が出るだけです。
あと、どちらのサンプルプログラムも、エラーメッセージはありませんでした。
どうしたらいいのですか?


71ポイント を手に入れた。

Name: ムンバ  ..プログラマー(29,813ポイント)   Date: 2010/04/08(木) 21:19   No:50332     
Title: Re:C言語〜ゲームプログラミングの館〜について    
こんばんは。
私も、ガジェットさんと同じ現象が起こります。^^;

OS:Windows7(Pro)
DXライブラリ:Ver 3.00f
VC++2008(たぶんSP1)


Name: Dixq (管理人) [URL]  ..ウィザード(1,172,710ポイント)   Date: 2010/04/08(木) 21:23   No:50333     
Title: Re:C言語〜ゲームプログラミングの館〜について    
おかしいなぁ・・こちらでは正常に動きます。
プロジェクトごとアップしてみました。
これなら動くはずです。
これを見ながらちょっと何が違うのか見比べてみてください。
これで表示されないとなるとエンターキーの入力が取得出来ていないとしか思えません・・。

http://dixq.net/zip/StgSample.zip

ブレイクポイントなどを使ってなぜ表示されないのか調べてみてください。


2倍のポイントを手に入れた! 272ポイント を手に入れた。

Name: ムンバ  ..プログラマー(29,876ポイント)   Date: 2010/04/08(木) 21:23   No:50334     
Title: Re:C言語〜ゲームプログラミングの館〜について    
ああっ!?もしかして、エンターキー押して無いとか言う落ち・・・?
でした。
エンターキー押したら出ました。
相変わらず、どじ間抜けでした。失礼します。<(_ _)>

---↓編集・追記---
>相変わらず、どじ間抜けでした。

は、ガジェットさんの事では無く、私の事ですので。^^ 編集済み


63ポイント を手に入れた。

Name: ガジェット  ..ぴよぴよ(656ポイント)   Date: 2010/04/08(木) 21:31   No:50335 解決!     
Title: Re:C言語〜ゲームプログラミングの館〜について    
上のプロジェクトをやってみたら正常に動きました。ありがとうございました。
今後もこんなミスがない様にがんばりたいです!!


49ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,172,781ポイント)   Date: 2010/04/08(木) 22:20   No:50336     
Title: Re:C言語〜ゲームプログラミングの館〜について    
解決したようでよかったです。
・・が、私のプロジェクトはDXライブラリのサンプルフォルダと同じなので、
違いがあるはずがないのですが・・
ガジェットさんの不具合は何だったのでしょうか?


71ポイント を手に入れた。



Name: ジジ猫  ..ぴよぴよ(848ポイント)   Date: 2010/04/08(木) 18:11   No:50300       
Title: またまたSLG。    
前回はありがとうございました。

今回、移動のことについて質問なんですが。

とりあえず前回、どれくらいの完成度を求めているかということなので、
東方の世界をスパロボ風にした「幻想少女大戦」ぐらいにしたいと思っています。

さて、本題です。
移動するときには必ず移動可能範囲があり、その範囲より先は進めないようになっています。
僕の考えのゲームではスパロボにはない、歩くという動作をつけます。

まず、移動させたいキャラの上でコマンド→移動を選択します。
次に、その移動ルートのマスを十字キーで描いていきます。
 そのときカーソルの代わりの逆三角形▽が画面の中心となるようスクロールもします。
移動可能範囲はキャラから数マスはなれた場所(縦横合計七マスなど)とし、その範囲内なら何マスでも進めます。
 移動ルートに障害物、相手キャラがいては通れません。
 また、移動先に障害物、相手キャラ、自分のほかのキャラがいれば移動できません。
条件がクリアすれば移動開始。
 移動中は移動しているキャラを画面の中心になるようにスクロールします。

こんな風なプログラムなんですが、複雑でわかりません・・・。
助けてください。お願いします。


2倍のポイントを手に入れた! 570ポイント を手に入れた。


Name: ジジ猫  ..ぴよぴよ(868ポイント)   Date: 2010/04/08(木) 18:17   No:50301     
Title: Re:またまたSLG。    
余談ですが・・・。

外国人さんがいるようですね。


20ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(144,308ポイント)   Date: 2010/04/08(木) 18:28   No:50304     
Title: Re:またまたSLG。    
>こんな風なプログラムなんですが、複雑でわかりません・・・。 
それは初心者が陥りやすい罠です。
複雑なものを一度に作ろうとして、ワケが分からなくなるという症状ですね。
段階を追って徐々に複雑にしていきましょう。

(1)マップを表示。
(2)自キャラを表示。
(3)移動キー?を押したら三角マークを表示。
(4)三角マークをキーを押した方向に移動する。
(5)三角マークに合わせてマップをスクロールする。
(6)地形障害物の処理。歩けない場合は止まる。
(7)移動した距離を計算する。→デバッグとして表示。
(8)移動時に戻ったらちゃんと減算する。
(9)可能移動力を使い切ったら移動不能とする。
(10)相手キャラやら味方キャラを表示する。
(11)相手や味方キャラとの衝突判定を追加。
(12)決定を押したら移動準備完了。

と、ここまでを徐々1つづつに作ってみましょうか。
出来ている点と分からない処を教えてください。


394ポイント を手に入れた。

Name: ジジ猫  ..ぴよぴよ(968ポイント)   Date: 2010/04/08(木) 18:38   No:50306     
Title: Re:またまたSLG。    
一つずつプログラムしてもいいんですか?

13ポイント を落としてしまった。

Name: softya [URL]  ..ハッカー(144,486ポイント)   Date: 2010/04/08(木) 18:46   No:50307     
Title: Re:またまたSLG。    
>一つずつプログラムしてもいいんですか?

1つづつと言うのは(1)をベースにどんどん機能を追加して行くって意味です。
ゲームプログラミングの館でもつづいている所(17〜25bとか)は、そうなってますよね。


90ポイント を手に入れた。

Name: ジジ猫  ..かけだし(1,046ポイント)   Date: 2010/04/08(木) 18:52   No:50308     
Title: Re:またまたSLG。    
ありがとうございます。

早速やってみたいと思います。

プログラムじゃないんですが、作ってるときアシストが欲しいと思ったんです。

背景、音楽、他プログラムを教えてくれる方がいれば手伝って欲しいです。
お願いします。


2倍のポイントを手に入れた! 78ポイント を手に入れた。

Name: ジジ猫  ..かけだし(1,053ポイント)   Date: 2010/04/08(木) 18:54   No:50309 解決!     
Title: Re:またまたSLG。    
一応、解決としておきます。

7ポイント を手に入れた。

Name: あ〜る  ..上級者(17,324ポイント)   Date: 2010/04/08(木) 19:02   No:50313     
Title: Re:またまたSLG。    
別に僕が手伝えるって訳じゃないんですけど(ぉ

背景とか音楽だったらフリーでいっぱいあるんで、特にこだわりたいところ(自機とか)以外はそれを使うのもありなんじゃないでしょうか?
スパロボ風なら草原やら山やらのフィールド素材は多分そういうのを専門に作って公開してるような方もいらっしゃるでしょうし
まぁ気に入ったのが無ければ自分で作るしかないんですけどね(-.-;)



166ポイント を落としてしまった。

Name: Dixq (管理人) [URL]  ..ウィザード(1,170,649ポイント)   Date: 2010/04/08(木) 20:44   No:50325     
Title: Re:またまたSLG。    
前仰っていたメニュー画面は完成しました?

先ほどのトピではなるべく真剣に答えましたが、共同制作の募集をかなり安易に考えられているような気がしてなりません・・。

初めてゲームを作るんですよね。
その素材が欲しいから素材をくれる人が欲しいと。

ゲーム制作において素材が欲しいと思うことは常にあります。
私もずっと思っていました。
きっとみんなそうだと思います。

初めて作るのなら、まずはフリーで探すか、自分で作ってみてはいかがでしょうか?
他トピでsoftyaさんに「ゲームシステムの構造は完成しています。後はプログラムだけです」ということを言っていましたが、
みんなそうですよ。
「こんなゲームが作りたい」と思うからその完成に向けて制作をするわけで、その時点でだいたいゲームシステムは決まっているでしょう。
「作りたいゲームは決まってるから、後はプログラムと音楽と絵が出来れば完成」というのは当然のことのように思います。
しかしその決まっていると思っているゲームシステムは仕様として完成出来るレベルには程遠いもの。
「こんなゲームにしたい」と思えることがゲームシステムを完成させたことと同義にはなりません。
きっとプログラムを設計するまで落とし込めば決めていなかった仕様は沢山現れてくるでしょう。

メニュー画面と、現在出来ているゲームシステムはどの程度ですか?
最初から大きなものを作ろうとするとかなりの確率で挫折します。
一人なら挫折してもいいでしょうけど、募集をかけた後にやめたくなってもなかなか難しいですよ。

また、初めて作ると、必ずと言っていいほど途中で最初から作り直したくなります。
そうなった時最初から作り直す旨を仲間に言えるでしょうか。
これもなかなか難しいですよ。

「初めて」のうちは勉強しながらボチボチやっていくのがいいような気がします。


436ポイント を手に入れた。



Name: ひょう  ..ぴよぴよ(289ポイント)   Date: 2010/04/08(木) 00:56   No:50266       
Title: 通信プログラムについて    
お願いします。助けてください・・・

ソケット通信に挑戦したくて
http://www.nakka.com/lib/inet/tcpc.html
このサイトを見て勉強してるんですが、

#include <winsock.h>
をソースに追加して
サイトに書いてあることいろいろ試したのですが
エラーが出てしまい困ってます・・・

wsock32.lib
をリンクするって書いてますが
コンパイルするときにリンカをしたことないので
どうすればいいかわかりません。

教えてください。


開発環境は
WindowsでVC++ 2008でCUI(Visual Studio 2008 コマンドプロント)
でコンパイルしています。
GUIは使いません。

わかる方、ご教授お願いします。


289ポイント を手に入れた。


Name: Ma  ..比類無きプログラマー(79,593ポイント)   Date: 2010/04/08(木) 07:14   No:50269     
Title: Re:無題    
私もつい最近リンクの仕方を覚えたばかりなので、成功するかわかりませんが

プロジェクトのプロパティ→構成プロパティ→リンカ→入力→追加の依存ファイル
ここの欄に *.lib のファイル名(拡張子つき)でいれればできるかと。


109ポイント を手に入れた。

Name: ひょう  ..ぴよぴよ(324ポイント)   Date: 2010/04/08(木) 12:33   No:50282     
Title: Re:無題    
Maさん
返信ありがとうございます。

恐らくMaさんのやり方はGUIでの操作
だと思うのですが、CUIでのやり方
はご存知ありませんか?


35ポイント を手に入れた。

Name: やんち  ..ぴよぴよ(482ポイント)   Date: 2010/04/08(木) 12:40   No:50283     
Title: Re:無題    
cl programfile.c wsock32.lib
でリンク出来るみたいですよ。

カテゴリ別のコンパイラ オプション
http://msdn.microsoft.com/ja-jp/library/19z1t1wy%28v=VS.90%29.aspx

リンカ オプション
http://msdn.microsoft.com/ja-jp/library/y0zzbyt4%28v=VS.90%29.aspx

環境ないので、試してません。


77ポイント を手に入れた。

Name: YuO  ..熟練のプログラマー(43,066ポイント)   Date: 2010/04/08(木) 12:40   No:50284     
Title: Re:無題    
単純に,.libもソースファイルと同じようにcl.exeに渡すだけです。
MSDN: CL ファイル名の構文
http://msdn.microsoft.com/ja-jp/library/9bk45h3w.aspx

clとlinkにわけている場合は,.objと同じようにlink.exeに渡します。
MSDN: リンカ コマンド ラインの構文
http://msdn.microsoft.com/ja-jp/library/hx5b050y.aspx


2倍のポイントを手に入れた! 168ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(143,914ポイント)   Date: 2010/04/08(木) 12:43   No:50285     
Title: Re:無題    
CUIってコマンドプロンプトでclって打つ場合の話ですか?

わざわざ手打ちって事は勉強のためですよね?
こちらで勉強なさってください。
http://msdn.microsoft.com/ja-jp/library/9s7c9wdw%28VS.80%29.aspx
ちなみに統合環境を使えば指定されているオプションを確認できますので、そちらを真似するのも手です。


2倍のポイントを手に入れた! 64ポイント を手に入れた。

Name: ひょう  ..ぴよぴよ(368ポイント)   Date: 2010/04/08(木) 13:24   No:50286 解決!     
Title: Re:無題    
みなさん
ありがとうございます。

参考URLを貼っていただけたので
そちらで勉強したいと思います。


44ポイント を手に入れた。



Name: yskey  ..入門者(4,815ポイント)   Date: 2010/04/06(火) 22:03   No:50238       
Title: 【お勧めC/C++本ありますか?】(現:ソフトバンク「新訂新C言語入門ビギナー」    
どうもyskeyです。お世話になっています。m(_ _)m

現在C/C++を習得中で、今まで”ソフトバンク「新訂新C言語入門」”を片手にやって参りました。
CもC++もビギナー編を持っているのですが、そろそろビギナーでは物足りなく感じます。

そこで皆さんがお勧めの本をご紹介していただけないでしょうか?
出来れば具体的な内容がわかれば嬉しいです。

余談なんですが、C言語の上級書籍はC++の上級書籍に完全に内包されるものなんですか?
(上級書籍テナンダソレ(;・∀・)


219ポイント を手に入れた。


Name: たかぎ [URL]  ..ハッカー(173,785ポイント)   Date: 2010/04/06(火) 22:26   No:50239     
Title: Re:【お勧めC/C++本ありますか?】(現:ソフトバンク「新訂新C言語入門ビギナー」    
立場上は自分の本を勧めるべきなのかもしれませんが...

分野を特定しないのであれば、とりあえずはアルゴリズム関係の本を読みましょう。
あとは、目的とする分野の技術に関する本ですね。

> 余談なんですが、C言語の上級書籍はC++の上級書籍に完全に内包されるものなんですか? 

そんなことはありません。
CとC++はまったく別の言語だと考えてください。
http://www.kijineko.co.jp/tech/cpp2c


112ポイント を手に入れた。

Name: yskey  ..入門者(4,871ポイント)   Date: 2010/04/07(水) 20:52   No:50260 解決!     
Title: Re:【お勧めC/C++本ありますか?】(現:ソフトバンク「新訂新C言語入門ビギナー」    
>>たかぎさん ありがとうございマス。
なるほど、アルゴリズムですね…
一度本屋をまわってみたいと思います。


56ポイント を手に入れた。



Name: ひろぽん  ..ぴよぴよ(15ポイント)   Date: 2010/04/07(水) 14:57   No:50254       
Title: RPGのサンプルがダウンロードできません    
タイトルどおり、RPGのサンプルがダウンロードできません

15ポイント を手に入れた。


Name: softya [URL]  ..ハッカー(143,850ポイント)   Date: 2010/04/07(水) 15:05   No:50255     
Title: Re:RPGのサンプルがダウンロードできません    
これですよね?
http://dixq.net/sm/d10.html
今試しましたが、ダウンロードも解凍も問題なくできます。

どのような手順でダウンロードして、どの様な問題が出たか詳細にお願いします。


64ポイント を手に入れた。

Name: ひろぽん  ..ぴよぴよ(0ポイント)   Date: 2010/04/07(水) 15:57   No:50257 解決!     
Title: Re:RPGのサンプルがダウンロードできません    
ありがとうございます

そのページからダウンロードできました

http://dixq.net/sakuhin.html

ここのダウンロードから行こうとして失敗しました


78ポイント を落としてしまった。



Name: ムンバ  ..プログラマー(28,991ポイント)   Date: 2010/04/06(火) 01:12   No:50199       
Title: CGI(Perl)の環境変数 $ENV{'ASL.LOG'}につきまして    
こんばんは。お世話になります。<(_ _)>

CGI(Perl)スクリプトで、環境変数を読み込み表示するスクリプトを作成しています。
ログファイル等の記録するファイルは今の所、作成していません。
添付ファイルの様に、読み込んで表示するだけのスクリプトです。

環境変数の 'ASL.LOG' なのですが、何を読み込んでいるのか解りません。
(「読み込んで」が不適切な表現でしたら、ご指摘下さい。)

この環境変数 'ASL.LOG' 以前は無かった様な気がするのですが、気のせいかもしれません。^^;
'ASL.LOG'は、何を呼び出す環境変数なのでしょうか?
検索エンジンで探してみたのですが、見つかりませんでした。

OS:Windows7(Pro)
サーバー:AN HTTPD
Perl:v5.10.1
エディタ:PerlEditor

場違いとは思いますが以前、CGIの質問等させて頂いていたサイトが
閉鎖や会員制?になってしまっているので、こちらで質問させて頂きました。
解る方がいらっしゃいましたら、ご指導の程、宜しくお願い致します。
また、質問できる様な参考サイトなどご存知でしたら、ご紹介下さい。

勝手で申し訳御座いませんが、今日は寝てしまいます。(質問するのが限界でした。<謝
何卒、宜しくお願い致します。<(_ _)>


409ポイント を手に入れた。


Name: softya [URL]  ..ハッカー(143,610ポイント)   Date: 2010/04/06(火) 01:54   No:50201     
Title: Re:CGI(Perl)の環境変数 $ENV{'ASL.LOG'}につきまして    
ASL.LOGで引っかかるのがMAC系ばかりなんですが、このPerlのコードの原型はどこから入手されましたか?

47ポイント を手に入れた。

Name: ムンバ  ..プログラマー(29,301ポイント)   Date: 2010/04/06(火) 10:03   No:50207     
Title: Re:CGI(Perl)の環境変数 $ENV{'ASL.LOG'}につきまして    
おはようございます。
softyaさん、ご返答ありがとうございます。

foreach $date(sort keys %ENV){
   print "$ENV{$date} = $ENV{$date}\n";
}
(↑ } が抜けてましたので編集・追記)

このソースで、全ての環境変数(61項目?)が取得できるのですが
3番目の環境変数が'ASL.LOG'なのです。

取得した値も搭載した方がいいのであれば搭載させて頂きますが
セキュリティー上、搭載しても良いものかどうかの判断が付きません。(汗
私のPCのフォルダの階層?の様な結果が出ます。
必要であれば、帰宅次第、搭載させて頂きますが
帰宅しなければわからないので夜になってしまいます。(謝

仕事の合間に、引き続き検索かけてみます。
また何か、お気付きの事などあれば宜しくお願い致します。 編集済み


310ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(143,617ポイント)   Date: 2010/04/06(火) 11:48   No:50216     
Title: Re:CGI(Perl)の環境変数 $ENV{'ASL.LOG'}につきまして    
ASL.LOGは何らかのソフトの環境変数なのでしょうね。何らかのソフトをインストールしたときに環境変数が設定されたものと思われます。
ただ、どのソフトと関係しているか私には知識がありません。
検索にも引っかかりませんので、ムンバさんにしか分からない事かと思います。

ASL.LOGの情報は掲載不要ですよ。


7ポイント を手に入れた。

Name: ムンバ  ..プログラマー(29,378ポイント)   Date: 2010/04/06(火) 12:02   No:50217     
Title: Re:CGI(Perl)の環境変数 $ENV{'ASL.LOG'}につきまして    
お忙しい中、再度ご返信頂きありがとうございます。

そうでしたか。ソフトとは気が付きませんでした。
帰宅したら確認してみます。
確認できましたら、またこちらにて報告させて頂きます。
(21時位になってしまうと思います。)
ご指導頂き、ありがとうございました。<_ _>


77ポイント を手に入れた。

Name: ムンバ  ..プログラマー(29,703ポイント)   Date: 2010/04/06(火) 21:22   No:50235     
Title: Re:CGI(Perl)の環境変数 $ENV{'ASL.LOG'}につきまして    
何度も、申し訳御座いません。(謝

---↓編集・追記---
下のサイトを開くと、スパイウェア:トラッキングクッキーの「COOKIE_DOUBLECLICK」
が入ってしまうようです。
ですので、リンク先のアドレスの頭の h を外しました。
ご面倒をお掛けします。(謝
---↑編集・追記---


ttp://honyaku.yahoofs.jp/url_result?ctw_=sT,eCR-EJ,bT,hT,uaHR0cDovL3d3dy5teWFudGlzcHl3YXJlLmNvbS9mb3J1bS92aWV3dG9waWMucGhwP3Q9MzExNA==,qlang=ja|for=0|sp=-5|fs=100%|fb=0|fi=0|fc=FF0000|db=T|eid=CR-EJ,

ヤフー検索にて翻訳してから飛んだサイトです。(開くのに少々時間がかかります。)
このサイトで ASL.LOG と検索すると

ASL.LOG = Destination=file;OnFirstLog=command,environment

最初の↑イコール以下が、私のPCの環境変数(ASL.LOG)と丸々同じ結果が表示されてます。

英語がさっぱりですし翻訳ページだと言う事もあり
この環境変数の結果が、上述のサイトに書かれていても
何を意味するものか、私には解りませんでした。

これは良からぬ事をする、ファイルか何かなのでしょうか?
ご存知の方がいらっしゃれば、ご指導の程お願い致します。
引き続き、訳の解らぬ質問で申し訳御座いません。(_ _) 編集済み


325ポイント を手に入れた。

Name: ムンバ  ..プログラマー(29,813ポイント)   Date: 2010/04/07(水) 15:42   No:50256 解決!     
Title: Re:CGI(Perl)の環境変数 $ENV{'ASL.LOG'}につきまして    
こんにちは。

どうやら、Java と Perlフォルダが関係してそうです。
今の所、いたずらはしてないようです。

softyaさん、ご指導ありがとうございました。
また何かありましたら、宜しくお願い致します。
お騒がせしました。<_ _>


110ポイント を手に入れた。



Name: パプリカ  ..ぴよぴよ(150ポイント)   Date: 2010/04/04(日) 10:26   No:50123       
Title: 無題    
初心者なのですが今、ゲームプログラミングをしたいと思っています。
それで、14歳から始めるC言語ゲームプログラミングと言う本を買ったのですが、
全然ゲームプログラミングのところが理解できません。
その本の前の章では、普通のプログラミングでした(変数や配列など)
これは理解できました。どうしたらゲームプログラミングを
こなせるようになりますか?
一番最初になんのゲームを作ったらいいですか?


150ポイント を手に入れた。


Name: パプリカ  ..ぴよぴよ(158ポイント)   Date: 2010/04/04(日) 10:27   No:50124     
Title: 初心者からの質問    
タイトル忘れ

8ポイント を手に入れた。

Name: Ma  ..比類無きプログラマー(73,954ポイント)   Date: 2010/04/04(日) 11:09   No:50125     
Title: Re:初心者からの質問    
その本買ってないので、その章についてはアドバイスできませんが、他のことならアドバイスできるかも。

>一番最初になんのゲームを作ったらいいですか? 
じゃんけんゲームが一番簡単だと思いますよ。
じゃんけんが簡単すぎるなら、難易度上昇順でマインスイーパ、ブロック崩し、オセロ、テトリス等。
あと、なにより重要なのは、自分が作ってみたいと思うゲームを作ることかな。

私の場合、じゃんけんゲーム作った後は、すでにあるゲームはあまり面白くないので、自分で考えたカードゲームとか作りましたね。
文字列でちょっと3Dなタイトル作ったりトランプのカードを作るのが、楽しかったですねw 編集済み


138ポイント を落としてしまった。

Name: fatens  ..中級者(10,566ポイント)   Date: 2010/04/04(日) 11:11   No:50126     
Title: Re:初心者からの質問    
まずはじゃんけんゲームとかはどうでしょう。

自分の手を入力し、相手の手はランダムに決めます。
これを10回行い、最後に勝敗と勝率を表示します。
(あいこになったときの動作は好きにしてください)

これだけでも、条件分岐や繰り返し、乱数などゲームの基本的な要素が含まれています。


2倍のポイントを手に入れた! 156ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(142,713ポイント)   Date: 2010/04/04(日) 11:37   No:50127     
Title: Re:初心者からの質問    
まず始めはゲームになっていなくても良いので、画像が左右に動くとか円運動するとかあたりから始めてみたらどうしょうか?それをどんどん発展させていく形で勉強します。



77ポイント を手に入れた。

Name: バグ  ..ハッカー(194,350ポイント)   Date: 2010/04/04(日) 11:52   No:50128     
Title: Re:無題    
あの本は『C言語の入門書』ではなく、C言語を使った『ゲームプログラミングの入門書』ですからね…。
一応、申し訳程度に完全な初心者向けの説明も載ってはいますが、『C言語の入門書』としては物足りないですよね。


65ポイント を手に入れた。

Name: パプリカ  ..ぴよぴよ(214ポイント)   Date: 2010/04/04(日) 12:05   No:50129     
Title: Re:初心者からの質問    
皆さんありがとうございます。
こんな初心者に教えてくれて。
じゃんけんゲームの解説が載っているサイトはありませんか?


56ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(142,617ポイント)   Date: 2010/04/04(日) 12:09   No:50130     
Title: Re:初心者からの質問    
>じゃんけんゲームの解説が載っているサイトはありませんか? 

ただの人間対コンピュータのジャンケンですよ。
まずルールを明確に文章化出来るかがプログラミングの手始めです。
入出力を意識してルールを文章でここに書いてみてください。
※ サンプルを見るにしても始めにどれだけ考えてみたかで理解力がだいぶ違ってきます。まず、考えられるだけ考えて見ましょう。 編集済み


96ポイント を落としてしまった。

Name: パプリカ  ..ぴよぴよ(484ポイント)   Date: 2010/04/04(日) 12:38   No:50132     
Title: Re:初心者からの質問    
プレイヤーがグー・チョキ・パーを入力する。
コンピュータがグー・チョキ・パーを乱数で決める
勝ちか負けか判定
あいこの処理
勝ち負け表示
続けるか確認
続けるなら最初から
終わるなら、今までの合計得点表示(勝ち/負け)
終わり
と言う具合になればいいと思っています。
ただ全然プログラムが思いつきません


2倍のポイントを手に入れた! 270ポイント を手に入れた。

Name: Ma  ..比類無きプログラマー(74,112ポイント)   Date: 2010/04/04(日) 12:55   No:50133     
Title: Re:初心者からの質問    
その様子だと
ゲームプログラミングから始めるのではなく、C言語入門から始めるべきです。
ゲーム作りながら勉強できなくもないですが、ひどい効率になりますので、ネットで検索してヒットするC言語入門サイトをひとつ選んで、全章やるべきです。

数日で全部読みきれるので、効率をあげるための悪くない寄り道いえ寄るべき道だと思いますよ。


158ポイント を手に入れた。

Name: fatens  ..中級者(10,890ポイント)   Date: 2010/04/04(日) 12:57   No:50134     
Title: Re:初心者からの質問    
>ただ全然プログラムが思いつきません

では、一度だけ勝負するものの骨組みを書いてみます。
勝敗の判定はとりあえず全てのケースを書いてみましょう。
ちなみに、じゃんけんの手はそれぞれに対応した数値を用います。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    /* 乱数系列の初期化(srand 関数) */

    /* プレイヤーの手を入力(scanf 関数) */
    /* コンピュータの手をランダムに決定・表示(printf 関数、rand 関数) */

    /* 判定を羅列(if 文)、勝敗を表示(printf 関数) */

    return 0;
}

これができないようなら、私ももう一度勉強することをお勧めします。

投稿時間がまたMaさんの2分後... 編集済み


2倍のポイントを手に入れた! 324ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(143,309ポイント)   Date: 2010/04/04(日) 13:05   No:50135     
Title: Re:初心者からの質問    
ルールは書き出せてますが、C言語での実装方法が分からないみたいですね。

ちゃんと、C言語を学んだ方が良いと思います。
コンソールアプリでしか作れませんが、基本的なことを学べます。
http://cvwww.ee.ous.ac.jp/vc08prog.html

「猫でもわかるプログラミングのサイト」C言語編 
http://homepage2.nifty.com/c_lang/
「苦しんで覚えるC言語(苦C)」
http://homepage3.nifty.com/mmgames/c_guide/
「C言語入門」
http://www5c.biglobe.ne.jp/~ecb/c/c00.html
「C言語編」
http://www.geocities.jp/ky_webid/c/index.html
「C言語で始めるプログラミングの基礎」
http://itpro.nikkeibp.co.jp/article/COLUMN/20090420/328713/
「アルゴリズム入門」
http://www5c.biglobe.ne.jp/~ecb/algorithm/algorithm00.html

複数紹介しましたが、メインを1つ決めて他は補助として使ってください。


2倍のポイントを手に入れた! 692ポイント を手に入れた。

Name: パプリカ  ..ぴよぴよ(553ポイント)   Date: 2010/04/04(日) 13:14   No:50136     
Title: Re:初心者からの質問    
皆さんはどのサイトがオススメですか?
1つお願いします。
あと
どの程度Cができるようになったらゲームプログラミングを始めたらいいですか?


69ポイント を手に入れた。

Name: Ma  ..比類無きプログラマー(74,658ポイント)   Date: 2010/04/04(日) 13:26   No:50138     
Title: Re:初心者からの質問    
「C言語入門」 
http://www5c.biglobe.ne.jp/~ecb/c/c00.html

が、比較的初心者にやさしいとおもいます。


>どの程度Cができるようになったらゲームプログラミングを始めたらいいですか? 

入門サイトを一通り理解しながら全部読み終わったら、が適当なタイミングだと私は思います。
「ただし」、DXライブラリを使うならの話です。

じっくり、くわしく、ひろく(つまりたくさん)ならば
「猫でもわかるプログラミングのサイト」C言語編  
http://homepage2.nifty.com/c_lang/

がおすすめ(かつ人気)ですが、正直ゲームプログラミングするだけなら使わない知識の章がいくつかありますので、
個人的には初プログラミングの人にはあまり向かないサイトな気もします。 編集済み


148ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(143,563ポイント)   Date: 2010/04/04(日) 13:26   No:50139     
Title: Re:初心者からの質問    
>皆さんはどのサイトがオススメですか?1つお願いします。

私は苦Cだと思いますが、猫でもわかるプログラミングも人気があります。
こればかりは、好みの問題です。

>どの程度Cができるようになったらゲームプログラミングを始めたらいいですか? 
ゲームプログラムのコードが読めるかどうかです。
1.C言語の勉強。関数や配列ぐらいまでは最低限。
2.ゲームプログラムのコードを読んでみる。
3.C言語の文法で理解できないなら1.へ戻る。
4.更に難しいゲームプログラムのコードを読んでみる。
5.C言語の文法で理解できないなら1.へ戻る。


254ポイント を手に入れた。

Name: dic  ..熟練のプログラマー(59,139ポイント)   Date: 2010/04/04(日) 14:57   No:50141     
Title: Re:初心者からの質問    
逆にどの程度できるのですか?


7ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(173,410ポイント)   Date: 2010/04/04(日) 15:11   No:50143     
Title: Re:初心者からの質問    
初心者といっても、何に対してどの程度の初心者なのかにもよりますね。
具体的には、Cプログラミングをこれから学ぼうというのであれば、本来ならPCの操作やコンピュータの動作原理ぐらいはわかっていて当然の素養だといえます。

PCの操作が分かっていなければ、環境変数の設定方法がわからないとか、コマンドプロンプトの使い方がわからないとか、そういったCプログラミング以前のところでつまづきます。こうした基礎抜きに統合開発環境に手を出しても持て余すだけで、かえって基礎力の習得を阻害します。算数を覚え始めた小学生に、便利だというだけの理由で電卓を使わせるようなものですから。
コンピュータの動作原理がわかっていなければ、ポインタがわからないとか、(初歩的な)メモリ管理がわからないとか、本来ならそんなに難しくないはずのところでつまづきます。

PCの操作もわからず、コンピュータの動作原理もわからず、結果としてCも使いこなせないままゲームプログラミングに手を出そうとしても、雰囲気を味わうことぐらいはできても、それ以上は手も足も出ません。
「柔道でオリンピックに出たい」といって、基礎体力も付けず、受身の練習もせず、礼儀作法も身に付けないまま、いきなり試合に臨んでも、大怪我をするのがオチですね。プログラミングも似たようなものです。


530ポイント を手に入れた。

Name: パプリカ  ..ぴよぴよ(280ポイント)   Date: 2010/04/04(日) 15:32   No:50144     
Title: Re:初心者からの質問    
PCについてはあまり詳しくありません。
話が変わりますがたかぎsが柔道でオリンピックに出たいと書いていますが
パプリカは学校で柔道をやっています
なので読んで笑ってしまいました。
話が戻ります
PCについてですが、ほとんど分かりません。
なのでメモリやポインタなどで分からなくなります。
今はちなみにBcc Developer 1.2.21を使っています。
なのでコマンドプロンプトの使い方が一切分かりません
コマンドプロンプトでCが動いていることは分かるのですが、
どう使うか分かりません。
大変です。
皆さんは独学ですか?
独学ならばどうしてプログラミングを始めようと思ったのか
教えてください
お願いします


273ポイント を落としてしまった。

Name: たかぎ [URL]  ..ハッカー(173,496ポイント)   Date: 2010/04/04(日) 17:25   No:50146     
Title: Re:初心者からの質問    
> 皆さんは独学ですか? 

Cは完全に独学ですが、それ以前にアセンブリ言語をやっていましたし、ハードウェアのことも一通り勉強しました
一週間ほど真剣に取り組めば、それなりの素養は得られますので、ちょっと遠回りをしてみてはどうですか?


86ポイント を手に入れた。

Name: Tororo  ..初心者(6,319ポイント)   Date: 2010/04/04(日) 17:47   No:50147     
Title: Re:初心者からの質問    
14才の・・・を呼んでも呼んでも何一つわからなかったので、猫の所を最初から全部読みました。
それからもう一度、本を見たらよくわかるようになりました。
それからは色々なサイトを見ていったり、本を図書館で読んだりしました。


49ポイント を手に入れた。

Name: パプリカ  ..ぴよぴよ(335ポイント)   Date: 2010/04/04(日) 18:11   No:50149     
Title: Re:初心者からの質問    
苦C言語と猫ってどっちが分かりやすいですか
個人的な意見でもかまいません
あとなるべく理由もそえてお願いします
こんなぴよぴよにいろいろな意見をくださり
ありがとうございます


55ポイント を手に入れた。

Name: sizuma [URL]  ..プログラマー(38,438ポイント)   Date: 2010/04/04(日) 18:35   No:50150     
Title: Re:初心者からの質問    
僕は苦Cの方が見やすくて好みです。
書籍派なので、勉強でWebサイトは使いませんけどね。
熟読したいページがあれば、印刷して紙媒体にしてから読みます。

上の投稿を見ると、ジャンケンゲームでどんな処理をすればいいのかは分かっているようですね。
プログラミングに慣れればすぐできると思いますよ。


155ポイント を落としてしまった。

Name: パプリカ  ..ぴよぴよ(346ポイント)   Date: 2010/04/04(日) 18:43   No:50151     
Title: Re:初心者からの質問    
やさしいお言葉ありがとうございます

11ポイント を手に入れた。

Name: パプリカ  ..ぴよぴよ(387ポイント)   Date: 2010/04/04(日) 20:31   No:50153     
Title: Re:初心者からの質問    
じゃんじゃん募集中。
僕はちなみに中2です。頭は悪くは無いほうです。
ただ、プログラミングのことになると
頭が固くなります。
ははは・・・
柔道部です。


41ポイント を手に入れた。

Name: sizuma  ..プログラマー(38,180ポイント)   Date: 2010/04/04(日) 21:04   No:50154     
Title: Re:初心者からの質問    
どこでもいいから基礎なんてさっさと一度通っておけばいいと思いますよ。
どうせ使おうと思ったらまたその都度、参考にすることになると思います。(そしてまた最初からやり直すことに・・・)
休みで時間があるなら2・3日で文法をさらうことぐらい出来るでしょう。


一応上の方の質問にも回答を

>皆さんは独学ですか? 
Cは独学です。
学校でアルゴリズムを習った後だったので、すんなり入れました。
フローチャートをかく練習がいい入門になりましたね。

フローチャートとは
http://homepage1.nifty.com/Iruka/nifty/cgi/mailcheckCGI/page2.html

分岐、繰り返し、処理の3つがあれば、そのままC言語のプログラムがかけます。

例えば
2つの数a,bを比べて、大きい数をa、小さい数をbに代入するフローチャートを書く
とかね。

じゃんけんゲームのフローチャートを書いてみると、いい勉強になると思います。 編集済み


375ポイント を落としてしまった。

Name: あ〜る  ..上級者(17,490ポイント)   Date: 2010/04/04(日) 21:24   No:50155     
Title: Re:無題    
僕は14歳から始めるゲームプログラミングの本を読んで、そっから龍神録の館で勉強して、特につまづく事も無かったので何がわからないかわからないのですが…
ただとりあえず、じゃんけんゲームは14歳からはじめるC言語ゲームプログラミングに書いてあるC言語の基礎の内容(ゲームプログラミングに入る前の内容)でも、理解してれば十分出来るので、「C言語の基礎の部分は理解出来た」と言ってますが理解出来ていない可能性が高いです
C言語の基礎をしっかりと学ぶのは凄く賛成なのですが(僕自身たかぎさんの言う通りポインタとかかなり危ないですし)その際今までと同じ勉強方だと、また理解した気にだけなって理解出来ていない、なんていう風になる可能性があります。
そうなると、費やした時間は全部無駄、という事になってしまうので、勉強法を一度見直した方がいいかもしれません
僕は15歳からプログラミングを始めたんでパプリカさんの方が一年早い、つまり一年分多くの可能性が僕よりある訳です
がんばって下さい(^-^)


370ポイント を手に入れた。

Name: asd  ..上級者(20,147ポイント)   Date: 2010/04/07(水) 13:09   No:50248     
Title: Re:無題    
プログラムを勉強するのもいいですが、投稿のルールについてまず勉強しましょう。

マルチポスト
http://www2.realint.com/cgi-bin/tarticles.cgi?pointc+33631


83ポイント を手に入れた。



Name: msc  ..ぴよぴよ(63ポイント)   Date: 2010/04/03(土) 21:39   No:50104       
Title: C言語ゲームプログラミングの館の説明で分からないことtがあります    
C言語ゲームプログラミングの館でDXライブラリのバージョンがver2.22dという前提で説明が進んでいて
最新のバージョンはVer3.02なので説明がいまいち理解できないところがいくつかあります
たとえば最初のほうの〜入門編〜のところで
その中の「サンプルプログラム実行用フォルダ」を開いてください。その中にある
「DxLib_VC2008_and_2005用.sln」を開きます。
とありますがVer3.02にはそれがありません
いったいこれはどうすればいいのでしょうか?
昔のverでやればいいということなのでしょうか?


63ポイント を手に入れた。


Name: たかぎ [URL]  ..ハッカー(172,880ポイント)   Date: 2010/04/03(土) 22:05   No:50106     
Title: Re:C言語ゲームプログラミングの館の説明で分からないことtがあります    
前提としているものと違うものを使えば、内容が異なるのは当然のことです。
自分でそうした違いに対応できないのであれば、可能なかぎり同じものを揃えるべきです。


62ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(142,636ポイント)   Date: 2010/04/03(土) 23:31   No:50113     
Title: Re:C言語ゲームプログラミングの館の説明で分からないことtがあります    
マルチポストですね。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1338984473
まず、規約を読んでいただいて、その後失礼の無いように対処してください。
http://dixq.net/board/board.html
相互リンクをおすすめします。


12ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,169,997ポイント)   Date: 2010/04/04(日) 04:20   No:50117     
Title: Re:C言語ゲームプログラミングの館の説明で分からないことtがあります    
向こうの掲示板でzwiさんがこちらを勧めて下さっているので一応回答しますね。
このマルチポストはこちらの掲示板でもあちらの掲示板でも規約違反なので、次回以降気を付けて下さい。

では
DxLib_VC2008用.slnでもDxLib_VC2008_and_2005用.slnでも結局同じです。
これはプロジェクトファイルですから、DXライブラリ本体とは関係ありません。

> 最新のバージョンはVer3.02なので説明がいまいち理解できないところがいくつかあります 

とありますが、基本的に下位互換性があるので、古いコードでも動くはずです。
他にどんなところが理解出来ませんでしたか?


184ポイント を手に入れた。

Name: msc  ..ぴよぴよ(0ポイント)   Date: 2010/04/06(火) 20:35   No:50234     
Title: Re:C言語ゲームプログラミングの館の説明で分からないことtがあります    
利用規約をしっかりと目をとおしていなくて申し訳ありませんでした

向こうの掲示板のほうの質問は取り消したほうがよろしいでしょうか?


わからないところは今のところありません

なんとか自力でがんばってみます


88ポイント を落としてしまった。

Name: softya [URL]  ..ハッカー(143,786ポイント)   Date: 2010/04/06(火) 21:35   No:50236     
Title: Re:C言語ゲームプログラミングの館の説明で分からないことtがあります    
>向こうの掲示板のほうの質問は取り消したほうがよろしいでしょうか? 
それはそれで、失礼だと思いませんか?お礼を言って閉じてましょう。
マルチポストは同時質問が悪いのであって、同時でなければそう問題になりません。 

 編集済み


32ポイント を手に入れた。



Name: そら  ..かけだし(2,082ポイント)   Date: 2010/04/06(火) 10:36   No:50212       
Title: コンパイルオプション    
VC++ 2008のCUIでコンパイルしています。
通常<stdio.h>などのヘッダーは追加オプションはいらないと思うのですが、
<windows.h>や<unistd.h>などは追加オプションが必要だと思います。

今までは特別なヘッダーを付けていなかったので
[cl ファイル名]
とすればコンパイルできたのですが、
色々な関数を使っているうちにヘッダーも変わってきて
追加オプションを使わなければならないことがわかりました。
[cl ファイル名 追加オプション]
ヘッダーによってオプションが変わると思うのですが
オプションを書いてあるサイトなどはありませんか?


177ポイント を手に入れた。


Name: たかぎ [URL]  ..ハッカー(173,515ポイント)   Date: 2010/04/06(火) 11:06   No:50214     
Title: Re:コンパイルオプション    
http://msdn.microsoft.com/ja-jp/library/9s7c9wdw(VS.80).aspx


19ポイント を手に入れた。

Name: そら  ..かけだし(2,236ポイント)   Date: 2010/04/06(火) 12:27   No:50218     
Title: Re:コンパイルオプション    
>たかぎさん
すみません。
そういうオプションではなくヘッダーのオプションです・・・

たとえばヘッダーが
#include <stdio.h>
のときは
[cl ファイル名]
でコンパイルできると思うのですが、
#include <unistd.h>
を置くと
[cl ファイル名 オプション]
となりますよね?

そのオプションが知りたいのです。


154ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(173,562ポイント)   Date: 2010/04/06(火) 13:20   No:50219     
Title: Re:コンパイルオプション    
VC++には<unistd.h>はありませんから、自作したのでしょうか?
それであれば、自分でどこにファイルを格納したのかわかるはずですから、それを /I オプションで指定するだけです。


47ポイント を手に入れた。

Name: たいちう  ..熟練のプログラマー(67,321ポイント)   Date: 2010/04/06(火) 13:27   No:50220     
Title: Re:コンパイルオプション    
類似の質問
http://oshiete1.goo.ne.jp/qa2934911.html

とりあえず「VCでは使えない」と思っておいたらよいかと。


40ポイント を落としてしまった。

Name: そら  ..かけだし(2,358ポイント)   Date: 2010/04/06(火) 13:29   No:50221     
Title: Re:コンパイルオプション    
http://social.msdn.microsoft.com/Forums/ja-JP/secureprogrammingja/thread/f852119b-3e8c-4f16-8c12-302bfc33857b
こちらのページを見ました。
crypt()を使用したいのです。

あとはよくサンプルとかでダウンロードしてくると
#include <windows.h>
など見かけます。
これもたぶんオプションが必要なんですよね?

そういうヘッダーごとのオプションというのが
よくわからないのでどこか参考にするページを探していました。


122ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(173,623ポイント)   Date: 2010/04/06(火) 15:27   No:50223     
Title: Re:コンパイルオプション    
> そういうヘッダーごとのオプションというのが 
> よくわからないのでどこか参考にするページを探していました。

ヘッダファイルの検索ディレクトリは、/I オプションで指定します。
どこを検索すべきかはユーザーの環境に依存しますので、自分で判断しなければなりません。


61ポイント を手に入れた。

Name: YuO  ..熟練のプログラマー(42,898ポイント)   Date: 2010/04/06(火) 15:39   No:50224     
Title: Re:コンパイルオプション    
Visual Studio 2008 コマンドプロンプトのショートカットからCMD.EXEを起動すれば,<windows.h>は/Iオプション不要です。
新バージョンのSDKをインストールしていて,そちらを使いたい場合などは別ですが。
# リンカオプションの方ではないかとエスパーしてみたり。


113ポイント を落としてしまった。

Name: そら  ..かけだし(2,420ポイント)   Date: 2010/04/06(火) 15:48   No:50225     
Title: Re:コンパイルオプション    
cryptを使うにはどうすればいいのでしょうか?

簡単に言うと
http://raccy.xrea.jp/ruby/trip.html
これを作ろうと思ってるのですが・・・


62ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(143,671ポイント)   Date: 2010/04/06(火) 16:32   No:50226     
Title: Re:コンパイルオプション    
VisualStudioを諦めて、Linuxやcygwinで開発するなら利用できます。


2倍のポイントを手に入れた! 54ポイント を手に入れた。

Name: たかぎ [URL]  ..ハッカー(173,673ポイント)   Date: 2010/04/06(火) 16:47   No:50227     
Title: Re:コンパイルオプション    
> cryptを使うにはどうすればいいのでしょうか?

無いものを使うには、常識的に考えて次の2つの方法しかありません。

1. 自分で作る。
2. 誰かが作ったものを探し、何らかの方法で流用する。

crypt程度であれば、おすすめは1.です。


50ポイント を手に入れた。

Name: そら  ..かけだし(2,452ポイント)   Date: 2010/04/06(火) 16:48   No:50228     
Title: Re:コンパイルオプション    
Linuxは趣味程度で使用していますが
Linuxで作成したソフトはWindowsで使用できるのですか?


32ポイント を手に入れた。

Name: softya [URL]  ..ハッカー(143,754ポイント)   Date: 2010/04/06(火) 16:54   No:50229     
Title: Re:コンパイルオプション    
>Linuxで作成したソフトは Windowsで使用できるのですか?
残念ですが、できませんね。
逆はある程度出来ますが。

CygwinならWindowsで動く擬似UnixですからWindows上で動きます。
あるいは、DES暗号を自分で調べてたかぎさんの言われる通り自分でcrypt関数を作るかです。


83ポイント を手に入れた。

Name: そら  ..かけだし(2,496ポイント)   Date: 2010/04/06(火) 17:10   No:50230     
Title: Re:コンパイルオプション    
softyaさん
たかぎさん

ありがとうございました。
crypt関数は頑張って作成してみます。


44ポイント を手に入れた。

Name: そら  ..入門者(2,506ポイント)   Date: 2010/04/06(火) 17:13   No:50231 解決!     
Title: Re:コンパイルオプション    
解決ボタン押し忘れでした。

10ポイント を手に入れた。



Name: テツ  ..かけだし(2,222ポイント)   Date: 2010/04/01(木) 17:59   No:50000       
Title: 無題    
お世話になります。テツです。
今回課題を出されてまったくイメージが沸かないので教えていただきです。
ちなみにリスト構造は少しふれたことがあるだけで、コーディングしたことはないレベルです。。。orz
これから勉強しながらコーディングしたいと思います。

仕様については別途添付ファイルに記載します。

まず構造体について自分自身をメンバとして持つと思うのですが、
今回でいう空のリスト、高優先順位リスト、通常優先順位リストごとに3つの構造体を作るのでしょうか?
それとも構造体を1つで空のリスト、高優先順位リスト、通常優先順位リストをメンバに持つのでしょうか?
もしくはネスト?

う〜ん。。。まったくイメージが沸きません(泣

アドバイス頂けないでしょうか?


274ポイント を手に入れた。


Name: テツ  ..かけだし(2,248ポイント)   Date: 2010/04/01(木) 18:02   No:50002     
Title: Re:無題    
管理人様

申し訳ありません。
タイトルが無題になってしまいました。


26ポイント を手に入れた。

Name: たいちう  ..熟練のプログラマー(64,660ポイント)   Date: 2010/04/01(木) 18:44   No:50004     
Title: Re:無題    
まず構造体について自分自身をメンバとして持つと思うのですが、
今回でいう空のリスト、高優先順位リスト、通常優先順位リストごとに3つの構造体を作るのでしょうか?
それとも構造体を1つで空のリスト、高優先順位リスト、通常優先順位リストをメンバに持つのでしょうか?
もしくはネスト?

空きリスト:root1 → data1 → data2 → data3 → data4 → NULL
高優先度リスト:root2 → data5 → data6 → data7 → data8 → NULL

題意はこのようなイメージでしょう。
リストの各要素は次の要素へのポインタを持てばよく、
プログラム全体で3つのルート(リストの起点)を持ちます。


184ポイント を手に入れた。

Name: 初級者  ..初心者(7,659ポイント)   Date: 2010/04/01(木) 19:43   No:50006     
Title: Re:無題    
自己参照型構造体とは、
その構造体の型へのポインターをメンバーに持つ
構造体のことです。

決して、自分自身をメンバーに持つのではありません。


47ポイント を手に入れた。

Name: テツ  ..かけだし(2,481ポイント)   Date: 2010/04/01(木) 19:59   No:50008     
Title: Re:無題    
たいちうさんお世話になります。

>リストの各要素は次の要素へのポインタを持てばよく、
これは何となくイメージがつきます。ただ、双方向の場合直前の要素のポインタも持たなくてはいけないのではないでしょうか?

>プログラム全体で3つのルート(リストの起点)を持ちます。
ここが今いちわからないです。これはリストを管理する構造体のメンバ?として持てばいいのでしょうか?

初級者さんお世話になります。

>自己参照型構造体とは、
その構造体の型へのポインターをメンバーに持つ
構造体のことです。

仰せの通りです。私の投稿では意味が全く違ってきてしまいますよね。
ご指摘ありがとうございました。


233ポイント を手に入れた。

Name: たいちう  ..熟練のプログラマー(64,991ポイント)   Date: 2010/04/01(木) 22:08   No:50014     
Title: Re:無題    
> これは何となくイメージがつきます。
> ただ、双方向の場合直前の要素のポインタも持たなくてはいけないのではないでしょうか?

双方向リストでしたね。失礼しました。
前の要素と次の要素の2つのポインタが必要です。


> >プログラム全体で3つのルート(リストの起点)を持ちます。
> ここが今いちわからないです。これはリストを管理する構造体のメンバ?として持てばいいのでしょうか?

仕様に指定はないようです。
3つのリストを管理する構造体を定義し、
プログラム全体で1つだけこの構造体のインスタンスを持つつもりならば、
それでも結構です。


68ポイント を手に入れた。

Name: テツ  ..入門者(2,718ポイント)   Date: 2010/04/01(木) 22:55   No:50015     
Title: Re:無題    
たいちうさんお世話になります。

>3つのリストを管理する構造体を定義し、
>プログラム全体で1つだけこの構造体のインスタンスを持つつもりならば、

となると

typedef struct List{
    struct List *prev;
    struct List *Next;
    ここに空リスト管理?
    ここに高優先度登録リスト管理?
    ここに通常優先度登録リスト管理?
}

こんな感じで大丈夫でしょうか?

ちなみにたいちうさんならどんな感じにするのでしょうか?
よろしければ教えていただけないでしょうか?


237ポイント を手に入れた。

Name: ideyan  ..入門者(3,551ポイント)   Date: 2010/04/02(金) 01:23   No:50017     
Title: Re:無題    
横槍失礼。

>3つのリストを管理する構造体を定義し、 
>プログラム全体で1つだけこの構造体のインスタンスを持つつもりならば、 

これは、まず構造体が以下のように定義されているとして
typedef struct list List;
struct list{
    List *next,*prev;
    char *rec;
};

・プログラム全体で3つのルート(リストの起点)を持つ場合

List *nRoot,*hpRoot,*npRoot;

上みたいにrootを持っておけば大丈夫です。

・3つのリストを管理する構造体を定義し、プログラム全体で
  1つだけこの構造体のインスタンスを持つ場合

struct{
    List *n;//空リスト
    List *hp;//高優先度
    List *np;//通常優先度
}Root;
こんな感じで一つにまとめてしまえます。

とこんなことが言いたかったのではないかと思います。


332ポイント を手に入れた。

Name: たいちう  ..熟練のプログラマー(65,040ポイント)   Date: 2010/04/02(金) 09:08   No:50026     
Title: Re:無題    
> ちなみにたいちうさんならどんな感じにするのでしょうか?
> よろしければ教えていただけないでしょうか?

ideyanさんの書いている通りです。
3つのリスト管理用の構造体は特に必要なものではありません。
ない方が簡単かと。


49ポイント を手に入れた。

Name: テツ  ..入門者(2,998ポイント)   Date: 2010/04/02(金) 09:13   No:50027     
Title: Re:無題    
ideyanさんいつもお世話になります。

typedef struct list List;
struct list{
    List *next,*prev;
    char *rec;
};


>上みたいにrootを持っておけば大丈夫です。
このように3つのリストを持つ場合はList *nRoot,*hpRoot,*npRoot;を
構造体外部変数として扱えばいいということでしょうか?

ということは今回は別に3つの構造体は用意しなくても1つでいいんですね。

ちなみに
>・プログラム全体で3つのルート(リストの起点)を持つ場合
>・3つのリストを管理する構造体を定義し、プログラム全体で
>1つだけこの構造体のインスタンスを持つ場合

この方法はどちらがいいのでしょうか?

自分としては下のほうが分かりやすいような気がしますが。。。
でも何となくです(笑


280ポイント を手に入れた。

Name: テツ  ..入門者(3,141ポイント)   Date: 2010/04/02(金) 09:15   No:50028     
Title: Re:無題    
すみません。たいちうさんのレスを見逃してしまいました。

>ideyanさんの書いている通りです。
>3つのリスト管理用の構造体は特に必要なものではありません。
>ない方が簡単かと。

そうなんですね。僕はてっきり3つ作成して管理しなくてはいけないと思っていました。
ご指摘ありがとうございます。


143ポイント を手に入れた。

Name: テツ  ..入門者(3,553ポイント)   Date: 2010/04/02(金) 11:09   No:50030     
Title: Re:無題    
最初の関数だけ作成しようと思ったのですが、全く軌道に乗りません。。。orz

とりあえずヘッダとソースにわけて、コンパイルだけしてみたのですが、コンパイルが通りません。

#include <stdio.h>
#include <stdlib.h>
#include "QueControl.h"

struct Root root;

int    QueOpen(int RecSize, int RecN)
{
    // 引数のチェック
    if (RecSize <= 0 || RecN <= 0) {
        return -1;
    }
    
    root->List.Empty = (char *)calloc(RecSize, RecN);
        ↑で怒られます。
        流れとしてはココで3つのリスト分(空、高優先度、通常優先度)
        のメモリを確保しなくてはいけないのでしょうか?

    if (rec == NULL) {
        return -1;
    }
    
    return 0;
}

私の構造体の定義の仕方が間違っているのでしょうか?
序盤から行き詰ってしまいました。。。orz


412ポイント を手に入れた。

Name: ideyan  ..入門者(3,838ポイント)   Date: 2010/04/02(金) 12:01   No:50034     
Title: Re:無題    
コンパイルが通らないなら通らないで
せめてエラーの内容が無いと困ります^^;

struct {
    List    *Empty;        // 空リスト
    …
} Root;
この書き方は、Root と言う名前の構造体を定義するのではなく
名無しの構造体で Root 変数を宣言するとなるので
struct Root root は通りません。

仮に root が通ったとしても
root->List.Empty
root はポインタではないのでアロー演算子は使えません。

Root が持っているのはListという変数ではないので
アクセスする場合は
Root.List.Empty でなく Root.Empty となります。

後半にいきなり rec という変数が出てきています。

calloc の引数は num,size の順番です。

あと、QueOpen は
1.List 1個分だけ calloc
2. その中の rec に対して RecSize 分だけ calloc
3. 空リストに繋げる
4. 1~3を RecN 回繰り返す
このような手順でいくのがいいかと思います。



287ポイント を手に入れた。

Name: Ma  ..比類無きプログラマー(71,393ポイント)   Date: 2010/04/02(金) 12:03   No:50035     
Title: Re:無題    
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>


struct list{
    list *next,*prev;
    char *rec;
}lowPriority,highPriority,normalPriority;


int QueOpen(int RecSize, int RecN)
{
    // 引数のチェック
    if (RecSize <= 0 || RecN <= 0) {
        return -1;
    }
    
    lowPriority.prev = NULL;
    normalPriority.prev = NULL;
    highPriority.prev = NULL;

    list* pNodeList[] = { &lowPriority,&normalPriority,&highPriority};
    
    for each(list* p in pNodeList){
        for(int i = 0; i < RecN;i++){
            p->rec = (char*)malloc(RecN);
            p->next = (list *)malloc(sizeof(list));
            if(p->next == NULL)
                return -1;
            list* tempPre = p;
            p = p->next;
            p->prev = tempPre;
        }
    }    
    return 0;
}



参考程度にしてください。
一応動作確認はしましたが、もっと最適化できそうだし、綺麗になりそうだし、間違いもあるかもしれませんのでw
 編集済み


246ポイント を手に入れた。

Name: テツ  ..入門者(3,382ポイント)   Date: 2010/04/02(金) 13:01   No:50039     
Title: Re:無題    
ideyanさん
>コンパイルが通らないなら通らないで
>せめてエラーの内容が無いと困ります^^;

そっそうですよね。失礼しました^^;
以下のようなエラーです。
エラー E2451 QueControl.c 14: 未定義のシンボル List(関数 QueOpen )
エラー E2451 QueControl.c 15: 未定義のシンボル rec(関数 QueOpen )

ideyanさんがおっしゃる通りのエラーでした。

いろいろとありがとうございます。
少し整理してやってみます!

Maさん
サンプルのご提示ありがとうございます!
ただ今回Boralnd Bcc5.5というのを記述し忘れました。。。orz



171ポイント を落としてしまった。

Name: Ma  ..比類無きプログラマー(71,947ポイント)   Date: 2010/04/02(金) 13:05   No:50041     
Title: Re:無題    
>ただ今回Boralnd Bcc5.5というのを記述し忘れました。。。orz 
コードはそんなに変わらないと思うけども。。。


48ポイント を落としてしまった。

Name: テツ  ..入門者(3,571ポイント)   Date: 2010/04/02(金) 13:21   No:50042     
Title: Re:無題    
Maさん

ここのfor each(list* p in pNodeList)
をCでいうfor文等に置き換えてやればいいのでしょうか?

構造体の管理は
struct list{
    list *next,*prev;
    char *rec;
}lowPriority,highPriority,normalPriority; 

こちらのように全体で3つのルートをもつほうがよいのでしょうか?

質問ばかりですいません。
すごくてんぱってまして^^;


189ポイント を手に入れた。

Name: たいちう  ..熟練のプログラマー(64,889ポイント)   Date: 2010/04/02(金) 13:44   No:50043     
Title: Re:無題    
> こちらのように全体で3つのルートをもつほうがよいのでしょうか?

> 質問ばかりですいません。
> すごくてんぱってまして^^;

質問ばかりは良いのですが、同じ質問を繰り返していますよ。
今作っている課題のことは一旦忘れて、単純なリストのサンプルを作ってみてはどうですか。
理解せずに質問を繰り返すよりも、その方が早いと思うのですが。


87ポイント を手に入れた。

Name: Ma  ..比類無きプログラマー(72,194ポイント)   Date: 2010/04/02(金) 13:44   No:50044     
Title: Re:無題    
>ここのfor each(list* p in pNodeList) 
>をCでいうfor文等に置き換えてやればいいのでしょうか? 

書いたコードはC++言語です。
Wikipedia によると、C++標準ライブラリによって与えられるもので、Cでは使えないかもしれません。
BCCは for each 対応していないのだろうか?(そんなばかな)

もし、エラーでるようでしたら

for(int i = 0; i < 3; i++){
    list* p = pNodeList[i];

と、置き換えてもOkです。(同じ意味ですので)

>こちらのように全体で3つのルートをもつほうがよいのでしょうか? 
他に方法がおもいつかないので、それが最善だと思います。
構造体にひとつにまとめたとしても、ルートの数はかわらないとおもいますよ。 編集済み


247ポイント を手に入れた。

Name: たいちう  ..熟練のプログラマー(65,008ポイント)   Date: 2010/04/02(金) 13:51   No:50045     
Title: Re:無題    
具体的に課題を出します。

http://www9.plala.or.jp/sgwr-t/c/sec15-5.html

ここにリストの丁寧な説明があります。
「実際に」作って試し、「完全に」理解してください。
その上で、このプログラムのリストを双方向のリストに変更し、
リストを逆順で表示できるようにしてください。


119ポイント を手に入れた。

Name: テツ  ..入門者(3,599ポイント)   Date: 2010/04/02(金) 15:14   No:50047     
Title: Re:無題    
たいちうさん

レスありがとうございます。
これからそっちをやってみます!


28ポイント を手に入れた。

Name: kaiten  ..中級者(10,183ポイント)   Date: 2010/04/02(金) 15:31   No:50048     
Title: Re:無題    
>for each(list* p in pNodeList)

この構文って確かVC++独自の構文かなんかだったと思います。C++標準ライブラリに入ってるのはstd::for_eachだったかと。


2倍のポイントを手に入れた! 108ポイント を手に入れた。

Name: テツ  ..入門者(3,715ポイント)   Date: 2010/04/02(金) 15:42   No:50049     
Title: Re:無題    
kaitenさん

情報ありがとうございます。
ちなみに今回C限定ということを記載し忘れました。。。orz
すみません。


2倍のポイントを手に入れた! 116ポイント を手に入れた。

Name: テツ  ..入門者(3,743ポイント)   Date: 2010/04/02(金) 23:40   No:50062     
Title: Re:無題    
遅くなってすみません。とりあえず作成してみましたのでよろしくお願いします。 編集済み

28ポイント を手に入れた。

Name: テツ  ..入門者(3,827ポイント)   Date: 2010/04/04(日) 18:00   No:50148     
Title: Re:無題    
とりあえずたいちうさんの課題をやってみました。

>あと、QueOpen は
>1.List 1個分だけ calloc
>2. その中の rec に対して RecSize 分だけ calloc
>3. 空リストに繋げる
>4. 1~3を RecN 回繰り返す

この文通りにコーディングすればいいと思うのですが、
List1個分だけというのはどういうことなのでしょうか?


84ポイント を手に入れた。

Name: sizuma  ..プログラマー(38,555ポイント)   Date: 2010/04/04(日) 19:00   No:50152     
Title: Re:無題    
>List1個分だけというのはどういうことなのでしょうか?
List構造を構成する構造体を1つ、ということではないでしょうか?

まずはList(ポインタで構成)を一つ分確保
次にポインタで指すrecodeのメモリを確保
これを用意するバッファサイズまで

という流れだと思います。


117ポイント を手に入れた。

Name: たいちう  ..熟練のプログラマー(65,475ポイント)   Date: 2010/04/04(日) 22:08   No:50158     
Title: Re:無題    
> とりあえずたいちうさんの課題をやってみました。

課題の条件の書き方がまずかったようですね。
双方向リストの使い方の練習のために、
リストを正順・逆順どちらでも表示できるようにしてほしかったのです。
お手数ですが次の条件に変更できますか?

add_listは、リストの末尾に要素を追加。
show_listは、リストを正順で表示。
show_list_revは、リストを逆順で表示。


105ポイント を手に入れた。

Name: テツ  ..入門者(3,983ポイント)   Date: 2010/04/05(月) 10:14   No:50171     
Title: Re:無題    
sizumaさん

>まずはList(ポインタで構成)を一つ分確保
これはコードにするにはどういうふうにすればよいのでしょうか?

たいちうさん

>リストを正順・逆順どちらでも表示できるようにしてほしかったのです。
>お手数ですが次の条件に変更できますか? 
これをQueOpen()にそってやるにはどうすればよいでしょうか?
とりあえずQueOpenだけでも完成させて持ってきてと言われたので^^;
困ってしまいました(泣


156ポイント を手に入れた。

Name: たいちう  ..熟練のプログラマー(65,685ポイント)   Date: 2010/04/05(月) 10:30   No:50173     
Title: Re:無題    
> これをQueOpen()にそってやるにはどうすればよいでしょうか?
> とりあえずQueOpenだけでも完成させて持ってきてと言われたので^^;
> 困ってしまいました(泣

ご理解いただいていると思っていたのですが、私の出している「課題」は
本来の課題に取り掛かるための準備運動のようなものです。
QueOpen等とは直接的な関係はありませんが、
本来の課題に取り組む前に1つ2つリストを使ったプログラムを作った方が
良いだろうと考えた上での誘導です。

取り急ぎQueOpenを作る必要があるとのことですが、
QueOpenを作るためにも、ある程度全体のイメージを掴まないといけません。
全体のイメージを把握するには今のテツさんは経験不足ですので、
私の出す「課題」に取り組むことが、結局早いのではないか、と私は思います。


210ポイント を手に入れた。

Name: テツ  ..入門者(4,245ポイント)   Date: 2010/04/05(月) 11:15   No:50176     
Title: Re:無題    
たいちうさん

>取り急ぎQueOpenを作る必要があるとのことですが、
>QueOpenを作るためにも、ある程度全体のイメージを掴まないといけません。
>全体のイメージを把握するには今のテツさんは経験不足ですので、
>私の出す「課題」に取り組むことが、結局早いのではないか、と私は思います。

そうですよね。。。ただそれはわかっているのですが、とりあえずQueOpenだけでも
提出した後デバッグしながら理解しようと思いまして^^;
やはりちゃんと設計してからの方がいいんでしょうか?

期間とかなければちゃんと基礎的なことをやってからやりたいのですが(泣


262ポイント を手に入れた。

Name: たいちう  ..熟練のプログラマー(65,707ポイント)   Date: 2010/04/05(月) 11:49   No:50177     
Title: Re:無題    
> そうですよね。。。ただそれはわかっているのですが、とりあえずQueOpenだけでも
> 提出した後デバッグしながら理解しようと思いまして^^;
> やはりちゃんと設計してからの方がいいんでしょうか?

いいも悪いも現段階ではQueOpenを作れないのでしょ?


22ポイント を手に入れた。

Name: テツ  ..入門者(4,388ポイント)   Date: 2010/04/05(月) 11:57   No:50178     
Title: Re:無題    
>いいも悪いも現段階ではQueOpenを作れないのでしょ?
はい。ですのでサンプル等いただければと思ったのですが、
それですと丸投げになってしまいますね^^;

ちょっとわかりそうにないので諦めます。
今まで付き合っていただきありがとうございました。

レスを下さった皆さまにも感謝致します。

それでは失礼します。


143ポイント を手に入れた。

Name: Ma  ..比類無きプログラマー(75,346ポイント)   Date: 2010/04/05(月) 12:04   No:50179     
Title: Re:無題    
>い。ですのでサンプル等いただければと思ったのですが、 
サンプルあげたのに・・・orz


26ポイント を手に入れた。

Name: テツ  ..入門者(4,758ポイント)   Date: 2010/04/05(月) 12:19   No:50180     
Title: Re:無題    
Maさん

list* pNodeList[] = { &lowPriority,&normalPriority,&highPriority};
ここの部分を構造体で管理しようと思ったのですが、うまく出来なくて駄目でした^^;
あと引数のRecSizeはどこで使っているかわかりませんでした。
とりあえず構造体定義部分(メンバとか)だけでもしっかり理解できればよかったのですが。。。

ただMaさんのサンプルを基本に改良出来たらと思っています!
ありがとうございました。
ササッと作れない自分が情けないです。。。orz
 


2倍のポイントを手に入れた! 370ポイント を手に入れた。

Name: sizuma  ..プログラマー(38,428ポイント)   Date: 2010/04/05(月) 12:56   No:50181     
Title: Re:無題    
あまり詳しく読んでないのですが、たいちうさんの出された課題なんて、ちゃんとすれば2・3時間で終わるんじゃないですか?
準備運動と書かれてるように、リスト構造さえ理解してればちょちょいとしたコードで実装できると思いますし。


>>まずはList(ポインタで構成)を一つ分確保 
>これはコードにするにはどういうふうにすればよいのでしょうか?

struct Listが定義されてるとする
ここでListの構成要素はList型へのポインタpre,nextと登録されるデータ(文字列)へのポインタrecodeとする

for(バッファ数分){
  List型ひとつを確保
  recodeにメモリを確保
  preで確保したものと前の要素をくっつける
  前の要素からも、今回確保したものをくっつける(最初であればルートポインタ)
}

こんな感じじゃないでしょうか?
たいちうさんが張られたリンク先を見ればある程度理解はできると思うのですが。 編集済み


248ポイント を手に入れた。

Name: たいちう  ..熟練のプログラマー(66,091ポイント)   Date: 2010/04/05(月) 13:13   No:50182     
Title: Re:無題    
> あまり詳しく読んでないのですが、たいちうさんの出された課題なんて、ちゃんとすれば2・3時間で終わるんじゃないですか?
> 準備運動と書かれてるように、リスト構造さえ理解してればちょちょいとしたコードで実装できると思いますし。

私もその位に考えていたんですけどね。
リンク先の単方向リストをしっかり理解した後ならば30分程度でできるんじゃないかと。
但し、今までの学習でソースコードは殆ど読むだけで、
何となく理解したつもりになっているだけだったら、2・3時間じゃ到底できないでしょうが、
その場合は本来の課題に歯が立つ段階ではないと。

ちなみにOpenQueの締め切りはいつですか?
課題全体の締め切りと。

# 折角私の課題をやってくれたのに、No.50062の書き込みに気付かず、
# レスが丸二日も後になってしまったのは申し訳なかったです。
# 土曜日もこの掲示板は読んでいたはずですが気付きませんでした。


2倍のポイントを手に入れた! 384ポイント を手に入れた。

Name: テツ  ..入門者(4,986ポイント)   Date: 2010/04/05(月) 13:54   No:50183     
Title: Re:無題    
sizumaさん

参考になります。ありがとうございます。
>前の要素からも、今回確保したものをくっつける(最初であればルートポインタ)
ココがちょっとわかりません。ルートポインタとはどういうことでしょうか?

たいちうさん

>何となく理解したつもりになっているだけだったら、2・3時間じゃ到底できないでしょうが、
>その場合は本来の課題に歯が立つ段階ではないと。
そうなんですよね^^;
今までのやつはwebを見たりして結構小手先のテクニックで出来たのですが、
今回のようなデータ構造系は苦手で(泣

>ちなみにOpenQueの締め切りはいつですか?
>課題全体の締め切りと。

課題自体は今週中なのですが、QueOpenは今日です(汗
遅くても明日の午前中くらいと言っていました。 


228ポイント を手に入れた。

Name: テツ  ..初心者(5,205ポイント)   Date: 2010/04/05(月) 13:57   No:50184     
Title: Re:無題    
連レスすみません。

ちなみに3番のQueGetNでそれぞれのリストに繋がれている数を返す関数で、
必要と思われるメンバを構造体で定義したのですが、こんな感じで大丈夫でしょうか?
typedef struct List {
    struct    List    *next, *prev;
    char             *rec;
} List;

typedef struct {
    int        cntRegist;        // 登録最大件数
    int        cntEnptyList;        // 空リスト登録数
    int        cntHighPriorityList;    // 高優先度リスト登録数
    int        cntNormalPriorityList;    // 通常優先度リスト登録数
} CntList;


219ポイント を手に入れた。

Name: Ma  ..比類無きプログラマー(75,645ポイント)   Date: 2010/04/05(月) 14:01   No:50185     
Title: Re:無題    
>あと引数のRecSizeはどこで使っているかわかりませんでした。 
失礼しました。

一部、間違っている部分があります。
 p->rec = (char*)malloc(RecN); 
正しくは
 p->rec = (char*)malloc(RecSize); 
でした。


>list* pNodeList[] = { &lowPriority,&normalPriority,&highPriority}; 
>ここの部分を構造体で管理しようと思ったのですが、うまく出来なくて駄目でした^^; 


課題読んだ上で、別に構造体にしなくていいとおもいますが、どうしてもしたいなら

struct pNodeListStr{
    list* nodeList[3];
    void init(){
        nodeList[0] = &lowPriority;
        nodeList[1] = &normalPriority;
        nodeList[2] = &highPriority;
    }
};

とかにすればいいかと。
ただ、ほとんど無意味だと思うので、特に理由がないなら、さけたほうがいいとおもいますよ。


299ポイント を手に入れた。

Name: Ma  ..比類無きプログラマー(75,869ポイント)   Date: 2010/04/05(月) 14:05   No:50186     
Title: Re:無題    
>ちなみに3番のQueGetNでそれぞれのリストに繋がれている数を返す関数で、 
>必要と思われるメンバを構造体で定義したのですが、こんな感じで大丈夫でしょうか?


変数を作って常に記録しておくのではなく、関数等でいつでもリストのサイズを取得できるようにしてほしいのだとおもいますよ。
ヒントをあげると、ノードをたどってNULLにあたるまで数をカウントする感じです。



>ルートポインタとはどういうことでしょうか? 
ルート(根っこ)のポインタです。
prev (前のノード)がNULLなノードへのポインタのことです。
リストの一番最初のノードになります。 編集済み


2倍のポイントを手に入れた! 224ポイント を手に入れた。

Name: テツ  ..初心者(5,207ポイント)   Date: 2010/04/05(月) 14:12   No:50187     
Title: Re:無題    
Maさん

>課題読んだ上で、別に構造体にしなくていいとおもいますが、どうしてもしたいなら 
ただ、他の関数でも使うと思うので(考え方が間違っていたらすみません)
構造体にした方がいいのかと思いまして。
ちなみにC++使えないことを記述するのを忘れました。orz
すみません。

>変数を作って常に記録しておくのではなく、関数等でいつでもリストのサイズを取得できるように
>してほしいのだとおもいますよ。
>ヒントをあげると、ノードをたどってNULLにあたるまで数をカウントする感じです。
そういうことなんですかね?私はてっきり変数で用意するものと思っていました。
ということは3番で各ノードをNULLまで繰り返して件数を求めればいいんですね!


2ポイント を手に入れた。

Name: たいちう  ..熟練のプログラマー(66,754ポイント)   Date: 2010/04/05(月) 14:35   No:50188     
Title: Re:無題    
> 今までのやつはwebを見たりして結構小手先のテクニックで出来たのですが、
> 今回のようなデータ構造系は苦手で(泣
> ...
> 課題自体は今週中なのですが、QueOpenは今日です(汗

さてどうしたものかな。QueOpenを私が代わりに作るのは避けたいし。

【プログラム全体のイメージ】
双方向であることはしばらく忘れて、リストを洋服のハンガーと思ってください。
タンスにはハンガーをかけるフックが3つあります。
またハンガーにはハンガーを1つだけかけることができます。
ハンガーは1着の服をかけることができます。かけないでもOKです。
これで理論的には、タンスは無限個のハンガー(と服)を収納できます。
1つのフックにかかっている一連のハンガーを「リスト」と呼びましょう。
タンスにはフックが3つあるので、3つのリストがあります。
(ハンガーのかかってないフックも空の「リスト」とみなします。)
3つのリストにはそれぞれ用途があり、それぞれ「空のハンガーのリスト」
「普通の服のかかったハンガーのリスト」「良い服のかかったハンガーのリスト」です。

【QueOpenで行うことのイメージ】
QueOpenは2つの引数をとります。
RecSizeはハンガーの大きさ。
RecNはハンガーの個数とみなせるでしょう。
服にはサイズが色々ありますが、小さいハンガーには小さい服のみかけることができ、
大きいハンガーには大きい服も小さい服もかけられます。
題意よりタンスの中のハンガーは全て同じ大きさです。

QueOpenが呼ばれたら、指定された大きさのハンガーを指定された個数用意します。
ここでは服(データ)はまだ用意しません。
全てのハンガーは空のハンガーなので、全体で「空のハンガーのリスト」を作ります。


# 提出後にQueOpenを改良しても良いのだろうし、
# こんなイメージでしのげませんか?
# 判らなければ再度質問してください。


663ポイント を手に入れた。

Name: テツ  ..初心者(5,815ポイント)   Date: 2010/04/05(月) 14:49   No:50189     
Title: Re:無題    
たいちうさん

ありがとうございます。以前よりイメージは掴めました。

># 提出後にQueOpenを改良しても良いのだろうし、
># こんなイメージでしのげませんか?
それがしのげないんですよ^^;
早くコード持ってきてね(ニコ)って言われました。。。orz

ちなみにMaさんのを改良してみたのですが、こんな感じで大丈夫なのでしょうか? 
#include <stdio.h>
#include <stdlib.h>

struct list{
    list    *next,*prev;
    char     *rec;
} enpty, high, normal;


int QueOpen(int RecSize, int RecN)
{
    struct    list    *p, *tempPre;
    int        i;
    
    // 引数のチェック
    if (RecSize <= 0 || RecN <= 0) {
        return -1;
    }
    
    p = NULL;
    tempPre = NULL;
    enpty.prev = NULL;
    normal.prev = NULL;
    high.prev = NULL;

    list* pNodeList[] = { &enpty, &normal, &high };
    
    for (i = 0; i < 3; i++) {
        list *p = pNodeList[i]
        for (j = 0; j < RecN; j++){
            p->rec = (char *)malloc(RecSize);
            p->next = (list *)malloc(sizeof(list));
            if (p->next == NULL) {
                return -1;
            }
            tempPre = p;
            p = p->next;
            p->prev = tempPre;
        }
    }    
    return 0;
} 


608ポイント を手に入れた。

Name: たいちう  ..熟練のプログラマー(66,910ポイント)   Date: 2010/04/05(月) 15:00   No:50190     
Title: Re:無題    
> それがしのげないんですよ^^;
> 早くコード持ってきてね(ニコ)って言われました。。。orz

私の言う「しのぐ」は、完璧でないとしても
OpenQueのコードを作ることを意味しています。
これだけ説明したんだから何とか作れるかい?ということ。


> ちなみにMaさんのを改良してみたのですが、
> こんな感じで大丈夫なのでしょうか? 

私あてではないと思いますが、他力本願であまり見たくない質問です。
自分でコンパイルはしたのか?テストはしたのか?
有効なテストができなかったのだとすれば、
「どのようにしてテストしたらよいでしょうか?」
という質問になるはずです。


156ポイント を手に入れた。

Name: Ma  ..比類無きプログラマー(76,030ポイント)   Date: 2010/04/05(月) 19:15   No:50191     
Title: Re:無題    
>ちなみにC++使えないことを記述するのを忘れました。orz 
いえ、存じていますがC++言語からC言語にコードを変えるのはそんなに難しくないと思いますよ。
まぁ、実際できたようですし。

>struct    list    *p
pが二度宣言されてます。
ひとつめのpを消すか、二つ目のpを消してください。
まぁ、いつ宣言するかは人の好みだと思うので、どちらで宣言してもいいとおもいます。


161ポイント を手に入れた。

Name: Ma  ..比類無きプログラマー(76,896ポイント)   Date: 2010/04/05(月) 19:28   No:50192     
Title: Re:無題    
あと、再び読み直して、おかしいと思ったので修正。

       for (j = 0; j < RecN; j++){
            p->rec = (char *)malloc(RecSize);
            p->next = (list *)malloc(sizeof(list));
            if (p->next == NULL) {
                return -1;
            }
            tempPre = p;
            p = p->next;
            p->prev = tempPre;
        }


ではなく、


       for (j = 0; j < RecN; j++){
            p->rec = (char *)malloc(RecSize);

            if (p->next == NULL) {
                return -1;
            }
            if(j+1 < RecN){
                p->next = (list *)malloc(sizeof(list));
                if(p->next == NULL){
                    return -1;
                }
                tempPre = p;
                p = p->next;
                p->prev = tempPre;
            }
            else
                p->next = NULL;
        }

か、あるいは、

       for (j = 0; j < RecN-1; j++){
            p->rec = (char *)malloc(RecSize);
            if (p->rec == NULL) {
                return -1;
            }
            p->next = (list *)malloc(sizeof(list));
            if (p->next == NULL) {
                return -1;
            }
            tempPre = p;
            p = p->next;
            p->prev = tempPre;
        }
    p->next = NULL;
    p->rec = (char *)malloc(RecSize);
        if (p->rec == NULL) {
            return -1;
        }


等。


できれば、内容を読んでどう違うのか理解して修正していただきたい。
あと、たいちうさんが言うように、このようなミスはprintfを生かして実験してみればすぐに気づくので
ご自身で、これで満足いく動作をするか確かめてみてください。
(まだ間違っている可能性もありますので) 編集済み


866ポイント を手に入れた。

Name: テツ  ..初心者(5,922ポイント)   Date: 2010/04/05(月) 22:58   No:50194     
Title: Re:無題    
たいちうさん、Maさんレスありがとうございます。

今やってみて思ったのですが、forループは1回だけでは駄目でしょうか?
高優先度リストと、通常優先度リストの領域は確保しなくてもいいような気がしたのですが、
考え違いでしょうか?


107ポイント を手に入れた。

Name: たいちう  ..熟練のプログラマー(66,974ポイント)   Date: 2010/04/05(月) 23:55   No:50196     
Title: Re:無題    
仕様にこのような記述があります。

> キューへの登録要求を受けると、空きリストから一つのレコードバッファを取り出し、要
> 求された登録情報をレコードバッファにセットし、登録リストの末尾に接続する。

QueOpenが終了したときに、リストはどのような状態になっているべきと思いますか?
No:50188の説明も読み返して考えてみて下さい。


64ポイント を手に入れた。

Name: テツ  ..初心者(6,185ポイント)   Date: 2010/04/06(火) 01:08   No:50198     
Title: Re:無題    
>QueOpenが呼ばれたら、指定された大きさのハンガーを指定された個数用意します。
>ここでは服(データ)はまだ用意しません。
>全てのハンガーは空のハンガーなので、全体で「空のハンガーのリスト」を作ります。
ということは空、高、通常の3つ分の領域を確保しなければならないのでしょうか?

>QueOpenが終了したときに、リストはどのような状態になっているべきと思いますか? 
空リストの領域がRecN個分確保されていればいいのではないでしょうか?
それで2番目のQueRegistの時に空リストのアドレスを条件に従って、通常または高に渡してやればいいのかと思ったのですが。
違いますでしょうか?

でも上記で自分が言ってることって矛盾してますよね^^;


263ポイント を手に入れた。

Name: Ma  ..比類無きプログラマー(77,641ポイント)   Date: 2010/04/06(火) 04:29   No:50202     
Title: Re:無題    
>空リストの領域がRecN個分確保されていればいいのではないでしょうか? 
>それで2番目のQueRegistの時に空リストのアドレスを条件に従って、通常または高に渡してやればいいのかと思ったのですが。 
>違いますでしょうか? 

すいません、私勘違いしていたみたいです。課題の意味がようやくわかりました。
てっきり、優先度が三つあるのかと勘違いしておりました。
前半の投稿から、空リストなんてへんな名前つけるなぁ、と思ってました(汗

そうですね、初期化するときは、空リストにメモリ確保を指示してそれ以外のリストはNULLにしておけばいいんじゃないでしょうか。


#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>


struct list{
    list    *next,*prev;
    char     *rec;
} empty, high, normal;



int QueOpen(int RecSize, int RecN)
{
    // 引数のチェック
    if (RecSize <= 0 || RecN <= 0) {
        return -1;
    }

    high.next = NULL;
    high.prev = NULL;
    high.rec = NULL;
    normal.next = NULL;
    normal.prev = NULL;
    normal.rec = NULL;
    empty.rec = NULL;
    empty.prev = NULL;
    empty.next = NULL;
    
    list* now = & empty;
    list* pre = NULL;
    for (int i = 0; i < RecN; i++){   
        now->rec = (char *)malloc(RecSize);
        if(i+1 < RecN)
            now->next = (list *)malloc(sizeof(list));
        if(pre != NULL)
            now->prev = pre;
        pre = now;
        now = now->next;
    }
        
    return 0;



void main(){
    QueOpen(10,2);
}

また参考程度に。
あと、malloc 失敗してないときの判定いれてないので、そのへんは修正お願いします。 編集済み


682ポイント を手に入れた。

Name: テツ  ..初心者(6,224ポイント)   Date: 2010/04/06(火) 09:08   No:50203     
Title: Re:無題    
Maさん

サンプルありがとうございます。
動かして試してみたいと思います!


39ポイント を手に入れた。

Name: たいちう  ..熟練のプログラマー(67,149ポイント)   Date: 2010/04/06(火) 09:11   No:50204     
Title: Re:無題    
> >全てのハンガーは空のハンガーなので、全体で「空のハンガーのリスト」を作ります。
> ということは空、高、通常の3つ分の領域を確保しなければならないのでしょうか?

タンス全体で「空のハンガーのリスト」が1つ有ればよいのです。
「高、通常の3つ分の領域を確保」は、「フック」用意するだけです。
ですので、↓この解釈であってます。

> >QueOpenが終了したときに、リストはどのような状態になっているべきと思いますか? 
> 空リストの領域がRecN個分確保されていればいいのではないでしょうか?
> それで2番目のQueRegistの時に空リストのアドレスを条件に従って、
> 通常または高に渡してやればいいのかと思ったのですが。
> 違いますでしょうか?


それと気付いた点1つめ。
× enpty
○ empty

2つめ。
問題文にレコードの定義が明確に書かれていませんが、
QueRegistの引数からおそらく文字列がデータであると思われます。
QueOpenの2つめの引数に渡されるのが文字列長だとすると、
必要な領域は(文字列長 + 1)バイト必要です。


Maさん>
> >ちなみにC++使えないことを記述するのを忘れました。orz 
> いえ、存じていますがC++言語からC言語にコードを変えるのはそんなに難しくないと思いますよ。
> まぁ、実際できたようですし。

Cに四苦八苦している人には難しい場合もあるでしょう。
もしもやったことがないならば、一度ご自分のソースコードの拡張子をcに変更して
コンパイルしてみてください。
思っているよりも変更は多いかもしれませんよ。


175ポイント を手に入れた。

Name: テツ  ..初心者(6,679ポイント)   Date: 2010/04/06(火) 09:46   No:50205     
Title: Re:無題    
修正してみたのですが、39、47、53、56行目で問題のあるポインタ変換と出ます。
これはどの部分を修正すればいいのでしょうか?

管理テーブルとか作ってしまってすみません^^;

#include <stdio.h>
#include <stdlib.h>

typedef struct {
    char    *rec;
    struct    List    *prev;
    struct    List    *next;
} List;

// 管理テーブル
typedef struct {
    int        RecN;
    List    *dataList;
} ControlList;

ControlList    empty, high, normal;

int QueOpen(int RecSize, int RecN)
{
    List    *now;
    List    *pre;
    int        i;

    // 引数のチェック
    if (RecSize <= 0 || RecN <= 0) {
        return -1;
    }

    empty.dataList->rec   = NULL;
    empty.dataList->prev  = NULL;
    empty.dataList->next  = NULL;

    now = ∅
    pre = NULL;
    for (i = 0; i < RecN; i++) {
        now->rec = (char *)malloc(RecSize);
        if (now->rec == NULL) {
            return -1;
        }
        if (i + 1 < RecN) {
            now->next = (List *)malloc(sizeof(List));
            if (now->next == NULL) {
                return -1;
            }
        }
        if (pre != NULL) {
            now->prev = pre;
        }
        pre = now;
        now = now->next;
    }
    return 0;
}

int    main(void)
{
    QueOpen(10,2);

    return 0;
}



455ポイント を手に入れた。

Name: テツ  ..初心者(6,749ポイント)   Date: 2010/04/06(火) 09:50   No:50206     
Title: Re:無題    
たいちうさん

>QueOpenの2つめの引数に渡されるのが文字列長だとすると、
>必要な領域は(文字列長 + 1)バイト必要です。

2つめの引数は空リストの数ではないのでしょうか?


70ポイント を手に入れた。

Name: Ma  ..比類無きプログラマー(78,162ポイント)   Date: 2010/04/06(火) 10:05   No:50208     
Title: Re:無題    
>必要な領域は(文字列長 + 1)バイト必要です。
かもしれませんね。


>Cに四苦八苦している人には難しい場合もあるでしょう。
たしかに、そうかもしれないですね。
言うだけじゃいけないと思ったので実際やってみたら、自分はCの学習はあまりしたことがなかったので、てこずりました(汗
せっかく作ったので、参考にでもどうぞです。

(RecSize+1 のところは、引数の意図が分かり次第変えてください。)


//test.c
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>


struct list{
    struct list *next,*prev;
    char     *rec;
} empty, high, normal;



int QueOpen(int RecSize, int RecN)
{
    struct list *now,*pre;
    int i;

    now = ∅
    pre = NULL;

    // 引数のチェック
    if (RecSize <= 0 || RecN <= 0) {
        return -1;
    }

    high.next = NULL;
    high.prev = NULL;
    high.rec = NULL;
    normal = high;
    empty = high;


    
    for (i = 0; i < RecN; i++){   
        now->rec = (char *)malloc(RecSize+1);
        if(i+1 < RecN)
            now->next = (struct list *)malloc(sizeof(struct list));
        if(pre != NULL)
            now->prev = pre;
        pre = now;
        now = now->next;
    }
        
    return 0;



void main(){    
    QueOpen(10,2);
}


*追記
>2つめの引数は空リストの数ではないのでしょうか? 
一つ目との間違いだと思います。 編集済み


521ポイント を手に入れた。

Name: たいちう  ..熟練のプログラマー(67,361ポイント)   Date: 2010/04/06(火) 10:15   No:50209     
Title: Re:無題    
このように書けます。

typedef struct tagList {
    char    *rec;
    struct    tagList    *prev;
    struct    tagList    *next;
}  List;

http://www.bohyoh.com/CandCPP/FAQ/FAQ00051.html


もう一つはきっと管理テーブルに関連するものでしょうが、
ご自分で導入したものだし、コピペにも失敗していることですので、
もう少し考えてみてください。
と思ったけど、時間がないんだっけ。

now = empty.dataList;

です。emptyが文字化けしているみたいなので、全角で貼り付けました。
enptyだったらこんなことにはならなかったか。


> 一つ目との間違いだと思います。

フォローありがとうございます。


212ポイント を手に入れた。

Name: Ma  ..比類無きプログラマー(78,216ポイント)   Date: 2010/04/06(火) 10:27   No:50210     
Title: Re:無題    
いろいろ間違っている気がしたので、修正したものを添付しました。

*ただし、もともとのコードに間違いがあってコンパイルできても実行時エラーになります。


54ポイント を手に入れた。

Name: Ma  ..比類無きプログラマー(78,238ポイント)   Date: 2010/04/06(火) 10:36   No:50211     
Title: Re:無題    
比較

ってここまでやらなくていいですよね(汗


22ポイント を手に入れた。

Name: テツ  ..初心者(6,765ポイント)   Date: 2010/04/06(火) 11:26   No:50215     
Title: Re:無題    
たいちうさんMaさん

本当にありがとうございます。
とりあえず午前中に見せてきます!
感謝感激です。


16ポイント を手に入れた。

Name: テツ  ..初心者(6,881ポイント)   Date: 2010/04/06(火) 14:18   No:50222 解決!     
Title: Re:無題    
お世話になります。
提出しましたら、続きをやってと言われたので、とりあえずほっとしました。
またお世話になりそうです^^;
その際はよろしくお願いします。
プログラムって出来ると楽しいですけど、出来ないと苦痛だということがわかりました。。。orz
頑張ります^^


116ポイント を手に入れた。



Name: ヒガモリ  ..かけだし(1,873ポイント)   Date: 2010/04/05(月) 21:11   No:50193       
Title: フローチャートについて    
1] 質問文
 [1.1] 自分が今行いたい事は何か
    参考書(やさしいC)に書いてある問題でフローチャートを書く練習がしたい。
    そして、フローチャートを書いてからプログラムを組めるようになりたい

 [1.2] どのように取り組んだか(プログラムコードがある場合記載)
    エクセルでフローチャートを書いている
 [1.3] どのようなエラーやトラブルで困っているか(エラーメッセージが解る場合は記載)
    エラーは出ていない。

 [1.4] 今何がわからないのか、知りたいのか
    
    問題1
    キーボードから整数値を入力させ、
    値が偶数だった場合、○は偶数です。
    値が奇数だった場合、○は奇数です。
    (○入力した整数です)
    
    実行結果
    
    整数を入力してください。
    1
    1は奇数です。

問題1のフローチャート作る場合、実行結果に整数を入力してくださいと出ているので
添付した画像のように先に表示する処理を書いたほうがいいかわからないので知りたいです。



      
[2] 環境  
 [2.1] OS : Windows
 [2.2] コンパイラ名 : Visual Studio 2008

[3] その他 
 ・どの程度C言語を理解しているか
  ifとfor文まで
 
・ライブラリを使っている場合は何を使っているか
  windowsのライブラリ


447ポイント を手に入れた。


Name: mnkr  ..入門者(4,823ポイント)   Date: 2010/04/05(月) 23:09   No:50195     
Title: Re:フローチャートについて    
自分が作ったプログラムを誰かに動かしてもらうなら
「数値を入力してください」という表示があったほうが親切ですね。
何も表示がないと文字を入力するのか、マウスを動かすのか、何をしたら良いかわかりませんね。

まったくプログラムの仕様がわからない人が何も説明を受けずに初めて動かして
問題なく動かせるようなプログラムが望ましいと思います。


2倍のポイントを手に入れた! 234ポイント を手に入れた。

Name: ヒガモリ  ..かけだし(1,964ポイント)   Date: 2010/04/05(月) 23:57   No:50197     
Title: 名前が抜けてしまったので    
mnkrさん質問に答えてくださってありがとうございます。
添付した画像のプローチャートの順番で正解していると思っていいんですか?

説明が下手ですいません。
フローチャートを書くときに実行結果の処理が行われる順番にフローチャートを書いたほうがいいんですか?




91ポイント を手に入れた。

Name: Ma  ..比類無きプログラマー(76,959ポイント)   Date: 2010/04/06(火) 01:48   No:50200     
Title: Re:名前が抜けてしまったので    
>フローチャートを書くときに実行結果の処理が行われる順番にフローチャートを書いたほうがいいんですか? 
それが、フローチャートの目的だと思います。

*ちょっと訂正
フローチャートの目的は、プログラミングをする際にコードを書きやすくする事だと私はおもっていますが、
そのためには、図の順番はプログラムの処理の順番と同じであるべきだとおもいます。

ちらっと見た感じ、添付されたフローチャートはよくできているとおもいますよ。

強いて言うなら、number は何型とするとか、Y/N の代わりに true/false を使うとかですかね。
ただし、他人にみせるためのものではないなら、このような個人差が出る部分は自分が納得できていればそれでいいんじゃないかな。 編集済み


63ポイント を手に入れた。

Name: ヒガモリ  ..かけだし(1,896ポイント)   Date: 2010/04/06(火) 10:43   No:50213 解決!     
Title: フローチャートについて    
Maさん質問に答えてくださってありがとうございます。
自分で納得できればそれでいいですよね。
疑問が解決しました。




68ポイント を落としてしまった。



Name: xaion  ..かけだし(1,622ポイント)   Date: 2010/04/05(月) 09:57   No:50169       
Title: メモリを馬鹿食いする件について    
main.cpp
#include "main_header.h"

//ファイル名
const char* const filename_char1 = "char.png";
//画像
int image[12];
ch_info ch;

int hantei[10][20] = {
    {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,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1},
    {1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1},
    {1,1,1,1,1,1,1,1,1,1,1,1,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,1},
    {1,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,1},
    {1,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},
};

void img::load_char(){
    LoadDivGraph(filename_char1,12,3,4,32,48,image);
}

int img::field_can_or_cannot(int& x,int& y,int& muki){
    //下向き
    if(muki == 0){
        if(hantei[y / 48 + 1][x / 32] == 1){
            return 1;
        }
    }
    //左向き
    if(muki == 1){
        if(hantei[y / 48][x / 32 - 1] == 1){
            return 1;
        }
    }
    //右向き
    if(muki == 2){
        if(hantei[y / 48][x / 32 + 1] == 1){
            return 1;
        }
    }
    //上向き
    if(muki == 3){
        if(hantei[y / 48 - 1][x / 32] == 1){
            return 1;
        }
    }
    return 0;
}

void img::move(char key[]){
    if(ch.x % 32 == 0 && ch.y % 48 == 0){
        ch.walking_flag = 1;
        if(key[KEY_INPUT_DOWN] == 1){
            ch.muki = 0;
        }else if(key[KEY_INPUT_LEFT] == 1){
            ch.muki = 1;
        }else if(key[KEY_INPUT_RIGHT] == 1){
            ch.muki = 2;
        }else{
            ch.walking_flag = 0;
        }
    }

    if(ch.walking_flag == 1){
        if(img::field_can_or_cannot(ch.x,ch.y,ch.muki) == 1){
            ch.walking_flag = 0;
        }
    }

    if(ch.walking_flag == 1){
        if(ch.muki == 0){
            ch.y++;
        }else if(ch.muki == 1){
            ch.x--;
        }else if(ch.muki == 2){
            ch.x++;
        }else if(ch.muki == 3){
            ch.y--;
        }
    }

    ch.img = image[(ch.x % 32) / 11 + (ch.y % 48) / 16 + ch.muki * 3];
}

void img::draw(){
    DrawGraph(ch.x,ch.y,ch.img,TRUE);
}
//メイン
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
    char key[256];//キー
    int func_state = 0;;//状態遷移

    ChangeWindowMode(TRUE);

    if(DxLib_Init() == -1) return -1;

    SetDrawScreen(DX_SCREEN_BACK);
    
    ch.x = 320;
    ch.y = 240;
    ch.walking_flag = 0;
    ch.muki = 0;

    while(true){
        ClearDrawScreen();
        GetHitKeyStateAll(key);

        switch(func_state){
            case 0:
                img::load_char();
                img::move(key);
                break;
        }

        if(ProcessMessage() == -1) break;
        ScreenFlip();
    }
    DxLib_End();
    return 0;
}

main_header.h

#include "DxLib.h"

//画像関連
namespace img{
    //キャラチップ読み込み
    void load_char();
    //フィールドあたり判定
    int field_can_or_cannot(int& x,int& y,int& muki);
    //キー操作
    void move(char key[]);
    //キャラクタードロー
    void draw();
}

//キャラクター情報
struct character_info{
    int x; //x座標
    int y; //y座標
    int img; //イメージ
    int muki; //向き
    int walking_flag; //歩けるかどうか。
};
//リネーム
typedef struct character_info ch_info;

なぜかメモリを馬鹿食いするのですが、設定が悪いんでしょうか。
指南のほどよろしくお願いします。


1,380ポイント を手に入れた。


Name: Tororo  ..初心者(6,409ポイント)   Date: 2010/04/05(月) 10:00   No:50170     
Title: Re:メモリを馬鹿食いする件について    
 switch(func_state){ 
   case 0: 
    img::load_char(); 
    img::move(key); 
      break; 
 } 

ここで毎回画像のロードをしているから。
ロードは一回にしないと重たいよ。



90ポイント を手に入れた。

Name: xaion  ..かけだし(1,594ポイント)   Date: 2010/04/05(月) 10:30   No:50174     
Title: Re:メモリを馬鹿食いする件について    
指南のほどありがとうございました。
解決しました。


28ポイント を落としてしまった。

Name: xaion  ..かけだし(1,609ポイント)   Date: 2010/04/05(月) 10:31   No:50175 解決!     
Title: Re:メモリを馬鹿食いする件について    
解決マーク張っておきます。

15ポイント を手に入れた。



Name: シノニム  ..入門者(3,668ポイント)   Date: 2010/04/03(土) 23:10   No:50112       
Title: フォント異常    
いつもお世話になっております。今回はプログラム実行中に起きるバグについて質問させていただきます

内部の変数を表示する関数が学校のライブラリについていたため、それを使用したんですが、フォントのサイズを変更する機能をつけたかったので、少し自分なりにアレンジしてみたんですが

//------------------------------------------------------------------------
//    ■出力フォーマット指定可能な文字列の描画    // 2009.06.07 追加
//     ※表示位置,文字色の指定あり.変数の値を表示することができる.
//        下記は文字色が入力されなかった場合
//
//        宣 言)    bool DrawPrintf(char font, int x, int y, int size, D3DCOLOR color, char *szFormat, ...);
//
//        引 数)    x, y        : 表示位置
//                size        : 文字のサイズ
//                color        : 文字列の色
//                szFormat    : 出力書式
//                ...            : 変数の並び
//
//        戻り値)    生成された文字数(終端の null 文字は含まれません)
//                (エラー時:負の値)
//------------------------------------------------------------------------
int    DrawPrintf(int x, int y, int size, D3DCOLOR color, char *szFormat, ...)
{
    char    szText[1024];    // 描画文字列
    RECT    rect;            // 矩形    
    int        nLength;        // 文字数

    // 文字列の生成
    va_list        va;

    va_start( va, szFormat );
    nLength = vsprintf( szText, szFormat, va);
    va_end( va );

    // フォントの初期化
    D3DXFONT_DESC fd;

    fd.Height = size;
    fd.Width = 0;
    fd.Weight = 0;
    fd.MipLevels = 0;
    fd.Italic = FALSE;
    fd.CharSet = SHIFTJIS_CHARSET;
    fd.OutputPrecision = 0;
    fd.Quality = 0;
    fd.PitchAndFamily = FIXED_PITCH;
    strcpy(fd.FaceName, "MS ゴシック");
    
    D3DXCreateFontIndirect( g_pd3dDevice, &fd, &g_pD3DXFont);

    // 文字列の描画
    SetRect( &rect, x, y, WINDOW_WIDTH, WINDOW_HEIGHT );
    g_pD3DXFont->DrawText( NULL, szText, -1, &rect, DT_LEFT, color );
    
    // 戻すためにまた初期化(メモリ関係で毎回解放する)
    D3ReleaseFont();
    D3InitFont();    

    return nLength;
}

1、変数の定義
2、文字列の生成
3、フォントのサイズを変更(フォント情報の初期化。多分いらない初期化もある)
4、文字列の描写
5、メモリの解放
6、フォントまた定義(?)

という手順を関数内で踏んでいます。
5が無くても実行はできたんですが、メモリ消費量がちょっとシャレにならなかったので追加してみたところ、重くなる問題はクリアできたのでそれ以降追加してあります

そして今回の質問の本題なんですが、何回かループを繰り返すとフォントがおかしくなってしまいます
具体的には、フォントの大きさが戻ってしまうんですが、初めの5秒間くらいは要望通りに表示してくれているため、対処に困っています

OSはXP、言語はC++です
どなたかお力添えのほど、よろしくお願いします


875ポイント を手に入れた。


Name: Justy  ..伝説なるハッカー(516,105ポイント)   Date: 2010/04/04(日) 02:30   No:50116     
Title: Re:フォント異常    
 なんとなく解放忘れな気がしてならないのですが、それも D3ReleaseFontと D3InitFontの
中身次第ですね。
 g_pD3DXFontの変数は新規に作成したものですか? 既存のもので D3InitFontなどで初期化されている
ものですか?

 とりあえず、D3DXCreateFontIndirectの戻り値を確認して、その数秒たってフォントの大きさが
戻ったときこの戻り値がどうなっているか確認してみて下さい。


174ポイント を手に入れた。

Name: シノニム  ..入門者(3,918ポイント)   Date: 2010/04/04(日) 21:29   No:50156     
Title: Re:フォント異常    
-> Justyさん

返答ありがとうございます
g_pD3DXFontはライブラリでグローバル変数として定義されているポインタです

/// 定義 ///
LPD3DXFONT        g_pD3DXFont;    // D3DXフォント

-> D3ReleaseFontとD3InitFontの中身次第
下記にあるのが中身です


//-----------------------------------------------------------------------------
// フォントの初期化
//-----------------------------------------------------------------------------
void D3InitFont(void)
{
    // D3DXフォント作成
    D3DXFONT_DESC fd;

    fd.Height = 16;
    fd.Width = 0;
    fd.Weight = 0;
    fd.MipLevels = 0;
    fd.Italic = FALSE;
    fd.CharSet = SHIFTJIS_CHARSET;
    fd.OutputPrecision = 0;
    fd.Quality = 0;
    fd.PitchAndFamily = FIXED_PITCH;
    strcpy(fd.FaceName, "MS ゴシック");
    
    D3DXCreateFontIndirect( g_pd3dDevice, &fd, &g_pD3DXFont);

}
    
//-----------------------------------------------------------------------------
// フォントの解放
//-----------------------------------------------------------------------------
void D3ReleaseFont(void)
{
    if( g_pD3DXFont != NULL )  g_pD3DXFont->Release();
    //if( g_pd3dDevice != NULL ) g_pd3dDevide->
}



-> とりあえず、D3DXCreateFontIndirectの戻り値を確認して
お恥ずかしながら調べ方が分かりません・・・

int test = D3DXCreateFontIndirect( g_pd3dDevice, &fd, &g_pD3DXFont);
char test[] = D3DXCreateFontIndirect( g_pd3dDevice, &fd, &g_pD3DXFont);

上記の2つでダメだったんですが、どこが間違ってるんですかね?


250ポイント を手に入れた。

Name: Justy  ..伝説なるハッカー(517,779ポイント)   Date: 2010/04/04(日) 22:38   No:50159     
Title: Re:フォント異常    
>お恥ずかしながら調べ方が分かりません・・・ 
 そういう時は検索しましょう。

D3DXCreateFontIndirect
ttp://msdn.microsoft.com/ja-jp/library/bb172774(VS.85).aspx

 戻り値は HRESULT型です。


 さて、コードを拝見したところ概ね原因はわかりました。
 やはり解放ミスです。

 D3InitFont()で D3DXCreateFontIndirect関数を使って g_pD3DXFontに対して
フォントオブジェクトを作成しています。
 本来はこのまま g_pD3DXFontを使用し、アプリが終了する段階で D3ReleaseFont関数で解放する、
という流れ(作成と解放は1対1)になっているところを DrawPrintf関数が間に入ることで

1  アプリ起動時 D3InitFont関数内で g_pD3DXFont作成                 フォントオブジェクト数 +1
2a DrawPrintf関数内 - D3DXCreateFontIndirect > g_pD3DXFont作成     フォントオブジェクト数 +1
2b DrawPrintf関数内 - DrawText > g_pD3DXFontを使って文字列表示 
2c DrawPrintf関数内 - D3ReleaseFont > g_pD3DXFont解放              フォントオブジェクト数 -1
2d DrawPrintf関数内 - D3InitFont > g_pD3DXFont作成                 フォントオブジェクト数 +1
3 アプリ終了時 D3ReleaseFont関数内で _pD3DXFont解放                フォントオブジェクト数 -1

という流れになり、2a〜2dは DrawPrintfが呼ばれる度に繰り返されます。

 どこがおかしいのか(解放が1つ足らない)は一目瞭然ですね。
 結果、フォントオブジェクトがどんどん作成され、数秒後限界にきた為、
D3DXCreateFontIndirect関数が失敗し、前に2dで初期化された時のフォントオブジェクトが
そのまま使用された為文字が元の大きさに戻ってしまったのでしょう。
 
 
 で、解決策ですが(足らない分の解放を)作成する前にする、というのも手ではありますが
DrawPrintf関数で g_pD3DXFontを使わない、という方法が良さそうです。


int DrawPrintf(int x, int y, int size, D3DCOLOR color, char *szFormat, ...)
{
    ..(略)...
    
    LPD3DXFONT hfont;
    HRESULT hr = D3DXCreateFontIndirectA( g_pD3DDevice, &fd, &hfont);
    if(hr == D3D_OK)
    {
        SetRect( &rect, x, y, 640, 480 );
        hfont->DrawTextA( NULL, szText, -1, &rect, DT_LEFT, color );
        hfont->Release();
        return nLength;
   }
   return -1;
}


 g_pD3DXFontを使ってしまうと、諸々初期化と解放を2回ずつ行わなければならなくなりますが、
この方法なら1回ずつで済みます。

 ただ、この方法にしても DrawPrintf関数が呼ばれる度にフォントオブジェクトを作成していたのでは
あまりにも効率が悪すぎます。

 文字サイズの種類がある程度絞られるなら、事前に(g_pD3DXFontのように)必要なサイズ分の
フォントオブジェクトを作成しておき、サイズに応じて使い分けるなど工夫した方がいいでしょう。

 以下はコードのイメージです。


enum UserFontSize 

    UserFontSize_9, 
    UserFontSize_12, 
    UserFontSize_14, 
    UserFontSize_18, 
    UserFontSize_22 
    UserFontSize_Max 
}; 

LPD3DXFONT g_pD3DXUserFont[UserFontSize_Max];    // どこかで D3DXCreateFontIndirectを使って全て初期化しておく

int DrawPrintf(int x, int y, UserFontSize size, D3DCOLOR color, const char *szFormat, ...) 

    ... 
    g_pD3DXUserFont[size]->DrawTextA( NULL, szText, -1, &rect, DT_LEFT, color ); 
    ... 
}




1,237ポイント を手に入れた。

Name: シノニム  ..入門者(4,554ポイント)   Date: 2010/04/05(月) 00:42   No:50162     
Title: Re:フォント異常    
-> Justyさん

非常に理解しやすいご返答感謝します
なるほどJustyさんがおっしゃってた通り解放処理が足りなかったわけですか
msdn見たんですけど、あまり利用しない方なので見方が分からなく、ご迷惑おかけしました

>>ただ、この方法にしても DrawPrintf関数が呼ばれる度にフォントオブジェクトを作成していたのでは 
あまりにも効率が悪すぎます。 

 文字サイズの種類がある程度絞られるなら、事前に(g_pD3DXFontのように)必要なサイズ分の 
フォントオブジェクトを作成しておき、サイズに応じて使い分けるなど工夫した方がいいでしょう。 >>

たしかにおっしゃることは理解できるんですが、実際リリース版には反映されないし、なるべく自由度の高い関数が好みなので、深刻な問題にならない限りこのスタイルで行こうと思ってます(実はフォントも弄れるようにするつもりでした)。生意気ですいません


一応反映された結果として、
int    DrawPrintf(int x, int y, int size, D3DCOLOR color, char *szFormat, ...)
{
    char    szText[1024];    // 描画文字列
    RECT    rect;            // 矩形    
    int        nLength;        // 文字数

    // 文字列の生成
    va_list        va;

    va_start( va, szFormat );
    nLength = vsprintf( szText, szFormat, va);
    va_end( va );

    // フォントの初期化
    LPD3DXFONT hfont; 
    HRESULT hr = D3DXCreateFontIndirectA( g_pd3dDevice, &fd, &hfont); 
    if(hr == D3D_OK) 
    { 
        SetRect( &rect, x, y, 640, 480 ); 
        hfont->DrawTextA( NULL, szText, -1, &rect, DT_LEFT, color ); 
        hfont->Release(); 
        return nLength; 
    } 
    else{
        MessageBox(NULL, "D3D_OK以外の値が返されました","エラー",MB_OK);
        PostQuitMessage( 0 );}
    return 0;
}


このような状態になっているんですが、これどこにサイズ変更の命令をいれればいいんですかね・・・?
それとまた別の問題なんですが、どうも描写されたりされなかったりする部分があるみたいで
フォント関係に触れるのが初めてなのでかなり単純なことを聞いている感が否めないのですが、なにとぞよろしくお願いします


636ポイント を手に入れた。

Name: Justy  ..伝説なるハッカー(517,677ポイント)   Date: 2010/04/05(月) 01:31   No:50163     
Title: Re:フォント異常    
 元の DrawPrintfと比較すると判りますが、D3DXFONT_DESCの宣言から fd.FaceNameへの
フォント名の設定までがそっくり消えていますよね。
 
 g_pD3DXFontを使わないで新規にフォントオブジェクトを作って描画した後破棄する、
というところ以外は元のままでいいですよ(SetRectのところとか)


81ポイント を手に入れた。

Name: シノニム  ..入門者(4,529ポイント)   Date: 2010/04/05(月) 10:17   No:50172 解決!     
Title: Re:フォント異常    
やっと解決できました!
ありがとうございました


25ポイント を落としてしまった。



Name: ジジ猫  ..ぴよぴよ(54ポイント)   Date: 2010/04/02(金) 18:48   No:50055       
Title: C++初心者、SLG製作。    
タイトル通り、C++はじめて1ヶ月です。


皆さんはスーパーロボット大戦を知っていますか?
僕はコレにはまって、コレと同じようなSLGを作りたいと思いました。

C++とDXライブラリで作ろうと思っています。

早速ですが、タイトル画面のメニューの作り方が分かりません。
簡単で本格派なプログラムがあれば教えてください。


54ポイント を手に入れた。


Name: Dixq (管理人) [URL]  ..ウィザード(1,168,875ポイント)   Date: 2010/04/02(金) 19:50   No:50057     
Title: Re:C++初心者、SLG製作。    
> 簡単で本格派なプログラムがあれば教えてください。

簡単なプログラムと本格的なプログラムは相いれないと思いますが、本格的なメニュー画面をなるべく簡単なプログラムで表現したいということでしょうか?

本格的なメニュー画面の作成は基本となる骨格にエフェクトを付けていくことだと思います。
他のトピでも似たような事を言ったかも知れませんが、
例えばファミコンのメニュー画面って基本的で簡素ですよね。
ボタンを押したら瞬間的に次の画面に飛び、切り替わりエフェクトなどはない場合が多いです。
それに対して最近のゲームはなんらかのエフェクトがかかったりフェードアウトすることが多いと思います。

このようにボタンを押した後何らかのエフェクトをかけたり、フェードアウトしたり、一瞬で次の画面に切り替わらないようにすると「本格的」と感じられるようになると思います。
エフェクトつくりは凝り始めると終わりが無いので、まずどの辺の「本格」を目指すかを決めませんか?
そしてどのようなエフェクトをかけるか、どんなメニュー画面にするか。

現在どこまで出来ていますか?
そこからどのように発展させるかをはっきりさせてみましょう。

後シューティング部の制作状況はどの程度ですか?

※うちのAerobeatが本格的なメニュー画面かどうかはわかりませんが、
私が作った経験のあるメニュー画面でしたらアドバイスしやすいかも知れません。


339ポイント を手に入れた。

Name: ジジ猫  ..ぴよぴよ(209ポイント)   Date: 2010/04/03(土) 03:31   No:50066     
Title: Re:C++初心者、SLG製作。    
なるほど…たしかに追求しすぎたら限りがありませんね(笑)。

僕のイメージは「黒い羽を持つ天使(堕天使系、ルチフェルとか)」なんで、キーを動かしたときに羽を落とすようにしたいです。Aerobeatで一回きらっと光る代わりにそうなってくれればいいと思っています。

あと、すみませんがスパロボはST(シューティング)ではなくSL(シュミレーション)です。
まだ全然できてませんが、RPGのマップの処理を応用すれば出来だろうと思っています。

まだ未知の世界であるC++です。わからないことがまだたくさんあります。
超初心者の僕ですけれども、厳しく、わかりやすくアドバイスしてくれれば幸いです。


155ポイント を手に入れた。

Name: Dixq (管理人) [URL]  ..ウィザード(1,169,611ポイント)   Date: 2010/04/03(土) 09:25   No:50070     
Title: Re:C++初心者、SLG製作。    
あぁ、すみません、読み間違ってました。シミュレーションですね。
では、黒い羽が落ちるエフェクトを考えてみましょうか。
とりあえず選ぶだけのメニューはもう出来ているということでよいでしょうか?

例えば下キーを押したりして選択状態が変わることがあると思いますがキーをおして選択状態が変わった時に羽が落ちるとよさそうですね。
と言う事は、プログラムのどこかに

if( 下キーが入力されたら ){
    選択状態を変更する
}

みたいに書いてある部分があると思います。
その中に

if( 下キーが入力されたら ){
    選択状態を変更する
  (x,y)座標に羽を落とすエフェクトを登録する
}

のようにエフェクトを登録してみましょう。
羽が落ちるエフェクトの理論はシューティングと同じで良いと思います。
羽はヒラヒラっと落ちる方がよいのでしょうが、それは難しいので、まずは直線にしばらく落ちて消えるだけにしてみましょう。

シューティングについての解説はうちにすごく沢山あります。
基本的なものはここ
http://dixq.net/g/29.html
昔作ったhttp://dixq.net/s/こんなにもありますし、
龍神録プログラミングの館http://dixq.net/rp/もあります。
ただしC++ではないので、クラス設計の部分では参考にならないかもしれません。

ところでC++はどの程度おわかりなのでしょうか?
C++歴1ヵ月とのこどですが、ピュアCは一通り学んでいて、C++は1ヵ月だけどCなら解るということでしょうか?

黒い羽クラスを作ったとすると中身は
  ・登録を受ける関数
  ・羽の軌道計算関数
  ・描画関数
位でどうでしょうか。
羽は下に向いて発射されたとしましょう。
選択状態が変わったその座標を登録関数に持たせ、その座標から下に羽を発射させます。
羽の軌道計算で下向きつまり-PI/2の方向に移動させつつ、どれ位進んだか監視し、ある程度進んだら、登録を削除します。

まずはこんな感じで見た目はしょぼいかもしれませんが、簡単なものだけ作って基本を覚えてみてはいかがでしょうか。


736ポイント を手に入れた。

Name: ジジ猫  ..ぴよぴよ(278ポイント)   Date: 2010/04/05(月) 08:47   No:50168 解決!     
Title: Re:C++初心者、SLG製作。    
お礼が遅れました。
ありがとうございます。
とりあえずやってみようと思います。

実はCも全然やってないんで、本当に初心者なんです。
参考書はありますが・・・。
また分からないことがあったら掲示板に書き込みます。


69ポイント を手に入れた。



Name: Ma  ..比類無きプログラマー(70,083ポイント)   Date: 2010/04/02(金) 04:09   No:50020       
Title: TrackPopupMenuは、別スレッドから呼び出せない?    
右クリックで表示される、ポップアップメニューを、WinAPIを使ってDXライブラリを使ったプログラムに実装しました。


void DisplayPopUpMenu(int menu){
    
    //ウィンドウ位置取得
    int x,y;
    GetWindowPosition(&x,&y);

    switch(menu){
        case MAIN_POPUP:
            {
                TrackPopupMenu(mainPopUpMenu, TPM_LEFTALIGN,MousePosX+x, MousePosY+y, 0, mainWindowHandle, NULL);
                
            }


その表示部分は↑のとおりです。
このプログラムは期待通りに動作しましたが、この関数は制御を戻してくれないので(BGM再生中などに右クリックすると困る)、別スレッドで呼ぼうとおもったんです。


改良後、


DWORD WINAPI DisplayPopUpMenuNewThread(LPVOID vdParam) {
    //ウィンドウ位置取得
    int x,y;
    GetWindowPosition(&x,&y);
    int value = TrackPopupMenu(mainPopUpMenu, TPM_LEFTALIGN,MousePosX+x, MousePosY+y, 0, mainWindowHandle, NULL);

    DWORD err = (GetLastError());
    return -1;
}

HANDLE popUpThread;
void DisplayPopUpMenu(int menu){
    switch(menu){
        case MAIN_POPUP:
            {
                //クリックした場所に表示。
                DWORD thID = NULL;
                popUpThread = (HANDLE)CreateThread(NULL,0,DisplayPopUpMenuNewThread,NULL,0, &thID);
                
            }


こんな感じになったんですが、ポップアップメニューが表示されませんでした。
GetLastErrorで取得したエラーコードは、err = 87 となり、エラー内容、パラメターが正常ではないとのことなんですが、特に間違っているところがみあたりません。
(value = 0 でした。これはエラー発生を意味します。)

そもそも、別スレッドで、ポップアップメニューを呼ぶのは反則だということなのでしょうか。。。。? 編集済み


107ポイント を手に入れた。


Name: Ma  ..比類無きプログラマー(72,950ポイント)   Date: 2010/04/03(土) 09:54   No:50073     
Title: Re:TrackPopupMenuは、別スレッドから呼び出せない?    
検証用プロジェクトを作りました。(Win32)
(VC++ 2008 Express)

検証にお使いください。
どこぞのプロジェクトソースをコピーペーストしてちょっといじっただけなので、
検証に不要な部分が多少ありますが、あまり気にしないでください。


なお、ソースコードの

//これをコメントアウトするかどうかで切り替え可能。
//#define TRY_NEW_THREAD

の部分を


//これをコメントアウトするかどうかで切り替え可能。
#define TRY_NEW_THREAD

こうすると、新規スレッドを使います。


161ポイント を手に入れた。

Name: Justy  ..伝説なるハッカー(515,752ポイント)   Date: 2010/04/03(土) 22:18   No:50109     
Title: Re:TrackPopupMenuは、別スレッドから呼び出せない?    
 その手のはスレッドと紐付いているので、別スレッドでは処理できなかったはずです。
 別スレッドで行うのであれば、そのスレッド内で別の(見えない)ウインドウを作って
そのウインドウに対してポップアップメニューを出せば非同期で出すことができると思います。


96ポイント を落としてしまった。

Name: Ma  ..比類無きプログラマー(74,034ポイント)   Date: 2010/04/04(日) 00:20   No:50114     
Title: Re:TrackPopupMenuは、別スレッドから呼び出せない?    
>Justy さん

なるほど、実際にやってみたら非同期的に表示することに成功しました。
ありがとうございます^^

それで、新しく問題がでてきました。
今度は、メニューを表示している間、もう一度他の場所を右クリックした場合、もう一度新しい場所にポップアップメニューを表示させたかったんですが、これがうまくいきません。

強制的にTrackPopupMenuを終了させる方法が分からない(たぶんない?)ので、メインスレッドからキャンセルさせる方法は諦めました。
(あるようならぜひおしえてください。)

次に、本来制御を戻さないのにキャンセルできるのは、デフォルトウィンドウプロシージャがやる仕事だからなのだろうと勝手に思いまして(あってるか不明…)、見えないウィンドウにも新しく作ったウィンドウプロシージャを呼ばせようと思ったのですが、今度は、このウィンドウプロシージャは呼ばれず、しかも処理が極端に遅くなってしまいました。
(特によくわからないのはブレイクポイントをいれるとポップアップメニューが表示されて、いれないと表示されないという珍現象…)

おそらく、この方法でいけるとおもうのですが、コーディングミスのせいなのか失敗でした。
(よろしければ、添付ファイルをごらんになってください。)

どうしたらポップアップのキャンセルと別の場所にメニュー表示が上手くいくのか教えてもらえないでしょうか? 編集済み


475ポイント を手に入れた。

Name: Justy  ..伝説なるハッカー(515,931ポイント)   Date: 2010/04/04(日) 02:16   No:50115     
Title: Re:TrackPopupMenuは、別スレッドから呼び出せない?    
>強制的にTrackPopupMenuを終了させる方法が分からない
 TrackPopupMenuの前に SetForegroundWindowを呼んでおくとキャンセルできます。

 ソースを見ました。
 スレッドが常駐しているのですね。

 んー、とりあえず今のソースは残しておいた上で、元の随時スレッドを作るタイプに戻し
そのスレッドの中で

・ ウインドウ作成
・ 通常の GetMessage〜DispatchMessage()のループ
・ そのウインドウのプロシージャの WM_CREATEで SetForegroundWindowと TrackPopupMenuを呼び、
 TrackPopupMenuの処理から戻ってきたらDestroyWindowを呼ぶ。

とします。

 多分これで仕組み的にはうまくいくような気がしますが、どうでしょう?


42ポイント を手に入れた。

Name: Ma  ..比類無きプログラマー(74,092ポイント)   Date: 2010/04/04(日) 07:55   No:50120     
Title: Re:TrackPopupMenuは、別スレッドから呼び出せない?    
アドバイスにそってやってみましたが、二つ目のウィンドウプロシージャが呼ばれません。
二つ目作るのは初めてなので何がいけないのかよくわかりません。
どうでしょうか?何か思いつく点などないでしょうか?

あと、SetForegroundWindowについては、まだ未実装です。
(忘れてただけですけどもw)
ウィンドウプロシージャが解決次第やります。 編集済み


58ポイント を手に入れた。

Name: Justy  ..伝説なるハッカー(516,139ポイント)   Date: 2010/04/04(日) 12:20   No:50131     
Title: Re:TrackPopupMenuは、別スレッドから呼び出せない?    
 1つ目と2つ目のウインドウクラス名が同じになっていますよ。

34ポイント を手に入れた。

Name: Ma  ..比類無きプログラマー(74,510ポイント)   Date: 2010/04/04(日) 13:18   No:50137     
Title: Re:TrackPopupMenuは、別スレッドから呼び出せない?    
>1つ目と2つ目のウインドウクラス名が同じになっていますよ。
ウィンドウクラス名はかぶっちゃいけないんですね…。


できましたー!
ありがとうございます。

ただ、この場合、TerminateThread 関数を使わないと、TrackPopupMenu を終了させることができないのでしょうか?


HANDLE secondThread = NULL;
DWORD thID = NULL;
void popupMenu()
{
    POINT pt;
    pt.x = LOWORD(lParameter);
    pt.y = HIWORD(lParameter);
    ClientToScreen(hWindow,&pt);
#ifdef TRY_NEW_THREAD
    //第二スレッドを開始します。
    
    if(secondThread != NULL){
        DWORD dwExCode;
        
        GetExitCodeThread(secondThread, &dwExCode);
        if(dwExCode == STILL_ACTIVE){
            WPARAM wParam = NULL;
            TerminateThread(secondThread,dwExCode);
        }
    }

    secondThread = CreateThread(NULL,0,DisplayPopUpMenuNewThread,NULL,0, &thID); 

}


こんな感じの実装で、おおむね期待通りに動いたのですが、TerminateThread は危険な関数で極力避けたほうがいいとあったのですが、
代替できる方法はないでしょうか?


398ポイント を手に入れた。

Name: Justy  ..伝説なるハッカー(516,429ポイント)   Date: 2010/04/04(日) 14:21   No:50140     
Title: Re:TrackPopupMenuは、別スレッドから呼び出せない?    
>TerminateThread 関数を使わないと、TrackPopupMenu を終了させることができないのでしょうか
 それは上の説明の通り、WM_CREATEで SetForegroundWindow / DestroyWindowを使っても
終わらせられなかった、ということですか?
(DestroyWindowも WM_CREATEの中ですよ)


 元々はDXライブラリと併用するつもり、なのですよね?
 一応上の方法で可能といえば可能なはずですが今の方法だと、アクティブなウインドウが
変わってしまうとか、ポップアップメニューが表示されるまで時間がかかることがある、など
(いろいろ手を尽くせばなんとかなるのかもしれませんが)少々問題がありそうです。
 
 ここまで引っ張っておいて何ですが、メインの処理を止めたくないのなら面倒でも
TrackPopupMenuと同じ機能をDXライブラリの機能を使って実装・システム化した方が余計なことに
悩まなくて済みますし、何かと拡張しやすいのではないでしょうか。
 或いは、TrackPopupMenuを使うにしても処理が止まってもいいような内容にするとか。


290ポイント を手に入れた。

Name: Ma  ..比類無きプログラマー(75,119ポイント)   Date: 2010/04/04(日) 15:03   No:50142     
Title: Re:TrackPopupMenuは、別スレッドから呼び出せない?    
> それは上の説明の通り、WM_CREATEで SetForegroundWindow / DestroyWindowを使っても 
>終わらせられなかった、ということですか? 

そうです。
そもそも今のコードだと選択しない限りTrackPopupMenu から制御が戻らないので

> そのウインドウのプロシージャの WM_CREATEで SetForegroundWindowと TrackPopupMenuを呼び、 
> TrackPopupMenuの処理から戻ってきたらDestroyWindowを呼ぶ。 

の方法では、DestroyWindow までたどり着きません。

というのは、TrackPopupMenuで表示後、(メニュー項目以外の)適当な場所をクリックしても制御が戻らないんです。(キャンセルができない理由は自分はよくわかっていません)

それゆえにDestroyWindowまでたどり着きません。
結果的に、いろんなところを右クリックするとおなじポップアップメニューが乱立します。
(他の場所をクリックしてもTrackPopupMenu が、自動的にキャンセルされないため。)

だから、TerminateThread で、TrackPopupMenu を強制的にキャンセルさせたってわけなんです。




> ここまで引っ張っておいて何ですが、メインの処理を止めたくないのなら面倒でも 
>TrackPopupMenuと同じ機能をDXライブラリの機能を使って実装・システム化した方が余計なことに 
>悩まなくて済みますし、何かと拡張しやすいのではないでしょうか。 
> 或いは、TrackPopupMenuを使うにしても処理が止まってもいいような内容にするとか。 

そうですねー。前者はたしかにそれもありかもしれないですね…。
最初に自作するよりは手軽に実装できると思って始めたので、できれば今のままの方法がいいんです。
とはいえ、困難になったら自作に切り替えるべきでしょうね。

ただ、Windows Media Player などのソフトで右クリックすると、音楽は正常再生、メーター?も正常に進んでいるので、(大企業がやっているぐらいなので)安全な方法はあると思うんです。 編集済み


461ポイント を手に入れた。

Name: Justy  ..伝説なるハッカー(516,542ポイント)   Date: 2010/04/04(日) 15:56   No:50145     
Title: Re:TrackPopupMenuは、別スレッドから呼び出せない?    
>そうです

・ win32_test_a.cpp
 最小限で書き換えてみました。
 とりあえずこちらでは動いています。

・ win32_test_b.cpp
 メニューが表示されるまで時間が少しかかっていたので、毎回スレッドを作らない方式に
直してみました。これもこちらでは動いています。
 あれ、この方式だと予想以上にうまくいっている気が。


>Windows Media Player などのソフトで右クリックすると
 wmpがどうやっているかはわかりませんが、TrackPopupMenu 中でもWM_TIMERとかのメッセージは
普通に飛んできます。
 この中で処理すればスレッドを使わなくても何かしらの処理を行うことはできますね
(DXライブラリでその方法が使えるかどうかはわかりません)


113ポイント を手に入れた。

Name: Ma  ..比類無きプログラマー(75,191ポイント)   Date: 2010/04/04(日) 22:05   No:50157     
Title: Re:TrackPopupMenuは、別スレッドから呼び出せない?    
> win32_test_a.cpp 
あれ、ソースが同じなのになんで動かなかったんだろう と思ってツール使って比べてみたら、なぜかウィンドウクラス名が元に戻っていて不具合になっていたみたいですorz
確認ミスでしたすいません。

>win32_test_b.cpp 
なるほど、SendMessage で上手くいけそうです^^



*解決取り消しました。
 編集済み


72ポイント を手に入れた。

Name: Ma  ..比類無きプログラマー(75,305ポイント)   Date: 2010/04/04(日) 23:14   No:50160     
Title: Re:TrackPopupMenuは、別スレッドから呼び出せない?    
すいません、テストしてみたら、メインスレッドのほう、停止していたみたいです。
別スレッドだから当然勝手に動いているだろうと推測していたのが間違いでしたorz
不思議で仕方ない。


確認に使ったソースを添付しました。
bバージョンを元に作ってあります。


114ポイント を手に入れた。

Name: Justy  ..伝説なるハッカー(517,596ポイント)   Date: 2010/04/04(日) 23:47   No:50161     
Title: Re:TrackPopupMenuは、別スレッドから呼び出せない?    
 GetMessage関数ははメッセージキューが空であればそこで止まります。
 次に SendMessageもプロシージャが投げたメッセージを処理し終わらなければ戻ってきません。

 なので、このケースでは添付のように直させばカウントは動きます。


 タイマーを避けたいのであれば、GetMessageの代わりに PeekMessageを使って
メッセージを処理してもいいですね。

デッドタイムを使う
http://wisdom.sakura.ne.jp/system/winapi/win32/win46.html


183ポイント を落としてしまった。

Name: Ma  ..比類無きプログラマー(75,196ポイント)   Date: 2010/04/05(月) 01:39   No:50164     
Title: Re:TrackPopupMenuは、別スレッドから呼び出せない?    
*間違えて投稿。 編集済み

109ポイント を落としてしまった。

Name: Justy  ..伝説なるハッカー(517,729ポイント)   Date: 2010/04/05(月) 01:41   No:50165     
Title: Re:TrackPopupMenuは、別スレッドから呼び出せない?    
 SendMessage -> PostMessage

 あと、それだとすごい勢いで whileループが動きますので、Sleepとか何かで
少しウエイトを入れればいいかと。


52ポイント を手に入れた。

Name: Ma  ..比類無きプログラマー(75,252ポイント)   Date: 2010/04/05(月) 02:07   No:50166     
Title: Re:TrackPopupMenuは、別スレッドから呼び出せない?    
>タイマ
なるほど、これも手ですね。

>SendMessage , PostMessage
ついさっき、違いがわからなくて調べたところでした。

>ウェイト
ですねw


Win32で成功したので、次はDXライブラリへと移植に挑戦します。


56ポイント を手に入れた。

Name: Ma  ..比類無きプログラマー(75,320ポイント)   Date: 2010/04/05(月) 02:10   No:50167 解決!     
Title: Re:TrackPopupMenuは、別スレッドから呼び出せない?    
で、できました!
ちょっぴり感動しました><

Justyさん、お付き合いどうもありがとうございました。

今度時間できたら、WinAPIの復習したいとおもいます(汗 編集済み


68ポイント を手に入れた。



Name: ryu  ..かけだし(1,241ポイント)   Date: 2010/04/03(土) 12:25   No:50080       
Title: Xファイルのアニメ作り方について    
いつもお世話になっております!
Xファイルのアニメーションサンプルと同じように「歩く」「ジャンプ」等を作りたい
と思いXSI体験版をインストールして球体にアニメを作ってXファイル出力
したのですが、出力したtxtを見てみると
サンプルのDxChara.xと同じような形に出力されないのです。
Xファイルを作る場合どのようにすればよいのでしょうか?



Name: ryu  ..かけだし(1,333ポイント)   Date: 2010/04/03(土) 15:10   No:50091     
Title: Re:Xファイルのアニメ作り方について    
Xファイルを吐き出した後ちゃんと再生されるか
 fragMotionといういいソフトがあったので確認してみたらちゃんと再生できました。
これをC++で実行すると0フレーム目でストップしたままになってしまいます。
・・・アニメーションが早すぎて処理が追いついてないとか・・・?






92ポイント を手に入れた。

Name: Justy  ..伝説なるハッカー(515,666ポイント)   Date: 2010/04/03(土) 20:33   No:50097     
Title: Re:Xファイルのアニメ作り方について    
>アニメーションが早すぎて処理が追いついてないとか・・・? 
 かもしれませんね。アニメーションをゆっくり再生してみては?

 さすがに環境もプログラムも不明で、データも確認できない状況ではこれ以上は何とも……。


102ポイント を手に入れた。

Name: ryu  ..かけだし(1,567ポイント)   Date: 2010/04/03(土) 22:29   No:50110     
Title: Re:Xファイルのアニメ作り方について    
アドバイスありがとうございます、原因は時間でした(^^;
サンプルのDxChara.xの「歩く」モーションは120フレームあり
MV1GetAttachAnimTotalTimeで取得したデータは
12000.000000f でカウントは100fずつカウントしてました
自作のポリゴンは5フレームで
5.000000f というデータで
同じ数値の100fでカウントしてたら、そりゃ動かないってもんですね・・w
謎なのはサンプルのxファイルで
120フレームなのになんで12000fなんてデータになってるんだろうってことなんです。
120fならわかるんですが。
テキストファイルにそのまま書き込んでいるのでしょうか?



234ポイント を手に入れた。

Name: Justy  ..伝説なるハッカー(515,889ポイント)   Date: 2010/04/03(土) 22:49   No:50111     
Title: Re:Xファイルのアニメ作り方について    
 DXライブラリのサンプルの DxChara.xを見てみました。
 0番目の歩きと1番目の走りは 12000までデータが存在しています。
 つまり、MV1GetAttachAnimTotalTime関数で取得できる値そのままです。


>120フレームなのになんで12000fなんて
 毎フレーム 100.fでカウントアップしているんで 12000/100 = 120ってことなんじゃないですかね?


137ポイント を手に入れた。

Name: ryu  ..かけだし(1,649ポイント)   Date: 2010/04/04(日) 08:32   No:50121     
Title: Re:Xファイルのアニメ作り方について    
なるほど・・・・AnimeSetの121って書いてあるこれが時間だと
ばかり思い込んでました・・・
もやもやがきえました、これで次に進めます、ありがとうございました(^^


82ポイント を手に入れた。

Name: ryu  ..かけだし(1,659ポイント)   Date: 2010/04/04(日) 08:33   No:50122 解決!     
Title: Re:Xファイルのアニメ作り方について    
解決ボタン押し忘れましたw

10ポイント を手に入れた。



Name: 初心者  ..熟練のプログラマー(47,218ポイント)   Date: 2010/04/04(日) 06:27   No:50118       
Title: クラスについて    
class A {
//省略
public:
 A(){...}
 void add(int n) {...}
};

int Main() {
 A a[3];
//省略
 a[3].add(5);//ここで配列の要素3にアクセスするために、要素数を1つ増やしたい
}


このようにクラスのメモリの動的確保?をしたいのですが、
alloc系の関数で再確保してしまうとコンストラクタが呼び出されないです。
要素数を増やす事しか目的にしてないんですが、コンストラクタが呼び出されるやり方はありますか??

まとめると、
ユーザーが入力を終えるまで分からないn個のデータをクラスに格納して増やしていきたい。

すいませんが、よろしくお願いします
環境
C++,VC++2008EE
足りない点がありましたらご指摘ください。


2倍のポイントを手に入れた! 622ポイント を手に入れた。


Name: 初心者  ..熟練のプログラマー(47,204ポイント)   Date: 2010/04/04(日) 07:11   No:50119 解決!     
Title: Re:クラスについて    
すいません、自己解決しました。

14ポイント を落としてしまった。



Name: kazuoni [URL]  ..ハッカー(142,389ポイント)   Date: 2010/04/03(土) 18:54   No:50095       
Title: dxlibp.hとDxLib.libのリンク方法    
お邪魔します。

現在、憂煉様の制作されたDXライブラリPortableを用いて
プログラムをしているのですが、
普通ならば、dxlibp.aにリンクをするのですが、
本家互換との事なので、本家のライブラリとリンクさせたいのです。
が、方法がイマイチ分かりません。VECTORのあたりは、PSPSDK中心で組まれているので、
そのあたりは省くとして、それ以外を本家からリンクしたいと思っています。

dxlibp.hを「プロジェクトに追加すべきファイル_VC用」に追加するとして、
dxlibp.hにはどの様な追記が必要になるのでしょうか?

本家のDxLib.hに書いてある「ライブラリリンク定義」を
dxlibp.hにそのままコピぺし、
main.cppでDxLib.hをインクルード
Func.cppでdxlibp.hをインクルード
の様にし、Func.cppでDXライブラリ関数を使用するとリンクエラー(LNK2019)が出てしまいます。

よろしくお願いします。


329ポイント を手に入れた。


Name: Justy  ..伝説なるハッカー(515,564ポイント)   Date: 2010/04/03(土) 20:24   No:50096     
Title: Re:dxlibp.hとDxLib.libのリンク方法    
 本家のライブラリとリンクって、Windows用のライブラリと、ってことですか?

 DXPはあまりよく知らないのですが、普通に考えて「本家互換」とはDXライブラリと同じ関数を使えば
同じような挙動になるといった関数名・引数などのインターフェースとその挙動に関する
互換ではないでしょうか。

 WindowsPCと PSPでは OSも CPUも違うので中間言語でもなければバイナリーレベルでの
互換はないのでWindows用のライブラリをリンクすることは出来ないかと。


157ポイント を手に入れた。

Name: kazuoni [URL]  ..ハッカー(142,466ポイント)   Date: 2010/04/03(土) 20:43   No:50098     
Title: Re:dxlibp.hとDxLib.libのリンク方法    
ご回答ありがとうございます。

申し訳ありません。コンパイラはVCを使います。
つまり、PC用のアプリケーションを作ります。
結局はDXPの関数のみをインクルード出来ればよいと言うだけです。


77ポイント を手に入れた。

Name: Justy  ..伝説なるハッカー(515,777ポイント)   Date: 2010/04/03(土) 20:58   No:50099     
Title: Re:dxlibp.hとDxLib.libのリンク方法    
 なるほど、そういうことですか。

 dxlib.hと dxlibp.hを混在させたい、と。
 なんか無理がありそうな気がしてならないのですが、リンクエラーとは具体的に
どんなメッセージを出していますか?



※ dxlibpの方は当然と言えば当然ですが double型が全面的に取っ払われていますね。
 これはエラーを起こす原因になるのかも。


111ポイント を手に入れた。

Name: kazuoni [URL]  ..ハッカー(142,307ポイント)   Date: 2010/04/03(土) 21:07   No:50100     
Title: Re:dxlibp.hとDxLib.libのリンク方法    
現在、Func.cppは以下の様になってます。
#include "dxlibp.h"

int Func()
{
    return DrawString(0,0,"TEST",0xffffff);
}


1>Func.obj : error LNK2019: 未解決の外部シンボル _DrawString が関数 "int __cdecl Func(void)" (?Func@@YAHXZ) で参照されました。

よくみるやつですが・・・。

> dxlibpの方は当然と言えば当然ですが double型が全面的に取っ払われていますね。
すっかり忘れていました。。
これじゃ拡大、縮小、回転系全部まずいですね。。
結局は現在DXPに存在する関数をすべてをラップして、新たなヘッダが必要になりますかね。。
やりたい事は、DXライブラリにはあって、DXPにはない関数が登場する場合、
コンパイルエラー(関数が存在しない)が出てくれれば用が足りるんですが・・・。 編集済み


159ポイント を落としてしまった。

Name: Justy  ..伝説なるハッカー(515,817ポイント)   Date: 2010/04/03(土) 21:13   No:50101     
Title: Re:dxlibp.hとDxLib.libのリンク方法    
 あー、シンボル名で気付きましたが dxlibpの方は全部 extern "C"が入っていますね。
 これを削除するとどうなりますか?


40ポイント を手に入れた。

Name: kazuoni [URL]  ..ハッカー(142,388ポイント)   Date: 2010/04/03(土) 21:34   No:50103     
Title: Re:dxlibp.hとDxLib.libのリンク方法    
お次はこのエラーです

1>Func.obj : error LNK2019: 未解決の外部シンボル 
"int __cdecl DrawString(int,int,char const *,int,int)" (?DrawString@@YAHHHPBDHH@Z)
 が関数 "int __cdecl Func(void)" (?Func@@YAHXZ) で参照されました。


81ポイント を手に入れた。

Name: Justy  ..伝説なるハッカー(515,848ポイント)   Date: 2010/04/03(土) 21:56   No:50105     
Title: Re:dxlibp.hとDxLib.libのリンク方法    
 後は名前空間くらいでしょうか。
 本家 3.0から関数が名前空間に囲まれてますんで。


31ポイント を手に入れた。

Name: kazuoni [URL]  ..ハッカー(142,485ポイント)   Date: 2010/04/03(土) 22:09   No:50108 解決!     
Title: Re:dxlibp.hとDxLib.libのリンク方法    
見事にコンパイル通りました。

うーん・・・。しかし、やはり、すべてdouble→floatとなっているところが
気持ち悪いですね。「一応」は動くみたいです。
ここはラップした方がいいですね。
ってことは結構全体的に手間がかかりそうで、結局全部手を加えそうな。。

質問は解決しましたので、今回はこれで解決とさせていただきます!
ご回答ありがとうございました。 編集済み


97ポイント を手に入れた。




 
[ 1 , ... ]
 
 
管理者画面   RSS   + Powered By 21style +