C言語何でも質問掲示板


Total hit  今日  昨日  

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

 
   if文について   
     ・[49464] fatens 
   プレイヤーを左に移動 ....   
     ・[49425] S.K 
     ・[49435] LUNA 
     ・[49444] nekoinu 
     ・[49449] ideyan 
     ・[49455] nekoinu 
     ・[49456] fatens 
     ・[49457] nekoinu 
   質問させてください   
     ・[49450] Dixq(管理人) 
     ・[49454] ふぇす 
   VC++でのXMLの読み込み ....   
     ・[49395] バグ 
     ・[49396] 真由美 
     ・[49398] バグ 
     ・[49405] 真由美 
     ・[49408] Justy 
     ・[49429] 真由美 
     ・[49430] 真由美 
     ・[49431] Justy 
     ・[49453] 真由美 
   質問です。   
     ・[49442] tk 
     ・[49447] かたぴら 
   無題   
   ツールの種類に関する ....   
     ・[49400] DVDM 
     ・[49406] 紅葉 
     ・[49426] アクア 
     ・[49428] softya 
     ・[49436] アクア 
     ・[49437] アクア 
   暇つぶしにどうぞ   
     ・[49324] バグ 
     ・[49330] kazuoni 
     ・[49335] バグ 
     ・[49337] テツ 
     ・[49338] バグ 
     ・[49340] バグ 
     ・[49375] バグ 
     ・[49399] テツ 
     ・[49401] DVDM 
     ・[49403] バグ 
     ・[49404] テツ 
     ・[49416] バグ 
   下らない質問かもしれ ....   
     ・[49412] softya 
     ・[49415] 新米SE 
   fwrintfでテキストファ ....   
     ・[49366] たかぎ 
     ・[49367] gazu 
     ・[49368] たこやき 
     ・[49370] たこやき 
     ・[49371] たこやき 
     ・[49376] たいちう 
     ・[49382] たこやき 
     ・[49397] たいちう 
     ・[49402] たこやき 
   RPGのマップについて   
     ・[49389] softya 
   dllを作るときになぜヘ ....   
     ・[49388] たいちう 
   boost::any   
     ・[49325] たかぎ 
     ・[49326] くりあ 
     ・[49328] たかぎ 
     ・[49329] たかぎ 
     ・[49332] くりあ 
     ・[49336] たかぎ 
     ・[49349] Justy 
     ・[49369] くりあ 
   文字化けについて   
     ・[49331] たかぎ 
     ・[49339] テツ 
     ・[49341] たかぎ 
     ・[49342] テツ 
     ・[49347] たかぎ 
     ・[49350] テツ 
     ・[49352] ideyan 
     ・[49354] テツ 
     ・[49355] ideyan 
     ・[49357] テツ 
     ・[49359] ideyan 
     ・[49360] テツ 
     ・[49362] ideyan 
     ・[49363] テツ 
   オープンソースなどを ....   
     ・[49260] たかぎ 
     ・[49265] softya 
     ・[49358] 大学生 
     ・[49361] softya 
   ファイルの存在の確認   
     ・[49257] たかぎ 
     ・[49271] 白狐の子 
     ・[49272] たかぎ 
     ・[49273] 白狐の子 
     ・[49274] Blue 
     ・[49275] たかぎ 
     ・[49276] Blue 
     ・[49277] たかぎ 
     ・[49348] 白狐の子 
   アドレスについて   
     ・[49312] たいちう 
     ・[49314] softya 
     ・[49318] dic 
     ・[49346] no 
   GetSaveFileName関数と ....   
     ・[49344] ぬっち 
   RPG作成について   
     ・[49165] kazuoni 
     ・[49166] softya 
     ・[49284] tsuntsuku 
     ・[49286] Dixq (管理人) 
     ・[49291] softya 
     ・[49319] dic 
   悩みというか、雑談と ....   
     ・[49288] ぽこ 
     ・[49289] たいちう 
     ・[49292] たかぎ 
     ・[49317] dic 
   白黒・セピアetc   
     ・[49295] kazuoni 
     ・[49296] kazuoni 
   「13・敵にショットを ....   
     ・[49279] Dixq (管理人) 
     ・[49280] DVDM 
     ・[49290] 冊 
   rand関数で被らない値 ....   
     ・[49237] 初級者 
     ・[49238] RIO 
     ・[49239] バグ 
     ・[49240] Dixq (管理人) 
     ・[49241] Dixq (管理人) 
     ・[49251] RIO 
     ・[49256] たかぎ 
     ・[49261] 初級者 
     ・[49262] バグ 
     ・[49263] たいちう 
     ・[49264] たいちう 
     ・[49285] バグ 
   パソがシャットダウン ....   
     ・[49152] mnkr 
     ・[49234] デラ初心者 
     ・[49281] デラ初心者 
     ・[49282] dic 
   LoadGraphで連番ファイ ....   
     ・[49247] Justy 
     ・[49267] せいせい 
     ・[49268] fatens 
     ・[49269] たいちう 
     ・[49270] せいせい 
   アプリケーションにす ....   
     ・[49258] えーや 
     ・[49266] okusi 
   DXライブラリ   
     ・[49250] Dixq (管理人) 
   処理の順番?   
     ・[49160] Ma 
     ・[49167] sizuma 
     ・[49168] softya 
     ・[49193] sum 
     ・[49196] softya 
     ・[49200] sum 
     ・[49212] softya 
     ・[49216] sum 
     ・[49246] sum 
     ・[49248] sum 
   文字列が含まれている ....   
     ・[49231] Blue 
     ・[49235] 真由美 
     ・[49242] ジュンヤ 
     ・[49244] Justy 
   C言語の質問です   
     ・[49204] sizuma 
     ・[49222] asd 
     ・[49225] sizuma 
     ・[49226] たかぎ 
     ・[49228] たかぎ 
     ・[49243] Dixq (管理人) 
   ひつようなもの   
     ・[49205] hit 
     ・[49206] softya 
     ・[49233] hit 
   プロジェクトをコピー ....   
     ・[49087] たかぎ 
     ・[49089] たいちう 
     ・[49232] kei 
   .netのリストボックス ....   
     ・[49145] Justy 
     ・[49229] sim 
   VC++ [雑談です]   
     ・[49175] Ma 
     ・[49177] Tororo 
     ・[49178] Justy 
     ・[49179] たかぎ 
     ・[49181] softya 
     ・[49182] Tororo 
     ・[49183] Tororo 
     ・[49186] バグ 
     ・[49190] softya 
     ・[49197] バグ 
     ・[49227] tkmakwins15 
   無題   
     ・[49211] softya 
     ・[49213] kaede 
     ・[49218] たいちう 
     ・[49219] たいちう 
     ・[49220] kaede 
     ・[49224] softya 
   無題   
     ・[49223] Blue 
   相談です   
     ・[49094] たいちう 
     ・[49095] たかぎ 
     ・[49096] tk 
     ・[49102] たいちう 
     ・[49107] たかぎ 
     ・[49217] tk 
   CX000069:スタックフレ ....   
     ・[49176] Yuno 
     ・[49189] Justy 
     ・[49203] Yuno 
     ・[49215] Justy 
   ゲームプログラマ   
     ・[49113] softya 
     ・[49115] softya 
     ・[49121] レッドリ 
     ・[49131] softya 
     ・[49207] レッドリ 
     ・[49209] softya 
     ・[49214] レッドリ 
   構造体   
     ・[49053] たかぎ 
     ・[49054] tk 
     ・[49055] たいちう 
     ・[49084] けろん 
     ・[49088] tk 
     ・[49210] けろん 
   弾の軌道について   
     ・[49048] Justy 
     ・[49066] Tatu 
     ・[49082] サクソ 
     ・[49201] サクソ 
   外部参照   
     ・[49133] ぽこ 
     ・[49155] くりあ 
     ・[49187] tuelon 
     ・[49191] くりあ 
     ・[49194] tuelon 
     ・[49195] softya 
     ・[49199] くりあ 
   1次元配列を使って2次 ....   
     ・[49188] Justy 
     ・[49192] box 
   選択画面   
     ・[49119] kazuoni 
     ・[49147] rolf 
     ・[49148] rolf 
     ・[49149] ideyan 
     ・[49153] rolf 
     ・[49154] ideyan 
     ・[49157] kazuoni 
     ・[49169] rolf 
     ・[49171] rolf 
     ・[49172] kazuoni 
     ・[49184] rolf 
   物理 バネ   
     ・[49126] Ma 
     ・[49143] ぽこ 
     ・[49159] Ma 
     ・[49162] ぽこ 
     ・[49174] Ma 
   選択画面    
     ・[49158] kazuoni 
   24. 行けない所を作る ....   
     ・[49139] ひよこ 
     ・[49140] KN 
     ・[49141] ROM 
     ・[49142] ひよこ 
   選択画面   
     ・[49120] kazuoni 
     ・[49129] Y.K 
     ・[49137] conio 
   VC6.0でEXCEL2003ファ ....   
     ・[49135] Justy 
     ・[49136] かんさい 
   時間の差分について   
     ・[49124] たかぎ 
   VC++.netで自動的にサ ....   
     ・[48933] softya 
     ・[49057] 真由美 
     ・[49058] Blue 
     ・[49098] dic 
     ・[49099] dic 
     ・[49123] 真由美 
   エラー   
     ・[49111] ideyan 
     ・[49112] no 
     ・[49116] hit 
     ・[49118] hit 
   ポインタについて   
     ・[49100] dic 
     ・[49103] box 
     ・[49104] 初級者 
     ・[49105] テツ 
     ・[49106] ideyan 
     ・[49108] テツ 
   タイトル→選択→ゲー ....   
     ・[49059] kazuoni 
     ・[49060] HBD 
     ・[49062] fatens 
     ・[49077] HBD 
     ・[49078] fatens 
     ・[49101] HBD 
   初心者です 入門編に ....   
     ・[49016] Justy 
     ・[49090] tsuntsuku 
     ・[49091] たかぎ 
     ・[49092] tsuntsuku 
   【C++】制御文の自作は ....   
     ・[49080] たかぎ 
     ・[49081] array 
     ・[49083] たかぎ 
     ・[49085] array 
   小学生最後の作品   
     ・[48043] Tatu 
     ・[48044] ひよこ 
     ・[48045] Tororo 
     ・[48046] Tororo 
     ・[48047] Tatu 
     ・[48049] Tororo 
     ・[48055] Tatu 
     ・[48057] Tororo 
     ・[48058] Tororo 
     ・[48061] Tororo 
     ・[48062] Tororo 
     ・[48065] Tatu 
     ・[48066] Tororo 
     ・[48075] Tororo 
     ・[48088] Tatu 
     ・[48104] Tororo 
     ・[48280] Tororo 
     ・[48290] Dixq (管理人) 
     ・[48293] Tororo 
     ・[48296] Dixq (管理人) 
     ・[48298] Tatu 
     ・[48299] Tororo 
     ・[48309] こめかみ 
     ・[48454] Tororo 
     ・[48647] Tororo 
     ・[48649] dic 
     ・[48650] Tororo 
     ・[48652] Tatu 
     ・[48653] Tororo 
     ・[48655] dic 
     ・[48660]   
     ・[48670] Tororo 
     ・[48683] Tororo 
     ・[48685] Tororo 
     ・[48721] 房州 
     ・[48751] DG 
     ・[48764] Tororo 
     ・[48765] ideyan 
     ・[48768] Tororo 
     ・[48789] no 
     ・[48791] 房州 
     ・[48818] Tororo 
     ・[48891] situmon 
     ・[48896] Tororo 
     ・[48897] Tororo 
     ・[48910] Tororo 
     ・[48974] DG 
     ・[49021] Tororo 
     ・[49076] Tororo 
   1文字の比較をしたいと ....   
     ・[49071] kei 
     ・[49073] たかぎ 
     ・[49074] 御津凪 
     ・[49075] kei 
   DirectX について   
     ・[49072] softya 

Name: 琉金  ..ぴよぴよ(64ポイント)   Date: 2010/03/19(金) 18:05   No:49463       
Title: if文について    
if文で、○○を△△で割った結果が0から7(0または1、2、3、4、5、6、7)だったら処理みたいな感じに出来ますか?
それともこういう文の場合 forとか while を使うのでしょうか?


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


Name: fatens  ..中級者(9,244ポイント)   Date: 2010/03/19(金) 18:10   No:49464     
Title: Re:if文について    
int q = ○○ / △△;
if (0 <= q && q <= 7) {
    //処理
}
で、どうでしょう。


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



Name: nekoinu  ..ぴよぴよ(370ポイント)   Date: 2010/03/19(金) 00:09   No:49419       
Title: プレイヤーを左に移動させる    
プレイヤーを左に移動させるようにプログラミングの館を見ながら作ったのですが、出来ません。

左キーを押すと、ちょこっと左にカクンってなるのですが、すぐ元の位置に戻ってしまいます。

#include "DxLib.h"

struct chara {
        int chara_x;
        int chara_y;
        int chara_image;
}test;
int image[12];

int Key[256];
 
int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[]){
    char GetHitKeyStateAll_Key[256];
    GetHitKeyStateAll( GetHitKeyStateAll_Key );
    for(int i=0;i<256;i++){
        if(GetHitKeyStateAll_Key[i]==1) GetHitKeyStateAll_InputKey[i]++;
        else                            GetHitKeyStateAll_InputKey[i]=0;
    }
    return 0;
}
 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
    ChangeWindowMode(TRUE);//ウィンドウモード
    if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
 
    while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
          //↑メッセージ処理          ↑画面をクリア           ↑入力状態を保存       ↑ESCが押されていない
 
        //プログラミング開始
test.chara_x    =300;
test.chara_y    =140;

LoadDivGraph("test.png", 12 , 3 , 4 , 32 , 32 , image ) ; 

if(Key[ KEY_INPUT_LEFT ] == 1 )
    test.chara_x++ ;
test.chara_image = image[5] ;

DrawGraph( test.chara_x , test.chara_y , test.chara_image , TRUE );


         //プログラミング終了
  
 
 
 
        ScreenFlip();
    }
 
    DxLib_End();
    return 0;
}

一応エラーはでないで出来ました。
どうすれば左に移動してくれるのでしょうか?
 編集済み


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


Name: S.K  ..ぴよぴよ(10ポイント)   Date: 2010/03/19(金) 01:02   No:49425     
Title: Re:プレイヤーを左に移動させる    
ループの中に
>test.chara_x    =300; 
>test.chara_y    =140;
を書いてしまっているので、毎回元の座標に戻るようになっています。
座標の初期化をループの外に書くと良いと思います。

>LoadDivGraph("test.png", 12 , 3 , 4 , 32 , 32 , image ) ; 
もループの外で一度呼び出せばOKです。


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

Name: LUNA  ..初心者(6,075ポイント)   Date: 2010/03/19(金) 10:54   No:49435     
Title: Re:プレイヤーを左に移動させる    
実際に画像を持ってないんでちょっぴ不安なんですが画像なしでデバッグが通ったんで上げます。
おそらくこれでいいとは思うんですが・・・何分、しばらくプログラムいじって無かったんで。
あと、字下げはしっかりしましょう。見る側も作る側も字下げがしっかりしているとそれだけで幾分か読みやすいですから。会社や学校で字下げしてないものを見せた暁には上司や先輩にはっ倒されますからね・・・

#include "DxLib.h" 

typedef struct chara { 
        int chara_x; 
        int chara_y; 
        int chara_image; 
}TEST; 
int image[12]; 
int Key[256];
TEST test;


int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[]){ 
    char GetHitKeyStateAll_Key[256]; 
    GetHitKeyStateAll( GetHitKeyStateAll_Key ); 
    for(int i=0;i<256;i++){ 
        if(GetHitKeyStateAll_Key[i]==1) GetHitKeyStateAll_InputKey[i]++; 
        else                            GetHitKeyStateAll_InputKey[i]=0; 
    } 
    return 0; 
} 
  
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ 
    ChangeWindowMode(TRUE);//ウィンドウモード 
    if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化 
  
    LoadDivGraph("test.png", 12 , 3 , 4 , 32 , 32 , image ) ;
    test.chara_x    =300; 
    test.chara_y    =140;   

    while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){ 
          //↑メッセージ処理          ↑画面をクリア           ↑入力状態を保存       ↑ESCが押されていない 
  
        //プログラミング開始 


  

        if(Key[ KEY_INPUT_LEFT ] == 1 ){ 
            test.chara_x++ ; 
            test.chara_image = image[5] ; 
        }
        DrawGraph( test.chara_x , test.chara_y , test.chara_image , TRUE ); 


         //プログラミング終了 
   
  
  
  
        ScreenFlip(); 
    } 
  
    DxLib_End(); 
    return 0; 
} 


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

Name: nekoinu  ..ぴよぴよ(0ポイント)   Date: 2010/03/19(金) 14:43   No:49444     
Title: Re:プレイヤーを左に移動させる    
whileループの外に、入れましたが出来ません・・・。
どこが間違ってるのでしょうか?


#include "DxLib.h"

struct chara {
        int chara_x;
        int chara_y;
        int chara_image;
}test;

int image[12];
int Key[256];
 
int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[]){
    char GetHitKeyStateAll_Key[256];
    GetHitKeyStateAll( GetHitKeyStateAll_Key );
    for(int i=0;i<256;i++){
        if(GetHitKeyStateAll_Key[i]==1) GetHitKeyStateAll_InputKey[i]++;
        else                            GetHitKeyStateAll_InputKey[i]=0;
    }
    return 0;
}

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
    ChangeWindowMode(TRUE);//ウィンドウモード
    if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化

//--------------ここに入れました--------------- 

LoadDivGraph("test.png", 12 , 3 , 4 , 32 , 32 , image ) ;

test.chara_x    =300;
test.chara_y    =140; 

//---------------------------------------------

while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
          //↑メッセージ処理          ↑画面をクリア           ↑入力状態を保存       ↑ESCが押されていない
 

//プログラミング開始

 
if(Key[ KEY_INPUT_LEFT ] == 1 )
    test.chara_x-- ;
    
test.chara_image = image[5] ;

DrawGraph( test.chara_x , test.chara_y , test.chara_image , TRUE );

    
//プログラミング終了
  

        ScreenFlip();
    }

    DxLib_End();
    return 0;
}


見難かったらすみません。


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

Name: ideyan  ..入門者(2,625ポイント)   Date: 2010/03/19(金) 15:15   No:49449     
Title: Re:プレイヤーを左に移動させる    
出来ませんとありますが、
全く動かないのか、押した瞬間しか動かないのかどちらでしょうか?

後者ならば
if(Key[ KEY_INPUT_LEFT ] == 1 ) 
    test.chara_x-- ; 

これを、下のように変えてみてください。

if(Key[ KEY_INPUT_LEFT ] > 0 ) 
    test.chara_x-- ; 
あと、ループ内にあっても特に問題は無いですが
test.chara_image = image[5] ; 
これもループの外に出すことができますよ。


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

Name: nekoinu  ..ぴよぴよ(2ポイント)   Date: 2010/03/19(金) 15:41   No:49455     
Title: Re:プレイヤーを左に移動させる    
できました!

>>出来ませんとありますが、 
全く動かないのか、押した瞬間しか動かないのかどちらでしょうか? 

説明不足でごめんなさい。 押した瞬間しか動かない のが正しいです。

>>if(Key[ KEY_INPUT_LEFT ] > 0 ) 
    test.chara_x-- ; 


確かに、この方法で出来ましたが 何故

if(Key[ KEY_INPUT_LEFT ] == 0 ) 
    test.chara_x-- ; 

では押した瞬間しか動かなくなるのでしょうか?


 > 0と ==0 ではほとんど同じ意味になのに・・。

ちなみに 何故か > 1 でも実行できました。

質問自体は解決したのですが、まだモヤモヤが残ってます・・・。
何度も質問してしまいすみません。
 編集済み


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

Name: fatens  ..初心者(8,970ポイント)   Date: 2010/03/19(金) 15:55   No:49456     
Title: Re:プレイヤーを左に移動させる    
>0と==0ではなく、>0と==1ですね。
GetHitKeyStateAll_2 関数は渡された配列にキーがどれだけ押されているかを格納します。
よって、押されていないときは0、押された瞬間は1、そして押されているときは1以上の値が入っています。
このことから、==1にはキーが押されている限り一度しかならないことが分かります。
整数においては、0より大きいことと1以上とは同じなので、>0で比較したようです。


>何度も質問してしまいすみません。
質問することは大いに結構だと思います。
曖昧なままにしておくことの方がよっぽど問題です。


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

Name: nekoinu  ..ぴよぴよ(102ポイント)   Date: 2010/03/19(金) 16:04   No:49457 解決!     
Title: Re:プレイヤーを左に移動させる    
皆さんご回答ありがとうございます。

>>押されていないときは0、押された瞬間は1、そして押されているときは1以上の値が入っています。
そうだったんですか!初めて知りました。


質問の解決と、モヤモヤが晴れました!ありがとうございます。

また、ゲームプログラミングの館を参考にしながら自分なりに作ってみたいと思います。


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



Name: ふぇす  ..ぴよぴよ(73ポイント)   Date: 2010/03/19(金) 14:58   No:49448       
Title: 質問させてください    
はじめまして。
少し疑問というか、困ったことがあるので質問させていただきます。

龍神録プログラミングの館をコピー&ペーストでプログラミングさせてもらっているのですが、『敵を表示させてみよう』のところで、実行結果のサンプル動画ではきれいに並んで出現していますが私のPCでは画面からはみ出し、さらにはきれいに並んで出現しないのですが、これはなぜでしょうか?

きちんとコピー&ペーストで記述し、エラーも何も出ないのですが、いざ実行するとこの症状が出ます。

解り難くてすいませんが、回答お願いします。


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


Name: Dixq(管理人)  ..ぴよぴよ(307ポイント)   Date: 2010/03/19(金) 15:22   No:49450     
Title: Re:質問させてください    
読み込んでいるエクセルファイル名と中身を確認してみてください

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

Name: ふぇす  ..ぴよぴよ(112ポイント)   Date: 2010/03/19(金) 15:31   No:49454 解決!     
Title: Re:質問させてください    
>>管理人様

回答ありがとうございました!
無事解決しました。


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



Name: 真由美  ..かけだし(1,819ポイント)   Date: 2010/03/18(木) 16:12   No:49384       
Title: VC++でのXMLの読み込み    
VC++でXMLの読み込みをし、テキストボックスに表示したいです。
XMLの読み込みまでは出来たようなのですがこれをテキストボックスに出力する方法がわかりません・・・。

タイトルや日時だけを取得して表示を行いたいです。
どの様にすればよいかご教授願えないでしょうか?

またBASIC認証が必要なRSSフィードがある場合
これでも行えるのでしょうか?


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


Name: バグ  ..ハッカー(192,911ポイント)   Date: 2010/03/18(木) 18:47   No:49395     
Title: Re:VC++でのXMLの読み込み    
テキストボックスに表示したいだけならば、テキストとして読み込んでTextプロパティにセットしてやるだけだと思いますが…?


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

Name: 真由美  ..かけだし(1,889ポイント)   Date: 2010/03/18(木) 19:00   No:49396     
Title: Re:VC++でのXMLの読み込み    
>>バグ様
ご回答ありがとうございます。
すみません・・・そのテキストとしての読み込み方がわからないのです・・・。
XMLを読み込むにはXMLクラスを使わなければならないと書いてあったので
調べてみたのですが良く理解できませんでした。


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

Name: バグ  ..ハッカー(192,984ポイント)   Date: 2010/03/18(木) 19:46   No:49398     
Title: Re:VC++でのXMLの読み込み    
あぁ、そういう事ですか。
たしかに、XML形式でシリアライズされたオブジェクトを復元したい場合はXMLシリアライザークラスを使用しますが、テキストとして読み込みたいなら、テキストファイルを読み込むのと同じ方法でいけるはずですよ。


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

Name: 真由美  ..かけだし(2,144ポイント)   Date: 2010/03/18(木) 21:30   No:49405     
Title: Re:VC++でのXMLの読み込み    
ご回答ありがとうございます。
すみません・・・。テキストを読み込む方法では出来ませんでした。
何か間違えているのでしょうか?

    private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
                 String^ url = "http://headlines.yahoo.co.jp/rss/rps_dom.xml";
                 //url = "test.txt";

                 System::IO::StreamReader^ sr = gcnew System::IO::StreamReader(url,System::Text::Encoding::GetEncoding(932));
                 sr->ReadLine();
                 while(sr->ReadLine() != nullptr){
                     this->textBox1->Text += sr->ReadLine() + "\r\n";
                 }
                 sr->Close();

                //try{}catch(Exception^ ex){}
                /*
                 System::Xml::XmlDocument^ doc = gcnew System::Xml::XmlDocument();
                 doc->Load(url);
                 */
                 //this->textBox1->Text = "ココ";
             }



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

Name: Justy  ..伝説なるハッカー(510,830ポイント)   Date: 2010/03/18(木) 22:50   No:49408     
Title: Re:VC++でのXMLの読み込み    
 xmlの中身が判っているのであれば、XPath式で直接指定して取得するのが楽でしょう。
 
 最初のコードで doc->Load(url) が成功したなら
 doc->SelectNodes("/rss/channel/item");
 で、アイテム一覧 (XmlNodeList)が取得できるはずです。

 あとは、取得した一覧(XmlNodeList)から を各々(XmlElement)を調べて、
SelectSingleNodeメソッドで titleとか pubDateのノードを捕まえ、InnerTextプロパティを参照すれば
お望みのテキストが拾えます。

 ちなみに Basic認証を行う場合は

    System::Xml::XmlDocument^ doc = gcnew System::Xml::XmlDocument();
    System::Xml::XmlResolver^ resolver = gcnew System::Xml::XmlUrlResolver;
    resolver->Credentials = gcnew System::Net::NetworkCredential("id","pass");
    doc->XmlResolver = resolver;
    doc->Load(url);

のように XmlResolverを XmlDocumentにセットすればでアクセスできるはずです。


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

Name: 真由美  ..かけだし(2,279ポイント)   Date: 2010/03/19(金) 02:08   No:49429     
Title: Re:VC++でのXMLの読み込み    
ご回答ありがとうございます。
すみません。
調べてやってみたのですが値を取得できません・・・。
日時のpubdateだけでも取得しようとしたのですが上手くいきません・・・。

this->textBox1->Text = doc->SelectSingleNode(doc->SelectNodes("/rss/channel/item")->ToString());


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

Name: 真由美  ..入門者(2,536ポイント)   Date: 2010/03/19(金) 02:31   No:49430     
Title: Re:VC++でのXMLの読み込み    
連レス失礼します。

                 String^ url = "http://headlines.yahoo.co.jp/rss/rps_dom.xml";
                 System::Xml::XmlDocument^ doc = gcnew System::Xml::XmlDocument();
                 /* BASIC
                 System::Xml::XmlResolver^ resolver = gcnew System::Xml::XmlUrlResolver;
                 resolver->Credentials = gcnew System::Net::NetworkCredential("id","pass"); 
                 doc->XmlResolver = resolver; 
                 */
                 doc->Load(url);
                 System::Xml::XmlNodeList^ node = doc->SelectNodes("/rss/channel/item");

現在はこのように書いておりますがココからどのように取得すればよいのかがわかりません・・・。


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

Name: Justy  ..伝説なるハッカー(512,115ポイント)   Date: 2010/03/19(金) 02:37   No:49431     
Title: Re:VC++でのXMLの読み込み    
 ざくっとサンプルを書いてみました。
 解説は No:49408を参照して下さい。
 

     try
     {
        String^ url = "http://headlines.yahoo.co.jp/rss/rps_dom.xml";
        System::Xml::XmlDocument^ doc = gcnew System::Xml::XmlDocument();
        doc->Load(url);
    
        String^ textBoxStr = "";
        Xml::XmlNodeList^ itemNode = doc->SelectNodes("/rss/channel/item");
        for each(Xml::XmlElement^ item in itemNode)
        {
            String^ str = "";
            Xml::XmlNode^ xeTitle = item->SelectSingleNode("title");
            if(xeTitle == nullptr || String::IsNullOrEmpty(xeTitle->InnerText))
                continue;
            str += "title : " + xeTitle->InnerText + "\r\n";
            
            Xml::XmlNode^ xeLink = item->SelectSingleNode("link");
            if(xeLink == nullptr || String::IsNullOrEmpty(xeLink->InnerText))
                continue;
            str += "link : " + xeLink->InnerText + "\r\n";
            
            Xml::XmlNode^ xeDate = item->SelectSingleNode("pubDate");
            if(xeDate == nullptr || String::IsNullOrEmpty(xeDate->InnerText))
                continue;
            str += "date : " + xeDate->InnerText + "\r\n";
            
            textBoxStr +=  str;
        }
        this->textBox1->Text = textBoxStr;
     }
     catch(...)
     {
     }


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

Name: 真由美  ..入門者(2,581ポイント)   Date: 2010/03/19(金) 15:28   No:49453 解決!     
Title: Re:VC++でのXMLの読み込み    
 Justy 様
ご回答ありがとうございました><
出来ました!!ありがとうございます。

いつもお名前をみるのですが
 Justy 様は何でもわかる素晴らしい技術者ですね・・・。


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



Name: かたぴら  ..ぴよぴよ(28ポイント)   Date: 2010/03/19(金) 14:04   No:49440       
Title: 質問です。    
C言語初心者です。今cの問題を解いて練習しています。次のプログラムを実行したんですがエラーがでてしまいました。しかし、答えを見ても変数が違うだけで見たことのないエラーが出てきてしまいます。しかも、そのエラーが意味がわかりません。どなたか教えていただきませんでしょうか?;
//プログラム//
1 #include<stdio.h>

3 int sum(int);

5 int main(void)
6 {

8    int n;
9    
10    
11    int ans;
12    printf("整数をにゅうりょくして");
13
14
15    scanf("%d",&n); ←問題の部分です;  
    ans=sum(n);

    printf("合計は%d\n",ans);


}
int sum(int x)
{
    int hako=0;
    int i;

    for(i=0;i<x;i++){
        hako+=i;
}
    return hako;
}
//エラー一覧//
------ ビルド開始: プロジェクト: hello, 構成: Debug Win32 ------
コンパイルしています...
hello.cpp
c:\users\masaki\documents\visual studio 2008\projects\hello\hello\hello.cpp(15) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
        c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(306) : 'scanf' の宣言を確認してください。
c:\users\masaki\documents\visual studio 2008\projects\hello\hello\hello.cpp(15) : error C3872: '0x3000': この文字を識別子で使用することはできません
c:\users\masaki\documents\visual studio 2008\projects\hello\hello\hello.cpp(15) : error C3872: '0x3000': この文字を識別子で使用することはできません
c:\users\masaki\documents\visual studio 2008\projects\hello\hello\hello.cpp(15) : error C3872: '0x3000': この文字を識別子で使用することはできません
c:\users\masaki\documents\visual studio 2008\projects\hello\hello\hello.cpp(16) : error C2065: '   ' : 定義されていない識別子です。
c:\users\masaki\documents\visual studio 2008\projects\hello\hello\hello.cpp(16) : error C2146: 構文エラー : ';' が、識別子 'ans' の前に必要です。
ビルドログは "file://c:\Users\masaki\Documents\Visual Studio 2008\Projects\hello\hello\Debug\BuildLog.htm" に保存されました。
hello - エラー 5、警告 1
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========


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


Name: tk  ..入門者(3,389ポイント)   Date: 2010/03/19(金) 14:38   No:49442     
Title: Re:質問です。    
> error C3872: '0x3000': この文字を識別子で使用することはできません
上記のエラーは全角の空白がある場合に出ます。

あとコードはちゃんと張ってください。
すごい見にくいです。


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

Name: かたぴら  ..ぴよぴよ(69ポイント)   Date: 2010/03/19(金) 14:57   No:49447 解決!     
Title: Re:質問です。    
tkさん
返信ありがとうございます。解決しました。


はい;;次回書き込む機会がありましたら注意します。


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



Name: やつれた  ..ぴよぴよ(102ポイント)   Date: 2010/03/19(金) 14:50   No:49446       
Title: 無題    
いま私はDXライブラリでノベルゲームのスクリプトを作っています。
file_read = FileRead_open( "script/00.txt" );
でテキストを読みだすことはできたのですが、DXライブラリ作者のページを参考に自分なりに応用してみたら動作ががおかしなことになってしまいました。ソースが汚かったりめちゃくちゃだッたりすると思いますがご教授お願いします。
*おかしな動作:二回同じ文字を読み込んだり、起動したとたん物凄く重くなったりする。

// ファイルの終端が来るまで表示する
while( FileRead_eof( file_read ) == 0 )
{
  for(int i=0; i < SP; i++){
    FileRead_gets(StringBuf[i], 256,file_read);    // 一行読み込み    
  }

  for(int i = 0 ; i < STRBUF_HEIGHT ; i ++ ){
    DrawString(string_X,i * STRING_SIZE+365 , StringBuf[ i ] , GetColor( 255 , 255 , 255 ) ) ;
  }
    
  // 参照文字列の終端まで行っていたら参照文字列を進める
  if( StringBuf[ SP ][ CP ] == 'NULL' ){
    SP ++ ;
    CP = 0 ;
  }
 }
}



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




Name: アクア  ..ぴよぴよ(61ポイント)   Date: 2010/03/18(木) 15:54   No:49383       
Title: ツールの種類に関する質問です。    
初めまして。わたしはIN(iternet name)アクアと申します。
高校を卒業したので、ZUN様のような弾幕シューティングを作りたいと思っているのですが、コンピューターを使って間もないこともあって、どんなツールで作ればよいかも良くわからないのです。ぐぐってもさっぱりわからなかったので、投稿しました。
ZUN様のような弾幕シューティングゲームをつくるには、まずどのようなツールを使えばよいのでしょうか?


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


Name: DVDM [URL]  ..熟練のプログラマー(52,531ポイント)   Date: 2010/03/18(木) 20:36   No:49400     
Title: Re:ツールの種類に関する質問です。    
>>アクアさん
こちらのサイトでは、まずコンパイラの導入部分から説明されています。
試しにDownLoadしてみては如何でしょうか。
http://dixq.net/vcpp.html

これだけではただ作る準備の一部が整っただけです。
どのようなライブラリを使いたいのか、言語はどうするかでこれから先も変わってきます。
アクアさんはどのように進められる予定なのでしょうか。

とりあえず作りたいのであれば、上記のコンパイラを導入した後で
http://dixq.net/rp/ ←こちらでDL出来る龍神録のソリューション一式を試してみてはどうでしょう。

ただ、龍神録はC言語の知識が必要です。
慣れないうちはコンソールアプリケーションで色々作ってみるのもいいかと思います。


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

Name: 紅葉  ..中級者(12,306ポイント)   Date: 2010/03/18(木) 21:34   No:49406     
Title: Re:ツールの種類に関する質問です。    
ゲームを作るには統合開発環境と呼ばれるものがないと製作がかなり難しいです。
DVDM様のリンクなどをみて
マイクロソフト社が無償で公開しているVisualStadioをDLし環境を整えて下さい。
それからDXライブラリ等を使って作っていきます。

プログラミングについては何処まで理解しておりますでしょうか?
 if文等は使える等・・・


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

Name: アクア  ..ぴよぴよ(116ポイント)   Date: 2010/03/19(金) 01:11   No:49426     
Title: アドバイスありがとうございます♪    
紅葉さん、アドバイス、ありがとうございます♪さっそくDLし、環境を整えててみます。・・・C言語に関しては一切わからない状況です・・・。ですので、これから図書館などで少しずつ学んでいこうかと思っています。

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

Name: softya [URL]  ..ハッカー(135,781ポイント)   Date: 2010/03/19(金) 01:50   No:49428     
Title: Re:アドバイスありがとうございます♪    
書籍を買う余裕が無いのでしたら、サイトを紹介します。

「猫でもわかる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

自分にあったサイトを選んでみてください。
もし分からないことがあった時に他のサイトで確認すると理解が進むことがあります。
それでも分からないことがあれば、こちらのサイトで聞いてください。

それと龍神録の前にこのサイトの「ゲームプログラミングの館」を先に勉強されることをおすすめします。
http://dixq.net/g/


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

Name: アクア  ..ぴよぴよ(198ポイント)   Date: 2010/03/19(金) 11:41   No:49436     
Title: Re:アドバイスありがとうございます♪    
siftyaさん、アドバイスをどうもありがとございます。さっそく、ネコでもわかるC言語プログラミングのサイト
で勉強してみます。
皆様、わかりやすいアドバイス、どうもありがとうございました♪


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

Name: アクア  ..ぴよぴよ(209ポイント)   Date: 2010/03/19(金) 11:44   No:49437 解決!     
Title: Re:アドバイスありがとうございます♪    
C言語、頑張って覚えます♪

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



Name: バグ  ..ハッカー(192,652ポイント)   Date: 2010/03/17(水) 18:27   No:49323       
Title: 暇つぶしにどうぞ    
以前公開したコンソールアプリ版テトリスのマイナーチェンジ版です。
見た目は同じですが、色々と調整しなおしましたんで、落ち物パズル好きな方はどうぞ♪
開発言語はC#.NETです。要望があればソース公開します。

http://park.geocities.jp/bugbugbugbug2001/Tetris.zip


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


Name: バグ [URL]  ..ハッカー(192,778ポイント)   Date: 2010/03/17(水) 18:32   No:49324     
Title: Re:暇つぶしにどうぞ    
すみません、直接アクセスだとうまく表示ダウンロードできない場合があるようなので、下記URLのトップページからアクセスしてダウンロードしてくださいm(__)m

http://park.geocities.jp/bugbugbugbug2001/


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

Name: kazuoni [URL]  ..ハッカー(139,332ポイント)   Date: 2010/03/17(水) 19:41   No:49330     
Title: Re:暇つぶしにどうぞ    
熱中しすぎてご飯が冷めてた・・・

遊ばさせていただきました。
個人的にはソースを見せていただきたいです。
.NETは今後いじるとおもいますので^^;

気になった点は、背景と青色のミノの色がちょっと重なって
ちょっとだけ見にくいかなって思いました。
まぁ、各ブロックの中心に点があるので、それが目印にはなりますが。
個人的には黒でもいいかなって思いました。
あと、ヘタれなんで、ミノの遊びがないと、ハードドロップミスの
オンパレードでした^^;
公式ルールは遊びがないんですかね?

ゲームオーバーはやっぱりあれですよね。
あの終わり方が自分はやっぱり好きです。

制作お疲れ様でした!


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

Name: バグ  ..ハッカー(192,850ポイント)   Date: 2010/03/17(水) 19:48   No:49335     
Title: Re:暇つぶしにどうぞ    
着地後の操作可能時間が短過ぎでしたかね…もう少し長くてもよかったかな?(^_^;)

ソースの件、了解しました。近日中にダウンロードできるようにしておきます。


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

Name: テツ  ..ぴよぴよ(897ポイント)   Date: 2010/03/17(水) 19:48   No:49337     
Title: Re:暇つぶしにどうぞ    
質問しにきたらいつの間にかDLしてました^^
凄く面白かったです。私もゲームオーバー画面に感動しました。
私もC#には興味があるので(全然そのレベルじゃないですが^^;)
出来ればソース公開していただきたいです。


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

Name: バグ  ..ハッカー(192,751ポイント)   Date: 2010/03/17(水) 19:52   No:49338     
Title: Re:暇つぶしにどうぞ    
>>あと、ヘタれなんで、ミノの遊びがないと、ハードドロップミスの
オンパレードでした^^;
>>公式ルールは遊びがないんですかね?

ハードドロップ時は無かったと思います。通常のドロップ時は転がせる時間が多少(たしか、0.5秒だったかな?)ありますが…

遊び=着地後の操作可能時間と解釈しましたが、違ってたらごめんなさい(^_^;)


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

Name: バグ  ..ハッカー(192,765ポイント)   Date: 2010/03/17(水) 19:58   No:49340     
Title: Re:暇つぶしにどうぞ    
何故かゲームオーバー時の演出が評判いいようで(^_^;)

基本的に画像が使えないコンソールアプリだと演出の幅が狭くなってしまうので、私的にはあれが精一杯な感じですね(>_<)


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

Name: バグ [URL]  ..ハッカー(192,878ポイント)   Date: 2010/03/18(木) 08:56   No:49375     
Title: Re:暇つぶしにどうぞ    
ソースをアップしました。
同じところからダウンロードできます。
コメントをほとんど付けていないので、質問などありましたらお気軽に連絡(メール可)ください。
すぐに返信できない場合もありますが…(^_^;)

http://park.geocities.jp/bugbugbugbug2001/ 


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

Name: テツ  ..かけだし(1,927ポイント)   Date: 2010/03/18(木) 20:27   No:49399     
Title: Re:暇つぶしにどうぞ    
バグさん。お疲れ様です。
ソースがDLしたいのですがDL出来ないです^^;
よろしくお願いします!


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

Name: DVDM [URL]  ..熟練のプログラマー(52,607ポイント)   Date: 2010/03/18(木) 20:40   No:49401     
Title: Re:暇つぶしにどうぞ    
>>テツさん
バグさんの名前横にある[URL]からサイトにジャンプし、
「コンソールアプリ版のTetrisをマイナーチェンジしました」をクリックするとDLできましたよ〜


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

Name: バグ  ..ハッカー(193,017ポイント)   Date: 2010/03/18(木) 20:43   No:49403     
Title: Re:暇つぶしにどうぞ    
>>DVDMさん
ナイスフォロー!おそれいりこだしm(_ _)m


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

Name: テツ  ..かけだし(1,948ポイント)   Date: 2010/03/18(木) 21:18   No:49404     
Title: Re:暇つぶしにどうぞ    
DVDMさんバグさんありがとうございます。
無事DL出来ました!


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

Name: バグ  ..ハッカー(193,038ポイント)   Date: 2010/03/18(木) 23:38   No:49416     
Title: Re:暇つぶしにどうぞ    
ゴーストの追加とレベル20まで選択可能にしました。

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



Name: 新米SE  ..ぴよぴよ(232ポイント)   Date: 2010/03/18(木) 22:57   No:49409       
Title: 下らない質問かもしれませんが    
BCC Developerを使ってます。
あるプロジェクトにA.cppとB.cppというソースファイルがあったとします。
まず初めにAのソースファイルをメイクし、A.exeファイルを作ったとします。
次に、Bのソースファイルをメイクし、B.exeファイルを作ろうと思ったのですが、
B.exeファイルが自動で生成されなくて困ってます。

B.exeファイルを生成するには、
「プロジェクト設定」で、実行ファイル名とメイクファイル名を書き換えれば、
B.exeファイルが生成できることは分かっているのですが、
これを自動でやる方法を教えていただけないでしょうか?

今までは新しいソースファイルを作るたびに、新しいプロジェクトを作ってましたが、
積み重なれば容量が大きくなってしまうので・・・

ちなみに、僕はC言語初めて一週間も経ってない初心者ですが、
基本的な用語なら分かります。
よろしくお願いします。


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


Name: softya [URL]  ..ハッカー(135,366ポイント)   Date: 2010/03/18(木) 23:17   No:49412     
Title: Re:下らない質問かもしれませんが    
1つのプロジェクトで1つのexeファイルが原則です。
それが嫌なら、BCC Developerを使わず自分でメイクファイルを書くしか無いでしょうね。あるいは、1つソースファイルで1つexeファイルならbccのコマンドをコマンドプロンプトで打ち込んだ方が早いと思います。


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

Name: 新米SE  ..ぴよぴよ(310ポイント)   Date: 2010/03/18(木) 23:30   No:49415 解決!     
Title: Re:下らない質問かもしれませんが    
迅速な回答ありがとうございます。

やはり自分で打ち込むしかないですか・・・
分かりました。ありがとうございます!


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



Name: たこやき  ..中級者(14,984ポイント)   Date: 2010/03/17(水) 23:06   No:49356       
Title: fwrintfでテキストファイルに表示するには    
fwprintfでテキストファイルに表示されないのですが。
void inEditString(TCHAR listboxstr[256][256])
{
      int strcount=0,count2=0,count3=0,flag=0;
      TCHAR editstr[MAX_STR];      
      TCHAR listboxstrbuffer[256][256];
      
      GetWindowText(editbox2,editstr,256);
      
      fp=_wfopen(_T("Listbox2.txt"),_T("r+"));
      if(fp==NULL)
      {
              MessageBox(hWnd,_T("ファイルが開きません。"),_T("エラー"),MB_OK);
      }

      while(fwscanf(fp,_T("%s"),listboxstr[strcount])!=EOF)
      {
             strcount++;
      }
      while(count2<(strcount+1))
      {
            if(flag==0)
            {
                    if(wcscmp(editstr,listboxstr[count3])>=NULL)
                    wcscpy(listboxstrbuffer[count2],editstr);
                    count2++;
                    flag=1;
            }
            wcscpy(listboxstrbuffer[count2],listboxstr[count3]);
            count2++; 
            count3++;
      }
      fclose(fp);
      fp=_wfopen(_T("Listbox2.txt"),_T("w"));
      if(fp==NULL)
      {
               MessageBox(hWnd,_T("ファイルが開きません。"),_T("エラー"),MB_OK);
      }
      strcount=0;
      while(strcount<count2)
      {
              fwprintf(fp,_T("%s"),listboxstrbuffer[strcount]);

              strcount++;
      }
}
なのですが、変な変数名がありますが気にしないでください、
ブレイクポイントをfwprintf(fp,_T("%s"),listboxstrbuffer[strcount]);
の所にやったのですが、listboxstrbuffer[strcount]の所を表示させたのですが、
文字列は入っているのにそして再実行するとテキストファイルに表示されません。
なぜでしょうか?


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


Name: たかぎ [URL]  ..ハッカー(170,905ポイント)   Date: 2010/03/18(木) 06:06   No:49366     
Title: Re:fwrintfでテキストファイルに表示するには    
処理系不明ですが...
ロケールの設定はどうなっていますか?


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

Name: gazu  ..ぴよぴよ(63ポイント)   Date: 2010/03/18(木) 06:53   No:49367     
Title: Re:fwrintfでテキストファイルに表示するには    
fwprintfの戻り値を確認してみてはどうでしょう?
もし戻り値が0より大きいならば、テキストファイルをバイナリエディタで
開いてみてはどうでしょうか?


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

Name: たこやき  ..上級者(15,076ポイント)   Date: 2010/03/18(木) 07:47   No:49368     
Title: Re:fwrintfでテキストファイルに表示するには    
たかぎさん朝早くに回答ありがとうございます。
処理系はVC++2005です。
ローケルとは何でしょうか?
勉強不足ですみません。


gazuさん朝早くに回答ありいがとうございます。
テキストファイルで開いて見ましたが何も書かれていませんでした。
_wfopenをバイナリエディタに設定して見ましたが共有違反と書かれ開けませんでした。
なぜでしょうか?


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

Name: たこやき  ..上級者(15,180ポイント)   Date: 2010/03/18(木) 08:03   No:49370     
Title: Re:fwrintfでテキストファイルに表示するには    
すみません。できました。
_wfopenをバイナリエディタに設定して見ましたがちゃんと表示されました。
ただプログラム終了しないと書き込まれません。
なぜでしょうか?
またファイルエディタでは開けないのでしょうか?


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

Name: たこやき  ..上級者(15,229ポイント)   Date: 2010/03/18(木) 08:19   No:49371     
Title: Re:fwrintfでテキストファイルに表示するには    
度々すみません。バイナリで書き込んで終了して
バイナリエディタで再度開くと文字化けしてでます。(listbox2.txtで開き直すと文字化けします。)


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

Name: たいちう  ..熟練のプログラマー(60,205ポイント)   Date: 2010/03/18(木) 10:14   No:49376     
Title: Re:fwrintfでテキストファイルに表示するには    
> fwprintfでテキストファイルに表示されないのですが。

> 文字列は入っているのにそして再実行するとテキストファイルに表示されません。

> _wfopenをバイナリエディタに設定して見ましたが共有違反と書かれ開けませんでした。

> _wfopenをバイナリエディタに設定して見ましたがちゃんと表示されました。

> 度々すみません。バイナリで書き込んで終了して
> バイナリエディタで再度開くと文字化けしてでます。
> (listbox2.txtで開き直すと文字化けします。)


落ち着いて何をしたいのか説明してください。正しい日本語で。
相手に伝わるかどうかを必ず読み返してから投稿してください。
UNICODEでテキストファイルに書き込みたい、ということですか?


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

Name: たこやき  ..上級者(15,432ポイント)   Date: 2010/03/18(木) 15:20   No:49382     
Title: Re:fwrintfでテキストファイルに表示するには    
返信ありがとうございます。
>UNICODEでテキストファイルに書き込みたい、ということですか?
はい。そうです。
_wfopenをバイナリエディタ各(r+b)と(w+b)と変更しましたが
文字列がテキストファイルに書き込みされません。ファイルエディタとバイナリエディタ
どちらともなんですが、実行したあと、サイズを見ると1kbyte使っています。
このテキストファイル(rとw)のバイナリエディタで確認したら機械語0D 0A
でバイナリでやったファイル(r+bとw+b)をバイナリエディタで認したら機械語で0A 00だけ
表示されます。


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

Name: たいちう  ..熟練のプログラマー(60,350ポイント)   Date: 2010/03/18(木) 19:03   No:49397     
Title: Re:fwrintfでテキストファイルに表示するには    
色々勘違いしているみたいですね。
次のコードを実行できますか?
私の環境では正常に書き込めますが。
#include <stdio.h>
#include <locale.h>

int main() {
    _wsetlocale(LC_ALL, L"");
    FILE *fp = _wfopen(L"test.txt", L"w");
    fwprintf(fp, L"てすと");
    fclose(fp);
    return 0;
}


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

Name: たこやき  ..上級者(15,396ポイント)   Date: 2010/03/18(木) 20:41   No:49402 解決!     
Title: Re:fwrintfでテキストファイルに表示するには    
なんとか自己解決しました。
原因はわかりませんが。
回答ありがとうございました。


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



Name: RPG  ..ぴよぴよ(34ポイント)   Date: 2010/03/18(木) 16:32   No:49386       
Title: RPGのマップについて    
http://dixq.net/g/26.html を参考に簡単なマップを作ってみました。
ですが、これだけではさみしいので
http://dixq.net/g/28.html の「2」を使って
違うマップにワープするようにできますか?
できるのならそのプログラムを教えてください
お願いします。


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


Name: softya [URL]  ..ハッカー(135,319ポイント)   Date: 2010/03/18(木) 17:26   No:49389     
Title: Re:RPGのマップについて    
まず、
(1)2つ目のマップデータを用意してください。
(2)どこの「2」から2つ目のマップのどの座標に飛ぶか決めてください。
できれば、構造体の配列にしてください。
(3)マップを切り替える方法を自分で分かる範囲でできるだけ書いてみてください。
以上を考えてみてください。
お待ちしています。


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



Name: kei  ..ぴよぴよ(532ポイント)   Date: 2010/03/18(木) 14:54   No:49381       
Title: dllを作るときになぜヘッダーが必要なのか?    
dllを作るときになぜヘッダーが必要なのか気になるのですが、ヘッダーを使わなくても
dllを使う方法はないでしょうか?

dllを作成するときにヘッダーも作っていますがヘッダーの入れ忘れなどで
バグが起こったことがあり、管理が面倒だなぁと感じています。

素人の発想ですがdllを作るときのソースの中にヘッダーの中身を入れておけば
解決するのではないかと思ったのですが、エラーになりました。


なぜヘッダーで宣言しなければならないのでしょうか?


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


Name: たいちう  ..熟練のプログラマー(60,253ポイント)   Date: 2010/03/18(木) 17:19   No:49388     
Title: Re:dllを作るときになぜヘッダーが必要なのか?    
> なぜヘッダーで宣言しなければならないのでしょうか?

そのdllがどのような関数を持っているのか外から判らないからです。
http://q.hatena.ne.jp/1119424323


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



Name: くりあ  ..初心者(7,000ポイント)   Date: 2010/03/17(水) 18:17   No:49322       
Title: boost::any    
最近お世話になることが増えてきました。すいません。
少し前に、ここで質問してboost::anyを教えてもらったのですが、boost/any.hppをインクルードしようとすると、

error C1083: include ファイルを開けません。'boost/any.hpp': No such file or directory

とエラーが出てきてしまいます。
どうしたらいいのでしょうか?
調べてみたのですが分かりませんでした。

開発環境は、
Windows vista
Visual C++ 2008 Express Edition
です。

よろしくお願いします。


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


Name: たかぎ [URL]  ..ハッカー(170,462ポイント)   Date: 2010/03/17(水) 19:17   No:49325     
Title: Re:boost::any    
インクルードディレクトリは設定していますか?


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

Name: くりあ  ..初心者(7,049ポイント)   Date: 2010/03/17(水) 19:24   No:49326     
Title: Re:boost::any    
すいません。
分からないので、多分設定してないと思います。
どうしたらよいのでしょうか?


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

Name: たかぎ [URL]  ..ハッカー(170,510ポイント)   Date: 2010/03/17(水) 19:32   No:49328     
Title: Re:boost::any    
ドキュメントを読みましょう。
http://msdn.microsoft.com/ja-jp/library/73f9s62w(VS.80).aspx


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

Name: たかぎ [URL]  ..ハッカー(170,567ポイント)   Date: 2010/03/17(水) 19:35   No:49329     
Title: Re:boost::any    
Visual C++ 2008ならこっちでした(実質的に同じですが)。
http://msdn.microsoft.com/ja-jp/library/73f9s62w.aspx


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

Name: くりあ  ..初心者(6,911ポイント)   Date: 2010/03/17(水) 19:44   No:49332     
Title: Re:boost::any    
boost/any.hppの、ファイルがあるディレクトリをURLの方法で追加する。
という考えでいいのでしょうか?

どこかからboost/any.hppのファイルを追加で持ってくる必要があるのですか?
それとも、最初から入っているけれど、ディレクトリの設定がないだけなのでしょうか?
設定が必要なら、どうやってboost/any.hppのある場所を探せばいいのでしょうか?

質問ばかりで申し訳ありません。


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

Name: たかぎ [URL]  ..ハッカー(170,723ポイント)   Date: 2010/03/17(水) 19:48   No:49336     
Title: Re:boost::any    
ドキュメントを読みましょう。
http://www.boost.org/doc/libs/1_42_0/more/getting_started/windows.html#the-boost-distribution


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

Name: Justy  ..伝説なるハッカー(509,948ポイント)   Date: 2010/03/17(水) 21:39   No:49349     
Title: Re:boost::any    
>どこかからboost/any.hppのファイルを追加で持ってくる必要があるのですか? 
 別途インストールが必要です。
 たかぎさんが貼ってくださった URLのところの "1 Get Boost"にダウンロードへのパスが
書いてあります。

 1つは zipなどで圧縮されたアーカイブ版、もう1つはインストーラ版(要登録)です。
 どちらを使ってもいいのですが、前者は一部のライブラリを使うにはビルドしてライブラリファイルを
作る必要があります(any.hppだけを使う分には必要はありません)。
 後者はビルド済みのライブラリ込みでインストールされますので、慣れない内はこちらの方が楽でしょう。
 
 で、これらをDL&インストールの後、パスを通して下さい。
 
 
>boost/any.hppの、ファイルがあるディレクトリをURLの方法で追加する
 any.hppのあるところではなく、1つ上の boostディレクトリのあるディレクトリを追加してください。


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

Name: くりあ  ..初心者(6,857ポイント)   Date: 2010/03/18(木) 07:49   No:49369 解決!     
Title: Re:boost::any    
ありがとうございました。
成功しました。プログラミングってこんな操作も必要なんですね。
たかぎさん、Justyさん、本当にありがとうございました。


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



Name: テツ  ..ぴよぴよ(751ポイント)   Date: 2010/03/17(水) 19:27   No:49327       
Title: 文字化けについて    
以前お世話になりましたテツです。
今回は文字化けについてお聞きしたいと思います。

環境はBorland Bcc5.5になります。

今回プログラムを作成していて、2バイト文字が含まれる場合文字化けすることがわかりました。。。orz
ただ、文字化けしない文字もあり、どうしてなのかと思いました。

そこで、2バイト文字が含まれる文字列が渡された場合、英大文字のみを小文字にして2バイト文字はそのままに
したいと思っています。

処理的にはwhileの中で判断文を入れて2バイト文字ならtolowerをかけないで飛ばす的な感じなんでしょうか?

よろしくお願いいたします。

#include <stdio.h>
#include <ctype.h>

void StrToSmall(const char *conversionStr, char *convertedStr)
{
    while (*conversionStr) {
        *(convertedStr++) = tolower(*conversionStr++);
    }
    *convertedStr = '\0';
}

int main(void) 
{
    char    conversionStr[] = "HEllプログラムWORld";        // 元の文字列
    char    convertedStr[256];                                // 変換後の文字列をセット
    
    StrToSmall(conversionStr, convertedStr);
    
    printf("変換前 : %s\n", conversionStr);
    printf("変換後 : %s\n", convertedStr);
    
    return 0;
}


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


Name: たかぎ [URL]  ..ハッカー(170,675ポイント)   Date: 2010/03/17(水) 19:43   No:49331     
Title: Re:文字化けについて    
二つの問題があります。

1. tolowerには0〜UCHAR_MAXまたはEOFを渡さなければなりません。char型が符号付きになっていませんか?

2. シフトJISの2バイト目には、'A'〜'Z'に相当するコードが含まれます。


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

Name: テツ  ..ぴよぴよ(993ポイント)   Date: 2010/03/17(水) 19:57   No:49339     
Title: Re:文字化けについて    
>1. tolowerには 0〜UCHAR_MAXまたはEOFを渡さなければなりません。char型が符号付きになっていませんか?
これは型をunsignedにしなくてはならないということでしょうか?

検討違いだったらすみません。



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

Name: たかぎ [URL]  ..ハッカー(170,750ポイント)   Date: 2010/03/17(水) 20:26   No:49341     
Title: Re:文字化けについて    
> これは型をunsignedにしなくてはならないということでしょうか?

方法はいくつかあるでしょうが、まあそういうことだと思って大丈夫です。


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

Name: テツ  ..かけだし(1,399ポイント)   Date: 2010/03/17(水) 20:55   No:49342     
Title: Re:文字化けについて    
取りあえず修正してみました。

#include <stdio.h>
#include <ctype.h>

#define IS_ZEN(c) ((c & 0xFF) >= 0x81 && (c & 0xFF) <= 0x9F || (c & 0xFF) >= 0xE0 && (c & 0xFF) <= 0xFC)

void StrToSmall(unsigned const char *conversionStr, unsigned char *convertedStr)
{
    while (*conversionStr) {
        if (IS_ZEN(*conversionStr)) {
            *(convertedStr++) = *(conversionStr++);
        }
        *(convertedStr++) = tolower(*conversionStr++);
    }
    *convertedStr = '\0';
}

int main(void) 
{
    unsigned char    conversionStr[] = "HEllプログラムWORld";        // 元の文字列
    unsigned char    convertedStr[256];                             // 変換後の文字列をセット
    
    StrToSmall(conversionStr, convertedStr);
    
    printf("変換前 : %s\n", conversionStr);
    printf("変換後 : %s\n", convertedStr);
    
    return 0;
}


ただこれだと変換後がhellプロバラムworldになってしまいます。

何処が悪いのでしょうか?


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

Name: たかぎ [URL]  ..ハッカー(170,880ポイント)   Date: 2010/03/17(水) 21:27   No:49347     
Title: Re:文字化けについて    
下記の処理がうまくできていないようです。

2. シフトJISの2バイト目には、'A'〜'Z'に相当するコードが含まれます。 


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

Name: テツ  ..かけだし(1,404ポイント)   Date: 2010/03/17(水) 22:03   No:49350     
Title: Re:文字化けについて    
う〜ん。。。2バイト目には'A'〜'Z'ですか。

何かもう少しヒントをいただけないでしょうか?

詰まってしまいました。。。orz


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

Name: ideyan  ..かけだし(2,091ポイント)   Date: 2010/03/17(水) 22:37   No:49352     
Title: Re:文字化けについて    
while (*conversionStr) {
    if (IS_ZEN(*conversionStr)) {
        *(convertedStr++) = *(conversionStr++);
    }
    *(convertedStr++) = tolower(*conversionStr++);
}
このコードだと、2バイト文字だったときはifの文が実行されて
1バイト目はそのままコピーされますよね?
でも、その時2バイト目はどうなるか考えてみてください。

そのままコピーされる文字もありますが
2バイト目のコードが'A'〜'Z'に相当してしまった場合、
なにかまずいことが起こるような気がしませんか?


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

Name: テツ  ..かけだし(1,768ポイント)   Date: 2010/03/17(水) 22:46   No:49354     
Title: Re:文字化けについて    
>なにかまずいことが起こるような気がしませんか?
これが文字化けの原因ということでしょうか?
ということは、

    if (IS_ZEN(*conversionStr)) {
        *(convertedStr++) = *(conversionStr++);
        if (0x41〜0x5aの場合)
           conversionStrのアドレスを進める
    }


というような理解で大丈夫なんでしょうか?


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

Name: ideyan  ..かけだし(2,036ポイント)   Date: 2010/03/17(水) 23:01   No:49355     
Title: Re:文字化けについて    
えーと、先に一つ確認しておきたいことがあるんですが。
2バイト文字はchar配列の要素を2個使用していることは理解していますか?


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

Name: テツ  ..かけだし(1,797ポイント)   Date: 2010/03/17(水) 23:07   No:49357     
Title: Re:文字化けについて    
その辺は何となくそうなのかなぁくらいです。。。orz
う〜ん。やはり理解不足みたいです。
すみません(T_T)


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

Name: ideyan  ..かけだし(2,350ポイント)   Date: 2010/03/17(水) 23:20   No:49359     
Title: Re:文字化けについて    
先ほどのプログラムは
while (*conversionStr) {
    if (IS_ZEN(*conversionStr)) { /*ここで1バイト目をみて判断*/
        /*1バイト目をコピー*/
        *(convertedStr++) = *(conversionStr++);
    }
    /* 1バイト文字の時と、2バイト文字の2バイト目はここでコピー */
    *(convertedStr++) = tolower(*conversionStr++);
}
となっています。

ですが、このままだと2バイト目にまでtolowerが実行されています。
2バイト目がA〜Zのコードに該当した場合、小文字のコードに変換されて
グ→バのように文字が変わってしまうわけです。

今回、2バイト文字はそのままにするわけですから
2バイト文字だった場合→問答無用で2バイト分コピー
そうでない場合→tolowerの戻り値をコピー
と言った風にコードを書く必要があります。


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

Name: テツ  ..かけだし(1,812ポイント)   Date: 2010/03/18(木) 00:01   No:49360     
Title: Re:文字化けについて    
何度もすみません。
以下のようにしてみましたが駄目でした。
このようにしては何処が駄目なのでしょうか?

void StrToSmall(const char *conversionStr, char *convertedStr)
{
    while (*conversionStr) {
        if (IS_ZEN(*conversionStr)) {
            *(convertedStr++) = *(conversionStr++);
            *(convertedStr++) = *(conversionStr++);        // 2バイト目をコピーのつもりです
        }
        *(convertedStr++) = tolower(*conversionStr++);
    }
    *convertedStr = '\0';
}


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

Name: ideyan  ..入門者(2,508ポイント)   Date: 2010/03/18(木) 00:30   No:49362     
Title: Re:文字化けについて    
おぉ、大分形になってきましたね^^
if (IS_ZEN(*conversionStr)) {
    /*2バイト文字用の処理*/
        *(convertedStr++) = *(conversionStr++);
        *(convertedStr++) = *(conversionStr++);
    /*ここで処理終了なのに*/
}
/*ここで余計な処理が行われる*/
/*1バイト文字用の処理*/
*(convertedStr++) = tolower(*conversionStr++);
こんな感じで、2バイト文字の時も
1バイト文字の処理がされてしまっているのが原因かと思いますよ。
なので、ifじゃなくif-elseとして処理をわけるのがいいかと思います。


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

Name: テツ  ..かけだし(1,902ポイント)   Date: 2010/03/18(木) 00:34   No:49363     
Title: Re:文字化けについて    
ideyanさん
遅くまで付き合っていただきありがとうございました。
無事希望通りの動きになりました!
本当にありがとうございます。

たかぎさんにもいろいろアドバイスをしていただきありがとうございました。
簡単ですが、この場を借りてお礼とさせていただきます。

本当にありがとうございました。


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



Name: 大学生  ..かけだし(2,415ポイント)   Date: 2010/03/16(火) 04:02   No:49259       
Title: オープンソースなどを理解するには    

大学3年生です。学科は情報系とはあまり関係がありません。
機械系/制御系の学科に近いので、今のところ趣味でプログラミングをしています。

ただ大学の授業でC言語を学びはましたが、実用的なプログラムを書くことができません。

「苦しんで覚えるC言語」http://homepage3.nifty.com/mmgames/c_guide/
や、書籍でいうと
「明解C言語 入門編」や「新C言語入門」あたりに書いてあることは理解しています。

C以外の言語は知りません。(一応4月から、学校でjavaをやることになってます)


今のところ目標として、
・linux等のオープンソースをいじりたい(理解したい/開発したい)
・ソフトを開発できるようになりたい(例えば、エディタなど)
というのがあります。
よくわからないので、目標が漠然としていますが…
linuxに関しても、ターミナル上での簡単なコマンドしか知りません(cdやls,mkdir等)


Cプログラムの文法を理解した後に、やるべきことは何でしょうか?
必要であれば、書籍等を購入することも考えています。
何かご指南頂けるとうれしいです。


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


Name: たかぎ [URL]  ..ハッカー(169,837ポイント)   Date: 2010/03/16(火) 04:42   No:49260     
Title: Re:オープンソースなどを理解するには    
> Cプログラムの文法を理解した後に、やるべきことは何でしょうか? 

当たり前のことですが、書くことと読むことです。

オープンソースを理解するには、それらのコミュニティに参加するのが一番です。
ただし、そこで何を得られるかではなく、何を与えられるかを考えるようにしてください。
知識も技術も呼吸と同じで、自分から吐いた分だけ吸い込めるようになっています。


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

Name: softya [URL]  ..ハッカー(134,205ポイント)   Date: 2010/03/16(火) 10:26   No:49265     
Title: Re:オープンソースなどを理解するには    
>・ソフトを開発できるようになりたい(例えば、エディタなど)
簡単なエディタから始められたらどうでしょうか?
いきなりemacs並といったら挫折しますので、ラインエディタ辺りから始められると良いと思います。
http://ja.wikipedia.org/wiki/%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF
最初は、わけわからないと思いますが闇雲に始めて見ましょう。

>Cプログラムの文法を理解した後に、やるべきことは何でしょうか?
まず、プログラムをひたすら作ることだと思います。
それとオープンソースのコードを眺めるところでしょうか。
lsのコードとか見てみましたか?
FREE BSD版のls
http://www.freebsd.org/cgi/cvsweb.cgi/src/bin/ls/
これでも十分複雑ですよね。
1.まず、自分でコンパイルしてみる
2.gdbでトレースしてみる
3.ソースコードを改造してみる。
4.色んな所をコメントアウトしてみる。→どんな働きをしているか知る。


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

Name: 大学生  ..かけだし(2,418ポイント)   Date: 2010/03/17(水) 23:11   No:49358 解決!     
Title: Re:オープンソースなどを理解するには    
回答ありがとうございます。
lsがC言語で書かれてるとは思っていませんでした。

見てみましたが、まだ私には結構複雑です!
とりあえずこれが読めるように勉強してみます。


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

Name: softya [URL]  ..ハッカー(135,020ポイント)   Date: 2010/03/18(木) 00:10   No:49361     
Title: Re:オープンソースなどを理解するには    
>lsがC言語で書かれてるとは思っていませんでした。 

lsどころか、UnixやLinuxのコードの大半がC言語で書かれています。
もちろんcdやmkdirもですが、OSの根幹部分も大半はC言語(一部アセンブラ)です。
C言語のコンパイラ(gcc)もC言語で書かれていてソースコードが公開されているので理解出来るかどうかは別として読むこともできます。FreeBSDのソースコードは全て公開されてますし、Linuxも大半がオープンソースです。
オープンソースに参加するってことは、そういうコードを読んで提案出来る人になるって事ですね。がんばってください。

>とりあえずこれが読めるように勉強してみます。
読むだけじゃなくて、並行で簡易なエディタ作りも始められると良いと思います。


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



Name: 白狐の子  ..ぴよぴよ(448ポイント)   Date: 2010/03/16(火) 01:32   No:49255       
Title: ファイルの存在の確認    
現在,入力した文章を○○.txt(○○は任意)に書き込むプログラムを作っています。
その際、ファイルが既にあるかどうかを調べ、ある場合は上書きするかどうかを聞く、という風にしたいと思っています。
ここでファイルが既にあるかを確認する方法としてに、思いついたのが

FILE *fp;
fp = fopen("○○.txt","r");
    if(fp!=NULL){
         printf("ファイルが既にあります。上書きしますか?");
                 ・
                 ・
                 ・
のようにfopenを読み込み専用で開こうとして、その値がNULLかどうかでファイルの存在を確認するものです。

ここで疑問に思ったのですが、fopen("○○.txt","r"); はファイルが存在しないときのみ、NULLを返すのでしょうか?
それ以外にあるとすると、思いがけないバグがおきそうなので不安です。

また、もしこの方法以外にファイルの存在を確認する方法があったら教えていただけないでしょうか? 編集済み


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


Name: たかぎ [URL]  ..ハッカー(169,747ポイント)   Date: 2010/03/16(火) 01:46   No:49257     
Title: Re:ファイルの存在の確認    
処理系不明の状況では、いったんオープンしてみるしかありません。

NULLが変える状況も処理系に依存します。
例えば、UNIXであれば、パーミッションが読み込み可能になっていない場合にはNULLが返るはずです。


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

Name: 白狐の子  ..ぴよぴよ(538ポイント)   Date: 2010/03/16(火) 12:19   No:49271     
Title: Re:ファイルの存在の確認    
処理系に依存するのですか
ちゃんと環境まで書いておけばよかったですね、すいません。

とりあえず、自分が今使っている環境で想定外の事態がおこらなければいいので
OS : Windows
コンパイラ : VC++ 2008EE

この環境の場合だと、どうでしょうか?


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

Name: たかぎ [URL]  ..ハッカー(169,974ポイント)   Date: 2010/03/16(火) 12:43   No:49272     
Title: Re:ファイルの存在の確認    
> 処理系に依存するのですか 
> ちゃんと環境まで書いておけばよかったですね、すいません。 

利用規約でそう決められているはずです。
ですので、処理系を書いていなければ、処理系に依存しない規格厳密合致プログラミングの話だと受け取るしかありません。
まさか、規約を読んでいないということはありませんよね?

> OS : Windows 
> コンパイラ : VC++ 2008EE 
> この環境の場合だと、どうでしょうか? 

_stat関数でも使うのが一番手っ取り早いのでは?
_accessや_access_sでもよい気がしますが、ディレクトリかどうかの判別ができなくなります。


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

Name: 白狐の子  ..ぴよぴよ(676ポイント)   Date: 2010/03/16(火) 13:22   No:49273     
Title: Re:ファイルの存在の確認    
規約は読みました。
ただ、勝手な判断で書かなかったので、完全にこちらが悪いです。すいません。今後気をつけます。

_stat関数ですか。初めて知りました。
調べて組み込んでみたところうまくいきました。ありがとうございます。

加えて、もうひとつ質問なのですが
int _stat(
   const char *path,
   struct _stat *buffer 
);
の、struct _stat *buffer の構造体はメンバがいろいろありますが
このメンバのうちひとつでも、読み込めない=エラー
という解釈で問題ないでしょうか?


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

Name: Blue  ..中級者(11,704ポイント)   Date: 2010/03/16(火) 13:31   No:49274     
Title: Re:ファイルの存在の確認    
戻り値とerrnoが全てなのでは?
[MSDN]
http://msdn.microsoft.com/ja-jp/library/14h5k7ff%28VS.80%29.aspx 編集済み


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

Name: たかぎ [URL]  ..ハッカー(170,051ポイント)   Date: 2010/03/16(火) 13:37   No:49275     
Title: Re:ファイルの存在の確認    
>      戻り値とerrnoが全てなのでは? 

そんなことはありません。
st_modeを調べて、それがディレクトリでないことを確認する必要があります。
ディレクトリだと、その名前が存在するという結果になりますが、当然fopenでは開けません。


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

Name: Blue  ..中級者(11,754ポイント)   Date: 2010/03/16(火) 13:48   No:49276     
Title: Re:ファイルの存在の確認    
>st_modeを調べて、それがディレクトリでないことを確認する必要があります。 
あぁ、確かにそうでしたね。


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

Name: たかぎ [URL]  ..ハッカー(170,144ポイント)   Date: 2010/03/16(火) 13:50   No:49277     
Title: Re:ファイルの存在の確認    
一応、モードに"r"を指定した場合にfopenに失敗する可能性をもう少し詳しく書いておきます。

・ファイルが存在しない
・読み込み許可がない(Windowsでもありますね)
・ディレクトリを指定した
・FOPEN_MAX以上のファイルをオープンしようとした
・バッファを割付けようとしてmallocに失敗した
・ドライブが破損している

こんなところでしょうか。



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

Name: 白狐の子  ..ぴよぴよ(719ポイント)   Date: 2010/03/17(水) 21:27   No:49348 解決!     
Title: Re:ファイルの存在の確認    
回答ありがとうございます。
いろいろ試したところ、結局stat関数を使うことに決めました。


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



Name: no  ..初心者(8,297ポイント)   Date: 2010/03/17(水) 15:13   No:49310       
Title: アドレスについて    
現在,Escキーで終了するプログラムが手元にあります.
しかし,しばしEscキーで終了すると

「....exeの0x4b76ba36でハンドルされていない例外が発生しました:
 0xc0000005: Accessviolation」

といったメッセージが表示されます.
これはおそらくアドレス0x4b76ba36に対応した変数に
格納されている数値がよくないことを示しているのだと思います.

みなさんはこのような場合,どのように対処していますか?

アドレス0x4b76ba36が対応している変数名を調べて,
その変数がよくない動作をする理由を探す,ということが一般的なのでしょうか.

また,この後に逆アセンブルなる画面も出現します.

VC++ windowsXPです.


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


Name: たいちう  ..熟練のプログラマー(60,251ポイント)   Date: 2010/03/17(水) 15:46   No:49312     
Title: Re:アドレスについて    
> アドレス0x4b76ba36が対応している変数名を調べて,
> その変数がよくない動作をする理由を探す,ということが一般的なのでしょうか.

多分一般的とは言えないでしょう。
「プログラムの途中で何らかの不正な処理を行い、
プログラム終了時に異常が検出される」という状況だと思いますが、
検出された時の情報から不正な処理まで遡ることは、非常に難しい場合が多いです。
(私のレベルの話。もっと上級の人はまた別の意見かもしれません)

終了時の異常が必ず(または高頻度で)発生するならば、デバッグは比較的楽になります。
異常が発生するという状態を保ったまま、異常とは無関係と思われる部分のプログラムを
削除し、異常が含まれる範囲を狭めていきます。


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

Name: softya [URL]  ..ハッカー(134,824ポイント)   Date: 2010/03/17(水) 16:00   No:49314     
Title: Re:アドレスについて    
VC++であれば、「呼び出し履歴」で自分のプログラムを探すと原因が特定しやすいです。
※ 「呼び出し履歴」は文字通り関数の呼び出し履歴です。OS中やライブラリ中で問題が起きていても遡れば、自分のプログラムまで戻ることができます。
自分のプログラムに遡ったら、呼び出している関数のパラメータなどを確認してみると良いでしょう。


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

Name: dic  ..熟練のプログラマー(57,136ポイント)   Date: 2010/03/17(水) 16:56   No:49318     
Title: Re:アドレスについて    
「プログラム」とありますが
ソースコードを含めて手元にある状況でしょうか?


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

Name: no  ..初心者(8,342ポイント)   Date: 2010/03/17(水) 21:26   No:49346     
Title: Re:アドレスについて    
失礼しました.exeファイルだけでなく,ソースコードもあります.



なるほど,呼び出し経歴なるものがあるのですね.
便利そうなので使ってみたいと思います.



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



Name: ぬっち  ..中級者(10,823ポイント)   Date: 2010/03/17(水) 20:56   No:49343       
Title: GetSaveFileName関数とC++のofstreamの関係について    
こんばんは。
今回はWindows APIでファイルを保存する時のウインドウを開くためのGetSaveFileName関数と、C++でのファイル出力に使うofstreamの関係について質問させていただきます。

現在簡単なアプリケーションを作っていて、ファイルを出力するためのボタンを押すと保存先をWindows APIの関数であるGetSaveFileName関数を使ってファイルを指定した後、ファイルが保存されます。
ここまでは、問題ありません。
その次に、エラーの判断のためにログをファイルに保存する自作クラスで、ログを取ろうとすると実行ファイルからの相対パスではなくて、GetSaveFileName関数で指定したパスに保存されてしまいます。
なお、GetSaveFileName関数を呼び出す前は実行ファイルからの相対パスになっています。

流れとしては、
@log.txtとしてofstreamを使い、実行ファイルがあるところに作成する。(ここは問題なし)
例 : ofstream fout( TEXT( "log.txt" ), ios_base::app );
AGetSaveFileName関数を使い、出力するファイル(log.txtとは異なる)を指定(今はdata.bin)する。
Bofstreamを使い、Aで得た出力するファイルのパスを使い、ファイルの出力が終了する。(ここも問題なし)
例 : ofstream fout( path );  //出力するファイルのパスをpathとしている。
Clog.txtとしてofstreamを使い、ログを追加書き込みする。
例 : ofstream fout( TEXT( "log.txt" ), ios_base::app );
(ここで問題が生じ、data.binがある場所と同じ場所にlog.txtが作成される。)
となっています。

日本語のパスに対応するため、
setlocale( LC_ALL, "japanese" );
としています。

どなたかこれを解決する方法を教えていただけないでしょうか?
よろしくお願いします。


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


Name: ぬっち  ..中級者(11,091ポイント)   Date: 2010/03/17(水) 21:10   No:49344 解決!     
Title: Re:GetSaveFileName関数とC++のofstreamの関係について    
すいません、自己解決しました。
もしかしたら今後この問題に悩んでしまう方がいらっしゃるかもしれませんので解決法を書いておきます。
GetSaveFileName関数はカレントディレクトリを実行ファイルがある場所から、GetSaveFileNameで指定した場所に暗黙のうちに変えてしまいます。
そこで、以下のようにOPENFILENAME構造体のフラグにOFN_NOCHANGEDIRを付け加えます。

OPENFILENAME ofn;
ZeroMemory( &ofn, sizeof( ofn ) );
//...(中略)...
ofn.Flags = OFN_OVERWRITEPROMPT | OFN_NOCHANGEDIR;
GetSaveFileName( &ofn );

すると、カレントディレクトリを変更しなくすることが出来ます。
お騒がせしてしまって申し訳ありませんでしたm(--)m


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



Name: tsuntsuku  ..ぴよぴよ(151ポイント)   Date: 2010/03/14(日) 11:48   No:49164       
Title: RPG作成について    
C言語〜ゲームプログラミングの館〜を一通りみましたが、
自分で作る場合、どこから手をつけたらいいかよく分かりません。
最初に何をしたらいいか教えてくださいm(__)m


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


Name: kazuoni [URL]  ..ハッカー(138,771ポイント)   Date: 2010/03/14(日) 12:21   No:49165     
Title: Re:RPG作成について    
まずはじめに、C言語は自由に使いこなせますか?
これが大前提となります。
また、小規模のパズルやアクションゲームが作れますか?
RPGは初心者にしてはかなり敷居が高いので、
まずは小規模のゲームを作成する事をお勧めします。


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

Name: softya [URL]  ..ハッカー(132,480ポイント)   Date: 2010/03/14(日) 12:31   No:49166     
Title: Re:RPG作成について    
RPGは、初心者にはかなり難しいものとなります。
ノベル(ADV)系やアクション系のゲームをサンプルを見ずに作れるぐらいになってから挑戦しないと確実に挫折します。なんと言うか、RPGで必要なもの、かかる期間、プログラムの構造が大体作る前から想像できる技術レベルが必要と言った感じでしょうか。

RPGに関して最近やりとりしましたので参考にしてください。
http://www.play21.jp/board/formz.cgi?action=res&resno=48969&page=&lognum=&id=dixq&rln=49005

とりあえずは、kazuoniさんと同意見で簡単なゲームから始められたほうが良いと思います。


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

Name: tsuntsuku  ..ぴよぴよ(175ポイント)   Date: 2010/03/16(火) 20:05   No:49284     
Title: Re:RPG作成について    
先にアクションを作ることにしました。
できれば参考になるサイトを教えてください。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,160,223ポイント)   Date: 2010/03/16(火) 22:19   No:49286     
Title: Re:RPG作成について    
どんなアクションにするか解りませんが、アクションは結構難しいですよ。
ロックマン的なものにしても、マリオ的なものにしても、少なくともシューティング的な要素がありますし、
シューティングより移動制御が複雑です。
マップはどのように管理する予定ですか?
斜めの地面との判定などがあれば、制御もですが、制作も困難です。
アクションを作る時はまず作成支援ツールを作ることから始めなければならないと思います。

softyaさん達のご意見に反することを言うようで恐縮ですが、
FF1やドラクエ1のようなRPGの戦闘シーンなんかならわりと楽に作れそうです。
壮大なストーリーを完成させるような事を目指すと挫折すると思いますが、
今は作品一つを作ることを考えず、興味あることだけをついばんでいけばいいと思います。
例えば戦闘シーンを作るだけとか。

「楽で作り易いゲームをまず作る」のも大事かもしれませんが、
自分に興味がなければやる気も起きず、成長しない可能性もあり、
逆に言えば、興味があって意欲的にドンドン勉強出来るなら少々背伸びする位の目標の方が成長が早い場合があります。

参考になるサイトを探されているようですが、試行錯誤で自分の思うがままに作ってみるのもいいですよ。
別に製品にして売るわけではないのですから、間違っててもいいのです。
DXライブラリのHPにもサンプルプログラムが公開されていますし、ここにもサンプルプログラミングの館にコードがあります。
さっぱり作り方が解らなければそういうのを参考にしてもいいかも知れません。



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

Name: softya [URL]  ..ハッカー(134,703ポイント)   Date: 2010/03/16(火) 23:24   No:49291     
Title: Re:RPG作成について    
Dixq (管理人) さんの言う事も一理あると思います。私も本格的なアクションを作ることを求めているわけではないですが、RPGを作りたがる人がいきなり未経験で作り始める人が多いので、まぁ慌てないでくださいって意味で書いてます。

ちなみに、Dixq (管理人) さんのRPGサンプルは初心者には十分大規模だと思いますが(汗)。
http://dixq.net/sm/d10.html

>FF1やドラクエ1のようなRPGの戦闘シーンなんかならわりと楽に作れそうです。 

システム自体は複雑じゃないですが、アイテムやら装備やら魔法の処理やらパーティの処理やら実にいろいろ面倒な処理があって本格的に作ろうとすると初心者には規模が大きくなりすぎて挫折するみたいです。初心者なんですから規模を抑えて作れば良いものなんですが、それが出来無いから初心者なんでしょうね。
ただ、攻撃と防御しか無い&パラメータ固定、敵も攻撃しかしてこないってレベルならさほど難しくないと思いますよ。まず、そのぐらいが作れるのが目標でしょう。

それでも「ゲームプログラミングの館」のサンプルプログラム編辺りまでぐらいは一通り理解出来ていないと厳しいと思います。
 Dixq (管理人) さんの「ゲームプログラミングの館」
http://dixq.net/g/
簡単なアクションやサウンドノベル風の表示も勉強できますので、とりあえずこちらを勉強されてはどうでしょうか?
あくまで提案という事で、どちらにしろRPGを作るには長い時間がかかりますので、じっくり考えて進めてください。



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

Name: dic  ..熟練のプログラマー(57,316ポイント)   Date: 2010/03/17(水) 17:01   No:49319     
Title: Re:RPG作成について    
初心者でRPGだったら
戦闘画面だけで、コンソールで
あとは、移動画面を数字入力で移動できるように
追加していけばできそうって
アクションに変更されたんですね

目的をはっきりさせておいた方がいいですよ


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



Name: dic  ..熟練のプログラマー(57,099ポイント)   Date: 2010/03/16(火) 19:48   No:49283       
Title: 悩みというか、雑談というか    
C言語に限った話ではないのですが、
−2、−1、0、1、2
と普通は なっていますが
この間に −0(マイナスゼロ)はないだろうかと考え
−0の2の補数を数えると
0を2進数で
0000(2)
これを全部ビット反転して
1111(2)
これに1を加えて
10000(2)
となり、桁がはみ出たので
0000(2)
となって無事マイナスゼロが成立したので
0 = −0 と考えていいのでしょうか?
大学には進学してないので、そこまではわからないのです


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


Name: ぽこ  ..初心者(7,522ポイント)   Date: 2010/03/16(火) 23:05   No:49288     
Title: Re:悩みというか、雑談というか    
ん〜、考えていいと思います。
-0=(-1)×0なんで。


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

Name: たいちう  ..熟練のプログラマー(60,037ポイント)   Date: 2010/03/16(火) 23:06   No:49289     
Title: Re:悩みというか、雑談というか    
厳密な証明は「群論」の範囲だと思います(あるいは群論をかじると判りやすい)。
有限の範囲を持つ自然数の集合を定義し、それらに対する「加算」や
「2の補数」という演算を定義した上で、0 = -0 を証明できます。
私もちゃんと勉強したことはないけど、できるはずです。

次に上記の定義をビットで表現すれば、腑に落ちるのではないでしょうか。


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

Name: たかぎ [URL]  ..ハッカー(170,355ポイント)   Date: 2010/03/16(火) 23:30   No:49292     
Title: Re:悩みというか、雑談というか    
CやC++の場合でいえば、負の整数値の内部表現に、1の補数や符号ビットと絶対値を用いている処理系では-0があり得ます。
ただし、1の補数表現で全ビットが1の場合や、2の補数表現や符号ビットと絶対値表現で符号ビットが1で値ビットがすべて0の場合がトラップ表現かどうかは処理系定義です。
したがって、1の補数や符号ビットと絶対値を内部表現として用いている場合でも、常に-0が存在するとは限りません。

なお、浮動小数点数の場合は、符号ビットと絶対値表現を用いていますので、-0が存在するのが普通です。


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

Name: dic  ..熟練のプログラマー(57,109ポイント)   Date: 2010/03/17(水) 16:54   No:49317 解決!     
Title: Re:悩みというか、雑談というか    
>群論
はじめて聞きました
・・・老後の楽しみにしておきます
今から勉強しても間に合わないでしょうし

整数の場合しか考えていませんでした
浮動小終点の場合も考えないといけなかったですね

勉強になりました
ありがとうございました


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



Name: 筋少  ..ぴよぴよ(20ポイント)   Date: 2010/03/16(火) 23:45   No:49293       
Title: 白黒・セピアetc    
DXライブラリで、カラーの画像(pngやbmp)を、
白黒、セピア、ネガポジ等に色を加工して表示するには
どうすればいいですか。


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


Name: kazuoni [URL]  ..ハッカー(139,527ポイント)   Date: 2010/03/17(水) 01:47   No:49295     
Title: Re:白黒・セピアetc    
独自で画像に処理をかけるしかないですね。
高速に処理するには、イメージハンドルで実行する事をお勧めします。
ただ、面倒ならば、あらかじめフリーソフト等でその画像を変化させた画像を
作成する方が断然早いかと思います。

動的に生成する場合は以下のようにしてみてください。

白黒には二種類あります。

二値化は色が0か255のどちらかに分けられます。
例えばRGBの平均値xを
if(x<128)
   x = 0;
else
   x = 255;
のように割り振り、R=G=B=xとし、ピクセルセットすればよいです。

モノクロ化は
RGBの平均値xをR=G=B=xとすればよいです。

セピアは適当なパラメータをかければよいです。
一例として以下のサイトを
画像処理におけるアルゴリズム -セピア調化-
ttp://homepage2.nifty.com/tsugu/sotuken/ronbun/sec3-2.html#0017

ネガポジ反転は255-画像値
とする反転でよいです。

ググればアルゴリズム等はたくさん出てくるかと思いますので、
随時調べてみてください。


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

Name: kazuoni [URL]  ..ハッカー(139,539ポイント)   Date: 2010/03/17(水) 01:49   No:49296     
Title: Re:白黒・セピアetc    
イメージハンドル等は本家の「ドット単位で画像にアクセスしたい関係」
を参照してください。

DXライブラリ 関数リファレンスページ
http://homepage2.nifty.com/natupaji/DxLib/dxfunc.html


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



Name:  ..ぴよぴよ(343ポイント)   Date: 2010/03/16(火) 15:24   No:49278       
Title: 「13・敵にショットを撃たせてみよう」について    
初めまして、C言語プログラムを勉強させていただいています。

「龍神録プログラミングの館」の13でエラーが発生してしまいました。
エラー内容は、
project\1章\mydat\include\struct.h(59) : error C2065: 'SHOT_BULLET_MAX' : 定義されていない識別子です。
というものです。
defineに(コピペですが)定義はしてあるのですがされてないと出ます。

ちなみに、12以前まではエラーは起こりませんでした。(「'引数' : 'double' から 'float' への変換です。データが失われる可能性があります。」という警告はありますが)
自分で解決しようと色々考えたのですが、どれも意味がなかったようです。

使っているソフトはVisualC++2008ExpressEditionです。
Cの知識は配列や関数が分かる程度で、取り合えず一通りやろうとしていました。

何方か解決法を教えていただけないでしょうか。
記入不足でしたら追記致します。


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


Name: Dixq (管理人)  ..ウィザード(1,159,555ポイント)   Date: 2010/03/16(火) 16:31   No:49279     
Title: Re:「13・敵にショットを撃たせてみよう」について    
スペルミスでなければ変更が反映されてないんでは。リビルドしてみてください

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

Name: DVDM [URL]  ..熟練のプログラマー(52,244ポイント)   Date: 2010/03/16(火) 18:21   No:49280     
Title: Re:「13・敵にショットを撃たせてみよう」について    
>>冊さん
もしリビルドしても直らなかった場合、読み込む順番が間違っているかもしれません。

SHOT_BULLET_MAX が struct.h を読み込む前に定義されていないとそのようなエラーが出てきます。
もし試したようでしたらすいません。


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

Name:  ..ぴよぴよ(408ポイント)   Date: 2010/03/16(火) 23:15   No:49290 解決!     
Title: Re:「13・敵にショットを撃たせてみよう」について    
返事が遅れてしまい申し訳ありません。
DVDMさんの仰った通り、defineの上の方に移したら無事動きました。
管理人さん、DVDMさん、ありがとうございました。


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



Name: RIO  ..ぴよぴよ(85ポイント)   Date: 2010/03/15(月) 18:38   No:49236       
Title: rand関数で被らない値を出す方法    
0〜9で被らない数字を3つ出す方法はないでしょうか?

現在、下記の様に実装しているのですが無駄なのでしょうか?

int a = rand%10;
int b = rand%10;
int c = rand%10;

while(1){
    if(a!=b)break;
    else b = rand%10;
}

while(1){
    if(a!=c && b!=c) break;
    else c = rand%10;
}




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


Name: 初級者  ..初心者(7,575ポイント)   Date: 2010/03/15(月) 19:06   No:49237     
Title: Re:rand関数で被らない値を出す方法    
rand % 10
で、コンパイルできていますか?


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

Name: RIO  ..ぴよぴよ(146ポイント)   Date: 2010/03/15(月) 19:11   No:49238     
Title: Re:rand関数で被らない値を出す方法    
すみません。直接書いていたので・・・。
rand()と書いてありコンパイルは通っております。

ロジックがわからないので質問させて頂きました。


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

Name: バグ  ..ハッカー(191,843ポイント)   Date: 2010/03/15(月) 19:17   No:49239     
Title: Re:rand関数で被らない値を出す方法    
0〜9が格納された配列をシャッフルして、先頭の3つを取り出せばいいですよ。
理屈はトランプを切るのと同じです。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,158,656ポイント)   Date: 2010/03/15(月) 20:03   No:49240     
Title: Re:rand関数で被らない値を出す方法    
バグさんの補足でシャッフルは例えばこんなプログラムでどうでしょう^^

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

void swap( int *a, int *b ){
    int t = *a;
    *a = *b;
    *b = t;
}

int main(){
    int i=0,r,arr[10]={0,1,2,3,4,5,6,7,8,9};
    srand((unsigned)time(NULL));
    while( i < 10 ){
        r = rand() % 10;
        if( r == i ){    //同じもの交換してもショウガナイ
            continue;    //のでもう一度
        }
        swap( &arr[i], &arr[r] );
        i++;
    }
    for( i=0; i<10; i++ ){
        printf("%d ", arr[i]);
    }
    return 0;
}  

実行結果
2 9 7 4 8 6 3 5 0 1

 
最初の3つを表示させたければ最後のfor文の上限を3にすればいいですね。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,159,018ポイント)   Date: 2010/03/15(月) 20:10   No:49241     
Title: Re:rand関数で被らない値を出す方法    
解り難くてよければ
int main(){
    int i,arr[10]={0,1,2,3,4,5,6,7,8,9};
    srand((unsigned)time(NULL));
    for( i=0; i<10; i++)
        swap( &arr[i], &arr[(((rand() % 9) + (i + 1)) % 10)] );
    return 0;
}
 
 
これで同じこと出来ますね。


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

Name: RIO  ..ぴよぴよ(235ポイント)   Date: 2010/03/16(火) 00:19   No:49251 解決!     
Title: Re:rand関数で被らない値を出す方法    
皆様ご回答ありがとうございます。 管理人様まで・・・。
こんなに回答が頂けるとは思いませんでした。

なるほど・・・先頭を取るのですか・・・。
そのように考えたことがありませんでした。
ありがとうございました。


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

Name: たかぎ [URL]  ..ハッカー(169,746ポイント)   Date: 2010/03/16(火) 01:43   No:49256     
Title: Re:rand関数で被らない値を出す方法    
(Cではなく)C++を使っていて、rand関数にこだわらないのであれば、std::random_shuffle関数テンプレートを使えばもっと簡単になります。


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

Name: 初級者  ..初心者(7,612ポイント)   Date: 2010/03/16(火) 05:24   No:49261     
Title: Re:rand関数で被らない値を出す方法    
同じ値どうしの交換を排除しなくてもよいのでは
ないかと思います。


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

Name: バグ  ..ハッカー(191,862ポイント)   Date: 2010/03/16(火) 08:54   No:49262     
Title: Re:rand関数で被らない値を出す方法    
「Fisher-Yates」でググると詳しいことがヒットするかと思います。

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

Name: たいちう  ..熟練のプログラマー(59,873ポイント)   Date: 2010/03/16(火) 09:04   No:49263     
Title: Re:rand関数で被らない値を出す方法    
ぱっと見ただけですが、管理人さんの最初のロジックでは、
以下のような数列を生成できないと思います。
偶数回のswapでは不可能でしょう。
(n == 2 の場合を考えるのが簡単でしょう。)

{1,0,2,3,4,5,6,7,8,9};

後で時間が取れたら補足します。
(それまでに誰かの補足がなければ)


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

Name: たいちう  ..熟練のプログラマー(59,864ポイント)   Date: 2010/03/16(火) 09:20   No:49264     
Title: Re:rand関数で被らない値を出す方法    
説明しているページを発見。
http://ray.sakura.ne.jp/tips/shaffle.html


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

Name: バグ  ..ハッカー(192,124ポイント)   Date: 2010/03/16(火) 20:50   No:49285     
Title: Re:rand関数で被らない値を出す方法    
もう解決したようですがサンプルです。


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

#define N 10

int main(void)
{
    int i = 0, j = 0, temp = 0, array[N];

    // 乱数の種を設定する
    srand((unsigned)time(NULL));

    // 配列の初期化
    for (i = 0; i < N; ++i)
    {
        array[i] = i;
    }

    // Fisher-Yatesによるシャッフル処理
    for (i = N - 1; i > 1; --i)
    {
        j = rand() % (i + 1);
        temp = array[j];
        array[j] = array[i];
        array[i] = temp;
    }

    // シャッフルした配列の表示
    for (i = 0; i < N; ++i)
    {
        printf("%d\n", array[i]);
    }

    return 0;
}


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



Name: デラ初心者  ..入門者(4,826ポイント)   Date: 2010/03/13(土) 22:52   No:49150       
Title: パソがシャットダウンしない    
いつもお世話になっております。

今回はCとは関係ありませんが
windowsが時々シャットダウンできなくて困っています。
最近はその事が多いので投稿させていただきました。

主にiTunesを使うとシャットダウン時にプログラムが
終了していないと言われます。

ちゃんとxを押して終了しているのですが・・・
すぐ終了を押すと今度はrundll32?が出てきて
それもすぐ終了を押すとシャットダウンされると
思ったのですが、フリーズします。

使ってるパソは
------------------
DELL: vostro 220s
OS: Windows XP Professional SP3 正規版
言語: 日本語
BIOS: Default System BIOS
プロセッサ: インテル(R) Core(TM)2 Duo CPU     E7400  @ 2.80GHz (2 CPUs)
メモリ: 3070MB RAM
グラフィック: Radeon HD4350
電源: 250w
Page File: 550MB used, 4404MB available
Windows Dir: C:\WINDOWS
DirectX Version: DirectX 9.0c (4.09.0000.0904)
DxDiag Version: 5.03.2600.5512 32bit Unicode
です。







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


Name: mnkr  ..入門者(4,638ポイント)   Date: 2010/03/13(土) 23:59   No:49152     
Title: Re:パソがシャットダウンしない    
画面ではプログラムが閉じて表示されていないようでも
裏で終了処理を行っている可能性があります。
終了処理が終わった頃(HDDへのアクセスがなくなった頃)を見計らってシャットダウンしたほうが良いかと思います。


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

Name: デラ初心者  ..入門者(4,814ポイント)   Date: 2010/03/15(月) 18:21   No:49234     
Title: Re:パソがシャットダウンしない    
了解です

試してみます。


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

Name: デラ初心者  ..入門者(4,853ポイント)   Date: 2010/03/16(火) 18:51   No:49281     
Title: Re:パソがシャットダウンしない    
解決も押すのを忘れていました。

申し訳ありません。

ありがとう御座いました。


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

Name: dic  ..熟練のプログラマー(57,033ポイント)   Date: 2010/03/16(火) 19:42   No:49282     
Title: Re:パソがシャットダウンしない    
iTune入れた経験ありますけど
終了処理が遅いですよiTunue
バックグラウンドで動いてるのもあるし
アップデートチェックなんかもしてる

なので、Windows Media Player ひとすじに決めました(キリッ

あと、解決ボタン押してないです(キリッキリッ


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



Name: せいせい  ..ぴよぴよ(41ポイント)   Date: 2010/03/15(月) 20:49   No:49245       
Title: LoadGraphで連番ファイルを読み込み。    
お世話になっております。
せいせいと申します。

実は今画像ファイルを連番の名前をつけて整理しています。
(例:A_000.jpg,A_001.jpg … )

これをfor文を使って連番ファイルを読み込むために

for( i = 0 ; i < 256 ; i++ )
LoadGraph( "A_" + i + ".jpg" );

とやってみてもダメでした。
おそらく私が単純に書き方をしらないだけなのだと思います。
もしよろしければ、どのようにすれば多くの画像ファイルを
まとめて読み込むことができるかを、ご教授いただければ幸いです。


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


Name: Justy  ..伝説なるハッカー(509,363ポイント)   Date: 2010/03/15(月) 20:59   No:49247     
Title: Re:LoadGraphで連番ファイルを読み込み。    
 LoadGraphに渡す文字列を毎回 sprintfで組み立ててはどうでしょう?

C言語何でも質問掲示板
http://www.play21.jp/board/formz.cgi?action=res&resno=15799&page=&lognum=50&id=dixq&rln=15813


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

Name: せいせい  ..ぴよぴよ(405ポイント)   Date: 2010/03/16(火) 10:52   No:49267     
Title: Re:LoadGraphで連番ファイルを読み込み。    
お世話になっております。

ちなみに私は連番ファイルに0番目のファイルをA_00.jpg
そして10番目のファイルをA_10.jpgとしております。

このばあい
for( i = 0 ; i < 64 ; i++ )
{
sprintf( s , "A_%d.jpg", i);
Image[i] = LoadGraph(s) ;
}
とすると、iが2桁の時は問題ないのですが、一桁の場合、十の位の"0"がないためエラーとなってしまいます。
この場合、桁数によって以下のように場合分けしなくてはならないでしょうか?
for( i = 0 ; i < 64 ; i++ ){
  if( i < 10 )
    sprintf( s , "A_0%d.jpg", i);
  else
    sprintf( s , "A_%d.jpg", i);
  Image[i] = LoadGraph(s) ;
}

何かうまい方法がございましたら、ご教授いただければ幸いです。
よろしくお願いいたします。


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

Name: fatens  ..初心者(8,720ポイント)   Date: 2010/03/16(火) 11:03   No:49268     
Title: Re:LoadGraphで連番ファイルを読み込み。    
%02dで少なくとも2桁0埋めで出力できます。


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

Name: たいちう  ..熟練のプログラマー(59,894ポイント)   Date: 2010/03/16(火) 11:03   No:49269     
Title: Re:LoadGraphで連番ファイルを読み込み。    
printf系の書式を覚えましょう。

sprintf( s , "A_%02d.jpg", i);


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

Name: せいせい  ..ぴよぴよ(463ポイント)   Date: 2010/03/16(火) 11:46   No:49270 解決!     
Title: Re:LoadGraphで連番ファイルを読み込み。    
fatensさん、たいちうさん
ご対応いただきありがとうございました。

これにて解決とさせていただきます。


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



Name: okusi  ..ぴよぴよ(478ポイント)   Date: 2010/03/16(火) 01:26   No:49254       
Title: アプリケーションにするには    
Visual c++を使っています。

私はDxLibでゲームを作っているのですが、作ったものをアプリケーションにするやり方が
いまいちわかりません。

どうすればできますか?
教えてください。お願いしますm(_ _)m


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


Name: えーや  ..ぴよぴよ(799ポイント)   Date: 2010/03/16(火) 02:39   No:49258     
Title: Re:アプリケーションにするには    
ビルドすればexeファイルが生成されます。
ファイルはプロジェクトフォルダ内のdebugやreleaseフォルダ内に生成されるはずです。

VisualC++ではF7を押すと実行されますね。
"ビルド"という作業にはコンパイルやリンクとか諸々の作業が含まれているので
興味があれば検索してみると良いかもしれません。


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

Name: okusi  ..ぴよぴよ(494ポイント)   Date: 2010/03/16(火) 10:49   No:49266 解決!     
Title: Re:アプリケーションにするには    
検索してやってみたらできました。

ありがとうございました。


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



Name:  ..ぴよぴよ(343ポイント)   Date: 2010/03/14(日) 18:26   No:49198 解決!       
Title: DXライブラリ    
#include "DxLib.h"

int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC)
{
   ChangeWindowMode(TRUE);
   if(DxLib_Init()==-1)return(-1);

   int BoxWidth, BoxHeight;
   BoxWidth = 50;
   BoxHeight = 50;

   int DrawPosX, DrawPosY;
   DrawPosX = (640 - BoxWidth) / 2;
   DrawPosY = (480 - BoxHeight) / 2;

   int Color;
   Color = GetColor(255, 0, 0);

   DrawBox(DrawPosX, DrawPosY, DrawPosX + BoxWidth, DrawPosY + BoxHeight, Color, true);

   WaitKey();
   DxLib_End();
   return(0);
}
このソースコードで赤い四角形を表示させようと思ったのですがウィンドウを閉じる時の一瞬しか表示されません。
改善方法がPC側から出されたと思うのですが、今後このメッセージを表示しないを選択してしまいお手上げ状態です。

あいまいなのですがカラー設定が、、、という内容だったと思います。
改善方法を教えていただけたらなと思います。 編集済み


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


Name: Dixq (管理人) [URL]  ..ウィザード(1,159,593ポイント)   Date: 2010/03/15(月) 23:02   No:49250     
Title: Re:DXライブラリ    
>蠍さん

こんばんは。
裏画面を使用しないコードは今後書くこと無いと思います。
ですので、裏画面を使った描画の仕方をしてみてください。
詳しくはゲームプログラミングの館の13章をご覧ください。
http://dixq.net/g/13.html

もしそのままのコードで改善したいなら・・。

WaitKey()の前に
ScreenFlip();
と書くとどうなります?


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



Name: sum  ..ぴよぴよ(250ポイント)   Date: 2010/03/14(日) 02:51   No:49156       
Title: 処理の順番?    
初書き込みします。sumです。

現在僕はキューさん(管理人様)の作ったプログラムをオブジェクト指向を取り入れて作ろうとしています。
今作ったのは入力に対応してキャラクターをプレイ画面内を動かすところまでなのですが、問題が2つ出てしまいました。

1、上下左右の移動は問題ないが、右斜め下(この方向だけたぶん大丈夫)以外の斜め移動のスピードが速い(x成分、y成分の移動距離が√2分の1倍されてない?)

2、スコアボードなどは龍神録様のものをお借りしていますが、一瞬白い画面が移ることがある。(フレーム落ちという言葉で表現すればいいのか?)


ライブラリもDXライブラリ使用と、どの情報を出せばいいかわかりませんが、プログラムの形などもほとんど龍神録のものを引用させてもらっています。


この2つが解決したいのですが、どのあたりを疑ったらいいか教えてください。


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


Name: Ma  ..熟練のプログラマー(61,021ポイント)   Date: 2010/03/14(日) 04:08   No:49160     
Title: Re:処理の順番?    
>プログラムの形などもほとんど龍神録のものを引用
オブジェクト指向に変えたということなので、それはオリジナルのソースとは遠く違うものだと考えます。


>1、上下左右の移動は問題ないが、右斜め下(この方向だけたぶん大丈夫)以外の斜め移動のスピードが速い(x成分、y成分の移動距離が√2分の1倍されてない?) 

あなたのコードがそのようになるようになっているからでしょう。
だったら、√2分の1倍すればいいのでは?
それを意図してソースを書いたのにそのような不具合が出るならば、その部分をかきこむといいですよ。


>2、スコアボードなどは龍神録様のものをお借りしていますが、一瞬白い画面が移ることがある。
どのようなソースか分からないのに、白い画面になるといわれただけで原因特定は難しいと思います。
「私のシューティングゲームのどこかで、画面が白くなるんですが、原因が分かりますか?」
と、私があなたに聞いたようなものです。
具体的な症状、ソースコード、あるいはどこで起きるか などなどの情報がほしいです。




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

Name: sizuma  ..プログラマー(36,248ポイント)   Date: 2010/03/14(日) 12:51   No:49167     
Title: Re:処理の順番?    
softoyaさんもC#XNAへの移植をされていますね。
http://softyasu.net/index.html(win&x360ゲームズ)
XNAはフレームワークがきっちりしているので参考になるのではないでしょうか。

ソースを流用ってことはたぶんC++でしょうか。
オブジェクト指向を取り入れてということは完全なオブジェクト指向のプログラムにする気ではないということですか?
オブジェクト指向に書き直すなら設計からしたほうがいいと思いますけど。


龍陣録のソースは見たことないので具体的なことはアドバイスできません。


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

Name: softya [URL]  ..ハッカー(132,634ポイント)   Date: 2010/03/14(日) 13:10   No:49168     
Title: Re:処理の順番?    
はい、softyaです。
私のXNA版は、参考になるように龍神録をわざと意識して残してある部分があります。
http://softyasu.net/game/gametop.html
完全にオブジェクト指向で作るなら、タスクシステム等の採用などZEROから作り直しをお勧めしたいですね。

とりあえず問題点は、ソースコードを見せてもらえないとなんともいえないです。


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

Name: sum  ..かけだし(1,082ポイント)   Date: 2010/03/14(日) 17:31   No:49193     
Title: Re:処理の順番?    
キャラクターの移動処理では
http://dixq.net/rp/9.html
の calc_ch, ch_move関数をそのまま使っています。

描画処理の中に白い画面が映る(この表現は正しくないと思いますが)問題の原因究明はどのあたりを調べたらいいのかわからなかったのでできていません。

softyaさん
>>完全にオブジェクト指向で作るなら、タスクシステム等の採用などZEROから作り直しをお勧めしたいですね。
 
タスクシステムはまだどう実装していいものか分からなかったので使わない方向にしています。


添付したプログラムはすべてオブジェクト指向を使わなくてもいいと思ったので自機、弾、敵の管理の辺りにしか使っていません。


今回作るプログラムの目的はC言語プログラミング(主にファイル分割関連といろいろなアルゴリズム)とオブジェクト指向に触れてみるというものですが、まずはシューティングゲームを作るのが第一の目的です。

プロジェクトを添付するので、問題についてのことやプログラムの設計からのことについて何かあれば教えてほしい、または話をしてほしいです。



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

Name: softya [URL]  ..ハッカー(132,967ポイント)   Date: 2010/03/14(日) 18:18   No:49196     
Title: Re:処理の順番?    
>プロジェクトを添付するので、問題についてのことやプログラムの設計からのことについて何かあれば教えてほしい、または話をしてほしいです。

プロジェクトの添付に失敗されている様です。もう一度お願いします。
もしかしたら、サイズオーバーかもしれません。
>投稿は添付ファイルを含めて一度に120KBが限度
との事ですので。
ソース・ヘッダファイルだけを圧縮してアップロードで構いません。


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

Name: sum  ..かけだし(1,130ポイント)   Date: 2010/03/14(日) 18:34   No:49200     
Title: Re:処理の順番?    
120KBまでとは・・・

調べ足りませんでした。

では、ソース、ヘッダファイルだけをアップロードします。


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

Name: softya [URL]  ..ハッカー(133,406ポイント)   Date: 2010/03/14(日) 23:44   No:49212     
Title: Re:処理の順番?    
ごめんなさい。
今、マシンを新しくてWindows7を本格的に導入中なので実行環境が動きません。
ぱっと見た感じは斜め移動の問題も白い画面も出なさそうな感じですね。
斜め移動に関しては、printfDxでx2,y2,naname,mx,myなどを出力して思ってもいない動きをしていないか確認してみてください。白い画面は裏画面をちゃんと使っていれば出ないはずですが、今のところはわかりません。

※ オブジェクト指向としては、単にクラスを使って書いているだけに過ぎない(C言語で書いても変わらない)のでだいぶ問題ありですが今回は追求しません。直った後で考えましょう。


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

Name: sum  ..かけだし(1,228ポイント)   Date: 2010/03/15(月) 00:29   No:49216     
Title: Re:処理の順番?    
なるほど、printfDxがデバッグの助けになるのですか。
勉強になります。

加えてオブジェクト指向という考え方も分かってませんでしたか。


とりあえず今日(15日)中に各変数の挙動だけでも調べてみます。



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

Name: sum  ..かけだし(1,365ポイント)   Date: 2010/03/15(月) 20:56   No:49246     
Title: Re:処理の順番?    
変数の動きはまだ良く分かっていませんが

・キャラ停止時にx2、y2がとても大きくなる
・斜め移動時はどの方向でも mx=0、 my=±4 固定になっている。
・ただの左右、上下移動でもx2、y2の小数点以下が動く時がある。

あと、白い画面が混ざるんじゃなくて混ざっているのは黒い画面でした。
すみません。



上の3つの問題はプログラムを見てもよく分かりませんでした。


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

Name: sum  ..かけだし(1,555ポイント)   Date: 2010/03/15(月) 21:44   No:49248     
Title: Re:処理の順番?    
上の書き込みで
・ただの左右、上下移動でもx2、y2の小数点以下が動く時がある。

とありましたが、間違いでした。

むしろ、
斜め移動で小数点以下が動かない
でした。


何か今いいものが見えたような気がs

いろいろ見てみます。



削除キー入れ忘れててすみませんでした。 編集済み


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



Name: 真由美  ..かけだし(1,511ポイント)   Date: 2010/03/15(月) 14:02   No:49230       
Title: 文字列が含まれているかをチェックする    
言語はVC++です。

String^ url = "http://www.google.co.jp/";
こういった文字列がありここに「google」が含まれているかを
探す方法はないでしょうか?
調べてみると正規表現?やらなんたらが出てきたのですが
それらしい関数が見つかりませんでした・・・。


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


Name: Blue  ..中級者(11,674ポイント)   Date: 2010/03/15(月) 14:14   No:49231     
Title: Re:文字列が含まれているかをチェックする    
String.IndexOf メソッド (String)
http://msdn.microsoft.com/ja-jp/library/k8b1470s%28VS.80%29.aspx


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

Name: 真由美  ..かけだし(1,696ポイント)   Date: 2010/03/15(月) 18:25   No:49235     
Title: Re:文字列が含まれているかをチェックする    
ご回答ありがとうございます。
ご丁寧にURLをありがとうございます。
そのメソッドを使ってみたのですが一文字ずつ検索されてしまっているようです・・・。

下記の様に書くとg、o、l、eのどれかが含まれているとif内に飛んでくれません・・・。
この文字列が含まれていたら処理をする〜みたいに書きたいのですが
この関数では出来ないのでしょうか?

if(url->IndexOf("google") != -1 ){
}

お手数おかけいたしますが
ご回答頂けますと助かります。


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

Name: ジュンヤ  ..入門者(3,612ポイント)   Date: 2010/03/15(月) 20:17   No:49242     
Title: Re:文字列が含まれているかをチェックする    
文字列が含まれているかチェックするサンプルを書いてみました。
#include <iostream>
#include <string>
using namespace std; 

int main()
{
    string str1( "aiueo google kakikukeko" );
    unsigned int loc = str1.find( "google", 0 );
    if( loc != string::npos )
      cout << "googleの位置は " << loc << endl;
    else
      cout << "googleは見つかりませんでした" << endl;

    return 0;
}

find()を使えば対象となる文字列から、調べたい文字列を検索することができます。
第一引数は、調べたい文字列で、第二引数は、検索を開始する位置です。

検索に成功したなら、戻り値として最初に文字列が現れた場所を返し、失敗したなら
string::nposを返します。
今回は、場所まで検索してますが、文字が存在するかどうかだけでよいなら、
if( str1.find( "google", 0 ) != string::npos )としてもよいと思います。



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

Name: Justy  ..伝説なるハッカー(509,288ポイント)   Date: 2010/03/15(月) 20:46   No:49244     
Title: Re:文字列が含まれているかをチェックする    
>下記の様に書くとg、o、l、eのどれかが含まれているとif内に飛んでくれません・・・
 IndexOfでうまくいくはずなんですけど。


    String^ url = "http://www.google.co.jp/";
    if(url->IndexOf("google") >= 0)
    {
        System::Windows::Forms::MessageBox::Show("google");
    }


 上記のコードを実行して、メッセージボックスが現れませんか?


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



Name: spark sheet  ..ぴよぴよ(13ポイント)   Date: 2010/03/14(日) 21:21   No:49202       
Title: C言語の質問です    
初めまして。
私の通っている学校でC言語の課題が出たのですが、難易度が高く、初心者の私には到底分かりません。
出された以下のものなのですが、どれか一つでもいいので、解答を教えていただけるとありがたいです。
1.フィボナッチ数列のn番目の値を求めるプログラムを作れ。なお番号は0番目から数えるものとします。
2.長さnの単語が変数C0,C1,・・・,Cn-1に1文字ずつ入っています。この単語が前から読んでも後ろから読んでも同じ語(回文)であれば、変数pを1にし、そうでなければ0にするプログラムを作れ。
3.長さnの文字列が変数C0,C1,・・・,Cn-1に1文字ずつ入っています。この文字列中に含まれる、英大文字、英小文字、記号および数字の文字数をそれぞれ数えるプログラムを作れ。
4.長さnの文字列が変数C0,C1,・・・,Cn-1に1文字ずつ入っています。この文字列中の英大文字は英小文字に、英小文字は英大文字にし、それ以外の文字はそのままにしておくプログラムを作れ。
問題4のヒントとして掲載されていた文です。
同じアルファベットの大文字と小文字(例えば'A'と'a')は、文字コードの差がいくつになっているか考えなさい。文字コードの差は'A'と'a'では、'a'の方が'A'より値が大きいので、'a'-'A'で計算できます。また、この差はどの文字でも同じになります。
とりあえずまだたくさん問題はありますが、一気に質問するのはよくないと思うので4つまでにしておきます。解答よろしくお願いします。


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


Name: sizuma [URL]  ..プログラマー(36,365ポイント)   Date: 2010/03/14(日) 21:51   No:49204     
Title: Re:C言語の質問です    
丸投げ禁止ですよ。
コレだけ分からないならば、近くの友人や先生に聞いた方がいいと思います。
単位が取れればいいだけなら、2chの掲示板だと丸投げ答えてくれるんじゃないでしょうか?
まぁここでもどこかの答えたがりが答えるかもしれませんけど。

とりあえずフィボナッチ数列のプログラムは検索すればすぐひっかかると思いますよ。


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

Name: asd  ..上級者(20,064ポイント)   Date: 2010/03/15(月) 10:42   No:49222     
Title: Re:C言語の質問です    
回答じゃなくて解答をご希望ということであれば、出題した先生に聞いてください。
既に回答がありますが、自助努力をするつもりでないのであれば誰も助けてくれませんよ。

自分でがんばる気があるのでしたらどこまで出来ているのか教えてください。

1.C言語で書いたプログラムをコンパイルできる程度の能力
2.hello,world!を表示するプログラムが書ける程度の能力
3.条件分岐や反復処理が出来る程度の能力(if文とかfor文、while文など)

とりあえず4つ一気に聞くのではなくて出来そうなものを一つ選んで質問してください。

> 単位が取れればいいだけなら、2chの掲示板だと丸投げ答えてくれるんじゃないでしょうか?

何でこういうことを教えちゃうかなぁ・・・。
丸投げに対して解答をつけちゃう人は質問者が成長するチャンスを奪うことになるので
ひどいなぁと思いますが、丸投げできる場所を教えちゃうのも同類項と思ってます。


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

Name: sizuma  ..プログラマー(36,545ポイント)   Date: 2010/03/15(月) 11:39   No:49225     
Title: Re:C言語の質問です    
僕は教育者ではないので(本質的に)、向上心がない人に道徳を教えるつもりはありません。
お金を頂いて教えるときはそういうことも考えてその人の成長のために教えますけどね。


と、ここで教育論を語ってもしょうがないですし、確かに丸投げできる場所を教えるのも同類項ですね。
asdさんのように親切にここまで促すことはできないので、回答が返ってくれば、お任せします。


>何でこういうことを教えちゃうかなぁ・・・。
僕がこの掲示板以外見てないので、不愉快なやり取りするなら僕の見えないところでしてほしいな、という考えです。
こういうのを自己分析すると、自分のわがままさが身にしみますね。
スレッドの内容からずれてしまいましたね。
申し訳ありません


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

Name: たかぎ [URL]  ..ハッカー(169,691ポイント)   Date: 2010/03/15(月) 12:03   No:49226     
Title: Re:C言語の質問です    
C言語ということですが、そのまま解答を書くといろいろ問題もあると思いますので、C++で作ってみました。
とりあえず1.だけです。

template <unsigned N>
struct fibonacci
{
    static const unsigned value = fibonacci<N - 1>::value + fibonacci<N - 2>::value;
};

template <>
struct fibonacci<0u>
{
    static const unsigned value = 0u;
};

template <>
struct fibonacci<1u>
{
    static const unsigned value = 1u;
};


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

Name: たかぎ [URL]  ..ハッカー(169,712ポイント)   Date: 2010/03/15(月) 12:29   No:49228     
Title: Re:C言語の質問です    
> 同じアルファベットの大文字と小文字(例えば'A'と'a')は、文字コードの差がいくつになっているか考えなさい。文字コードの差は'A'と'a'では、'a'の方が'A'より値が大きいので、'a'-'A'で計算できます。また、この差はどの文字でも同じになります。

処理系不明の状況では、上記は成立しません。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,159,440ポイント)   Date: 2010/03/15(月) 20:44   No:49243     
Title: Re:C言語の質問です    
> spark sheetさん

こんにちは^^ 最近本当にご無沙汰の管理人です。
授業が難しくC言語にも興味を持てないみたいですね。
私もそうでした。
こんなHPを作っていますが、学生時代は友達の答えを見せてもらったりしても落第するという悲惨な有様でした。
「フィボナッチ?何それ?
そんな教授しか使わないような言葉知ったところで自分の人生に何の関係が・・。」
そんな感じでした。
なので、授業が解らず嫌になってしまう気持ちはよく解ります。

でもプログラミングって本当に楽しいものなんです。
今の苦しい壁を乗り越えて、プログラムの楽しさがわかれば、どんどん自分から調べたくなり、
自分から意欲的に勉強出来、面白くなってきますよ。

「一体こんなプログラム勉強して何が楽しいんだ・・」
と思うかも知れません。例えば、私はゲーム作りが趣味なのですが、私が作った
こんなゲームあんなゲームよければご覧ください。
これも今習っているような事を勉強していけば作れるようになります^^

あんな悲惨な学生生活を送っていた私が寝ても覚めてもプログラムを書いているようになったのですから、
spark sheetさんもあきらめずに挑戦してみて下さい^^

・・なんて長い前置きはこの辺にして。

現在どの辺まで解っていますか?
どれ位解っているかによって答え方が違ってくると思います。
例えば

(1) char型aに文字'b'を変数に入れました。このaにはいった文字をして下さい
(2) char型の配列arrに"abcdea"を入れました。左から4番目の文字を表示して下さい。
(3) (2)のarrの長さを調べる関数を作ってください。
(4) (2)のarrの中身を反転し、"aedcba"にする関数を作ってください。
(5) (2)のarrに文字"a"が何回出てきたか数える関数を作ってください。
(6) a〜z, A〜Z, 0〜9の文字コードを全て表示するプログラムを作ってください。

と問題があったら、どれが出来てどれが出来ませんか?


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



Name: hit  ..初心者(5,998ポイント)   Date: 2010/03/14(日) 16:24   No:49185       
Title: ひつようなもの    
Visualc++ で作ってコンパイルすたものを友達にあげようとおもっているのですが、そのプロジェクトにはいっているファイルをそっくりそのままあげるしかないのでしょうか?

なんか無駄があるような気がするんです。


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


Name: hit  ..初心者(6,003ポイント)   Date: 2010/03/14(日) 22:14   No:49205     
Title: Re:ひつようなもの    
むぅ・・・

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

Name: softya [URL]  ..ハッカー(133,034ポイント)   Date: 2010/03/14(日) 22:29   No:49206     
Title: Re:ひつようなもの    
開発環境を渡すなら、とりあえずDebugとReleaseフォルダは不要。
その他に削れるものはありますが、まぁ手渡しなら問題ないでしょう。
実行したいだけなら、Releaseフォルダにあるプログラムと実行に必要なデータだけ渡してください。


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

Name: hit  ..初心者(6,009ポイント)   Date: 2010/03/15(月) 15:52   No:49233 解決!     
Title: Re:ひつようなもの    
はい

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



Name: kei  ..ぴよぴよ(408ポイント)   Date: 2010/03/12(金) 10:33   No:49086       
Title: プロジェクトをコピーする方法    
すでにあるプログラムを流用して別のプログラムを作る方法について質問があります。

OS:WinXP
開発環境:VC6

このような環境でプログラムを作っていますが、あるプログラムを流用して別のプログラムを
作成しようと考えています。

プロジェクトのフォルダごとコピーしてソースを修正したのですが、*.cや*.hの変更や
ビルドしたときの*.exeなどが元のプログラムのままになっています。
別のプロジェクトを作って、ソースの文章をすべてコピペなどすればできることはできるのですが
時間がかかりどうも非効率的だなぁ、と感じて別の方法がないかと探しております。

ネットで検索してもこういう情報があまり見あたらなかったのですが、プログラマーは
プロジェクトのコピーは何らかのリスクがあるからしないのでしょうか?
それともできる方法はあるのでしょうか?

このあたりについてわかる方がいらっしゃいましたら教えていただけないでしょうか。


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


Name: たかぎ [URL]  ..ハッカー(168,907ポイント)   Date: 2010/03/12(金) 10:36   No:49087     
Title: Re:プロジェクトをコピーする方法    
はじめからライブラリの形のプロジェクトにしておけば、プロジェクトごと追加すれば済む話です。


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

Name: たいちう  ..熟練のプログラマー(59,263ポイント)   Date: 2010/03/12(金) 11:13   No:49089     
Title: Re:プロジェクトをコピーする方法    
> ネットで検索してもこういう情報があまり見あたらなかったのですが、プログラマーは
> プロジェクトのコピーは何らかのリスクがあるからしないのでしょうか?
> それともできる方法はあるのでしょうか?

私はコピーしますよ。手作業です。
ファイル名を変更し、includeしている部分を書き直す他、
テキストエディタでdswとdspのファイルを開いて修正します。
編集前にバックアップは必ず行ってください。


> はじめからライブラリの形のプロジェクトにしておけば、
> プロジェクトごと追加すれば済む話です。

ライブラリも進化させたくなるときがあります。
その時にtaichiu.dllをtaichiuA.dllとtaichiuB.dllに
分割したくなったりします。


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

Name: kei  ..ぴよぴよ(454ポイント)   Date: 2010/03/15(月) 14:43   No:49232 解決!     
Title: Re:プロジェクトをコピーする方法    
ありがとうございました。

そんなに複雑なプロジェクトではないので手作業でコピーしようかと思います。


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



Name: sim  ..ぴよぴよ(244ポイント)   Date: 2010/03/13(土) 20:03   No:49144       
Title: .netのリストボックスをテキストファイルに書き込む    
テキストボックスなどの要素をテキストファイルに書き込むことは出来るのですが
リストボックスですと良く理解できません・・・。

リストボックスの読み込みはできているのですが
書き込みが出来ていないようです・・・。

言語はVC++です。
どなたかご教授いただけないでしょうか?

////////////////////////////////////////////////// 読み込み これは出来ているみたいです
            System::IO::StreamReader^ sr = 
                gcnew System::IO::StreamReader("config.txt",System::Text::Encoding::GetEncoding(932));
            sr->ReadLine();
            String^ Item;
            while((Item = sr->ReadLine()) != nullptr){
                this->listBox->Items->Add(Item);
            }
            sr->Close();

////////////////////////////////////////////////// 書き込み こちらができていないです・・・。
             System::IO::StreamWriter^ sw = 
                gcnew System::IO::StreamWriter("config.txt",false,System::Text::Encoding::GetEncoding(932));
             int count = this->listBox->Items->Count;
             for(int i=0; i<count; i++){
                 sw->Write("aa");//this->listBox->Items[i]->ToString()
             }
             sw->Close();
             MessageBox::Show("ファイルに書き込みました。","メッセージ");


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


Name: Justy  ..伝説なるハッカー(507,071ポイント)   Date: 2010/03/13(土) 21:47   No:49145     
Title: Re:.netのリストボックスをテキストファイルに書き込む    

    sw->Write(listBox->Items[i]);


でどうですか?


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

Name: sim  ..ぴよぴよ(214ポイント)   Date: 2010/03/15(月) 14:00   No:49229 解決!     
Title: Re:.netのリストボックスをテキストファイルに書き込む    
連絡が遅くなってしまい申し訳御座いませんでした。
出来ました><
ありがとうございます。


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



Name: Tororo  ..入門者(4,901ポイント)   Date: 2010/03/14(日) 13:52   No:49170       
Title: VC++ [雑談です]    
お世話になってます。Tororoです。
今日はVC++ Expressの事での質問です。
自作の関数を作った時に使おうとすると、たまに[,]を打っても
ツールチップが出ないことがあります。
こう言う事はよく起こるんですか?
自分はかなり起こるので困ります^^;
直し方、と言うか起こりにくくする方法を教えてくださいm(_ _)m

『こんな事わかんないやー』 って人はどうぞ雑談してください。


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


Name: Ma  ..熟練のプログラマー(61,111ポイント)   Date: 2010/03/14(日) 14:51   No:49175     
Title: Re:VC++ [雑談です]    
自分もよくわかっていませんが、新しく作った関数だったり、修正したばかりだとツールチップ?でてきませんね。
そのようなときは、他の部分でエラーがでてもいいから、ともかくコンパイルすることで表示できるようにしてます。

あとは詳しい方に、、、w


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

Name: Tororo  ..入門者(4,953ポイント)   Date: 2010/03/14(日) 15:12   No:49177     
Title: Re:VC++ [雑談です]    
>>Maさん
自分、コンパイルしても出ないと言うw
エラーも出ないし思った通りに動くのに
チップ出なくてめんどくさい罠。


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

Name: Justy  ..伝説なるハッカー(507,122ポイント)   Date: 2010/03/14(日) 15:30   No:49178     
Title: Re:VC++ [雑談です]    
 プロジェクトを一旦閉じ ncbファイルを削除してから試してみてはどうでしょう?

※ まぁ「表示されたらめっけもの」と考え、基本そんなものに頼らないでプログラムを書くのが一番なのですが。


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

Name: たかぎ [URL]  ..ハッカー(169,522ポイント)   Date: 2010/03/14(日) 15:41   No:49179     
Title: Re:VC++ [雑談です]    
> ※ まぁ「表示されたらめっけもの」と考え、基本そんなものに頼らないでプログラムを書くのが一番なのですが。

その通りですし、インテリセンスは遅いので、かえってコーディングの速度が低下します。


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

Name: softya [URL]  ..ハッカー(132,766ポイント)   Date: 2010/03/14(日) 16:00   No:49181     
Title: Re:VC++ [雑談です]    
私もソースコードを日ごろ秀丸エディタで書いているのでインテリセンスは当てにしてませんね。
それに大きなコードになるとインテリセンスがちゃんと表示される方がマレだったりするので、全然当てにしなくなりました。

下記のような例でも効かなくなることがあるので、そんな物気にするぐらいなら始めから使わないほうが気楽だったりしません?
http://d.hatena.ne.jp/ir9Ex/20090517/1242566846


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

Name: Tororo  ..初心者(5,053ポイント)   Date: 2010/03/14(日) 16:16   No:49182     
Title: Re:VC++ [雑談です]    
>>かえってコーディングの速度が低下します。
>>そんな物気にするぐらいなら始めから使わないほうが気楽だったりしません?
その通りですね^^;
そんな事気にせずに作ればいいんですね。
参考になりました^^
ありがとうございましたm(_ _)m


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

Name: Tororo  ..初心者(5,061ポイント)   Date: 2010/03/14(日) 16:16   No:49183 解決!     
Title: Re:VC++ [雑談です]    
解決踏み忘れました^^;

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

Name: バグ  ..ハッカー(191,748ポイント)   Date: 2010/03/14(日) 16:43   No:49186     
Title: Re:VC++ [雑談です]    
C++は特に遅い気がしますね。C#やVBだと充分実用に耐え得る速度で表示されると思いますが…(^_^;)
まぁ、頼り過ぎるのは問題ありますが、せっかくの便利な物を否定し過ぎるのもどうかと思いますけどね…。


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

Name: softya [URL]  ..ハッカー(132,827ポイント)   Date: 2010/03/14(日) 17:27   No:49190     
Title: Re:VC++ [雑談です]    
>まぁ、頼り過ぎるのは問題ありますが、せっかくの便利な物を否定し過ぎるのもどうかと思いますけどね…。
否定はしたくないのですが、当てにならないってのが問題ですね。表示できない理由を調べるのが大変なわりに実りが少ないというか・・・。
私がC++で使っていると、ほとんどちゃんと表示されないんですがみなさんちゃんと表示されます?
MFC系でも表示されない場合があるんですが。


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

Name: バグ  ..ハッカー(191,801ポイント)   Date: 2010/03/14(日) 18:20   No:49197     
Title: Re:VC++ [雑談です]    
クラス情報が表示されなくなった事はありますが、簡単に復旧できましたし、深刻な事態に陥った事はありませんよ。MFCでも、.NETでも特に問題ないですけどねぇ?

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

Name: tkmakwins15  ..比類無きプログラマー(99,492ポイント)   Date: 2010/03/15(月) 12:05   No:49227     
Title: Re:VC++ [雑談です]    
VC2010のインテリセンスは新しくなったようです。改善点は結構あるようです。
とは言うものの、全体的には重くなってます。反応性や反応速度は若干向上したものの、parsing が重すぎです。


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



Name: kaede  ..ぴよぴよ(199ポイント)   Date: 2010/03/14(日) 23:08   No:49208       
Title: 無題    
C言語初心者(1か月半)です。最近VC2008でずっと参考書やネットの問題を解いていたんですが、今日思い切って新しい例題集を買ったんですがあまり確認せず買ってしまいそれがUNIX対応の本だったのです。そこで質問なんですが

@私のような初心者がUNIXでやるにはまだ早いでしょうか?

Awindows上でやるのとUNIXでやるのは若干違うらしいのですが、windows上でUNIXの問題集をやるのは可能でしょうか?

ちなみにその参考書は秀和システムの「C言語100題実践例題集」です。

どなたかご教授お願いします。 編集済み


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


Name: softya [URL]  ..ハッカー(133,234ポイント)   Date: 2010/03/14(日) 23:37   No:49211     
Title: Re:無題    
@私のような初心者がUNIXでやるにはまだ早いでしょうか?
別に問題ないと思います。
逆にシステムの違いから良い勉強になると思いますよ。

Awindows上でUNIXをやるのは若干違うらしいのですが、windows上でUNIXの問題集をやるのは可能でしょうか? 
cygwinを使えば、Windows上で擬似UNIX環境の構築が可能です。
cygwinとgcc(Cコンパイラ)のインストール。Fortranは無視してください。
http://www2.ktokai-u.ac.jp/~kfuji/cygwin/cygwin.htm
こちらも参考に。
http://journal.mycom.co.jp/special/2002/cygwin/index.html

ちなみにC言語の標準ライブラリしか使っていないのであれば、VC++2008EEでも問題なく実行できますよ。


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

Name: kaede  ..ぴよぴよ(286ポイント)   Date: 2010/03/14(日) 23:51   No:49213     
Title: Re:無題    
ありがとうございます。
早速やってみたのですが、http://www2.ktokai-u.ac.jp/~kfuji/cygwin/cygwin.htmの(1-8)ダウンロードサイトを聞いてきます のところでアドレスを指定するらしいのですが、サイトはURLがたくさんあるんですが、私のところはひとつもなかったので、サイトに載っていたURLを何個か指定してもUnable to setup .ini from とでてきてしまい (1-9)に入る前に突っかかってしまいます。どうすればいいでしょうか?
 編集済み


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

Name: たいちう  ..熟練のプログラマー(59,833ポイント)   Date: 2010/03/15(月) 09:36   No:49218     
Title: Re:無題    
kaedaさんの目的によりますね。
Windows以外のOSも使ってみたいのか、とりあえずはC言語の勉強ができれば良いのか。

基本的に私は各個撃破をお勧めするので、特別な理由がないならば
VC2008でその本に沿ってプログラムを作成することをお勧めします。
OSの違いに依存する部分はプログラムのごく一部でしょうから。

# サポートページからプログラムをダウンロードできましたが、
# int main()に戻り値がなかったので、良い本という印象は受けませんでした。


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

Name: たいちう  ..熟練のプログラマー(59,724ポイント)   Date: 2010/03/15(月) 09:44   No:49219     
Title: Re:無題    
追記

C言語の勉強がしたいならば、新しいOSや開発環境に手を出す必要はありません。
少なくとも初心者のうちは。

UNIXに手を出してみたいならば、UNIX上でC言語のプログラムの作成をすることは、
適当な課題だと思います。


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

Name: kaede  ..ぴよぴよ(355ポイント)   Date: 2010/03/15(月) 09:51   No:49220 解決!     
Title: Re:無題    
>たいろうさん

私の目的はC言語の勉強をすることです。

その本を使ってVC2008をやることも可能なんですね^^

でもせっかく買ったのでやってみたいと思います。

ありがとうございました。


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

Name: softya [URL]  ..ハッカー(133,923ポイント)   Date: 2010/03/15(月) 11:12   No:49224     
Title: Re:無題    
C言語を勉強する目的次第だと思います。
組み込み業界とかを目指されるのなら、Unix・Linux系とか他のOSを勉強されるのは良いことだ思います。ゲーム業界もLinux使ってます。他の言語へのステップアップが目的だったら、余計なことだったかも知れません。

「C言語100題実践例題集」の目次を見てみましたが、後半の問題でいくつかUNIX・Linux固有の機能を使っているみたいですね。それさえあきらめれば、VC++2008EEで実行可能です。

>早速やってみたのですが、http://www2.ktokai-u.ac.jp/~kfuji/cygwin/cygwin.htmの(1-8)ダウンロードサイトを聞いてきます のところでアドレスを指定するらしいのですが、サイトはURLがたくさんあるんですが、私のところはひとつもなかったので、サイトに載っていたURLを何個か指定してもUnable to setup .ini from とでてきてしまい (1-9)に入る前に突っかかってしまいます。どうすればいいでしょうか?

ここで問題が出た話は始めて聞きました。
とりあえず、こちらは参考になるますでしょうか?
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1415436559
Linux・UNIXに興味があるのであれば、Windows上で動くLinuxも紹介できますが。
UNIX用のソースコードは、ほぼLinuxでそのまま動きます。


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



Name: 初心者の中の初心者  ..ぴよぴよ(267ポイント)   Date: 2010/03/15(月) 10:16   No:49221       
Title: 無題    
現在EXCELからデータの取得をしようとしています。
そこで、日付のようなデータの場合文字列で取り込みたいのですが、
EXCEL上の入力方法によってエラーとなって異常終了する場合があります。


                index[0]=r;
                index[1]=c;
                sa.GetElement(index, &val);
                str.Format("%s", (CString)val.bstrVal);

上記のような場合、EXCELの該当セルに「20100315」を入力していると
異常終了となりますが、「'20100315」のようにアポストロフィで文字列指定
していると正常に取り込めます。

入力されている内容が文字列か数値か判断して取得する方法はありますでしょうか?
または、入力セルには文字列か数値かが決まっています。
(入力者は数値で入力しているが文字列で入力しているつもりです)
どちらで入力されても文字列で取得するような方法はありますでしょうか?
基本的な質問で申し訳ありません。よろしくお願いいたします。


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


Name: Blue  ..中級者(11,643ポイント)   Date: 2010/03/15(月) 10:52   No:49223     
Title: Re:無題    
VARIANT型ならvtメンバで確認できるのでは?

参考
http://program.station.ez-net.jp/special/vc/atl-com/variant.asp


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



Name: tk  ..入門者(2,942ポイント)   Date: 2010/03/12(金) 15:53   No:49093       
Title: 相談です    
皆さんに相談したことがあります。


現在、今いる会社が、この不況のあおりをうけて経営不振に陥っています。
今いる会社は、基本受注を中心に経営をしているので(自社製品もありますが)、
不況のおかげで受注数が減ってきている状態です。

最近(ここ3ヶ月ほど)ですが、会社は手が空いている社員をどんどん休業者にして
ハローワークからの休業者への補助金を当てに、なんとか回していこうと考えているようで、
知識不足、作業効率の低い若手社員の方々が次々休業になっています。

もしかしたら、まだ入社2年目の自分も休業になる可能性があります。
(そういう話を上司から喫煙ルームで聞きました。)
自分は上司から、結構高い評価をもらえている様で、たぶん休業にはならないと思うけど
会社の状況によっては・・・といわれました。


そこで皆さんにお聞きしたいのが、
もし皆さんがこういう状況になって、いざ休業者になった時、どうしますか?

自分は
1、休業中に猛勉強して会社にアピールする(会社が将来経営を持ち直すと信じて)
2、休業中に転職活動をする
の2つを考えています。
今は、1を強く思っているのですが・・・

会社の状況や個人差があると思いますが、
皆さんの意見を聞いて見たいと思い、このスレを立てた次第です。

もっと細かい情報が知りたいのであれば、答えられる範囲で答えます。

以上です。
よろしくお願いいたします。


追記
今週の土日に出張するので、皆さんの意見に対する返答は来週の月曜以降になると思います。
ご了承ください。 編集済み


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


Name: たいちう  ..熟練のプログラマー(59,164ポイント)   Date: 2010/03/12(金) 16:57   No:49094     
Title: Re:相談です    
回答は多分後で何か書くと思いますが、とりあえず質問です。


tkさんの年令は四大卒で新卒で就職して2年目で24〜5歳ということでいいかな?
大きく違う場合は書いてくれた方がより良いアドバイスを受けやすいと思います。
それと会社の規模も。


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

Name: たかぎ [URL]  ..ハッカー(168,926ポイント)   Date: 2010/03/12(金) 17:03   No:49095     
Title: Re:相談です    
地域によっても状況がかなり異なりますので、都道府県ぐらいは補足してください。


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

Name: tk  ..入門者(3,023ポイント)   Date: 2010/03/12(金) 17:38   No:49096     
Title: Re:相談です    
> たいちうさん
> tkさんの年令は四大卒で新卒で就職して2年目で24〜5歳ということでいいかな? 
四大卒で今年25になります。

> それと会社の規模も。
基本受注(下請け)なので、それほど大きな会社ではありません。
従業員数200名、昨年度売り上げ10億ほどの会社です。


> たかぎさん
> 地域によっても状況がかなり異なりますので、都道府県ぐらいは補足してください。
申し訳有りません。
事務所住所は神奈川になります。



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

Name: たいちう  ..熟練のプログラマー(59,630ポイント)   Date: 2010/03/12(金) 19:10   No:49102     
Title: Re:相談です    
まず2つの要素を考えて見ましょうか。

現在の会社で働き続けたいか、そうでもないか?
現在の会社は持ち直すと思うか、そうではないのか?

これで4通りに分けられますので、それぞれの対処案を列挙してみます。

(1) 働き続けたいし持ち直すと思う。 → 問題ない
(2) 働き続けたいが駄目そう。 → 最後まで付き合う、転職する、様子を見る
(3) 持ち直すとは思うが辞めたい。 → 辞めて探す、探して辞める
(4) 駄目そうだし辞めたい。 → 辞めて探す、探して辞める

分類して列挙するだけでも、思考の整理に役立ったりするものです。
現在の会社の良い面と悪い面をそれぞれ列挙してみてください。
それと、現時点で取りうる選択肢についても、それぞれの
メリット・ディメリットを書き出してみると良いでしょう。
(掲示板にじゃないよ。念の為)


何を勉強するかは別とすると、(1)から(4)のどの場合でも、
猛勉強するのが望ましいでしょう。現在の会社へのアピールだけでなく、
転職活動のためにも勉強は必要です。

勉強するか転職活動するか、という2択ではなく、
勉強だけするか、転職活動の一環として勉強するか、という2択だと思います。
上記(1)の場合を除き、遅かれ早かれ転職はすることになりますし、
客観的な自分の評価を上げるためには、何を勉強したら良いかを考えましょう。


現時点での知識と経験を売りに転職活動するとしても、
「このような理由で今これを勉強している」と面接で言えた方が有利です。
資格試験・新しい言語・設計・ゲーム作品の作成・英語・コミュニケーションスキル、
などが考えられますが、評価されやすさと得られる評価の高さも考慮してください。

(基本情報試験などは確実に評価されますが、その評価はあまり高くありません。
オブジェクト指向に深い造詣を持っている人はそれなりに高く評価されますが、
面接ではそのように自称しているだけの人と区別してもらえないかもしれません)


無駄に長くなってしまったようで申し訳ありません。
もしかしたらまた何か書くかも。


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

Name: たかぎ [URL]  ..ハッカー(169,127ポイント)   Date: 2010/03/12(金) 21:38   No:49107     
Title: Re:相談です    
今転職するのは得策ではありません。
本当に会社が倒産したり、解雇された場合はしかたがありませんが、それまでは何とか会社にとどまりましょう。
まあ、それでも転職情報を集めて現状を認識するのは悪くありませんので、ハローワークにでも行ってみるのもよいかもしれません。

休業中に何をするかですが、今すぐではなく将来、具体的には30代以降にどうするのかを睨んだ上で、その布石を打つべきですね。
勉強もよいのですが、できれば会社以外の人脈形成に力をいれるとよいでしょう。
経済状況は悪化するでしょうが、あえてその期間に結婚相手を見つけるのも悪くないと思います。


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

Name: tk  ..入門者(3,355ポイント)   Date: 2010/03/15(月) 09:35   No:49217     
Title: Re:相談です    
ご意見ありがとうございます。

> たいちうさん
とりあえず、自分にあるだろうと思われる選択肢をあげ、
それに対する自分の考えや、メリット、デメリットをまとめてみました。
少しですが自分のとるべき道が見えてきました。

時間が経てば、この道もはっきりしてくると思います。


> たかぎさん
> 本当に会社が倒産したり、解雇された場合はしかたがありませんが、それまでは何とか会社にとどまりましょう。
僕もそう思っています。
まだ2年目ですので、今あきらめたら諦め癖がついてしまいそうですし。

> まあ、それでも転職情報を集めて現状を認識するのは悪くありませんので、ハローワークにでも行ってみるのもよいかもしれません。
今度、ハローワークにいってみます。
転職情報が手に入れば、具体的な選択肢も増えることでしょうし。

> 勉強もよいのですが、できれば会社以外の人脈形成に力をいれるとよいでしょう。
これは入社当時からやっています。
今現在、数社の方々(中には結構上の人もいます)と知り合いになれました。




先輩方にも相談してみたのですが、やはりたかぎさんの意見が多いようですね。
転職するなら地盤が固まってから、転職を考えるのはまだ早い。と言われました。


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



Name: Yuno  ..入門者(3,865ポイント)   Date: 2010/03/14(日) 14:47   No:49173       
Title: CX000069:スタックフレームが必要です…?    
こんにちはYunoです
今変数に値がきちんと代入されないという問題で悩んでいます

この前、不運にもデータが飛んでコードを書き直したのですが
その時にDxLibを
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe
のものに変えたところ
以下の関数で
char *pathに値が代入されないということが発生しました

調べると
CXX000069変数にはスタックフレームが必要です
と出て3行目のあたりで値が0x00000000となったので
いろいろ調べてみたのですが…

スタックフレームでググっても
そのようなものが見つかりません
どのようにすれば直るかどなたかわかる方いませんか?


以下がそのコードです
一応
file_load(構造体)
  >int buf
  >int fsize

void DxAPath(char* path){
    SetUseDXArchiveFlag(TRUE);
    SetDXArchiveExtension("dat");
    SetDXArchiveKeyString(key);
    file_load.fsize = FileRead_size(path);
    if(file_load.fsize<=0){
        FILE *fp=fopen("\\e_log.txt","wb");
        fwrite(path,sizeof(char),strlen(path),fp);
        fclose(fp);
        DxLib_End();
    }
    file_load.buf = (int *)malloc((file_load.fsize+1)*sizeof(int));
    int fhandle = FileRead_open(path);
    FileRead_read(file_load.buf,file_load.fsize,fhandle);
    FileRead_close(fhandle);
    SetUseDXArchiveFlag(FALSE);
}


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


Name: Yuno  ..入門者(3,891ポイント)   Date: 2010/03/14(日) 14:54   No:49176     
Title: Re:CX000069:スタックフレームが必要です…?    
すんませんタイトルおかしかったです
CXX0069でしたorz


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

Name: Justy  ..伝説なるハッカー(508,902ポイント)   Date: 2010/03/14(日) 17:27   No:49189     
Title: Re:CX000069:スタックフレームが必要です…?    
 テスト版のようですから何が起きても不思議はないと思いますが。

 ということはその DxAPath関数は(ファイルが開けない等)正常に動作していないということですか?
 呼び出し元はどうなっているのですか?


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

Name: Yuno  ..入門者(4,149ポイント)   Date: 2010/03/14(日) 21:43   No:49203     
Title: Re:CX000069:スタックフレームが必要です…?    
先ほど最新版のものに変えて試しましたがやはりだめでした

確かにファイルは一つも開けていません…
要するにpathが空っぽなので
File_Read_sizeが0
File_Read_openは-1以下になります

呼び出し元はすべて
DxAPath("./アーカイブ名/aaa/bbb.gph");
img_board[10] = DecryptionReadingG("./アーカイブ名/aaa/bbb.gph");<-復号化関数
DxAPath("./アーカイブ名/ccc/ddd.gph");
img_board[10] = DecryptionReadingG("./アーカイブ名/ccc/ddd.gph");
:
:
という感じです


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

Name: Justy  ..伝説なるハッカー(509,039ポイント)   Date: 2010/03/15(月) 00:14   No:49215     
Title: Re:CX000069:スタックフレームが必要です…?    
>pathが空っぽなので 
 それをどこで確認していますか?
 もし、ウォッチウインドウなどでしたら、それは信用できないかもしれません。

 FileRead_sizeの前に
  DxLib::AppLogAdd("%s\n", path);
を呼んで、正しく pathがセットされているかログやデバッガの出力ウインドウから確認してみてください。

 これがうまくいっていないようですと、スタックが破壊されている可能性があります。
 この場合はこのソース以外のどこかに問題があるので、プロジェクト一式がないと
原因などはわかりません。


 反対にこれがうまく表示されたのであれば、path変数に正しく値はセットされていることに
なります。
 pathが正しいのに開けない、ということはアーカイブの中に対象のファイルが入っていない、
或いはパスが間違っているのかもしれません。

 アーカイブをデコードしてみて入っているかどうか、指定しているパスが正しいかどうか
確認してみてください。


 それでも判らなければ、再現可能なプロジェクト一式をどこかにアップしてもらうしか
ないかと。


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



Name: レッドリ  ..かけだし(2,365ポイント)   Date: 2010/03/12(金) 23:22   No:49110       
Title: ゲームプログラマ    
現場ではDirectXとC++を主に使用しているんですか?

会社ごとに、スタッフが独自のライブラリを作っているという噂も聞いたことがあるのですが、それもDirectXとC++で作っているんですか? 


調べてもCとC++とJAVAを使うという言語系しかでてきませんでした。 編集済み


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


Name: softya [URL]  ..ハッカー(131,857ポイント)   Date: 2010/03/12(金) 23:41   No:49113     
Title: Re:プロのゲームプログラマについて…    
>現場ではDirectXとC++を主に使用しているんですか?
WindowsやXbox360だとそうなりますね。PS3はOpenGL ESの特殊バージョンと使っているはずで、DS,Wii,PSPはもっとローレベルのライブラリを使用しているはずです。全部はずなのは、現役じゃないので情報が曖昧なためです。

>会社ごとに、スタッフが独自のライブラリを作っているという噂も聞いたことがあるのですが、それもDirectXとC++で作っているんですか?
独自のライブラリと言うよりエンジンですね。DirectXやOpenGLを更にラップするライブラリやツールの集まりです。
わかり易い例として、カプコンの「MTフレームワーク」を紹介します。
このフレームワークは、Windows/Xbox360/PS3で動作します。たぶん、今はWiiも対応しているはずです。
http://game.watch.impress.co.jp/docs/20070131/3dlp.htm
現在は、「MTフレームワーク2.0」に進化。
http://game.watch.impress.co.jp/docs/series/3dcg/20090613_283112.html
この記事の連載は業界を志すなら読んでおくべきかと。
http://game.watch.impress.co.jp/docs/series/3dcg/

その他に有名なものにUnrealEngine3があります(他にもいっぱい有りますが)。
UnrealEngine3を使ったゲームは、Gears of Warシリーズや日本のゲームだと「ラスト レムナント」や「「ロストオデッセイ」などがありますね。全部Xbox360系ですが(汗)
http://game.watch.impress.co.jp/docs/series/3dcg/20090515_168708.html
http://ja.wikipedia.org/wiki/Unreal_Engine
で、非商用に限りですがこのエンジンがUnreal Development Kitとして無料公開されています!
http://www.4gamer.net/games/032/G003263/20091106014/
http://wikiwiki.jp/udk/

>調べてもCとC++とJAVAを使うという言語系しかでてきませんでした
まだまだ、調べ方が甘い!
Javaはiアプリやアンドロイド携帯で使われてます。
iPhoneだとObjective-Cですね。
googleの検索キーワード不足だったり、Wikipediaを熱心に調べましょう。 編集済み


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

Name: softya [URL]  ..ハッカー(132,168ポイント)   Date: 2010/03/12(金) 23:59   No:49115     
Title: Re:プロのゲームプログラマについて…    
[追記]
DXライブラリもDirectXラッパーの一種ですが、ゲーム会社のゲームエンジンは、3Dの機能が更に豊富でシェーダとか影など処理ルーチンがゲームエンジンのツールでデザイナー側でも設定出来てしまうほど便利なツールになっています。まぁ、一種のツクール様な便利なものに成っている訳です。
それでも、プログラマの仕事はいっぱいあったりするのですけどね。
エンジンを自社開発しているカプコンとスクエニ辺りだと、ゲームエンジンの開発プログラム担当とゲームプログラム担当(エンジンを利用する側)とでは、当然ながらやっていることが大分違ってきていますね。
より数学的・物理的・光学的な部分はエンジン側プログラマが担当して、ゲームシステム、操作系、エフェクト、演出系はゲーム担当プログラマの仕事と役割が別れてきています。

[追記の追記]
GDC(ゲーム・デベロッパーズ・カンファレンス)2010が開催されてますので、その記事も追っかけた方が勉強になりますよ。
http://www.famitsu.com/game/news/1232959_1124.html?ref=rss 編集済み


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

Name: レッドリ  ..入門者(2,736ポイント)   Date: 2010/03/13(土) 02:34   No:49121 解決!     
Title: Re:プロのゲームプログラマ    
編集前の内容に答えて下さってありがとうございます。
なんだかややこしいことしてすみません。質問が多すぎると迷惑になりそうだと思いましたので…。
一応最初に質問に戻しておきました。

XBOXはXNAというやつですね。
WINとXBOX→DirectX C++
PS3   →OpenGL


MTフレームワーク
おお、これは確か以前読み込んでいた記事で出てきたので知っています!
MH3とかもこれで作られているとかなんとか
3D関係の記事は見ていて面白いですね。
西川善司シリーズは途中で読むのをやめてしまったので
今回は、最後まで読んでみます。


ゲームエンジンってそんなに便利なものなんですね〜
RPGツクール並みに簡単ですと、ゲーム制作がかなり短時間で済みますね。
でも近頃のゲームはもっとリアルにだとか、映画のようなアニメーションが必要だとかで
やはり短時間で済んでいなさそうですね。
だから、ゲームプログラマの中からエンジン制作側のプログラマを分担させているんですね。

URLも全て見させて頂きました。
かなり面白そうなので見てみます。
ありがとうございます。


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

Name: softya [URL]  ..ハッカー(132,345ポイント)   Date: 2010/03/13(土) 09:45   No:49131     
Title: Re:プロのゲームプログラマ    
>XBOXはXNAというやつですね。 
XNAは、C#専用のフレームワークですね。
http://ja.wikipedia.org/wiki/Microsoft_XNA
これは今のところアマチュア用で、将来的にはプロ用も狙っているってレベルですね。

>RPGツクール並みに簡単ですと、ゲーム制作がかなり短時間で済みますね。 
まぁ、そこまでは簡単ではないですけどね。
簡単な操作でシェーダーの動作が確認出来るのと、実機に持って行く前にWindows上でも動作が確認出来るのは効率アップになるでしょうね。


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

Name: レッドリ  ..入門者(2,820ポイント)   Date: 2010/03/14(日) 23:01   No:49207 解決!     
Title: Re:ゲームプログラマ    
ありがとうございます。
これらも見つつも、softyaさんに教えて頂いた
タスクシステムとC++を勉強していこうと思います。
タスクシステムは情報が少なすぎるところが難点ですけど…(笑)


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

Name: softya [URL]  ..ハッカー(132,983ポイント)   Date: 2010/03/14(日) 23:16   No:49209     
Title: Re:ゲームプログラマ    
>タスクシステムは情報が少なすぎるところが難点ですけど…(笑)
もう既に見たかもしれませんが。
「本格的なシューティングゲームを実現するタスクシステム 」
http://codezine.jp/article/detail/297


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

Name: レッドリ  ..入門者(2,841ポイント)   Date: 2010/03/15(月) 00:07   No:49214     
Title: Re:ゲームプログラマ    
ありがとうございます。
登録してソースもダウンロードしました。
頑張ります。


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



Name: けろん  ..ぴよぴよ(230ポイント)   Date: 2010/03/11(木) 05:02   No:49050       
Title: 構造体    
構造体関連の質問です
わかる方回答よろしくお願いします
まず、ファイルは三つ
・構造体の宣言がしてあるファイル
・関数が宣言してあるファイル、構造体のメンバにアクセス(構造体の初期化関数あり)
・メイン関数があるファイル、関数を呼び出す
で、構造体の初期化関数を呼び出した後に、メインループで一定周期で関数を呼び出します
仮に呼び出されるたびに構造体のメンバ(A)に毎回1を足していくとします
そのときに関数内では構造体のメンバ(A)の値に対応した処理をします
いざ実行してみると構造体のメンバ(A)は初期化した値そのままになっているんです
原因はわかりません
やっぱり確実性のあるグローバル変数にしたほうがいいのでしょうか
よろしくお願いします 編集済み


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


Name: たかぎ [URL]  ..ハッカー(168,609ポイント)   Date: 2010/03/11(木) 08:13   No:49053     
Title: Re:構造体    
ソースを貼ってください。


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

Name: tk  ..かけだし(2,155ポイント)   Date: 2010/03/11(木) 09:07   No:49054     
Title: Re:構造体    
構造体はローカル変数ということですよね?
一定周期で呼び出される関数には参照渡しをしていますか?
でも初期化が出来ているということは参照渡しは出来ているということですよね・・・

たかぎさんの仰っている通り、ソースを貼ってもらうのがいいかと。


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

Name: たいちう  ..熟練のプログラマー(59,148ポイント)   Date: 2010/03/11(木) 09:10   No:49055     
Title: Re:構造体    
> やっぱり確実性のあるグローバル変数にしたほうがいいのでしょうか

そんなことしてたらグローバル変数だらけになってしまいます。
原因を追究して構造体を確実に使えるようにするのがベストです。
それほど難しいことではないです。

で、書かれた情報だけでは原因はわかりませんので、
ソースを貼るか添付するかして下さい。


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

Name: けろん  ..ぴよぴよ(506ポイント)   Date: 2010/03/11(木) 23:50   No:49084     
Title: すいませんでした    
すいませんでした
DXライブラリを使って作ってます
龍神録と同じファイル構成(只単に私がそのまま使ってるだけですが)なので
projectのなかにの適当な章に入れれば動くと思います
なかみはソースファイルだけです
ちなみにSTG製作中です

とりあえず説明
main.cppのなかでは段階に分けて処理してます
iniで初期化→charで表示です
それぞれini.cppとchar.cppに記述してあります
ch_main関数ではdraw_char関数を呼び出してあります
そのdraw_char関数の中にあるようにch構造体のcntメンバの変化に合わせて表示する文字を変えていきます
このとき私が期待する結果は1〜5迄行って1に戻るというものです
一応デバッグ用にcntを表示させています
ですが、実行するとずっと1のままでcntの表示は常に0です
素人考えですが、構造体のメンバにアクセスできてないのだと思います
蛇足ですがこれを応用して一定サイクルで表示画像が変わっていく描画をしようと思っています

だめだめな日本語ですいません

よろしくお願いします


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

Name: tk  ..かけだし(2,319ポイント)   Date: 2010/03/12(金) 10:41   No:49088     
Title: Re:すいませんでした    
> 素人考えですが、構造体のメンバにアクセスできてないのだと思います
構造体chにはアクセスできています。


ソースを見ただけですが、とりあえずdefine.hのPAD_MAXを256にすれば
chのメンバの値が0になることはないでしょう。

たぶん、main.cppのGetHitKeyStateAll_2関数の中で、
iが16以降になった時(iが16~256のどこかで)に、
メモリ上にあるchの値を書き換えているのではないでしょうか。


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

Name: けろん  ..ぴよぴよ(533ポイント)   Date: 2010/03/14(日) 23:23   No:49210 解決!     
Title: ありがとうございました    
できました!ありがとうございます
返信遅くなって申し訳ないです


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



Name: サクソ  ..ぴよぴよ(26ポイント)   Date: 2010/03/11(木) 01:47   No:49046       
Title: 弾の軌道について    
C言語というよりは弾丸軌道の概念なんですが
サインカーブを描きつつ斜めに移動する弾はどのように考えればいいのでしょうか?
真下や真横なら進行方向の座標は定値を加算、
もう一方の座標はサイン値に応じてで変化させればいい。というのはわかったんですが、
たとえば、
自機狙いなので、射出されるまで角度は決まっていない
射出されると自機に向かって蛇行(サインカーブ)しながら進む
という軌道を再現したいと考えた時
自分のアタマでは加算用のテーブルを配列で持たせるくらいしか思いつきません。
無駄が多いように感じるし何より応用が効かないので、
色々な方法があるとは思いますが「こういう風に考えると良い」みたいなのを教えてください。


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


Name: Justy  ..伝説なるハッカー(506,336ポイント)   Date: 2010/03/11(木) 03:10   No:49048     
Title: Re:弾の軌道について    
 そうですね、普通に考えるとこんな感じでしょうか。

 まず敵と自機との間に直線でも曲線でもいいのですが、仮想パスを引きます。
 このパスを常に移動の基準として考えます。
 
 パス上の前のフレームの位置と現在のフレームの位置から移動ベクトル Vを出します。

 次にそのベクトル Vから、それに対して垂直なベクトルを求め、単位化しておきます。
 これをベクトル V'とします。
 
 あとはそのベクトル V'と、サインカーブの値を元に求めた係数を掛けたベクトルを
オフセットとしてパス上の現在位置と足すと蛇行するはずです。

 纏めると

 蛇行する位置 = [パス上の位置] + sin(counter) * len * V'

 となります。

 ちなみに lenの長さが蛇行の最大振れ幅になりますので、ターゲットとの距離に比例するように
設定すると確実にターゲットに命中することになりますし、ある程度の大きさを保っているなら
ターゲットはタイミング次第で回避することができます。


 尚、この説明ではベクトルを使いましたが、移動ベクトルではなく進行方向の角度から
V'を求めても構いません。
 龍神録的なコードであればこちらの方が楽でしょう。


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

Name: Tatu  ..プログラマー(34,973ポイント)   Date: 2010/03/11(木) 13:47   No:49066     
Title: Re:弾の軌道について    
sin(a×t)をtで微分するとa×cos(a×t)になることを利用した
サインカーブを描く弾を含む弾幕を作ってみました。

/*
弾発射関数
way個のknd番目の種類のcol番目の色の弾を座標(x,y)からb_angleの方向を中心に発射角度をそれぞれd_angleだけずらし、
(ただし、偶数弾などb_angleの方向に撃ちたくないときはb_angleの値をd_angle/2.0だけ大きくする)
angle方向に速度をspd,vxの値をvx,vyの値をvyに(vx,vyはそのままでは機能しない),
状態をstateにしてとばす。この弾はtillまで画面外に出ても消えず、
effが1ならば加算ブレンドして描画され、sflagが1ならば発射音がなる。
*/
void boss_bullet_on(int way,int knd,int col,int cnt,double x,double y,double b_angle,double d_angle,double spd,double vx,double vy,int state,int till,int eff=0,int sflag=1){
    int i=0,k;
    for(i=0;i<way;i++){
        if((k=search_boss_shot())!=-1){
            boss_shot.bullet[k].flag  = 1;
            boss_shot.bullet[k].knd   = knd;//弾の種類
            if(knd==7) boss_shot.bullet[k].kaiten=1;
            else boss_shot.bullet[k].kaiten=0;
            boss_shot.bullet[k].col   = col;//弾の色
            boss_shot.bullet[k].cnt   = cnt;
            boss_shot.bullet[k].x     = x;//座標
            boss_shot.bullet[k].y     = y;
            boss_shot.bullet[k].angle = b_angle+d_angle*(i - way/2);//角度:bが基準、dが間隔
            boss_shot.bullet[k].spd   = spd;//angle方向のスピード
            boss_shot.bullet[k].vx    = vx;//x方向の速度
            boss_shot.bullet[k].vy    = vy;//y方向の速度
            boss_shot.bullet[k].state = state;//弾の状態
            boss_shot.bullet[k].till  = till;//弾が画面外に出ても消えない時間
            boss_shot.bullet[k].eff      = eff;
            if(sflag==1)se_flag[0]=1;
        }
    }
}

void boss_shot_bulletT130(){
    int i,t=boss_shot.cnt%540;
    double angle;
    if(t == 60){
        boss_shot.base_angle[0]=bossatan2();
    }

    if(t>=60 && t<180){
        angle=boss_shot.base_angle[0];
        boss_bullet_on(1,6,1,0,boss.x,boss.y,angle     ,0,3,0,0,1,500);
        boss_bullet_on(1,6,0,0,boss.x,boss.y,angle     ,0,3,0,0,2,500);
        boss_bullet_on(1,6,1,0,boss.x,boss.y,angle-PI/2,0,3,0,0,3,500);
        boss_bullet_on(1,6,0,0,boss.x,boss.y,angle-PI/2,0,3,0,0,4,500);
        boss_bullet_on(1,6,1,0,boss.x,boss.y,angle+PI/2,0,3,0,0,3,500);
        boss_bullet_on(1,6,0,0,boss.x,boss.y,angle+PI/2,0,3,0,0,4,500);
    }

    if(t>=240 && t<300 && t%5==0){
        boss_bullet_on(1,7,2,0,boss.x,boss.y,-PI/2,0,2,0,0,5,0);
        boss_bullet_on(1,7,2,0,boss.x,boss.y,-PI/2,0,2,0,0,6,0);
    }

    if(t==420){
        boss_bullet_on(2,10,0,0,boss.x,boss.y,PI/2+PI/4,PI/2,5,0,0,7,0,1,1);
    }

    if(t==480){
        move_boss_pos(48,48,FMX-48,156,100,60);
    }

    for(i=0;i<BOSS_BULLET_MAX;i++){
        if(boss_shot.bullet[i].flag==1){
            switch(boss_shot.bullet[i].state){
                case 1:
                    boss_shot.bullet[i].x-=sin(boss_shot.bullet[i].angle)*PI2/2*cos(PI2/40*boss_shot.bullet[i].cnt);
                    boss_shot.bullet[i].y+=cos(boss_shot.bullet[i].angle)*PI2/2*cos(PI2/40*boss_shot.bullet[i].cnt);
                    break;
                case 2:
                    boss_shot.bullet[i].x+=sin(boss_shot.bullet[i].angle)*PI2/2*cos(PI2/40*boss_shot.bullet[i].cnt);
                    boss_shot.bullet[i].y-=cos(boss_shot.bullet[i].angle)*PI2/2*cos(PI2/40*boss_shot.bullet[i].cnt);
                    break;
                case 3:
                    boss_shot.bullet[i].x-=sin(boss_shot.bullet[i].angle)*PI2/2*cos(PI2/40*boss_shot.bullet[i].cnt);
                    boss_shot.bullet[i].y+=cos(boss_shot.bullet[i].angle)*PI2/2*cos(PI2/40*boss_shot.bullet[i].cnt);
                    if(boss_shot.bullet[i].cnt==40){
                        boss_shot.bullet[i].angle=atan2(ch.y-boss_shot.bullet[i].y,ch.x-boss_shot.bullet[i].x);
                    }
                    break;
                case 4:
                    boss_shot.bullet[i].x+=sin(boss_shot.bullet[i].angle)*PI2/2*cos(PI2/40*boss_shot.bullet[i].cnt);
                    boss_shot.bullet[i].y-=cos(boss_shot.bullet[i].angle)*PI2/2*cos(PI2/40*boss_shot.bullet[i].cnt);
                    if(boss_shot.bullet[i].cnt==40){
                        boss_shot.bullet[i].angle=atan2(ch.y-boss_shot.bullet[i].y,ch.x-boss_shot.bullet[i].x);
                    }
                    break;
                case 5:
                    if(boss_shot.bullet[i].y<10){
                        boss_shot.bullet[i].angle=0;
                    }
                    if(boss_shot.bullet[i].x>FMX-10){
                        boss_shot.bullet[i].angle=PI/2;
                    }
                    if(boss_shot.bullet[i].y>ch.y){
                        boss_shot.bullet[i].angle=PI;
                        boss_shot.bullet[i].state=0;
                    }
                    break;
                case 6:
                    if(boss_shot.bullet[i].y<10){
                        boss_shot.bullet[i].angle=PI;
                    }
                    if(boss_shot.bullet[i].x<10){
                        boss_shot.bullet[i].angle=PI/2;
                    }
                    if(boss_shot.bullet[i].y>ch.y){
                        boss_shot.bullet[i].angle=0;
                        boss_shot.bullet[i].state=0;
                    }
                    break;
                case 7:
                    if( (boss_shot.bullet[i].x<0 && cos(boss_shot.bullet[i].angle)<0)
                        || (boss_shot.bullet[i].x>FMX && cos(boss_shot.bullet[i].angle)>0)){
                        boss_shot.bullet[i].angle=PI-boss_shot.bullet[i].angle;
                    }
                    if(boss_shot.bullet[i].y>FMY && sin(boss_shot.bullet[i].angle)>0){
                        boss_shot.bullet[i].angle=-boss_shot.bullet[i].angle;
                    }
                    boss_bullet_on(1,10,0,0,boss_shot.bullet[i].x,boss_shot.bullet[i].y,0,0,0,0,0,8,0,1,0);
                    break;
                case 8:
                    if(boss_shot.bullet[i].cnt>180){
                        boss_shot.bullet[i].flag=0;
                    }
                    break;
            }
        }
    }
}


2倍のポイントを手に入れた! 5,048ポイント を手に入れた。

Name: サクソ  ..ぴよぴよ(89ポイント)   Date: 2010/03/11(木) 22:14   No:49082 解決!     
Title: Re:弾の軌道について    
ありがとうございます
コードを読み解くのはもう少し時間が要りそうですが、
自分の解釈を簡単に言い表すと

画像も判定も無い自機狙いの弾の軌道を作り、
次にソレの座標を基準にサイン値を変化させる事のできる
画像と判定を持った蛇行弾を表示+移動させる。

ってところです。妙な曲解してたらスイマセン。

で、実際には弾を2つ作るわけではなく、
蛇行弾内に過去座標等と同様の座標保持用変数(領域)を持たせ
その座標は自機狙い弾が直進した時と同じ座標に更新、
表示用+判定用の座標はその直進した場合の座標をもとに求めれば良い。
そして、自機狙いの軌道をサインカーブや螺旋拡大の軌道に入れ替えれば、
そのバリエーションの蛇行弾が即座に再現できるというわけですね。
いろんな事が出来そうな気がしてきました。


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

Name: サクソ  ..かけだし(1,005ポイント)   Date: 2010/03/14(日) 21:11   No:49201     
Title: Re:弾の軌道について    
再現できたので報告に来ました。
言語はC#になります。
初期化メソッドの引数を変化させてやればサインカーブの振れ幅をいろいろいじくれます。
発射メソッドの引数が、射出する(基準座標の)座標、狙う角度、カウンタの初期値になってます。
カウンタの初期値にカウンタの最大値の半分を指定してやると、
初期値に0を指定した時の軌道と左右対称の軌道をたどるようにしてます。

clsTwist
{
  private int Count;//サインカーブのカウンタ
  private int MaxCount;//カウンタの最大値
  private float Speed;//仮想パス上の進行速度
  private float Radius;//サインカーブの半径
  private float BaseX,BaseY;//基準座標(仮想パス上)
  private float PosX,PosY;//弾の座標
  private float AheadX,AheadY;//基準座標の加算値
  private double ShellAngle;//軌道の角度
  private bool Reality;//弾の実体フラグ

  public clsTwist()//コンストラクタ
  {
    省略
  }

  public void BulletInit(float Spd,int Max,float Rad)//初期化メソッド
  {
    Speed=Spd;
    MaxCount=Max;
    Radius=Rad;
    Reality=false;
  }

  public BulletIgnite(PointF Muzzle,double Angle,int DefaultCount)//発射メソッド
  {
    ShellAngle=Angle;
    AheadX=(float)(Math.Sin(ShellAngle)*Speed);
    AheadY=(float)(Math.Cos(ShellAngle)*Speed);
    BaseX=Muzzle.X;
    BaseY=Muzzle.Y;
    Count=DefaultCount;
    Reality=true;
  }

  public BulletMove()//移動メソッド
  {
    BaseX+=AheadX;
    BaseY+=AheadY;
    double Length=Math.Sin(Math.PI/(MaxCount/2)*Count);
    PosX=BaseX+(float)(Math.Cos(Math.PI/2+ShellAngle)*Length);
    PosY=BaseX+(float)(Math.Sin(Math.PI/2+ShellAngle)*Length);
    Count++;
    if(Count>=MaxCount)
    {
      Count=0;
    }
    if(PosX<0||PosX>640||PosY<0||PosY>480)
    {
      Reality=false;
    }
  }

  public PointF BulletPos
  {
    get
    {
      return new PointF(PosX,PosY);
    }
  }

  public bool BulletReality
  {
    get
    {
      return Reality;
    }
  }
}



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



Name: くりあ  ..初心者(6,425ポイント)   Date: 2010/03/13(土) 10:36   No:49132       
Title: 外部参照    
よろしくお願いします。VC++を使っています。
AquesTalk2を使ってみたいと思い、プログラムを作ってみたのですが、

error LNK2019: 未解決の外部シンボル _AquesTalk2Da_PlaySync@12 が関数 _main で参照されました。
error LNK1120: 外部参照 1 が未解決です。

と、エラーが出てしまいました。
どうすればいいのでしょう。
ライブラリファイルや、インクルードファイル関係の問題かなと思ったのですが、
オプションで追加したつもりなのですが……

それとも全然見当違いの問題なのでしょうか。
どうすればいいのでしょうか?

お願いします。


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


Name: ぽこ  ..初心者(7,455ポイント)   Date: 2010/03/13(土) 12:07   No:49133     
Title: Re:外部参照    
ライブラリ関連の設定を見直してください。
・ライブラリ自体をリンク対象にしているか?
・ライブラリの検索パスに当該ライブラリがおかれているディレクトリが含まれているか?


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

Name: くりあ  ..初心者(6,598ポイント)   Date: 2010/03/14(日) 01:38   No:49155     
Title: Re:外部参照    
ぽこさん、回答ありがとうございます。
とりああえず、DXライブラリと同じようにすればいいのかと思い、
同じようにやってみたのですが、他にどうすればいいんでしょうか?

ライブラリ自体をリンクの対象するというのはどうすれば?

ライブラリの検索パスのはちゃんと設定してあるはずです。
何回もやり直してみたのですが、うまくいきません。
何か勘違いをしているのか、別の理由だと思います。


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

Name: tuelon  ..ぴよぴよ(542ポイント)   Date: 2010/03/14(日) 16:57   No:49187     
Title: Re:外部参照    
#pragma comment( lib, "AquesTalk2Da.lib" )
をメインcppの最初に書いて、AquesTalk2Da.dllをプロジェクトがあるフォルダにコピーすれば
たぶんできるかと・・・


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

Name: くりあ  ..初心者(6,667ポイント)   Date: 2010/03/14(日) 17:28   No:49191     
Title: Re:外部参照    
tuelonさん、回答ありがとうございます。
やってみたのですが、エラーは相変わらずです。
#pragma comment( lib, "AquesTalk2Da.lib" ) 
これって、ライブラリを使う時は必ず必要なんですか?
DXライブラリの時は使わなくてもいいですよね?


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

Name: tuelon  ..ぴよぴよ(683ポイント)   Date: 2010/03/14(日) 17:56   No:49194     
Title: Re:外部参照    
dll形式で配布されているライブラリを使うときはいると思うのですが・・・


ちなみに
こっちの環境では、このコードでちゃんと再生されます。(Aquestalk2じゃなくて旧バージョンですが・・)


#include"AquesTalkDa.h"
#pragma comment(lib, "AquesTalkDa.lib")

int main(){
    AquesTalkDa_PlaySync("あ");
    return 0;
}



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

Name: softya  ..ハッカー(132,850ポイント)   Date: 2010/03/14(日) 18:14   No:49195     
Title: Re:外部参照    
ところで、"AquesTalk2Da.lib"はちゃんと見えるところにあるのでしょうか?
dllだけだとエラーになりますよ。
※ LoadLibrary()で自分でDllのロードを管理すれば別ですが。

参考↓
http://web.kyoto-inet.or.jp/people/ysskondo/chap11.html
http://web.kyoto-inet.or.jp/people/ysskondo/chap12.html


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

Name: くりあ  ..初心者(6,832ポイント)   Date: 2010/03/14(日) 18:26   No:49199 解決!     
Title: Re:外部参照    
出来ました!!ありがとうございます!!
#pragma comment( lib, "AquesTalk2Da.lib" )
これがなかったのが原因でした。
さっきは、これを本当に一番最初に書いたのがエラーの原因のようです。
インクルードファイルの下に書かないとだめなんですね。すいません。
ライブラリとかもっと勉強しなければいけないですね……
本当にありがとうございました。

softyaさん、参考ありがとうございます。
次はこんなことにならないように勉強します。


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



Name: 田代  ..ぴよぴよ(42ポイント)   Date: 2010/03/14(日) 11:47   No:49163       
Title: 1次元配列を使って2次元配列を作る方法    
1次元配列を使って、2次元配列を作る方法について
お尋ねします。
下記のようなポインタのポインタを使った2次元配列が
あるとします。

int i;
double **array;
 array = (double**)calloc(3000, sizeof(double*));
 for(i=0;i<3000;i++){
     *(array+i) = (double*)calloc(3000, sizeof(double));
 }

これを、callocを使った1次元配列で表現するには
どうすればよいのでしょうか?
上記にあるように、3000くらいの大きさで計算可能にするには、
Segmentation falutを避ける為、どうしても1次元にて表現する必要があるようなのです。

素人な質問で大変恐縮ですが、何卒よろしくお願いします!


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


Name: Justy  ..伝説なるハッカー(508,802ポイント)   Date: 2010/03/14(日) 17:07   No:49188     
Title: Re:1次元配列を使って2次元配列を作る方法    

> >Segmentation falutを避ける為、どうしても1次元にて表現する必要があるようなのです

 ここの意味がよくわかりませんでした。
 1次元だとどうしてそれが回避できるのでしょうか?



> これを、callocを使った1次元配列で表現するには 
> どうすればよいのでしょうか?

 んー、こんな感じですか?

    const int column = 3000, row = 3000;
    double **p = (double **)calloc(1, column * row * sizeof(double) + column * sizeof(double *)); 
    if(p) 
    { 
        int n; 
        double *pData = (double *)(p + column); 
        for(n=0; n<column; ++n) 
            p[n] = pData + row * n; 
        
        // この段階で p[0][0]〜p[column-1][row-1]までアクセスできる
        
        free(p); 
    }


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

Name: box  ..ハッカー(151,084ポイント)   Date: 2010/03/14(日) 17:29   No:49192     
Title: Re:1次元配列を使って2次元配列を作る方法    
> 上記にあるように、3000くらいの大きさで計算可能にするには、
> Segmentation falutを避ける為、どうしても1次元にて表現する必要があるようなのです。

sizeof(double)*3000*3000 という大きさの領域を
1次元配列とみなすか2次元配列とみなすか、という違いだけの話です。

2次元配列とみなそうとして、その大きさの領域を確保しようとするときに
segmentation faultが起きるなら、1次元配列とみなそうとするときも同じ結果です。

確保しようとする領域の大きさが同じであるならば、
それを2次元配列とみなそうとするとsegmentation faultが起きて、
1次元配列とみなそうとすると起きない、ということはありません。

segmentation faultが起きるとするならば、その理由は
確保した領域の外側にアクセスしようとした、というような、
動的確保とは全く別の話ではないでしょうか。


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



Name: rolf  ..ぴよぴよ(996ポイント)   Date: 2010/03/13(土) 00:02   No:49117       
Title: 選択画面    
以下のソースに、カーソルがニューゲームになっているところでエンターキーを押すと、1.mp3 が流れるようにするにはどうしたらいいのでしょうか?






#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( 150 , y   , "■"            , White );
        DrawString( 170 , 100 , "NEW GAME"  , White );
        DrawString( 170 , 120 , "CONTINUE1" , White );
        DrawString( 170 , 140 , "CONTINUE2" , White );
        DrawString( 170 , 160 , "CONTINUE3" , White );
        DrawString( 170 , 180 , "CONTINUE4" , White );
        DrawString( 170 , 200 , "CONTINUE5" , White );
        DrawString( 170 , 220 , "CONTINUE6" , White );
        DrawString( 170 , 240 , "LOG OUT"   , White );
}
 
 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
        
    int Key[256];
    int White , y=100;                                       //色と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==260)                            // y座標が260なら(選択が一番下なら)
                y=100;                        // 選択座標を一番上に
        }
 
        ScreenFlip();//裏画面反映
    }
 
    DxLib_End();
    return 0;
}


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


Name: kazuoni [URL]  ..ハッカー(137,090ポイント)   Date: 2010/03/13(土) 02:24   No:49119     
Title: Re:選択画面    
まずひとつずつ解決していきましょう。

1. 音声ファイルを読み込み、再生するプログラムを作ってみる
2. y座標がNEW GAMEのところでエンターキーが押されたらの条件分岐を加える
3. 1と2を融合させればできあがり

1.については関数LoadSoundMem→関数PlaySoundMemの流れでOKです。
詳しくは本家をご覧ください。
ttp://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_sound.html#R8N5

2.については、今回ならば「y==100」の時かつ「エンターキーが押された瞬間」
という条件分岐を加えるだけです。

難しい事ではないと思うのでゆっくり考えながら実現してみてください。


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

Name: rolf  ..かけだし(1,134ポイント)   Date: 2010/03/13(土) 22:03   No:49147     
Title: Re:選択画面    
2.については、今回ならば「y==100」の時かつ「エンターキーが押された瞬間」 
という条件分岐を加えるだけです。



というのは



if ( y == 100  && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) {

PlaySoundMem関数を使う




でオーケーですか?



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

Name: rolf  ..かけだし(1,524ポイント)   Date: 2010/03/13(土) 22:39   No:49148     
Title: Re:選択画面    
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==260)                            // y座標が260なら(選択が一番下なら) 
                y=100;                        // 選択座標を一番上に 
        } 
  
        ScreenFlip();//裏画面反映 
    } 
  
    DxLib_End(); 
    return 0; 





の while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){ 
          //↑メッセージ処理         ↑画面をクリア         ↑入力状態を保存       ↑ESCが押されていない 

の下にその文を入れてみたのですが、エラーは出ないのですが音がでませんでした・・・どうしたらいいですかね?


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

Name: ideyan  ..かけだし(1,400ポイント)   Date: 2010/03/13(土) 22:45   No:49149     
Title: Re:選択画面    
>if ( y == 100  && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) { 
>PlaySoundMem関数を使う 
>} 

条件がエンターキーでなくエスケープキーになっていませんか?

あと、上の条件では押している間PlaySoundMemが呼ばれてしまうので

if ( y == 100  && Key[KEY_INPUT_RETURN]==1 )

このようにして押しっぱなし対策をした方がいいかと思います。 編集済み


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

Name: rolf  ..かけだし(1,630ポイント)   Date: 2010/03/14(日) 00:22   No:49153     
Title: Re:選択画面    
このようにして押しっぱなし対策をした方がいいかと思います。


というのは エンターキーをポチッと押すと音がながれるのではなくて 押している間だけながれてくるのですか?


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

Name: ideyan  ..かけだし(1,851ポイント)   Date: 2010/03/14(日) 01:37   No:49154     
Title: Re:選択画面    
あぁ、よく考えるとエンターキー押して画面遷移させてしまうなら
あまり関係ないかもしれません^^;

とりあえず、今のような画面遷移をしない状況で押しっぱなし対策をしないと、
エンターキーを押している間は毎ループPlaySoundMemが呼ばれることになります。

DX_PLAYTYPE_NORMALを指定すれば再生が終わるまで待機する(?)ので多分問題は起こりません。
(多分と言うのは、最近DXライブラリを触っていないので自信が無いからですorz)

DX_PLAYTYPE_BACKを指定すると、音の再生が終わるのを待たずに処理は進んでいきます。
この状況で次のループで再度PlaySoundMemが呼ばれると、
再生中の音はそのままで、さらにもう一つ再生が行われてしまいます。
勿論、用途によってはわざとそういう作りにする場合もあります。

押しっぱなし対策をしない場合、
プログラムの構成によってはキーを押している間ずっと新規の再生処理が行われてしまう。
というのが前回私の言いたかったことです(わかりにくくてすいません^^;)

色々言っといて何ですが、こういうのは聞くより先に
実際に試してみるのが一番わかりやすいかもしれません。


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

Name: kazuoni [URL]  ..ハッカー(137,896ポイント)   Date: 2010/03/14(日) 03:03   No:49157     
Title: Re:選択画面    
キー監査で関数GetHitKeyStateAll_2を使用しているならば、
押しっぱなし対策は考えなくてもよいかと思います。
Key[]==1となるときは押された瞬間のみですので。
(以降はインクリメントされる)

押したら音が流れるだけでよいならideyanさんが提示して下さった
if ( y == 100  && Key[KEY_INPUT_RETURN]==1 ) 
でOKです。

押している間だけながれてくるようにしたいならば、
同様に、入力があったら再生を開始し、
毎ループKey[]>0かどうかを調べ、Key[]==0になったならば
関数StopSoundMemで止めればよいかと思います。


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

Name: rolf  ..かけだし(1,648ポイント)   Date: 2010/03/14(日) 13:36   No:49169     
Title: Re:選択画面    
何度もすいません・・・

if ( y == 100  && Key[KEY_INPUT_RETURN]==1 )

はどこにいれたらいいのでしょうか??


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

Name: rolf  ..かけだし(2,026ポイント)   Date: 2010/03/14(日) 14:06   No:49171     
Title: Re:選択画面    
再生はできたのですが、停止ができません・・・ 以下のソースをみてください



〜〜〜〜〜〜〜〜〜〜〜〜略〜〜〜〜〜〜〜〜〜〜〜〜

while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
          //↑メッセージ処理         ↑画面をクリア         ↑入力状態を保存       ↑ESCが押されていない
 
        char_disp(White,y);                              // 文字を描画
 
        if ( y == 100  && Key[KEY_INPUT_RETURN]==1 ){

            PlayMusic( "1.mp3" , DX_PLAYTYPE_BACK );

            while( CheckMusic() == 1 ){
        
            if( ProcessMessage() == -1 )
        {
            break ;    // エラーが起きたらループを抜ける
        }

            if( Key[KEY_INPUT_SPACE]==1 ){
            
              StopMusic() ;


            }

〜〜〜〜〜〜〜〜〜〜〜〜略〜〜〜〜〜〜〜〜〜〜〜〜






スペースキーを押すと停止するようにしたいのですがどうしたらいいですか?


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

Name: kazuoni [URL]  ..ハッカー(138,907ポイント)   Date: 2010/03/14(日) 14:28   No:49172     
Title: Re:選択画面    
恐らく本家の関数CheckMusicのサンプルプログラムをそのままコピぺしたようですが、
理解していますか?
メインとなるwhileループのなかにwhileループが存在し、
例外が発生しないために音が止まるまでループしているようです。


if( y == 100  && Key[KEY_INPUT_RETURN]==1 )
    PlayMusic( "1.mp3" , DX_PLAYTYPE_BACK );
else if(Key[KEY_INPUT_SPACE]==1 && CheckMusic() == 1)
    StopMusic();


のみでとりあえず大丈夫です。


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

Name: rolf  ..かけだし(2,032ポイント)   Date: 2010/03/14(日) 16:21   No:49184 解決!     
Title: Re:選択画面    
ありがとうございました!

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



Name: Ma  ..熟練のプログラマー(60,202ポイント)   Date: 2010/03/13(土) 05:48   No:49125       
Title: 物理 バネ    
高校物理の範囲で質問です。

塾で個人的に質問して聞いてみて、説明をもらっても理解できない部分がありましたので、質問させていただきます。

私が途中まで解いたものと、具体的質問はレスにて。


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


Name: Ma  ..熟練のプログラマー(60,614ポイント)   Date: 2010/03/13(土) 06:00   No:49126     
Title: Re:物理 バネ    
1,2,4 の回答は間違いないんですが、3の回答はもらってません。

で、具体的な質問とは、
 

先生の説明によると、3 番の地点において、z < 0 の時までは N>0  なんだから台と点が接している。
だから、質点が飛び出すのは、N = 0 の時で、z = 0 の時だろう。
と言っているんです。たしかに納得いけそうなんですが、
バネの先端が動ける範囲は -2a <= z <= 0 です。
つまり、 z = 0 の時は、バネの速度は瞬間的に 0 になっているんです。
そんなときにとびだしたら、質点はz=0から初速0で自由落下して、バネと台は自由落下よりも高速に先に戻り始めるってことなのか?

と思ったんです。あっているのか分からず・・・。

それから次の授業の時間がきてしまい、結局具体的な答えが得られませんでした。
ついでにいうと、口ごもっていたので、時間切れになりました(苦笑

ちなみに、見てもわかるように4番の答えは、z=0 で質点と台が離れることが前提と答えられていました。
どこで離れるか、その判定の仕方が自分の頭で混乱しているようです。

解説よろしくおねがいします。 編集済み


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

Name: ぽこ  ..初心者(7,493ポイント)   Date: 2010/03/13(土) 18:43   No:49143     
Title: Re:物理 バネ    
>つまり、 z = 0 の時は、バネの速度は瞬間的に 0 になっているんです。 
この理解は正しい。

>そんなときにとびだしたら、質点はz=0から初速0で自由落下して、
ここが勘違い。

z=0では質点の速度が0になるのではなく、問題(2)から導いている通り、
垂直抗力Nが0になるだけです。

問題(2)の図からさらに、縦軸を質点に働く力F、横軸をzとしたときの図を書いてみると
納得出来るのではないでしょうか? 編集済み


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

Name: Ma  ..熟練のプログラマー(60,717ポイント)   Date: 2010/03/14(日) 03:56   No:49159     
Title: Re:物理 バネ    
お返事遅くなりました。

>ここが勘違い。 
確認ですが、b=a の時、貯金は0となります。
この場合は、初速0、いえ、そのまま質点は離れることなく戻るということでしょうか?

そうすると、3番の答えは、
0 < b < a
ということでしょうか?


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

Name: ぽこ  ..初心者(7,505ポイント)   Date: 2010/03/14(日) 10:26   No:49162     
Title: Re:物理 バネ    
> >ここが勘違い。 
> 確認ですが、b=a の時、貯金は0となります。
> この場合は、初速0、いえ、そのまま質点は離れることなく戻るということでしょうか?

ん〜、誤解を招く表現となりそうですが、z=0では離れていはいないけど垂直抗力0の
状態となるのかな??
重要なのは、質点は常に自由落下運動を行おうとしているんです。
それを垂直抗力が邪魔しているせいで、上に移動したり、下に移動する際も
減速させられるんです。

> そうすると、3番の答えは、
> 0 < b < a
> ということでしょうか?

私は、0 ≦ b ≦ aと思っています。


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

Name: Ma  ..熟練のプログラマー(60,999ポイント)   Date: 2010/03/14(日) 14:48   No:49174 解決!     
Title: Re:物理 バネ    
なるほど、よく理解できました!
ありがとうございました。 編集済み


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



Name: aja  ..ぴよぴよ(16ポイント)   Date: 2010/03/13(土) 23:23   No:49151       
Title: 選択画面    
ゲームプログラミングの館の第33章で紹介されている

「選択画面の作り方」ですが、

東方project等でよくある、文字ではなく画像の明るさで現在選択中のものを表示するようにするには

どうすればよいのでしょうか?


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


Name: kazuoni [URL]  ..ハッカー(137,970ポイント)   Date: 2010/03/14(日) 03:06   No:49158     
Title: Re:選択画面    
DXライブラリと決め打ちするならば、
関数SetDrawBrightや関数SetDrawBlendModeで輝度調節できます。
(アルファブレンドは輝度調節とは言わないのかな・・・?)


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



Name: KN  ..ぴよぴよ(17ポイント)   Date: 2010/03/13(土) 13:46   No:49138       
Title: 24. 行けない所を作る。〜2D〜 について    
24章の 行けないところを作る。〜2D〜 
ではマップチップではなく白い壁を使っていますが
マップチップは使えないのですか?


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


Name: ひよこ  ..比類無きプログラマー(80,711ポイント)   Date: 2010/03/13(土) 16:46   No:49139     
Title: Re:24. 行けない所を作る。〜2D〜 について    
白い壁を表示する部分を書き変えるとできます。
if(hantei[i][j]==1)
DrawBox(j*32,i*32,(j+1)*32,(i+1)*32,GetColor(255,255,255),TRUE);

if(hantei[i][j]==1)
DrawGraph(j*32,i*32,img_map[hantei[i][j]],TRUE);
みたいな感じです。


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

Name: KN  ..ぴよぴよ(29ポイント)   Date: 2010/03/13(土) 16:51   No:49140     
Title: Re:24. 行けない所を作る。〜2D〜 について    
わかりました。ありがとうございました。

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

Name: ROM  ..かけだし(1,171ポイント)   Date: 2010/03/13(土) 18:23   No:49141     
Title: Re:24. 行けない所を作る。〜2D〜 について    
img_map[hantei[i][j]]
は違うでしょう。
hanteiは0か1しか入っていないんでしょうから


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

Name: ひよこ  ..比類無きプログラマー(80,747ポイント)   Date: 2010/03/13(土) 18:35   No:49142     
Title: Re:24. 行けない所を作る。〜2D〜 について    
ROMさん
>>int img_map[2]と考えてみた場合です。hanteiの値によって絵が変わります。


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



Name: Y.K [URL]  ..ぴよぴよ(329ポイント)   Date: 2010/03/12(金) 23:52   No:49114       
Title: 選択画面    
今、選択画面の作り方。というのをやっているのですがどうにもうまくいきません。
どうかヒントをください。


if( Key & PAD_INPUT_UP )
    {
        y -= 20;
        if( y ==340 )
            y = 420;
    }
    else if( Key & PAD_INPUT_DOWN )
    {
        y += 20;
        if( y == 440 )
            y = 400;//390;
    }

    DrawString( 510 , y   , "■", GetColor( 255, 255, 255 ) );
    DrawString( 530 , 360 , "たたかう", GetColor( 255, 255, 255 ) );
    DrawString( 530 , 380 , "まほう",  GetColor( 255, 255, 255 ) );
    DrawString( 530 , 400 , "アイテム", GetColor( 255, 255, 255 ) );
    DrawString( 530 , 420 , "逃げる", GetColor( 255, 255, 255 ) );
    //DrawString( 600 , 180 , "CONTINUE4" , White );

編集済み


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


Name: kazuoni [URL]  ..ハッカー(137,186ポイント)   Date: 2010/03/13(土) 02:27   No:49120     
Title: Re:選択画面    
提示されたプログラムのみでは状況が把握できません。
何をどの様に実装して、どの様な結果を期待していたが、
現実、どの様になってしまっているのか、
コンパイルエラーが出ているならばどの様なエラーが出ているか
を追記してください。

大規模でなければソースコードをtxtでUPするのも有効かと思います。


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

Name: Y.K [URL]  ..ぴよぴよ(594ポイント)   Date: 2010/03/13(土) 08:57   No:49129     
Title: Re:選択画面    
状況としては、カーソルが”たたかう”の所にあって↓キーを押すと”まほう”の所までは行くのですがその先の”アイテム”、”にげる”の横にカーソルが行かないです。後、↑キーを押すと一番下の”にげる”に飛ぶだけでその先に行かないです。

自分が望む動きはまずカーソルは”こうげき”の横にいて↓キーを押すと順番に”まほう”、”アイテム”というふうに順番に選択をするようにして一番したの”にげる”まで来たら一番上の”こうげき”の横に飛ぶようにしたいです。

ちなみにエラーはないです。
ソースコードは長いのであまり載せれないのですがこれでいいですか?


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

Name: conio [URL]  ..比類無きプログラマー(80,443ポイント)   Date: 2010/03/13(土) 13:41   No:49137     
Title: Re:選択画面    
こんな感じでどうでしょう。
------------------------------------------------------------------------------------
#include "DxLib.h"

int Key[256];
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;


struct SELECT{
    int x;
    int y;
    char* str;
};

SELECT Select[] = { {100,100,"Menu 1"},
                    {100,120,"Menu 2"},
                    {100,140,"Menu 3"}};

void DrawSelect(void){
    int white = GetColor( 255, 255, 255);
    int Red = GetColor( 255, 0, 0);
    static int count = sizeof(Select) / sizeof(Select[0]); 
    static int NowPt = 0;

    if(Key[KEY_INPUT_UP] == 1){
        NowPt = (NowPt + count - 1) % count;
    }else if(Key[KEY_INPUT_DOWN] == 1){
        NowPt = (NowPt + 1) % count;
    }

    for(int i = 0; i < count; i++){
        if(i == NowPt ){
            DrawString( Select[i].x, Select[i].y, Select[i].str, Red);    
        }else{
            DrawString( Select[i].x, Select[i].y, Select[i].str, white);    
        }
    }
    DrawString( Select[NowPt].x - 40, Select[NowPt].y, "⇒", white);    
}


int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
    ChangeWindowMode( TRUE );

    if(DxLib_Init() == -1 ) return -1;
    SetDrawScreen( DX_SCREEN_BACK );

    while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0 ){
        DrawSelect();
        ScreenFlip();
    }
    DxLib_End();
    return 0;
}
------------------------------------------------------------------------------------ 編集済み


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



Name: かんさい  ..ぴよぴよ(259ポイント)   Date: 2010/03/13(土) 09:18   No:49130       
Title: VC6.0でEXCEL2003ファイル作成にて    
現在VC6.0SP6、WINXPでEXCEL2003ファイルを作成するAPを作成しています。
その実行環境ですが、VCのエディタから実行すると正常に作成されますが、
実行環境フォルダを作成し、実行すると
「Microsoft Visual C++ Runtime Library」のランタイムエラーが
発生します。
作成EXEをc:\windows\system32 にコピーし起動すると正常にEXCELファイルが
作成されました。

実行環境フォルダに必要ファイルがないと思うのですがそのファイルが何なのかが
わかりません。恐れ入りますが実行環境に何が不足しているのかご教授願えますでしょうか?
よろしくお願いいたします。


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


Name: Justy  ..伝説なるハッカー(507,023ポイント)   Date: 2010/03/13(土) 12:27   No:49135     
Title: Re:VC6.0でEXCEL2003ファイル作成にて    
>何が不足しているのか

 msvcrt.dllとかその類の dllが足りないのだと思いますが、実行ファイルなどがこちらにないので
それを調べる手段がなくわかりません。

 とりあえず

Dependency Walker 
http://www.dependencywalker.com/

このツールでその問題となっている実行ファイルを開けば、左側にその実行ファイルが求める
モジュールのリストが出ますので、何かわかるのではないでしょうか。


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

Name: かんさい  ..ぴよぴよ(288ポイント)   Date: 2010/03/13(土) 13:33   No:49136 解決!     
Title: Re:VC6.0でEXCEL2003ファイル作成にて    
解決できました。
Justy様どうもありがとうございました。


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



Name: Samth  ..ぴよぴよ(29ポイント)   Date: 2010/03/13(土) 04:01   No:49122       
Title: 時間の差分について    
どうしてもわからないロジックが御座います。
最終実行時間と現在日時の差を秒数で求めたいです。

時間は下記の様になっております。
20100313042022 ⇒ 2010年03月13日04:20:22

last = 20100313042022;
now = 20100313042322;

の様に入っております。

普通に引いてしまうと勿論駄目かと思うので
-40をしてみたりとやってみたのですがイマイチ上手くいきません。

宿題等ではなく現在使っている謎解きゲームで使いたいんです・・・。
言語はC++です。
ご教授いただけないでしょうか。


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


Name: たかぎ [URL]  ..ハッカー(169,498ポイント)   Date: 2010/03/13(土) 04:12   No:49124     
Title: Re:時間の差分について    
こんな感じでどうでしょう。

struct tm t1 = {}, t2 = {};

t1.tm_year = -1900 + last / 10000000000;
t1.tm_mon = -1 + last / 100000000 % 100;
t1.tm_mday = last / 1000000 % 100;
t1.tm_hour = last / 10000 % 100;
t1.tm_min = last / 100 % 100;
t1.tm_sec = last % 100;

t2.tm_year = -1900 + now / 10000000000;
t2.tm_mon = -1 + now / 100000000 % 100;
t2.tm_mday = now / 1000000 % 100;
t2.tm_hour = now / 10000 % 100;
t2.tm_min = now / 100 % 100;
t2.tm_sec = now % 100;

double d = difftime(mktime(&t2), mktime(&t1));

これで、dに二つの時刻の差を秒数で表した結果が格納されます。
エラーチェックはしていないので、必要に応じて追加してください。
また、テストもしていませんので、おかしいようなら適当に直してください。


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



Name: 真由美  ..かけだし(1,417ポイント)   Date: 2010/03/08(月) 05:26   No:48928       
Title: VC++.netで自動的にサイトを開く    
現在、URLを自動的に生成するアプリを作っております。
(amazonアソシエイト用)
そのアプリasinコードから動的にURLを生成するといったものになっております。
その生成されたURLをなにもせずに開きたいです。

ユーザーが使いやすいように自動的に
とあるサイトを自動的に開くという処理をしたいのですが
このような事は出来ないのでしょうか?

URLを自動的にIE等で開くロジックだけがどうしても作れません・・・。


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


Name: softya [URL]  ..ハッカー(129,875ポイント)   Date: 2010/03/08(月) 11:04   No:48933     
Title: Re:VC++.netで自動的にサイトを開く    
IEに限定せずブラウザが開けば良いのであれば、WindowsAPIで次のようにC/C++で書けます。
ShellExecute(NULL, _T("open"), _T("http://www.yahoo.co.jp"), NULL, _T(""), SW_SHOW);
C++/CLIでも、これが通るはずですけど。
実際にやったことがないので、間違っていたらすいません。


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

Name: 真由美  ..かけだし(1,529ポイント)   Date: 2010/03/11(木) 09:43   No:49057     
Title: Re:VC++.netで自動的にサイトを開く    
ご回答ありがとう御座います。

#include        <windows.h>
をしてAPIを使えるようにすると_Tが使えないというエラーが出てしまいます。
その為に
#include        <tchar.h>
としてみたのですが
error LNK2001: 外部シンボル ""extern "C" struct HINSTANCE__ * __stdcall ShellExecuteW(struct HWND__ *,wchar_t const *,wchar_t const *,wchar_t const *,wchar_t const *,int)" (?ShellExecuteW@@$$J224YGPAUHINSTANCE__@@PAUHWND__@@PB_W111H@Z)" は未解決です。
というエラーが出てしまいます・・・。
単純に文字列だけを入れるとしてもchar〜の変換ができないというエラーになってしまいます。
VC++では使えないのでしょうか?

    private: System::Void buttonInput_Click(System::Object^  sender, System::EventArgs^  e) {
                ShellExecute(NULL, _T("open"), _T("http://www.yahoo.co.jp"), NULL, _T(""), SW_SHOW); 
             }
    


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

Name: Blue  ..中級者(11,599ポイント)   Date: 2010/03/11(木) 10:03   No:49058     
Title: Re:VC++.netで自動的にサイトを開く    
必要なライブラリをリンクしてください。
http://msdn.microsoft.com/ja-jp/library/cc422072.aspx
の下のほうにある「インポートライブラリ」の項目。

それと、String^型を直接渡せないので、PtrToStringCharsあたりの関数を使うのが楽でしょう。
べた書きの場合はTEXTマクロか_Tマクロを使いましょう。



ですがたぶんC++/CLIでは

    System::Diagnostics::Process::Start(L"http://www.yahoo.co.jp");

で十分ではないかと。
http://msdn.microsoft.com/ja-jp/library/53ezey2s%28VS.80%29.aspx


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

Name: dic  ..熟練のプログラマー(56,463ポイント)   Date: 2010/03/12(金) 18:22   No:49098     
Title: Re:VC++.netで自動的にサイトを開く    
#include <stdio.h>
#include <windows.h>

void main()
{
    system( "\"C:\\Program Files\\Internet Explorer\\iexplore.exe\" http://www.google.co.jp" );
}


ネット接続できるようになりました
記念かきこ


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

Name: dic  ..熟練のプログラマー(56,477ポイント)   Date: 2010/03/12(金) 18:23   No:49099     
Title: Re:VC++.netで自動的にサイトを開く    
ありゃ、.netを使ってでしたね
すいません


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

Name: 真由美  ..かけだし(1,436ポイント)   Date: 2010/03/13(土) 04:03   No:49123     
Title: Re:VC++.netで自動的にサイトを開く    
皆様ご回答ありがとうございます。
何とか実装できました。
今回も本当に助かりました。

>>dic様
いえいえ、実は.netとCの両方で別々のアプリを作ろうとしておりまして
Cの方も必要だったんです(汗)
ただ聞くのが悪いと思ったので優先している方を質問させて頂きました。
本当に助かりました。



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



Name: hit  ..初心者(5,876ポイント)   Date: 2010/03/12(金) 23:06   No:49109       
Title: エラー    
このソースで実行してみると、

1>c:\documents and settings\yoshimi\my documents\visual studio 2008\projects\test\test.cpp(23) : error C2086: 'int Key[256]' : 再定義されました。
1>        c:\documents and settings\yoshimi\my documents\visual studio 2008\projects\test\test.cpp(3) : 'Key' の宣言を確認してください。

とエラーが起きてしまいます・・・どうしたら実行できますか?

#include "DxLib.h"
 
int Key[256];
 
int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[]){
    char GetHitKeyStateAll_Key[256];
    GetHitKeyStateAll( GetHitKeyStateAll_Key );
    for(int i=0;i<256;i++){
        if(GetHitKeyStateAll_Key[i]==1) GetHitKeyStateAll_InputKey[i]++;
        else                            GetHitKeyStateAll_InputKey[i]=0;
    }
    return 0;
}
 
void menu ( int white, int a)
  {
      DrawString( 150 , a , "◆" , white );
      DrawString( 170 , 100 , "1" , white );
      DrawString( 170 , 130 , "2" , white );
      DrawString( 170 , 160 , "終了" , white );
  }

    int Key[256];
    int white , a = 100;

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
    ChangeWindowMode(TRUE);//ウィンドウモード
    if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
 
    while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
          //↑メッセージ処理          ↑画面をクリア           ↑入力状態を保存       ↑ESCが押されていない
    
    int Key[256];
    int white , a = 100;

    white = GetColor( 255 , 255 , 255 ) ;

    menu(white,a);
  
 if( Key[KEY_INPUT_DOWN]==1 ||( Key[KEY_INPUT_DOWN]%5==0 && Key[KEY_INPUT_DOWN]>30)){
        // たった今押したか、30カウンター以上押しっぱなしかつ5回に一度
            a+=30;                                           
            if(a==160)                            // y座標が260なら(選択が一番下なら)
                a=100;                        // 選択座標を一番上に
        }
 

 
 
        ScreenFlip();
    }
 
    DxLib_End();
    return 0;
}


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


Name: ideyan  ..かけだし(1,318ポイント)   Date: 2010/03/12(金) 23:29   No:49111     
Title: Re:エラー    
>1>c:\documents and settings\yoshimi\my documents\visual studio 2008\projects\test\test.cpp(23) : error C2086: 'int Key[256]' : 再定義されました。 
23行目で変数Keyが再定義されました

>1>        c:\documents and settings\yoshimi\my documents\visual studio 2008\projects\test\test.cpp(3) : 'Key' の宣言を確認してください。 
3行目のKeyを確認してください

と書いてありますので、その通りにソースを見ると
int Key[256]が2回宣言されているのが分かります。

ですので、どっちかの宣言を削除すればエラーは消えると思いますよ^^

エラーは消えますが
>while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0)
これの直後に再び
int Key[256]; 
int white , a = 100; 
を宣言しちゃってるので、内部のif文が参照してる変数がおかしくなって
このプログラムは意図した動作をしないんじゃないかと思います。


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

Name: no  ..初心者(8,013ポイント)   Date: 2010/03/12(金) 23:30   No:49112     
Title: Re:エラー    
「Key」が複数回再定義されているというエラーです。

一つお伺いしますが、C言語はどの程度勉強しましたか?
もしもほとんどやってないのなら、一度入門書を一冊終わらせることをおすすめします。


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

Name: hit  ..初心者(5,883ポイント)   Date: 2010/03/12(金) 23:59   No:49116     
Title: Re:エラー    
ありがとうございます!

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

Name: hit  ..初心者(5,888ポイント)   Date: 2010/03/13(土) 00:04   No:49118 解決!     
Title: Re:エラー    
解決!

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



Name: テツ  ..ぴよぴよ(510ポイント)   Date: 2010/03/12(金) 17:57   No:49097       
Title: ポインタについて    
初めまして。テツと申します。
今回ポインタについてわからないことがあったので質問しました。

環境はBorland bcc5.5 OSはXPになります。

以下自分で作成した文字列を小文字にするサンプルです。

#include <stdio.h>

void StrToSmall(const char *conversionStr, char *convertedStr)
{
    while (*conversionStr) {
        *(convertedStr++) = tolower(*conversionStr++);
    }
    *convertedStr = '\0';
}

int main(void) 
{
    char    conversionStr[] = "HElloWORld";        // 元の文字列
    char    convertedStr[256];            // 変換後の文字列をセット
    
    StrToSmall(conversionStr, convertedStr);
    
    printf("変換前 : %s\n", conversionStr);
    printf("変換後 : %s\n", convertedStr);
    
    return 0;
}
このStrToSmall関数の以下の行なのですが、
*(convertedStr++) = tolower(*conversionStr++);

これはconversionStrの内容を小文字に変換してconvertedStrに格納した後conversionStrのアドレスを進めているという解釈で大丈夫でしょうか?

あともう一点あるのですが、関数内でconversion, StrconvertedStrの内容を確認出来ないのはなぜでしょうか?
printf文で確認してもnullが入っているのに、main側ではちゃんと内容が確認出来るのが不思議です。

ポインタをよく理解せずに使っているのでこの機会にしっかり押さえたいと思います。
しょうもない質問で申し訳ないですがよろしくお願いします。




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


Name: dic  ..熟練のプログラマー(56,923ポイント)   Date: 2010/03/12(金) 18:45   No:49100     
Title: Re:ポインタについて    
void StrToSmall(const char *conversionStr, char *convertedStr)
{
    while (*conversionStr) {
        *(convertedStr) = tolower(*conversionStr);
        printf( "%c", *convertedStr );
        conversionStr++;
        convertedStr++;
    }
    printf( "\n" );
    *convertedStr = '\0';
}

で関数の中でも確認できます

>これはconversionStrの内容を小文字に変換してconvertedStrに格納した後conversionStrのアドレスを進めているという解釈で大丈夫でしょうか? 
それでいいですよ


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

Name: box  ..ハッカー(150,900ポイント)   Date: 2010/03/12(金) 19:12   No:49103     
Title: Re:ポインタについて    
> 関数内でconversion, StrconvertedStrの内容を確認出来ないのはなぜでしょうか?
> printf文で確認してもnullが入っている

そのときのソースを貼ってください。

ところで、printf「文」ではなく、printf「関数」です。
また、tolower(関数またはマクロ)を使うときは、
そのプロトタイプを宣言している ctype.h をインクルードしましょう。


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

Name: 初級者  ..初心者(7,559ポイント)   Date: 2010/03/12(金) 20:31   No:49104     
Title: Re:ポインタについて    
たぶん、こんなので確認できるでしょうね。


#include <stdio.h>
#include <ctype.h>

void StrToSmall(const char *src, char *dest)
{
    while (*src) {
        *dest++ = tolower(*src++);
        printf("%c %c\n", src[-1], dest[-1]);
    }
    *dest = '\0';
}

int main(void)
{
    char    conversionStr[] = "HElloWORld";        // 元の文字列
    char    convertedStr[256];            // 変換後の文字列をセット

    StrToSmall(conversionStr, convertedStr);

    printf("変換前 : %s\n", conversionStr);
    printf("変換後 : %s\n", convertedStr);

    return 0;
}

 編集済み


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

Name: テツ  ..ぴよぴよ(163ポイント)   Date: 2010/03/12(金) 20:48   No:49105     
Title: Re:ポインタについて    
dic様

ソースをご提供いただきありがとうございます。
%cで確認すればいいのですね。

box様

ちなみにソースがこちらです。
#include <stdio.h>
#include <ctype.h>
void StrToSmall(const char *conversionStr, char *convertedStr)
{
    while (*conversionStr) {
        (*convertedStr++) = tolower(*conversionStr++);
    }
    *convertedStr = '\0';
    printf("%s\n", convertedStr);
}
int main(void)
{
    char    conversionStr[] = "HElloWORld";            // 元の文字列
    char    convertedStr[256];                        // 変換後の文字列をセット

    StrToSmall(conversionStr, convertedStr);

    printf("変換前 : %s\n", conversionStr);
    printf("変換後 : %s\n", convertedStr);

    return 0;
} 


>ところで、printf「文」ではなく、printf「関数」です。
また、tolower(関数またはマクロ)を使うときは、
そのプロトタイプを宣言している ctype.h をインクルードしましょう。

その通りです。指摘ありがとうございます。

初級者様

ソースをご提供いただきありがとうございます。
ただ何故[-1]何でしょうか?よろしければ教えていただきたいです。

皆様にご指摘を受けて大変ありがたいのですが、なぜ%cでないといけないのかが分かりません。
%sで文字列と出力することは何故出来ないでしょうか?


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

Name: ideyan  ..ぴよぴよ(933ポイント)   Date: 2010/03/12(金) 21:09   No:49106     
Title: Re:ポインタについて    
%sで表示とは

>*convertedStr = '\0';
>printf("%s\n", convertedStr);

この部分のことでしょうか。

「convertedStrが今どこを指しているのか」を考えてみてください。

(適当な図ですいませんが)
convertedStr++とするたびに、ポインタが差す位置は
図の緑矢印の方向にずれていきます。

テツさんがprintfを呼び出している場所の時、
convertedStrは文字列 "helloworld\0" の'\0'の位置を指しているので
それに出力してもNULLが出るだけになります。


>ただ何故[-1]何でしょうか?よろしければ教えていただきたいです

*dest++ = tolower(*src++); 
この文の実行後、ポインタは一つ進んでいるので
実際に変換した文字を見たければ一つ前を参照する必要があります。
ポインタが差している値の参照方法として
*dest
dest[0]
は同じ意味になるので
dest[-1]は現在指している位置の一つ前を参照していることになります。

>%sで文字列と出力することは何故出来ないでしょうか?
conversionStrに対しては%sを使っても構いません。
試しにループの中にprintfを入れてみると、
徐々にポインタの指す位置がずれていくのが分かると思います。

convertedStrの方は、今回の場合なら関数の最後でヌル文字を入れるまでは
使ってはいけません。終端が無いので変な所にアクセスする可能性があります。


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

Name: テツ  ..ぴよぴよ(267ポイント)   Date: 2010/03/12(金) 22:17   No:49108 解決!     
Title: Re:ポインタについて    
ideyan 様

図解で詳しく教えていただきありがとうございます。
すごく分かり易かったです。

ポインタが差している位置を考えれば自ずとわかるんですね。
あまり理解しないで使っていたので駄目でしたが、今日理解することが出来ました。

皆様

短時間でこれ程の返信ありがとうございました。
またお世話になるかもしれませんので、その際はよろしくお願いいたします。


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



Name: HBD  ..ぴよぴよ(15ポイント)   Date: 2010/03/11(木) 05:47   No:49052       
Title: タイトル→選択→ゲーム開始への流れ作業    
はじめまして!まだ、プログラミング初めて間もないですが、よろしくお願いします。

龍神録を参考に勉強させてもらっているのですが、分からない部分が

本格的なシューティングのように

タイトル(キープッシュ)→選択画面(キャラ、オプションなど)→ゲームスタート

という実装のプログラムの書き方がイマイチ分かりません。

main.cppと.hに多分書き込む・・・と思ってるのですが・・・すいません。



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


Name: kazuoni [URL]  ..ハッカー(136,632ポイント)   Date: 2010/03/11(木) 10:50   No:49059     
Title: Re:タイトル→選択→ゲーム開始への流れ作業    
> 書き方がイマイチ分かりません。

今現在はどこまでできているのですか?


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

Name: HBD  ..ぴよぴよ(364ポイント)   Date: 2010/03/11(木) 12:25   No:49060     
Title: Re:タイトル→選択→ゲーム開始への流れ作業    
> 今現在はどこまでできているのですか?


プログラミング事態は0です。
全体の出来は大体、龍神録サイトの番号でいうと20番くらいは完成してます。

自分の「多分書き込む」というのは↓

main.cpp
#definde GLOBAL_INSTANCE
#include"../include/GV.h"

〜略〜
    ChangeWindowMode(TRUE);//ウィンドウモード
    if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化

    while(ProcessLoop()==0){//メインループ
        music_ini();
        switch(func_state){
            case 0://初回のみ入る処理
                load();        //データロード
                first_ini();//初回の初期化
                func_state=99;
                break;
            case 99://STGを始める前に行う初期化
                ini();
                load_story();
                func_state=100;
                break;
          
               ※ここに(タイトル・選択の処理)記入するのかと思ってます。書き方は分かりませんが

            case 100://通常処理

また、同様にヘッダーファイルへの書き込み方は全く分かりません。

全画面タイトル表示→選択画面、の作り方は「ゲームプログラミングの館」の基本編33に記載されてるの参考に書き込みを、何度か自分の思うとおりに一晩組み込んでデバックしましたが、エラーが起きます。

ヒントだけでも欲しいのでお願いいたします。


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

Name: fatens  ..初心者(8,476ポイント)   Date: 2010/03/11(木) 13:18   No:49062     
Title: Re:タイトル→選択→ゲーム開始への流れ作業    
>ここに(タイトル・選択の処理)記入するのかと思ってます。書き方は分かりませんが 
タイトル・選択の処理であれば、0と99の間に入れるものだと思います。
書き方の例としては、
//main.cpp
switch (func_state) {
    case 0://初回のみ入る処理
        func_state = 10;
        break;
    case 10://タイトル・選択の処理
        //title 関数が0を返せば"STGを始める前に行う初期化"に移行する
        if (title() == 0) func_state = 99;
        break;
    case 99://STGを始める前に行う初期化 
        break;
}

//title.cpp
int title()
{
    //タイトル(または選択も)の処理を書く
    //継続するときは非0を返し、ゲームを始めるならば0を返す
}


func_stateは本来0,10,99といった即値は使わず、enumなどでまとめるのですが今回は省略します。
あくまで龍神録向けの適当に考えた処理なので、もっと良い方法を思いついたならそちらを使ってください。



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

Name: HBD  ..ぴよぴよ(459ポイント)   Date: 2010/03/11(木) 18:38   No:49077     
Title: Re:タイトル→選択→ゲーム開始への流れ作業    
>fatensさん

コメントありがとうございます^^

考え方は間違ってなかったみたいですが

まだ、自分は勉強不足ですので、後はもう少し理解したうえで

いろいろと試行錯誤しながら、やってみようと思います。

ありがとうございました^^


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

Name: fatens  ..初心者(8,740ポイント)   Date: 2010/03/11(木) 19:15   No:49078     
Title: Re:タイトル→選択→ゲーム開始への流れ作業    
先の例で、タイトルからはゲーム開始の他に終了などが選ばれる可能性があるので、それを踏まえて修正すると、

typedef enum {
    SCENE_TITLE_INIT,    //func_state = 0 に相当?
    SCENE_TITLE,         //func_state = 10
    SCENE_GAME_INIT,     //func_state = 99
    SCENE_GAME,          //func_state = 100
    //...
    SCENE_EXIT,

    SCENE_NUM,           //このシーンになることはない(有効なシーンの数を示す)
} Scene;
//(SCENE_NUMはシーンを変更する関数などを作るときに範囲を知るために利用できます)


Scene game_scene;    // (func_state)

switch (game_scene) {
    case SCENE_TITLE_INIT:
        //...
    case SCENE_TITLE:
        game_scene = title();
        break;
    //...
}

Scene title()
{
    //継続するときはSCENE_TITLEを返す。
    //ゲーム開始ならSCENE_GAME_INIT、終了ならSCENE_EXITを返す
}


これまた適当なのですが、このように出来るということを知っておくと役立つことがあるかもしれません。


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

Name: HBD  ..ぴよぴよ(552ポイント)   Date: 2010/03/12(金) 19:05   No:49101 解決!     
Title: Re:タイトル→選択→ゲーム開始への流れ作業    
> fatensさん

態々修正まで教えてくださいまして、ありがとうございました^^

おかげさまで大体の流れは、つかめました^^

是非、参考にさせていただきます。

組み立て方は大事ですからね。助かりました!!


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



Name: tsuntsuku  ..ぴよぴよ(48ポイント)   Date: 2010/03/09(火) 23:57   No:49006       
Title: 初心者です 入門編について    
「DxLib_VC2008_and_2005用.sln」を開いてF5を押してビルドすると
プロジェクト : error PRJ0003 : 'cmd.exe' の起動中にエラーが発生しました。
と出ます。どうすればよいでしょうか?教えてください。
タイトルの通り初心者で詳しいことはあまり分かりません。(x_x)


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


Name: Justy  ..伝説なるハッカー(505,986ポイント)   Date: 2010/03/10(水) 02:37   No:49016     
Title: Re:初心者です 入門編について    
 環境変数 PATHに %SystemRoot%\system32や %SystemRoot%\wbemはありますか?
 なければ(何らかの理由で消えてしまったと思われるので)追加してみてください。

 環境変数の確認・追加の方法はOSが判らないので正確には答えられませんが、
多分 Windowsのシステムのプロパティの中の詳細設定タブの中に環境設定ボタンがあるはずなので
それを押して確認してみてください。
 そこになければ Googleとかで検索すれば出てくると思います。


 あぁ、そういえば過去に似たような質問があったので、そのほかの参考になりそうなサイトと
一緒に挙げておきます。

C言語何でも質問掲示板
http://www.play21.jp/board/formz.cgi?action=res&resno=47907&page=&lognum=147&id=dixq&rln=47931#47918

FAQ | ARCANA
http://etwas.wolfish.org/Irrlicht/faq.html
(下から2つ目)


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

Name: tsuntsuku  ..ぴよぴよ(62ポイント)   Date: 2010/03/12(金) 14:01   No:49090     
Title: Re:初心者です 入門編について    
すいません。パソコンも初心者なのでよくわかりません。
ちなみにOSはLaVieです。


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

Name: たかぎ [URL]  ..ハッカー(168,913ポイント)   Date: 2010/03/12(金) 14:05   No:49091     
Title: Re:初心者です 入門編について    
> パソコンも初心者なのでよくわかりません。 

プログラミングに手をだすのは、少なくともPCが使えるようになってからのほうがよいかと思います。

> ちなみにOSはLaVieです。

未知のOSですが、PCの機種と間違えていませんか?


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

Name: tsuntsuku  ..ぴよぴよ(91ポイント)   Date: 2010/03/12(金) 14:13   No:49092 解決!     
Title: Re:初心者です 入門編について    
下に書いてあるサイトが参考になりました。
ありがとうございました。


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



Name: array [URL]  ..熟練のプログラマー(64,737ポイント)   Date: 2010/03/11(木) 20:01   No:49079       
Title: 【C++】制御文の自作は可能でしょうか    
C/C++で自作の制御文を作る事は可能でしょうか

制御文とは、if文やwhile文、for文などを指します。

C++の仕様的に不可能であれば、不可能という事実を知りたいです。
可能であれば、キーワード程度で良いので簡単にご教授お願い致します。


※こういったループ処理を
int main() {
    int dt[10];

    for (int i = 0; i < 10; i++) {
        dt[i] = i; 
    }
}

※自作の制御文で動作させたい【理想の形】
int main() {
    int dt[10];

    foreach (dt as key => value) {
        value = key; 
    }
    // key に配列の添字(数字)、valueにdt参照ポインタ
}


不足して分からない部分があれば補足しますので、よろしくお願いします。


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


Name: たかぎ [URL]  ..ハッカー(168,695ポイント)   Date: 2010/03/11(木) 21:08   No:49080     
Title: Re:【C++】制御文の自作は可能でしょうか    
不可能です。
ただし、マクロを使えば近いことができる場合もあります。
Boost C++ LibrariesのForeachを調べてみてください。


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

Name: array [URL]  ..熟練のプログラマー(64,870ポイント)   Date: 2010/03/11(木) 21:29   No:49081 解決!     
Title: Re:【C++】制御文の自作は可能でしょうか    
毎回ご回答ありがとうございます。

> マクロを使えば近いことができる場合もあります。 
確かに、マクロが一番近い事ができそうですね。
foreach を for文に置き換えるようなマクロも書こうと思ったのですが、「,」が入ると
理想のイメージと異なるので断念してました。

今回の質問はどちらかというと、制御文の自作は不可能だという事を
確認しておきたかったので、たかぎさんからの回答を頂けて安心しました。

勉強になりました。ありがとうございます^^ 編集済み


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

Name: たかぎ [URL]  ..ハッカー(168,863ポイント)   Date: 2010/03/11(木) 23:17   No:49083     
Title: Re:【C++】制御文の自作は可能でしょうか    
C++の場合、制御文を自作するのではなく、アルゴリズム関数とファンクタを組み合わせるのが一般的なスタイルです。
標準ライブラリでは添字を操作できるものがないので、例えば次のようなものを自作することになるかと思います。

template <class ForwardIterator, class BinaryOp>
void for_each_with_subscript(ForwardIterator first, ForwardIterator last, BinaryOp op)
{
    for (typename std::iterator_traits<ForardIterator>::difference_type i = 0; first != lasy; ++i)
        op(*iter, i);
}



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

Name: array [URL]  ..熟練のプログラマー(64,896ポイント)   Date: 2010/03/12(金) 07:39   No:49085     
Title: Re:【C++】制御文の自作は可能でしょうか    
なるほど、C++の標準ライブラリを勉強しなおした方が今後の為になりそうですね。

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



Name: Tororo  ..入門者(2,768ポイント)   Date: 2010/02/14(日) 11:13   No:48042       
Title: 小学生最後の作品    
http://www1.axfc.net/uploader/He/so/264959
PASS tororoです。
全三面のシューティングです。
ボス戦しかありません。
出来れば敵についてアドバイスください^^;
予定ではさらに面を増やすつもりです。


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


Name: Tatu  ..プログラマー(25,980ポイント)   Date: 2010/02/14(日) 11:50   No:48043     
Title: Re:小学生最後の作品    
3ステージともクリアできました。

エラー

  やられた後に次のプレイを開始するとボスが2体に増え、
  自機は出なく、プレイ不可能。
  クリアした場合は次のプレイ開始時に
  爆風が残りますがプレイ上問題ないようです。

感想

  エラーのせいでやられるたびに再起動するのが面倒でした。
  ショットと低速のボタン配置がいつも(東方とか龍神録とか)と逆なので
  慣れるのに時間がかかりました。

要望

  ステージセレクトができることを説明書に書いてほしい。
  ステージはかなり多くまで増やす予定のようですが
  今の状態ではステージを一個変えるたびに矢印キーを押さなければならないので
  ステージを増やすのであれば矢印キーを押しっぱなしにしても変更するか
  それぞれの桁の数字を変更できるようにするかなどしてほしいところです。


宣伝

  「ゲームを作りました by Tatu」で遊べるぐらいまで
   できたアクションパズルゲームを公開しました。
   


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

Name: ひよこ  ..比類無きプログラマー(80,140ポイント)   Date: 2010/02/14(日) 11:51   No:48044     
Title: Re:小学生最後の作品    
遊ばせていただきました。
弾が激しくてぼこぼこにされました。弾が動いた後は速かったです。
敵の絵は独自な感じでいいですね。
できればたくさん機が欲しかったです。(1発あてられて終了はきついです。
制作お疲れ様でした。次回作を楽しみにしてます。


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

Name: Tororo  ..入門者(2,848ポイント)   Date: 2010/02/14(日) 11:56   No:48045     
Title: Re:小学生最後の作品    
>>tatuさん
あ〜クリア後の事は考えていませんでした・
キーは設定しなおします^^;
>>ひよこさん
自機は一つは厳しいですねw;
絵は独自ではなくて、絵心が無いだけです><


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

Name: Tororo  ..入門者(2,901ポイント)   Date: 2010/02/14(日) 12:39   No:48046     
Title: Re:小学生最後の作品    
http://www1.axfc.net/uploader/He/so/264964
pass tororo
削除キー入れ忘れました^^;
ボスの不具合解消。
自機は相変わらず1機です。


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

Name: Tatu  ..プログラマー(26,131ポイント)   Date: 2010/02/14(日) 13:25   No:48047     
Title: Re:小学生最後の作品    
まだエラーが発生します。

やられても続けてプレイすることはできるようになり、
ボスが増えることはなくなりましたが、
前のプレイの弾が残ったままです。

ときどき最初の弾幕の名前が表示されなくなります。
また最初の弾幕が終わった時、次がなぜか3つ目の弾幕になったり、
ボスが死んだりします。


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

Name: Tororo  ..入門者(2,950ポイント)   Date: 2010/02/14(日) 14:05   No:48049     
Title: Re:小学生最後の作品    
http://www1.axfc.net/uploader/He/so/264971
pass tororo
またまた改良しました。
自機HP15にしました。
弾幕の不具合も多分、解消しました。


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

Name: Tatu  ..プログラマー(26,354ポイント)   Date: 2010/02/14(日) 15:00   No:48055     
Title: Re:小学生最後の作品    
一回プレイしたのちに、それよりも前のステージをプレイすると
前のプレイの弾幕の名前がそのまま残ります。
そして、次のプレイの最初の弾幕の名前が上から下りてきません。

おそらく、本当は弾幕が始まるたびに
弾幕の名前の更新を行うべきなのに
弾幕番号が増えた場合にのみ
弾幕の名前の更新を行っているからでしょう。

弾幕が一つで終わったり、とばされたりすることがあるのは
弾幕の選択を弾幕の名前を変更するのに用いているのと同じ変数を
使っているからだと思います。これは違う変数を使うべきだという意味ではなく、
その変数の値の切り替えがうまくいっていないのではないかという意味です。

なぜ、それでも各ステージの最初の弾幕が正常に出るのかはわかりません。


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

Name: Tororo  ..入門者(3,008ポイント)   Date: 2010/02/14(日) 16:01   No:48057     
Title: Re:小学生最後の作品    
>>tatuさん
文字については起動後、一度見たなら最初から下にあるようにしています。
つまり、仕様です^^; 説明書に書いておきます。

弾幕については不具合ありました><
また直してUPします。


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

Name: Tororo  ..入門者(3,107ポイント)   Date: 2010/02/14(日) 16:17   No:48058     
Title: Re:小学生最後の作品    
http://www1.axfc.net/uploader/He/so/264991
pass tororo

内部初期化でstatic使っていたのが原因でした。
ついでに文字も毎回降りてくるようにしました。
今度こそ不具合が無いと良いんですけど・・・・・


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

Name: Tororo  ..入門者(3,119ポイント)   Date: 2010/02/14(日) 16:42   No:48061     
Title: Re:小学生最後の作品    
上のはMISSです><
すみません。


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

Name: Tororo  ..入門者(3,141ポイント)   Date: 2010/02/14(日) 16:45   No:48062     
Title: Re:小学生最後の作品    
http://www1.axfc.net/uploader/He/so/264993
pass tororo
これが本物です。
ふ〜 さっきはデバッグ用に、自機のパワーを30倍にしてあったw
多分不具合はないはず・・・


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

Name: Tatu  ..プログラマー(26,439ポイント)   Date: 2010/02/14(日) 17:52   No:48065     
Title: Re:小学生最後の作品    
今度はなぜか弾の攻撃力がってデバッグ用でしたか。
デバッグなら攻撃力を大きくするよりも
Dキーを押すと敵のHPを1にするというような機能によって
すぐに倒せるようにするほうがよいかもしれません。

さて、不具合ですが3ステージの最初の弾幕のとき、
弾幕の名前が画面のいちばん上にはみ出た状態で止まってしまい、
HPを0より小さくするとボスが次の弾幕を出さずに死に、
弾幕の名前がそのまま下に降りてきます。

1、2ステージは特に問題はありませんでした。


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

Name: Tororo  ..入門者(3,176ポイント)   Date: 2010/02/14(日) 18:01   No:48066     
Title: Re:小学生最後の作品    
>>tatuさん
自分も今気づきました。
次の更新で直します^^;


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

Name: Tororo  ..入門者(3,262ポイント)   Date: 2010/02/14(日) 19:53   No:48075     
Title: Re:小学生最後の作品    
http://www1.axfc.net/uploader/He/so/265017
pass tororo

完全に、不具合は潰しました。
ステージ選択は右左で+10、−10になりました。


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

Name: Tatu  ..プログラマー(26,632ポイント)   Date: 2010/02/14(日) 21:54   No:48088     
Title: Re:小学生最後の作品    
アップロードされているのが
先ほどのものと同じもののような気がするのですが。

アップロードしたとき確認にそれほど手間がかからないのであれば
自分でダウンロードして確認したほうがよいですよ。


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

Name: Tororo  ..入門者(3,274ポイント)   Date: 2010/02/15(月) 07:28   No:48104     
Title: Re:小学生最後の作品    
>>tatuさん
ごもっともでした><


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

Name: Tororo  ..入門者(3,534ポイント)   Date: 2010/02/20(土) 10:31   No:48280     
Title: Re:小学生最後の作品    
http://www1.axfc.net/uploader/He/so/265705
Pass tororo

ステージが五つになりました。

まだ余り面白くないかも><


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,153,791ポイント)   Date: 2010/02/20(土) 13:09   No:48290     
Title: Re:小学生最後の作品    
お〜小学生でこれだけのものが作れるとはすごいですね^^
sin,cosの使い方が解るとは・・。

これはこれからに期待ですね^^

しかしタイトルがエヴァンg・・(ry

しかし、ステージクリアしても次のステージに進まないのは仕様ですか?
データの中身を見る限り次のステージもあるみたいですが・・。


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

Name: Tororo  ..入門者(3,626ポイント)   Date: 2010/02/20(土) 13:15   No:48293     
Title: Re:小学生最後の作品    
>>Dixqさん
進ませていたら、選択を分けたい意味が薄れちゃうからです。
Clearしたら龍神録見たいなハンコ的なものを残すつもりです。
(外にセーブデータを残しておいて)


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,155,030ポイント)   Date: 2010/02/20(土) 13:53   No:48296     
Title: Re:小学生最後の作品    
あぁ、なるほど、説明に書いてありましたね、すみません^^;
自分としてはステージクリアすると次のステージに行くのかと思っていました。
弾幕多いですね〜、どれも個性的で素晴らしいです^^


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

Name: Tatu  ..プログラマー(27,342ポイント)   Date: 2010/02/20(土) 14:56   No:48298     
Title: Re:小学生最後の作品    
クリアしました。
不具合は見つかりませんでした。

しかし、気になったところはあるので書きます。

1.説明書で「ボムは使えない」と書かれたままでした。
2.ボムは英語でbombと書きます。
3.STAGE CLEARがSTAGE CREARになってました。


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

Name: Tororo  ..入門者(3,659ポイント)   Date: 2010/02/20(土) 15:27   No:48299     
Title: Re:小学生最後の作品    
>>tatuさん
何て恥ずかしいスペルミス><
説明書も書き直します。


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

Name: こめかみ  ..熟練のプログラマー(53,872ポイント)   Date: 2010/02/20(土) 19:38   No:48309     
Title: Re:小学生最後の作品    
黒い画面が出てくるだけで何もはじまりません。旧バージョンでも試してみようとしたのですが、ファイル落ちちゃってますね。

環境はWinXP MCEver2002SP3です。


小学生で作品完成させてしまうなんてうらやましいです。


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

Name: Tororo  ..入門者(3,647ポイント)   Date: 2010/02/22(月) 19:24   No:48454     
Title: Re:小学生最後の作品    
http://www1.axfc.net/uploader/He/so/266007
pass tororo

7面になりました。

後、何面作ろう・・・・


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

Name: Tororo  ..入門者(3,888ポイント)   Date: 2010/02/27(土) 12:29   No:48647     
Title: Re:小学生最後の作品    
http://www1.axfc.net/uploader/He/so/266579

ステージ10面になりました。
とりあえず完結しようかと思います。
卒業まで15日!


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

Name: dic  ..熟練のプログラマー(52,605ポイント)   Date: 2010/02/27(土) 16:14   No:48649     
Title: Re:小学生最後の作品    
卒業したらサポートどうするのでしょうか?

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

Name: Tororo  ..入門者(3,904ポイント)   Date: 2010/02/27(土) 17:08   No:48650     
Title: Re:小学生最後の作品    
>>dicさん
サポート?とは何でしょうか?


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

Name: Tatu  ..プログラマー(28,885ポイント)   Date: 2010/02/27(土) 17:54   No:48652     
Title: Re:小学生最後の作品    
全10面クリアしました。

ラストは長かった。

時々、ボムやダメージの後に、弾に当たっているように
見えないのになぜかダメージを受けました。

「完結しようかと思います」と書いてますが、STAGE11以降を選ぼうとすると
「まだSTAGE10までしかありません」という表示が出ます。
まだ更新があるのでしょうか?

サポートの意味はおそらく
「卒業した後に、バグが報告されたらそれに対処するのか。
また、新しい面を追加したりするのか。」といったようなものでしょう。

以前、Tororoさんが「中学生になったら勉強や部活に専念したい」
という感じのレスをしていたのでそういう質問をしたのだと思います。 編集済み


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

Name: Tororo  ..入門者(4,022ポイント)   Date: 2010/02/27(土) 18:00   No:48653     
Title: Re:小学生最後の作品    
>>tatuさん
>>全10面クリアしました。 
>>ラストは長かった。

30000を一回だから耐えてくださいw 

>>時々ボムやダメージの後になぜか弾に当たっているように 
>>見えないのにダメージを受けました。 

う〜ん謎のダメージは動いていれば余り起きないはずなんですが、止まっていると
起きるんですよね・・

>>サポート
多分、卒業してからは更新しないと思います。
勉強等に専念して行きたいと思っています。



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

Name: dic  ..熟練のプログラマー(52,723ポイント)   Date: 2010/02/27(土) 21:42   No:48655     
Title: Re:小学生最後の作品    
>>サポート
やっぱりそうなっちゃいますよね


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

Name:    ..かけだし(1,282ポイント)   Date: 2010/02/27(土) 23:18   No:48660     
Title: Re:小学生最後の作品    
小学生なのにSIN,COSの知識があるとはすごい。
私は中学生のときにC言語を学び始めましたが三角関数を理解するのに1年ぐらいかかりました


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

Name: Tororo  ..入門者(4,055ポイント)   Date: 2010/02/28(日) 08:05   No:48670     
Title: Re:小学生最後の作品    
>> さん
暇人だからですw

>>dicさん
やりたいんですけど、やる時間が・・・OTL


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

Name: Tororo  ..入門者(4,137ポイント)   Date: 2010/02/28(日) 19:54   No:48683     
Title: Re:小学生最後の作品    
なんかココまでやってオシマイでは悲しいので、
コードを乗せようかと思います。
それで自由にゲーム作っちゃってOKですw

欲しい人はメールやら、書き込みやらください。


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

Name: Tororo  ..入門者(4,155ポイント)   Date: 2010/02/28(日) 20:41   No:48685     
Title: Re:小学生最後の作品    
乗せようか X
渡そうか O


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

Name: 房州  ..ぴよぴよ(483ポイント)   Date: 2010/03/02(火) 00:24   No:48721     
Title: Re:小学生最後の作品    
ゲームをプレイさせて頂きました。
しっかり作られてあってとても楽しかったです、卒業されてからも
がんばってください。Tororoさんの作ったコード興味あります。


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

Name: DG  ..ぴよぴよ(632ポイント)   Date: 2010/03/02(火) 20:45   No:48751     
Title: Re:小学生最後の作品    
こんにちは。
ゲームやってみたんですが、予想以上に面白かったです(*´∀`)b
すぐには軌道のよめない弾幕が多くて良かったです。

それで、バグ報告なんですが、
5面で弾に当たってないはずのときにダメージを受けてしまいます。

あと、中学生になったら忙しくなるだろうと心配されてるみたいですが、
たぶん時間は十分にあると思いますよ
私立のえらいとこ等に行くのならそうでもないのかもしれませんが(*´ ェ`)


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

Name: Tororo  ..入門者(4,445ポイント)   Date: 2010/03/03(水) 15:02   No:48764     
Title: Re:小学生最後の作品    
>>房州さん
http://www1.axfc.net/uploader/He/so/267140
pass tororo
アップしました^^
思いっきり改造してゲームを公開してもらっても結構ですw
汚いかもしれません><
とりあえず、解説はありますが・・・
分からないことがあったらメールください^^

>>DGさん
弾に当たっていないのにと言うのは多分動いていないからじゃないでしょうか?
止まっていると、当たり判定が何度も起こるときがあります。 


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

Name: ideyan  ..ぴよぴよ(443ポイント)   Date: 2010/03/03(水) 16:35   No:48765     
Title: Re:小学生最後の作品    
初めまして。
ゲームをプレイさせていただきました。
一体どんなものだろう、と思いつつやってみたら
予想以上に面白かったです^^

ソースコードを上げてくださっているようなので早速見てみました。
上で何人かの方がおっしゃってる当たり判定ですが
Mover.h内のHIT関数を
bool Hit(CMover *mover){
        static int Cr = GetColor(   0 ,   0 , 255 ) ;
        float sx = mover->Point_X-this->Point_X;
        float sy = mover->Point_Y-this->Point_Y;
        float rad = mover->Rad+this->Rad;
        DrawCircle(mover->Point_X,mover->Point_Y,1,Cr,1);
        if(sx*sx+sy*sy < rad*rad){
            return true;
        }
        return false;
    }

と書き変えて実験してみたところ
被弾、ボム等で弾の全消しが起こった後に不可解な当たり判定が発生しているように思います。

クラス、イテレータ、タスク等不慣れなので私には原因がさっぱりなのですが
もし修正なさるのでしたらヒントの足しにでもしてください^^;


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

Name: Tororo  ..入門者(4,507ポイント)   Date: 2010/03/03(水) 17:20   No:48768     
Title: Re:小学生最後の作品    
>>ideyanさん
もう更新はしないつもりなんです^^;
ごめんなさいm(_ _)m
どうぞ貴方がゲームを作ってください^^  


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

Name: no  ..初心者(5,820ポイント)   Date: 2010/03/04(木) 01:26   No:48789     
Title: Re:小学生最後の作品    
正直ロムメインだったのですが、あまりにも感動してしまったので述べさせてください。
あんまり晒すのも気が引けますが、私は北海道で5年ほど塾講師として中学・高校数学の指導を行っています。(まあ院生中の金策手段の一環ですが……

tororoさんが中学入学を一つのポイントとおいているようなので、一つだけ心がけてほしいなぁと思うことがありました。

私はあなたが非常に優れた思考力・計算力を持っていると思います。

その根拠というか、具体例を述べます。
現在、誰だかは忘れましたが、国公立大学生の0.6%、私立大学生の20%が「分母の異なる足し算」をすることができない、という結論を出しました。
どのように導出したのかは知りませんが、新聞に載ってたのである程度の信頼性はあると思います。

そして、私一個人としても、いろいろな子を見てきた率直な感想として、現在日本国内の中学生、高校生の半分以上は算数ができないと思っています。
故に大学生が算数を出来ない事実も、その延長線である以上しょうがないと思います。

算数ができない、というのは「0.6+1/3」などです。

本日高校入試がありまして、大量の自己採点に付き合ってきましたが、その中の20%は上のような問題を解けないでしょう。

では何故できないのかというと、「小学校の算数」で躓いているからです。
躓いているからこそ中学校の数学ができません。
なら小学校の算数をやればいいのかと思いきや、その勉強をしていると中学校の数学がどんどん遅れていきます。とすると、個々人が算数の時間をとるべきなのですが、まあ彼らは算数くらいできるというプライドがあるらしく、なかなかやってくれません。

これらの道を歩むことで、「算数ができない中・高校生、大学生」が膨大に生まれるわけです。
そして全入時代の今、金さえ積めば算数ができなくとも入学できてしまいます。場所を選べば別ですが。

長くなりましたが、私がいいたいことは「数学」が出来ない人間とは、小学生でほぼ決まってしまうということです。あくまでも自習勉強を自発的にするのならば別です。
つまり、中学生から勉強していい点を取ることができるのは、算数のメイン作業である「計算」をどれだけ使いこなせるかが重要になります。逆に言えばこれができなければあまり点数には結びつきません。どれだけ勉強をしても。まあちょっとはあがりますが、すぐ頭打ちになります。

して、今の小学生は半数以上躓いているはずです。故に躓いている半数は思うように中学校で成績を上げられないと思われます。

ですが、あなたは小学生でありながらものすごい思考力・計算力があると考えられます。シューティングゲームに限らず、ゲームとは算数や数学の集合体ですから。

よってあなたは、そこまで努力をしなくてもそれなりの点数を取れると思います。
中学数学に関していえば、少しの努力で満点近く取れるでしょう。
なぜならば、C++を扱い、簡易ながら一つのゲームを作り上げるほどの思考力・計算力があるからです。
こと思考力・計算力の点でいえば、周りの生徒さんたちを遥かに凌いでいるはずです。
(おそらく、中堅の情報系大学院試験の問題を解けてしまうかもしれません、C言語の問題に関してならば)

これは、非常に恵まれたものです。
この恵まれた状態を生かすも殺すもあなた次第です。

して、一つ勘違いしているようですが、ゲームプログラミングもほんの少しは数学の勉強になります。点数につながるかといわれれば、ものすごい非効率といわざるを得ませんが。
ですので、両立でもいいと思います。
あれだったら中卒後、情報系の高専に通うといいかもしれません。授業がプログラミングまみれになります。

長文失礼しました。
これはあくまで私の持論であって、間違っている可能性も多々とあります。
鵜呑みにせず、正しいと思ったことだけ参考にしてください。

あ、何か相談あればいってください。中学科目ならば全部大丈夫です。

*中学科目の数学に限った話で、理科や社会は別です。それらは暗記でどうにでもなるので。


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

Name: 房州  ..ぴよぴよ(506ポイント)   Date: 2010/03/04(木) 01:35   No:48791     
Title: Re:小学生最後の作品    
アップしていただきありがとうございます。
勉強させてもらいます!


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

Name: Tororo  ..入門者(4,622ポイント)   Date: 2010/03/04(木) 16:13   No:48818     
Title: Re:小学生最後の作品    
>>noさん
アドバイスありがとうございます。
自分が考えている中学っていうのはぜんぜん違う物なんですね^^;
勘違いと言うか、考えすぎでしたね。
中学になって時間があったら作ってUPしていこうかと思っています。
ただ家から行けて良い高校(まぁ名がある大学に行けると言う様な)は一つしかありませんw
ってか高校が少ないですw
とりあえず中学になって時間があれば顔を出すので、よろしくお願いします。


>>房州さん
お役に立てて光栄です^^


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

Name: situmon  ..熟練のプログラマー(47,880ポイント)   Date: 2010/03/07(日) 01:50   No:48891     
Title: Re:小学生最後の作品    
遊ばせていただきました。

よい点は、とてもたくさんの弾幕、そしてそこそこの難易度の弾幕でプレイしていてよいこと。
悪い点は、画像、音がないことですね。
小学生でここまでできるなんてすごいですね!!
中学生なのに、プログラミングエラーでとても困ってる自分がここに・・・(笑
中学生ですが、土日をゆったりと過ごしています。
部活もやってますが。
私立ではないのでわかりませんが、
とても楽しいです。
すばらしい能力・・・うらやましい♪
どうぞ中学生になってもその能力を生かし、またゲームをアップしてください!!


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

Name: Tororo  ..入門者(4,654ポイント)   Date: 2010/03/07(日) 08:54   No:48896     
Title: Re:小学生最後の作品    
>>situmonさん
画像については解決法がありませんOTL
絵心を分けてください><


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

Name: Tororo  ..入門者(4,750ポイント)   Date: 2010/03/07(日) 08:59   No:48897 解決!     
Title: Re:小学生最後の作品    
ここまで皆様に色々な意見を聞いて決めました^^
中学になってもゲームは作ろうと思います。
ただ中々此処には来れないかも知れませんが・・
ありがとうございましたm(_ _)m

皆様もどうぞ自由に上のコードでゲームを作ってください^^


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

Name: Tororo  ..入門者(4,691ポイント)   Date: 2010/03/07(日) 18:56   No:48910     
Title: Re:小学生最後の作品    
出来ればでいいんですが
謎の当たり判定の原因が分からないで教えてくれませんか?
コードのHit関数内でideyanさんのやり方をすれば分かります。


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

Name: DG  ..ぴよぴよ(678ポイント)   Date: 2010/03/09(火) 02:47   No:48974     
Title: Re:小学生最後の作品    
コード見ずに言いますが、
弾が当たった時やボムを使ったときに、
弾の絵を消したり弾が移動するのを止めただけで、弾の座標をそのままにしているのではないでしょうか?
こうなっているとすると同じ場所にとどまっているとダメージを受け続ける事になると思います。



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

Name: Tororo  ..入門者(4,699ポイント)   Date: 2010/03/10(水) 14:47   No:49021     
Title: Re:小学生最後の作品    
>>DGさん
パソコンのディスクが壊れてしまって、新しくしたらデータが全部飛んでしまいました^^;
コードのバックアップは取ってあったんで良かったんですが、
C++をインストールし直さないといけないので、
テストが出来るのが遅れそうです。


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

Name: Tororo  ..入門者(4,746ポイント)   Date: 2010/03/11(木) 17:28   No:49076 解決!     
Title: Re:小学生最後の作品    
>>DGさん
そのやりかたでウマクいきました^^
本当にありがとうございましたm(_ _)m


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



Name: kei  ..ぴよぴよ(244ポイント)   Date: 2010/03/11(木) 15:05   No:49070       
Title: 1文字の比較をしたいとき    
初めまして。どうしてもわからないことがあるので質問させていただきます。

IF文などで分岐をするときに文字の比較をしたいのですが、
文字列であればstrncmp(〜〜で結果が == 0であるかどうかで判断しています。

ですが、1文字になると警告がでてきてしまいます。
strncmp("a", str_A[3], 1) == 0
といった感じでやっているのですが、この関数は文字列同士の比較するらしく
ポインタでないと危険だよ的なことを言われてしまいます。

警告は出てもプログラムは問題なく作動するのですが、他にやり方がありそうな気がします。

1文字の比較をするときはみなさんはどのようにしているでしょうか?



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


Name: kei  ..ぴよぴよ(47ポイント)   Date: 2010/03/11(木) 15:07   No:49071     
Title: Re:1文字の比較をしたいとき    
動作環境を書き忘れていました。失礼いたしました。

OS:WinXP
開発環境:VS6

このような環境でやっております。


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

Name: たかぎ [URL]  ..ハッカー(168,655ポイント)   Date: 2010/03/11(木) 15:12   No:49073     
Title: Re:1文字の比較をしたいとき    
普通に等価演算子や関係演算子で比較できます。

const char s[] = "abc";

if (s[0] == 'a')
{
    ...
}

といった感じです。


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

Name: 御津凪 [URL]  ..ハッカー(141,047ポイント)   Date: 2010/03/11(木) 15:13   No:49074     
Title: Re:1文字の比較をしたいとき    
> strncmp("a", str_A[3], 1) == 0

strncmp("a", &str_A[3], 1) == 0
か、
strncmp("a", str_A+3, 1) == 0

で、1文字の文字列として関数に渡せますよ。
警告が出るのは文字列(const char*)を渡すところに文字(char)を渡しているからです。

ですが、単なる比較ならば、
if('a' == str_A[3])
の方が良いです。


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

Name: kei  ..ぴよぴよ(162ポイント)   Date: 2010/03/11(木) 16:58   No:49075 解決!     
Title: Re:1文字の比較をしたいとき    
なるほど、よくわかりました。ありがとうございます。

これで考えてみると、文字列比較をするときに
関数strncmpを使わずにFor構文などで1文字ずつ比較して
合ってるかどうかで比較することもできるんですね。
(面倒なのでstrncmpを使いますが)

勉強になりました。ありがとうございます。


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



Name: カズム  ..ぴよぴよ(228ポイント)   Date: 2010/03/11(木) 14:55   No:49069       
Title: DirectX について    
前回は質問に解決できず、申し訳ありません。
kms改め、カズムです。
DirectXについて質問があります。

現在、Visual C++ 2008 Express Editionを起動し、
「ファイル(F)」→「新規作成(N)」→「プロジェクト(P)」→
「Win32」→「Win32プロジェクト」を選び、
「Windows アプリケーション」「空のプロジェクト」にチェックをつけ、
Windows アプリケーションの準備は出来たのですが、
次に、このプロジェクトに、DirectXを導入する方法が解りません。

DirectX SDK Nov08はインストールしてあるのですが、
これをVisual C++ 2008 Express Editionで利用するには、
どのようにすれば良いのでしょうか?

DirectXについては、全くの初心者です。

何方か、DirectXの導入手順を詳しく教えては頂けませんでしょうか?

Windows Vista,
Visual C++ 2008 Express Edition,
DirectX SDK Nov08,


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


Name: softya [URL]  ..ハッカー(131,673ポイント)   Date: 2010/03/11(木) 15:12   No:49072     
Title: Re:DirectX について    
たしかビルボードを質問した人ですよね?
最後に間違っていると指摘しましたが、理解されてちゃんとビルボード出来たのでしょうか?

それはそれとして、解説は古いですがこちらが参考に成ると思います。
Visual C++ 6.0とDirectX8で解説されてますが、そのぐらいの違いを自力で乗り越えられないとこの先になんて到底進めませんので。
http://www.plustarnet.com/aspil/Programming/
当然ながら、DXライブラリよりもプログラムを組む難易度が大幅アップします。
それとC++の文法の理解は、ほぼ必須です。

DirectX9の使い方から色々なプログラミング・テクニックはこちら。
http://marupeke296.com/GameMain.html

 編集済み


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




 
[ 1 , ... ]
 
 
管理者画面   RSS   + Powered By 21style +