C言語何でも質問掲示板


Total hit  今日  昨日  

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

 
   構造体のdouble型メン ....   
     ・[52346] たかぎ 
     ・[52347] たいちう 
     ・[52349] たかぎ 
     ・[52365] レッドリ 
     ・[52366] たかぎ 
     ・[52377] レッドリ 
     ・[52378] たかぎ 
     ・[52379] レッドリ 
     ・[52380] たかぎ 
     ・[52381] レッドリ 
     ・[52385] たかぎ 
     ・[52386] box 
     ・[52392] レッドリ 
   【雑談】一日、どのく ....   
     ・[52284] 御津凪 
     ・[52287] たかぎ 
     ・[52296] ベリ工 
     ・[52310] Dixq (管理人) 
     ・[52358] 匿名 
     ・[52389] 三郎 
   音楽ファイルについて ....   
     ・[52160] ひよこ 
     ・[52374] 甘島米太郎 
   3Dでの床の判定   
     ・[52363] ookami 
     ・[52364] KOZAN 
     ・[52367] fr 
     ・[52369] KOZAN 
     ・[52372] ideyan 
     ・[523511274645597] KOZAN  
     ・[523511274645701] KOZAN 
   DirectXの学習法につい ....   
     ・[52259] たかぎ 
     ・[52333] ookami 
     ・[52335] シエル 
     ・[52337] DVDM 
     ・[52339] たいちう 
     ・[52350] softya 
     ・[52362] シエル 
   mallocとnew演算子どち ....   
     ・[52357] たかぎ 
     ・[52359] 初級者 
     ・[52361] やっくん 
   コメントのつけ方   
     ・[52332] ookami 
     ・[52344] dic 
     ・[52355] bb 
   初めてゲーム作ってみ ....   
     ・[51947] やっくん 
     ・[51950] wing 
     ・[51952] ひよこ 
     ・[51958] ゆうき 
     ・[51959] 匿名 
     ・[51970] softya 
     ・[51975] hima 
     ・[51996] 七兎 
     ・[52026] 山崎 
     ・[52041] softya 
     ・[52101] 山崎 
     ・[52123] Dixq (管理人) 
     ・[52124] softya 
     ・[52157] 烏 
     ・[52348] 七兎 
   龍神録の講座について   
     ・[52286] ムンバ 
     ・[52315] Dixq (管理人) 
     ・[52326] ムンバ 
     ・[52342] shizuha 
     ・[52343] shizuha 
   不明な宣言????   
     ・[52283] ドラ 
     ・[52324] たかぎ 
     ・[52334] ookami 
     ・[52341] ドラ 
   int型配列が戻り値の関 ....   
     ・[52292] box 
     ・[52293] ななし 
     ・[52295] たいちう 
     ・[52298] ななし 
     ・[52301] たかぎ 
     ・[52336] ななし 
     ・[52338] たいちう 
   C++初心者で全くわかり ....   
     ・[52017] やっくん 
     ・[52230] kurouma 
     ・[52260] たかぎ 
     ・[52317] Dixq (管理人) 
     ・[52319] たかぎ 
     ・[52320] Dixq (管理人) 
     ・[52321] たかぎ 
     ・[52322] Dixq (管理人) 
   分割コンパイルで分か ....   
     ・[52304] たかぎ 
     ・[52306] JJ 
     ・[52308] たかぎ 
     ・[52316] JJ 
     ・[52318] たかぎ 
   変数の宣言に関する質 ....   
     ・[52307] たかぎ 
     ・[52309] しろ 
     ・[52311] Dixq (管理人) 
     ・[52313] しろ 
     ・[52314] Dixq (管理人) 
   コンパイル時に暗号!?   
     ・[52268] 御津凪 
     ・[52273] しん 
     ・[52275] Dixq (管理人) 
     ・[52276] しん 
     ・[52279] 御津凪 
     ・[52280] しん 
     ・[52281] しん 
     ・[52288] Dixq (管理人) 
   C言語の問題がわかりま ....   
     ・[52249] lbfuvab 
     ・[52251] ムウ 
     ・[52252] たいちう 
     ・[52253] ぽこ 
     ・[52274] たいちう 
   【雑談】知らない人同 ....   
     ・[52135] Dixq (管理人) 
     ・[52138] たかぎ 
     ・[52142] Ma 
     ・[52144] ookami 
     ・[52145] Ma 
     ・[52146] ゆうき 
     ・[52153] softya 
     ・[52159] ゆうき 
     ・[52162] softya 
     ・[52164] ookami 
     ・[52179] DVDM 
     ・[52193] ookami 
     ・[52203] やっくん 
     ・[52214] ookami 
     ・[52217] たかぎ 
     ・[52219] やっくん 
     ・[52222] たかぎ 
     ・[52271] ookami 
   C言語とC++の、strcpy ....   
     ・[52258] たかぎ 
     ・[52269] ムンバ 
     ・[52270] ムンバ 
   IT系大学進路相談   
     ・[52186] cuma 
     ・[52189] Ma 
     ・[52232] no 
     ・[52234] Ma 
     ・[52236] no 
     ・[52265] Ma 
   最初に読んだゲーム作 ....   
     ・[52181] Justy 
     ・[52202] dic 
     ・[52212] デラ初心者 
     ・[52215] softya 
     ・[52238] デラ初心者 
     ・[52239] softya 
     ・[52240] デラ初心者 
     ・[52241] softya 
     ・[52242] デラ初心者 
     ・[52244] softya 
     ・[52246] デラ初心者 
   MCIでの音楽再生   
     ・[52196] Justy 
     ・[52237] lbfuvab 
   − ビンゴゲームのプロ ....   
     ・[52229] たかぎ 
     ・[52231] ru 
     ・[52233] nescafe 
   ヘッダをインクルード ....   
     ・[52218] たかぎ 
     ・[52220] テトリ 
     ・[52221] たかぎ 
     ・[52224] テトリ 
   配列の要素数(大きさ ....   
     ・[52180] box 
     ・[52182] たかぎ 
     ・[52184] ムンバ 
     ・[52185] ムンバ 
     ・[52191] たかぎ 
     ・[52195] ムンバ 
     ・[52197] たかぎ 
     ・[52199] たかぎ 
     ・[52204] ムンバ 
     ・[52205] たかぎ 
     ・[52207] nishi 
     ・[52209] たかぎ 
     ・[52210] ムンバ 
     ・[52211] たかぎ 
     ・[52213] ムンバ 
   ただコンパイラ   
     ・[52154] たかぎ 
     ・[52155] softya 
     ・[52192] CUser 
     ・[52201] dic 
   ゲームのギミックにつ ....   
     ・[52198] Justy 
   プログラミング初心者 ....   
     ・[52165] Tororo 
     ・[52166] バグ 
     ・[52187] Dixq (管理人) 
     ・[52190] Ma 
   コンパイルエラー   
     ・[52174] ひよこ 
     ・[52176] monolith 
   ポインタ   
     ・[52133] あsdf 
     ・[52134] Dixq (管理人) 
     ・[52136] あsdf 
     ・[52137] たかぎ 
     ・[52139] Dixq (管理人) 
     ・[52140] Dixq (管理人) 
     ・[52141] たかぎ 
     ・[52175] あsdf 
   多次元配列の初期化   
     ・[52169] Justy 
     ・[52170] ru 
     ・[52171] ローラーパニック 
   DirectShowでフルスク ....   
     ・[52152] Justy 
     ・[52156] Hashimo 
     ・[52161] Justy 
   ファミコンの画像フォ ....   
     ・[52151] TKOZ 
   3Dモデルのモーショ ....   
     ・[52128] Justy 
     ・[52129] シノニム 
   変数の型について   
     ・[52121] softya 
     ・[52122] Dixq (管理人) 
     ・[52125] bb 
     ・[52127] Dixq (管理人) 
   出力文字を上書きする   
     ・[52109] Dixq (管理人) 
     ・[52110] たかぎ 
     ・[52111] しん 
     ・[52112] バグ 
     ・[52114] バグ 
     ・[52115] Dixq(管理人) 
     ・[52116] たかぎ 
     ・[52117] たかぎ 
     ・[52118] しん 
     ・[52119] バグ 
   画面消去"0x1b[2J"につ ....   
     ・[52103] たかぎ 
     ・[52104] softya 
     ・[52105] 山崎 
     ・[52106] バグ 
   if文分岐がうまくでき ....   
     ・[52072] たいちう 
     ・[52075] にのさん 
     ・[52077] たいちう 
     ・[52078] にのさん 
     ・[52081] Dixq (管理人) 
     ・[52087] ookami 
     ・[52099] たいちう 
     ・[52100] たかぎ 
   C言語初心者です   
     ・[52037] ookami 
     ・[52043] ぽぽ 
     ・[52047] たかぎ 
     ・[52054] ぽぽ 
     ・[52055] たかぎ 
     ・[52056] ぽぽ 
     ・[52057] 胡椒 
     ・[52058] たかぎ 
     ・[52085] Dixq (管理人) 
     ・[52096] ぽぽ 
     ・[52097] ぽぽ 
     ・[52098] ぽぽ 
   C言語のBM法について   
     ・[52095] SIN 
   [雑談] ゲーム会社への ....   
     ・[51949] softya 
     ・[51953] ゆーずぃ 
     ・[51955] softya 
     ・[52012] ゆーずぃ 
     ・[52016] softya 
     ・[52094] ゆーずぃ 

Name: レッドリ  ..入門者(3,570ポイント)   Date: 2010/05/19(水) 16:23   No:52345       
Title: 構造体のdouble型メンバをまとめてゼロで初期化するには    
こんにちは、私の開発環境はVC++EE2008でWindowsXPです。
struct Player{
        double x;
        double y;
        double angle;
};
Player player;

上の構造体を全てゼロにする場合、
memset(&player,0,sizeof(Player));
とする方法以外でゼロにする方法はありませんか?
http://www.kijineko.co.jp/tech/superstitions/initialization-by-memset.html
によると、浮動小数点はちゃんと0にならないと書かれていたので
memsetとは違うもので初期化したいと思っています。

Player player={0};
とすると、最初の宣言時だけの初期化なので、
ゲームからタイトルに戻るときに挟む全体の初期化で使えないのです。


検索しても、宣言時の初期化しかでてこなくて、大変困っております。
普通に、初期化関数で
player.x=0;
player.y=0;
player.angle=0;
すればいいじゃないかと
思うかもしれませんが、この様なdouble型をメンバに含む構造体が何十個もあるので
コードが長くなってしまうと思いました。

さらに、
struct exam{
        int a;
        double b;
        float c;
};
など、異なる型が混ざっている場合でもしっかりゼロにしたいです。

できれば、みなさんのお力をお貸しいただけないでしょうか?
説明に不足があれば、付けたしますので、どうかよろしくお願いいたします。 編集済み


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


Name: たかぎ [URL]  ..ハッカー(189,480ポイント)   Date: 2010/05/19(水) 16:29   No:52346     
Title: Re:構造体のdouble型メンバをまとめてゼロで初期化するには    
C++であれば下記でよいのでは?

player = Player();

参考まで
http://www.kijineko.co.jp/node/681

C99なら次のようにできるのですが、

player = (struct Player){0};

C99に対応していないVisual C++の場合は、各メンバに個別に代入するか、

static const struct Player player_template = {0};

のようなひな形を作っておいて、

player = player_template;

とするしかありません。


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

Name: たいちう  ..比類無きプログラマー(81,942ポイント)   Date: 2010/05/19(水) 16:41   No:52347     
Title: Re:構造体のdouble型メンバをまとめてゼロで初期化するには    
C++ならば、普通に↓これでよくないですか?
struct Player{
    double x;
    double y;
    double angle;
    Player() {
        clear();
    }
    void clear() {
        x = y = angle = 0;
    }
};

Player player;
player.x = 3;
player.clear();


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

Name: たかぎ [URL]  ..ハッカー(189,596ポイント)   Date: 2010/05/19(水) 17:15   No:52349     
Title: Re:構造体のdouble型メンバをまとめてゼロで初期化するには    
struct Player{
    double x;
    double y;
    double angle;
    Player() {
        clear();
    }
    void clear() {
        x = y = angle = 0;
    }
};

↑だと、POD型や集成体の利点を捨てることになります。
POD型の場合は、型名()とすればゼロ初期化されますので、やはり、

player = Player();

で十分ではないでしょうか?


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

Name: レッドリ  ..入門者(3,879ポイント)   Date: 2010/05/19(水) 21:00   No:52365     
Title: Re:構造体のdouble型メンバをまとめてゼロで初期化するには    
お二人方ありがとうございます。

player = Player(); 

static const struct Player player_template = {0}; 
player = player_template; 
で上手く行きました。

あと、もう1つ質問なのですが、

構造体の配列で
Bullet bullet[BULLET_MAX];
では、
memset(bullet,0,sizeof(Bullet)*BULLET_MAX);
などのように初期化をしていたのですが

これを
bullet[BULLET_MAX]=Bullet();
という風に書き換えてみたところ、ビルドして実行までは上手く行きましたが、
"初回の例外が発生しました: 0xC00000FD: Stack overflow"
というエラーになり、強制終了してしまいました。

static const struct Bullet bullet_template[BULLET_MAX] = {0}; 
とすると
右オペランドを扱う演算子が見つかりません (または変換できません)。
となります。
構造体の配列の場合は一個一個初期化でしょうか? 編集済み


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

Name: たかぎ [URL]  ..ハッカー(189,670ポイント)   Date: 2010/05/19(水) 21:37   No:52366     
Title: Re:構造体のdouble型メンバをまとめてゼロで初期化するには    
> bullet[BULLET_MAX]=Bullet(); 
> という風に書き換えてみたところ、ビルドして実行までは上手く行きましたが、 

これは明らかに間違っています。
bullet[BULLET_MAX]という、配列の範囲外の要素に書き込もうとしているからです。
そうではなく、C++であれば...

std::fill_n(bullet, BULLET_MAX, Bullet());

とすれば、配列の各要素をゼロクリアできます。


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

Name: レッドリ  ..入門者(4,341ポイント)   Date: 2010/05/20(木) 01:30   No:52377     
Title: Re:構造体のdouble型メンバをまとめてゼロで初期化するには    
>たかぎさん
STL使うんですか〜なるほどです。

それと…何度も本当にすみませんが、
最後にもう一つ質問させてください。

構造体の構造体の配列の初期化についてです。
struct Bullet{
        int flag,img,count;
        double x,y,angle,speed,size;
};

struct EnemyShot{
        int flag,kind,count;
        Bullet bullet[BULLET_MAX];
};

EnemyShot enemyshot[ENEMYSHOT_MAX];
という場合は std::fill_n(enemyshot, ENEMYSHOT_MAX, EnemyShot());  をゲームを始める前の初期化関数内で行うと、ゲーム画面で ハンドルされていない例外が発生しました というエラーが出て強制終了してしまいます。 おそらく Bullet bullet[BULLET_MAX];を初期化してないからかなと思うので 初期化しようと思ったのですが これは、構造体の構造体という状態なので、 std::fill_n(bullet, BULLET_MAX, Bullet());  とすることはできないみたいです。
struct EnemyShot{
        int flag,kind,count;
        Bullet bullet[BULLET_MAX];
        std::fill_n(bullet, BULLET_MAX, Bullet()); 
};

とすると案の定エラーが出てしまいます。
この場合の初期化法は、存在するでしょうか? 編集済み


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

Name: たかぎ [URL]  ..ハッカー(189,815ポイント)   Date: 2010/05/20(木) 01:40   No:52378     
Title: Re:構造体のdouble型メンバをまとめてゼロで初期化するには    
> EnemyShot enemyshot[ENEMYSHOT_MAX];
> という場合は std::fill_n(enemyshot, ENEMYSHOT_MAX, EnemyShot());  をゲームを始める前の初期化関数内で行うと、ゲーム画面で ハンドルされていない例外が発生しました というエラーが出て強制終了してしまいます。 

その初期化方法で問題ありません。
どこで例外が発生したのかがわかれば、もう少し気の利いた回答ができるかもしれません。

> おそらく Bullet bullet[BULLET_MAX];を初期化してないからかなと思うので 初期化しようと思ったのですが

そんなことはありません。
EnemyShot()とすることで、入れ子になった配列も構造体も含めた全メンバがゼロクリアされます。
配列の要素数が非常に大きいような場合には、もしかするとスタックが足りなくなっているのかもしれませんが、普通に考えてそんなことはないと思います。


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

Name: レッドリ  ..入門者(4,674ポイント)   Date: 2010/05/20(木) 02:06   No:52379     
Title: Re:構造体のdouble型メンバをまとめてゼロで初期化するには    
早速の回答ありがとうございます。


>その初期化方法で問題ありません。
そうなんですか、
これでまとめて初期化してくれるんですね。
ありがたいです。

>どこで例外が発生したのかがわかれば、もう少し気の利いた回答ができるかもしれません。

詳細を全然こたえていなくてすみません…。
ここで、エラーが起きます。

title();

init();
↓<-----------------エラー発生
gamemain();

titleで、gamestartを選択するといきなりウィンドウが
シャットアウトします。
void init(){

      初期化うんぬん

      std::fill_n(bullet, BULLET_MAX, Bullet());
}

init()が過ぎたあとでエラーの矢印がついてました。
//std::fill_n(bullet, BULLET_MAX, Bullet());
としてコメントアウトにし、memsetで初期化をすると、エラーが出なくなったのですが
浮上小数点を含む構造体なので、できればmemsetを避けたいのです。

>配列の要素数が非常に大きいような場合には、もしかするとスタックが足りなくなっているのかもしれませんが、

そういえば、エラーは2種類ありました。

Stack overflow というエラーと

ハンドルされていない例外が発生しました

の2つでした。

因みに配列数は900です。多いでしょうか? 編集済み


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

Name: たかぎ [URL]  ..ハッカー(189,866ポイント)   Date: 2010/05/20(木) 02:09   No:52380     
Title: Re:構造体のdouble型メンバをまとめてゼロで初期化するには    
BULLET_MAXはいくらですか?
あと、enemyshotの定義はどこで行っていますか?(自動変数かどうかで状況が変わります)


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

Name: レッドリ  ..入門者(4,807ポイント)   Date: 2010/05/20(木) 02:36   No:52381     
Title: Re:構造体のdouble型メンバをまとめてゼロで初期化するには    
BULLET_MAXは900です。

enemyshotの定義は、

gloval_extern.h-----------------

#ifndef    _Header_
#define    _Header_

EnemyShot enemyshot[ENEMYSHOT_MAX];

#endif

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

という感じでグローバル変数にしています。
自動変数です。 編集済み


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

Name: たかぎ [URL]  ..ハッカー(189,842ポイント)   Date: 2010/05/20(木) 08:46   No:52385     
Title: Re:構造体のdouble型メンバをまとめてゼロで初期化するには    
問題の再現するソースを出してもらった方がよさそうですね。
私の場合、Macなので、DXライブラリの確認は結構手間なのですが、誰か回答してくれるでしょう。


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

Name: box  ..ハッカー(152,903ポイント)   Date: 2010/05/20(木) 08:56   No:52386     
Title: Re:構造体のdouble型メンバをまとめてゼロで初期化するには    
> という感じでグローバル変数にしています。
> 自動変数です。

当方のつたない知識では、グローバル(外部)変数かつ自動変数という変数は
あり得ないことになっているのですが…。

自動変数とは、関数(ブロックという方がいいかな?)の内部で定義する変数のうち、
staticでないものを指し、当該の関数(もしくはブロック)に入るときに生まれて、
抜けるときに死ぬ、という変数だと思ってました。

くだんの#ifndef〜#endifが、関数(もしくはブロック)の中にあるのですか?


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

Name: レッドリ  ..入門者(4,955ポイント)   Date: 2010/05/20(木) 12:44   No:52392 解決!     
Title: Re:構造体のdouble型メンバをまとめてゼロで初期化するには    
無事できました。
原因は配列のout of rangeでした。
ENEMYSHOT_MAXとENEMY_MAXが30と40で
30番目以上のENEMY側が、ENEMYSHOT_MAXの上限を超えた30番目以上のENEMYSHOTを呼び出して
メモリーエラーをしていたみたいです。
お騒がせいたしました。

>グローバル(外部)変数かつ自動変数という変数は 
あり得ないことになっているのですが…。 

間違えました。自分の中ではstatic付けてないものは全部自動変数と思い込んでいました。
ローカル変数じゃないので自動じゃなかったですね…。

今回は本当に勉強になりました。
みなさん、ありがとうございます。


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



Name: 匿名  ..上級者(21,435ポイント)   Date: 2010/05/18(火) 15:24   No:52282       
Title: 【雑談】一日、どのくらいプログラムを書いてるか    
現役ゲームプログラマの方、
又はゲームプログラマをやってた方にお聞きしたいのですが、
会社でプログラムを組むとき、また
家で趣味の一つとして組むとき(休日ではなく、会社が終わってからの平日)
大体一日、何行くらいのプログラムを組んでいるのでしょうか?
会社と家でいるときの、それぞれ教えてください。
参考にしたいので、是非お願いします。


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


Name: 御津凪 [URL]  ..ハッカー(142,203ポイント)   Date: 2010/05/18(火) 15:36   No:52284     
Title: Re:【雑談】一日、どのくらいプログラムを書いてるか    
現役ゲームプログラマ(3年目)です。

実際の仕事上の平均としては 300 行くらいですね。
空きの時間・別の手伝いなどもたまにあるので全く書かないときもあれば、
バリバリ1000行以上書くことも稀にあります。
今は終盤なのでコードを書く量は減っていってます。

趣味もプログラミングなので家でもやってますが、
最近忙しいので修正などで多くても 10 行程度ですかね。
忙しくない時でも実装方法を考えたりしているので大体 100 行はいかない位だと思います。


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

Name: たかぎ [URL]  ..ハッカー(188,236ポイント)   Date: 2010/05/18(火) 17:23   No:52287     
Title: Re:【雑談】一日、どのくらいプログラムを書いてるか    
私も普段は数行から数十行ですね。
最近はソースコードより原稿を書く量のほうが多かったりします。


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

Name: ベリ工  ..入門者(3,810ポイント)   Date: 2010/05/18(火) 20:50   No:52296     
Title: Re:【雑談】一日、どのくらいプログラムを書いてるか    
私はゲームプログラマではないですが、普通のソフトウェア会社に
勤めています(今年で13年目・・・歳だ・・・orz)。
立場的にはPLですね。でもプログラムも当然します。

会社では上流工程から下流工程まで一環して行います。
上流工程の時は客先調整(打ち合わせ)や設計書やレビュー
ばっかりしていますのでまったくプログラムを打ちませんが、
下流工程は製造、UT(単体)、IT(結合)、ST(総合)→出荷判定
と行いますので、当然プログラムも打ちます。
どのくらい打つかはスケジュール次第で大きく変わりますね。
部下の書いた設計書のレビューを行ったり、コードレビューを
行ったりと他の作業もいろいろと行いますので、かなり自分の時間が圧迫されますね。

スケジュールが遅れている場合は多いときで数千行打つこともありますし、
今日は定時で帰りたいとか余裕のある時は数百行で終わるときもあります。
ちなみに今日は品質会計票とリリース手順書の作成&レビューだけで1日終わりました・・・orz(笑

で、家では趣味のWindowsアプリをいろいろと作りますが、最近はゲーム開発ばかり
していますね。どのくらいかというと・・・数十行からせいぜい数百行程度でしょうか。
まったくしない日もあります。

くだらない雑談でしたが、少しは参考になれば幸いですね。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,190,937ポイント)   Date: 2010/05/18(火) 22:13   No:52310     
Title: Re:【雑談】一日、どのくらいプログラムを書いてるか    
私もゲームプログラマーではありませんが、普通のプログラマーをやっています。

プログラムコードを書いていた量は学生時代の方が圧倒的に多かったように思います。
仕事になるとコードを書く量は減るように思います。

プログラムばっかり書く仕事もあるでしょうけど、
要件定義も設計も保守もせず、ただひたすら上が決めた仕様通りプログラムを書き続ける人は
コーダーと呼ばれるのではないでしょうか。

というわけで、「実装は全体の2〜3割」ともいわれる通り、
職業や分野にもよるでしょうが、仕事においてプログラムを書くという作業は全体の一部分でしか無いんじゃないかなと思います。
また、会社に入って経験を積めば積むほど上流工程を任される傾向にあるので、次第にコーディングから離れる傾向にあるようです。
私はずっとコーディングをしていたいものですが・・。

私はまだ会社に入って日も浅いので書いている行数も少ないということもあり十数行〜百数十行程度です。
ですが、テストや仕様書作成、レビューなどを行っている時は全く書かない日も多いです。
うちの会社はソフトウェア屋さんじゃないので、作るというより既存コードの改良が主になっています。

で、最近では趣味でもしれた程度しか書いていません。
ゲームを作る時は素材も作らないといけないので、半分は素材を作っています。
残りの半分は設計や打ち合わせなどしているので、書いてる時間はホント少ないですね。

学生時代一人でひたすら作っていた時は毎日千行以上書いていたものですが・・。
突然教授に「明日から1カ月学校きません!」と言って
大学にも行かずに起きている間中、寝食を忘れてひたすらコーディングした事もありました・・。
いや〜懐かしい。

ということで就職してから随分プログラムを書く量は減ってしまいました。
ただ多くの技術に触れる機会(時には嫌でも無理やり勉強させられる)は随分多くなりました。


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

Name: 匿名  ..上級者(21,440ポイント)   Date: 2010/05/19(水) 19:27   No:52358 解決!     
Title: Re:【雑談】一日、どのくらいプログラムを書いてるか    
正直、毎日数百、数千と書いてるのかと思いましたが、
それほど書かないのですね。
それでも数千行というレベルは書いたことがないので未知の段階ですが…
プログラマというとプログラムを打つ仕事が専門だから
沢山の量を書いてるのかと思ってましたが
それ以外にもプログラマには色々な役割があるのですね。初めて知りました。
皆さんの大切なご意見、ありがとうございました。
勉強になりました。精進したいと思います。


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

Name: 三郎  ..かけだし(1,187ポイント)   Date: 2010/05/20(木) 09:16   No:52389     
Title: Re:【雑談】一日、どのくらいプログラムを書いてるか    
私は今VC++の初歩者。。参考書を見て勉強するも非常に難しい。
私はパソコンのことは専門教育を全く受けていなく独学、高齢。

DOSの時代の経験のみ。
MSCによるDOSで一日多くて50行くらい。でも一行も書けない日が多かった。
何故なら、エラーがでたら対処方法が分らなかったから。
仕方なしエラコードで強制的に邪道なルーチンに飛ばし誤魔化してその場を凌いでいた(やってはならない事)。
要するにデバック能力が皆無でした。

ソフトは一から造らず今まで造った物を再編集し(エデイターで)新たに書く量は非常に少なく(1/10)

それでも充分実用に耐えるものを造っていました。今後ともご指導宜しく。


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



Name: 甘島米太郎 [URL]  ..ぴよぴよ(119ポイント)   Date: 2010/05/15(土) 17:10   No:52158       
Title: 音楽ファイルについて MP3/WAV    
ゲームサウンドの形式はwavである事が多い気がするのですが、
BGMや効果音はmp3よりwavの方が良いのでしょうか?


効果音はwavで良いのですが、BGMとかだとWAVだとサイズが大きいのでMP3で圧縮しようかなと思っているのですが、どうでしょうか。


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


Name: ひよこ  ..比類無きプログラマー(82,915ポイント)   Date: 2010/05/15(土) 18:04   No:52160     
Title: Re:音楽ファイルについて MP3/WAV    
自分の考えです。間違っているかもしれません。
MP3は商用利用の時、使用料がかかるから使わないのだと思います。
Oggはライセンスを明記すれば使用料はかからないしMP3並みの音質と圧縮率だからです。
wavの効果音はすぐに再生できるからでしょう。
結局、圧縮すると必ず劣化すると思うし、簡単にプログラムを組めるのはwavだからではないでしょうか。


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

Name: 甘島米太郎 [URL]  ..ぴよぴよ(69ポイント)   Date: 2010/05/20(木) 00:53   No:52374 解決!     
Title: Re:音楽ファイルについて MP3/WAV    
ありがとうございます!
使用料のかからないOggが注目されそうですね!
容量と相談して使っていこうと思います!


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



Name: KOZAN  ..ぴよぴよ(216ポイント)   Date: 2010/05/19(水) 17:40   No:52351       
Title: 3Dでの床の判定    
DXライブラリを使って3Dでキャラクターを動かすプログラムを作っております。
なんとかカメラの位置から移動方向を算出してセットするところまでは出来ました。

ただ床の上にいるようにしたいです。
床は平面だけではなく斜面の部分もあり
それにそってすすむようにしたいのです。

調べてみたのですが法線ベクトルを取得して〜?
みたいなことが書いてあったのですがイマイチ理解できませんでした。

どの様にすれば床との当たり判定を取ることが出来るでしょうか?





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


Name: ookami  ..上級者(16,318ポイント)   Date: 2010/05/19(水) 20:29   No:52363     
Title: Re:3Dでの床の判定    
こんばんは。過去ログから↓を見つけました。参考になりますでしょうか?
http://www.play21.jp/board/formz.cgi?action=res&resno=51092&page=&lognum=157&id=dixq&rln=51193


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

Name: KOZAN  ..ぴよぴよ(268ポイント)   Date: 2010/05/19(水) 20:45   No:52364     
Title: Re:3Dでの床の判定    
すみません・・・読んでみたのですが理解できませんでした。
DXライブラリのサイトのサンプルも見てみたのですがこちらもよくわかりません・・・。


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

Name: fr  ..ぴよぴよ(7ポイント)   Date: 2010/05/19(水) 22:42   No:52367     
Title: Re:3Dでの床の判定    
少し調べてみました。
これでいけるのではないでしょうか。
http://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_3d.html#R9N4


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

Name: KOZAN  ..ぴよぴよ(348ポイント)   Date: 2010/05/19(水) 23:05   No:52369     
Title: Re:3Dでの床の判定    
fr様
ありがとうございます。
2Dの当たり判定なら何度もやったことがあるのでわかるのですが
3Dの場合だと全くの素人なのでこの関数の使い方がわかりません・・・。

お時間取らせてもらって申し訳ないのですが
私のソースをもとにサンプルを頂けないでしょうか?


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

Name: ideyan  ..初心者(5,558ポイント)   Date: 2010/05/19(水) 23:50   No:52372     
Title: Re:3Dでの床の判定    
最初にステージのモデルに対してMV1SetupCollInfoを呼んでコリジョン情報を構築。

キャラクターが移動するときにキャラクターから真下に伸ばした線分と
ステージの当たり判定をMV1CollCheck_Lineで行う。

キャラクターの下方向に何かしらポリゴンがあれば、
判定結果として得られたMV1_COLL_RESULT_POLY型の構造体のHitFlagが1になっているはずです。

このとき、構造体のHitPositionに交差した座標が記録されていますので
それをもとにキャラクターのy座標を調整すればそれっぽくなると思うのですがどうでしょうか?

各関数の使い方はリファレンスとサンプルを見ればなんとなくわかると思います。


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

Name: KOZAN   Date: 2010/05/24(月) 05:13   No:523511274645597     
Title: Re:3Dでの床の判定    
連絡が遅くなってしまい申し訳御座いません。
なんとかそれっぽい動作にすることが出来ました。
但し問題が発生してしまっております。
ゆるい斜面では座標を戻してくれるのですが急斜面(直角ではない)では
反応してくれません。
ソースコードの判定が甘いのかと思うのですが
どこら辺が駄目なのかをご指摘頂けないでしょうか?

又、X-FILEを使っております。
自分で作れる環境はあるのですが
あまり高度の物が作れません。
テスト環境で使えるようなサンプルファイルやキャラクターが
置いてありそうな場所はないでしょうか?

    // マップとの当たり判定    
    MV1SetupCollInfo( MapModelH, 0, 8, 8, 8 ) ;
    Player.HitPoly = MV1CollCheck_Line( MapModelH, 0, VGet(Player.Pos.x,Player.Pos.y+2.5f,Player.Pos.z), VGet(Player.Pos.x,Player.Pos.y-2.5f,Player.Pos.z)) ;
    
    if( Player.HitPoly.HitFlag == 1 ){
        Player.Pos.y = Player.HitPoly.HitPosition.y + 2.0f;
        Player.Move.y = 0;
    }else{
        Player.Pos.y -= 0.2f;
    }
    
    // 移動量の初期化
    Player.Move.x = 0;
    //Player.Move.y = 0;
    Player.Move.z = 0;
    
    float rot = float(Player.rot/180*M_PI);

    // 移動処理
    if( Key[KEY_INPUT_UP].Flg == 1 ){
        Player.Move.x += sin(rot) * Player.MoveSpeed * -1;
        Player.Move.z += cos(rot) * Player.MoveSpeed * -1;    
    }
    if( Key[KEY_INPUT_DOWN].Flg == 1 ){
        Player.Move.x += sin(rot) * Player.MoveSpeed;
        Player.Move.z += cos(rot) * Player.MoveSpeed;
    }
    //  ジャンプ処理
    if( Key[KEY_INPUT_SPACE].trgKey == 1 ){
        if(Player.Move.y == 0)    Player.Move.y = 4;
    }

    if(Player.Move.y != 0){
        Player.Move.y -= 0.2f;
    }

    // 移動値加算
    Player.Pos.x += Player.Move.x;
    Player.Pos.y += Player.Move.y;
    Player.Pos.z += Player.Move.z;

    // Yは0より下がらない
    /*
    if(Player.Pos.y <= 0){
        Player.Pos.y = 0;
        Player.Move.y = 0;
    }
    */

    MV1SetPosition( Player.ModelH, Player.Pos ) ;



Name: KOZAN   Date: 2010/05/24(月) 05:15   No:523511274645701     
Title: Re:3Dでの床の判定    
すみません。
過去ログに入ってしまった為一度質問を締めさせて頂きます。

回答して下さった方々
本当にありがとうございました。




Name: シエル  ..ぴよぴよ(160ポイント)   Date: 2010/05/17(月) 19:39   No:52245       
Title: DirectXの学習法について    
C言語とWindowsAPIだけで、簡単なシューティングゲームが作れるようになったので、
DirectXを使ってもっと高度なゲームを作成したいと思っています。

DirectXのSDKをインストールして、チュートリアルなどのソースコードを見たのですが
さっぱり分からず、どっから手をつければいいのか分かりません。

皆さんはDirectXを勉強され始めたときは、どのように学習されましたか?

DXライブラリやOpenGL等から始めたほうが良いでしょうか?


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


Name: たかぎ [URL]  ..ハッカー(188,184ポイント)   Date: 2010/05/18(火) 01:15   No:52259     
Title: Re:DirectXの学習法について    
とりあえず何か本を読んだ方がよいのでは?


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

Name: ookami  ..上級者(16,215ポイント)   Date: 2010/05/19(水) 08:42   No:52333     
Title: Re:DirectXの学習法について    
おはようございます。

「C言語とWindowsAPIだけで、簡単なシューティングゲームが作れる」となれば、とりあえずDXライブラリを使えば「DirectXを使ったゲーム」は余裕で作れると思います。
http://homepage2.nifty.com/natupaji/DxLib/

本、という意味では、
『14歳からはじめる C言語わくわくゲームプログラミング教室』
ですね。

本ではなくウェブも視野に入れると、もちろんこちらがオススメ。
http://dixq.net/

あとは、「もっと高度な」というのがどの程度かによって、変わってくると思います。とは言ってもDXライブラリもかなり広範囲をカバーしていますので、私はDXライブラリがオススメです。まずはDXライブラリのリファレンスをご覧になってはいかがでしょうか。
http://homepage2.nifty.com/natupaji/DxLib/dxfunc.html


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

Name: シエル  ..ぴよぴよ(333ポイント)   Date: 2010/05/19(水) 10:35   No:52335     
Title: Re:DirectXの学習法について    
>>たかぎさん
返答ありがとうございます。
やっぱり本ですかね。探してきます。

>>ookamiさん
DXライブラリを使おうとも考えてはいたんですが、何というかDXライブラリは簡単過ぎます。
リファレンスも見ましたが、DXライブラリを使ってるとWindowsの仕組みを理解しないまま
ゲームが作れてしまいます。
DXライブラリはそこが納得いきません。

ですので、WINDOWSの仕組み、ハードの構成等を理解していないとプログラムできない
DirectXを学習したいと思いました。
(出来ればゲームプログラマーになりたいとも思っています)

DirectXを習得するのは非常に難しいことは承知の上ですので、
皆さんのDirectXの学習法について、是非ご意見を頂ければと思います。

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


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

Name: DVDM [URL]  ..熟練のプログラマー(52,564ポイント)   Date: 2010/05/19(水) 11:08   No:52337     
Title: Re:DirectXの学習法について    
>>シエルさん
http://bu-nyan.m.to/program_directx.htm
http://wisdom.sakura.ne.jp/system/directx/index.html
私が DirectX を勉強するきっかけになったサイト様です。
DirectX8 ですがとても勉強になりました。

http://marupeke296.com/index.html
http://toruweb.web.fc2.com/
DirectX9 を勉強した時に利用しているサイト様です。
DirectX9 に2Dゲーム制作をメインで勉強しているので
DirectX10 以降や3Dについては解らないのでどこがいいとは言えず申し訳ないです。

今の手持ちと表紙は違うみたいですが本であれば
こちらもリファレンス代わりに使用しておりました。
http://www.amazon.co.jp/gp/product/4875934998/ref=s9_simh_gw_p14_i1?pf_rd_m=AN1VRQENFRJN5&pf_rd_s=center-2&pf_rd_r=0Y04W3DJQ05WTGG3FQ9H&pf_rd_t=101&pf_rd_p=463376756&pf_rd_i=489986


http://msdn.microsoft.com/ja-jp/library/default.aspx
検索すれば関数の説明を見れるため、こちらのMSDNライブラリも重宝しております。


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

Name: たいちう  ..比類無きプログラマー(81,844ポイント)   Date: 2010/05/19(水) 11:19   No:52339     
Title: Re:DirectXの学習法について    
> DXライブラリを使おうとも考えてはいたんですが、何というかDXライブラリは簡単過ぎます。
> リファレンスも見ましたが、DXライブラリを使ってるとWindowsの仕組みを理解しないまま
> ゲームが作れてしまいます。
> DXライブラリはそこが納得いきません。

WinAPIを既に理解しているのなら、そこは構わなくないですか?
誰かにプログラミングを教えるという話じゃないですよね?
Windowsの仕組みとDirectXの仕組みを混同しているようです。


DXライブラリの一歩目としてお勧めの本
『DirectX ゲームグラフィックス プログラミング Ver. 2.1 Vista』
http://www.amazon.co.jp/dp/4797341874


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

Name: softya [URL]  ..ハッカー(165,258ポイント)   Date: 2010/05/19(水) 17:29   No:52350     
Title: Re:DirectXの学習法について    
こちらの書籍はいかがでしょう。
http://www.play21.jp/board/formz.cgi?action=res&resno=52245&page=&id=dixq&rln=52339
「ゲームプログラミング入門」で使われているは薄いラッパーみたいのなので、DirectXの良いサンプルになると思います。


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

Name: シエル  ..ぴよぴよ(412ポイント)   Date: 2010/05/19(水) 19:48   No:52362 解決!     
Title: Re:DirectXの学習法について    
皆さん、たくさんのご意見ありがとうございました!

とりあえず何か本を購入して、地道に勉強していきたいと思います。
ご紹介していただいたサイトも参考にしながら、
色んな人に楽しんでもらえる最高のゲームが作れるよう頑張ります。

どうもありがとうございました!


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



Name: やっくん  ..上級者(23,256ポイント)   Date: 2010/05/19(水) 19:21   No:52356       
Title: mallocとnew演算子どちらを使うべき?    
2Dエフェクト製作のスレがまだ未解決ですが、少し別のことで気になったことがあるので立てさせてもらいました。

C言語のmalloc,calloc関数かC++のnew演算子を使うとしたらどちらを使うべきなのでしょうか。
(動的メモリの確保なので安全性から出来る限り使わないなら使わない方が良いのでしょうけど)
安全性などはC++で追加されたnew演算子の方がmallocより上なのでしょうか?


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


Name: たかぎ [URL]  ..ハッカー(189,742ポイント)   Date: 2010/05/19(水) 19:27   No:52357     
Title: Re:mallocとnew演算子どちらを使うべき?    
目的や状況にあわせて使い分ければよいと思います。
なお、正しく使い分けるためには、それぞれの仕様を正確に把握しておくことが不可欠です。

> 安全性などはC++で追加されたnew演算子の方がmallocより上なのでしょうか? 

正確に理解できているものを使うのがもっとも安全です。


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

Name: 初級者  ..初心者(8,057ポイント)   Date: 2010/05/19(水) 19:28   No:52359     
Title: Re:mallocとnew演算子どちらを使うべき?    
どちらを使っても、確保した領域の使い方はプログラマー任せです。

一方が他方より安全である、ということはありません。


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

Name: やっくん  ..上級者(23,287ポイント)   Date: 2010/05/19(水) 19:33   No:52361 解決!     
Title: Re:mallocとnew演算子どちらを使うべき?    
たかぎさん、初級者さん返信ありがとうございます。

慣れている方を使うことにします。


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



Name: bb  ..ぴよぴよ(517ポイント)   Date: 2010/05/19(水) 03:44   No:52330       
Title: コメントのつけ方    
VC++2010で質問なのですが
半角/全角キーを押しても変換されないのでコメントが書けないのです
どうすれば変換できるのでしょうか?
本気でわからないのです


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


Name: ookami  ..上級者(15,987ポイント)   Date: 2010/05/19(水) 07:10   No:52332     
Title: Re:コメントのつけ方    
おはようございます。お困りのようですが、それでは何が何やら(たぶん他の人も)本気でわかりません(汗

半角スラッシュは質問文を見るかぎり書けているようですが…?

例かなにか、もう少し具体的に書いていただけませんか?

-- 追記

もしかしたら、Altキー+全角/半角キーでうまくいくパターンかも? 編集済み


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

Name: dic  ..熟練のプログラマー(67,548ポイント)   Date: 2010/05/19(水) 16:10   No:52344     
Title: Re:コメントのつけ方    
VC++2010 Express でも IEでも似た現象を経験してます
同じブラウザ(入力)のエンジンを使っているからかなぁ・・・と思ってます
再起動して対応してました
最近は起きないですね
まれ〜にしか起きず再現性を低いのでMSにメール送ろうにも送れないのです


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

Name: bb  ..ぴよぴよ(665ポイント)   Date: 2010/05/19(水) 19:21   No:52355     
Title: Re:コメントのつけ方    
画面右下に「日本語入力ツールバー」がありますよね?
IE起動中とかだとそれが表示されて
半角/全角キーを押すとひらがなになったり半角英字になったりするんですが
VC++2010だと「日本語入力ツールバー」が消えてしまいます。
一度だけ何かのはずみでVC++起動中に表示されたのですがその方法がわかりません。
なのでコメントを日本語(ひらがな)で打てないのです。


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



Name: 七兎  ..ぴよぴよ(123ポイント)   Date: 2010/05/11(火) 21:16   No:51945       
Title: 初めてゲーム作ってみました    
初めまして、七兎と申します。

少し前からこちらや、DXライブラリ本家の方を参考にしながら
ゲーム制作に挑戦してみました。ファイルは以下のアドレスに
アップロードしています。

http://www1.axfc.net/uploader/N/so/100794
pass:catch

内容は、“一定時間内に落下物をキャッチして高得点を狙う”
至極シンプルなものです。

新卒枠(2011年)でゲーム会社も何社か受けたいと考えているのですが、
今の作品レベルでは書類選考も厳しいでしょうか…?一応グラフィックを、
ある程度自前で用意できる点は強みだと思っています(プログラマー職と
してプラスに繋がるかは疑問ですが)。

それを踏まえた上で、感想や意見などを頂けたら幸いです。


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


Name: やっくん  ..上級者(17,946ポイント)   Date: 2010/05/11(火) 21:44   No:51947     
Title: Re:初めてゲーム作ってみました    
初めまして。
遊ばせてもらいました(^^
スコア596、ランクAでした。

<意見>
アイスバーだけでなく障害物などを落としたりするのも面白いかもしれません。
ぶつかったら点数が減ったり、一定時間動けなかったりetc
ステージが一つだけなので
・障害物が無い
・障害物が有る
・足場が悪い
などのステージのバリエーションを作ってみてはいかがでしょうか?

決定キーなどに初め戸惑いました。
こちらの都合でホームページを見れなかったものでキーがわかりませんでした。
差し支えなければ決定キーはEnter(Retern)や Spaceキーなども利用できると良いかもしれません。

あと、自分は絵が描けないので七兎さんのように上手に描けるのが羨ましいと感じました(笑”


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

Name: wing  ..初心者(8,460ポイント)   Date: 2010/05/11(火) 22:50   No:51950     
Title: Re:初めてゲーム作ってみました    
ゲーム、やらせていただきました。
感想は、ゲームの内容より絵が上手だなと感心しました。

あと、ソースがあったので見させていただきました。
当たり判定は、DXライブラリ置き場のサンプルですね。
私もしっかり勉強させてもらったばかりです。

関係はないと思うんですが、ゲームをした後に
ソースを見ていたらパソコンがシャットダウンしてしまいました。

いまから原因を調べてみます。


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

Name: ひよこ  ..比類無きプログラマー(82,806ポイント)   Date: 2010/05/11(火) 23:00   No:51952     
Title: Re:初めてゲーム作ってみました    
初めまして、
まずは、絵がすごいですね。タイトルでアニメーションなんて・・・
ステージが一つしかないので今の状態でも、ステージを増やせばもっと良かったと思います。
シンプルなゲームでした。それも良かったです。
スコア518でランクBでした。楽しかったです。
制作お疲れ様です。


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

Name: ゆうき  ..入門者(2,903ポイント)   Date: 2010/05/12(水) 00:30   No:51958     
Title: Re:初めてゲーム作ってみました    
初めてであんなにクオリティ高いものができるんですか!!

やっぱりグラフィックって重要なんだなぁ‥
こって作ればもっと素晴らしい物も作れてしまうのだろうなぁという将来性も感じました。

僕はあなたの足元にも及ばない者なのに、偉そうな事を言ってしまいました。。。

これからソースを勉強させて頂きます。


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

Name: 匿名  ..上級者(21,315ポイント)   Date: 2010/05/12(水) 00:55   No:51959     
Title: Re:初めてゲーム作ってみました    
やらせていただきました。

素材を選ぶのもある程度のセンスが必要ですが、
ゲームにあった素材を使用してると思いますよ。素晴らしい。
説明書もhtmlで作られていいですね。分かりやすかったです。

それについてのアドバイスですが
メモ帳で作られたクイックマニュアル的なものも用意したほうがいいですよ。
html(全体の概要)+readme(簡単な操作説明的なもの)
htmlは開くのが面倒だといって見ない人がいるので
txtファイルを一つ用意しておくといいかもしれません。

制作お疲れ様でした。


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

Name: softya [URL]  ..ハッカー(162,928ポイント)   Date: 2010/05/12(水) 10:35   No:51970     
Title: Re:初めてゲーム作ってみました    
こんにちわ。
始めてと思えないくらいよく出来ていると思いますよ。

>新卒枠(2011年)でゲーム会社も何社か受けたいと考えているのですが、
>今の作品レベルでは書類選考も厳しいでしょうか…?一応グラフィックを、
>ある程度自前で用意できる点は強みだと思っています(プログラマー職と
>してプラスに繋がるかは疑問ですが)。 

2DとC言語での作品なので、それでOKかどうかは受ける会社次第ですがプログラミングを初めてからの短かい期間で出来たとか、やる気がアピール出来れば受かる確率はアップしますよ。
それとゲーム会社はプログラマとグラフィッカーが分業なので、残念ですがグラフィックが描けることはたぶんプラスには働きません。
万全を期するなら、3DとC++が出来た方が良いと思います。

[追記]
何らかのサンプルを写したコードが有るのは良くないかも知れませんね。自力で組めるようにちゃんと理解してオリジナルのコードに組み替えを検討してください。
それと龍神録と言うか、Dixq(管理人)さんのコーディング・スタイルが色濃く残っていますので、ここを参考にしたのはバレバレですから、それも書いておいた方が良いでしょうね。 編集済み


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

Name: hima  ..ぴよぴよ(12ポイント)   Date: 2010/05/12(水) 13:13   No:51975     
Title: Re:初めてゲーム作ってみました    
遊ばせて頂きました。十分かと思われます。
が、このグラフィックを全て自前で用意したのならば、グラフィッカーのほうがいいかもしれません。
どちらにせよ趣味でゲームを作っていけるというのはそれだけでプラスになります。同人活動をすれば副収入も入りますし。


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

Name: 七兎  ..かけだし(1,359ポイント)   Date: 2010/05/12(水) 22:15   No:51996     
Title: Re:初めてゲーム作ってみました    
>やっくんさん
早速プレイして頂きありがとうございます。
なるほど、障害物ですか。確かに自分でもプレイしていて単調に感じたのは、
そう言った減点要素が無かったからですね。実装はアイテムの追加と減算を
すれば良さそうなので、拡張時には盛り込んでいこうと思います!

キーはゲームパッドとの連動の関係(DXライブラリのデフォルトの割り当て)で、
分かりづらい配置になりました; HTMLの説明書でそこはフォローしたつもりですが、
やっくんさんのように環境によっては開けない方もいる可能性が分かったので、
今後はテキスト形式の説明書も一緒に用意しますね。 

>wingさん
専攻は情報系なのですが、プログラミングは授業レベルなので、
趣味のイラストでフォローした感じになりました^^;

まだまだサンプル感が抜けていなので、wingさんを始め、皆さんのアドバイスを参考に
オリジナリティを出していこうと思います。

>ひよこさん
プレイして頂きありがとうございます。
止め絵しか普段描かないので、瞬きだけでも地味に苦戦しました…!
拡張時にはもう少し絵を追加して、見応え面も強化していきたいですね。

ステージ追加の意見は多く挙がっているので、その辺も頑張りたいです。

>ゆうきさん
勿体ないお言葉ありがとうございます!
プログラムに自信が無かったので、最低限見栄えだけでも良くしようと努めました。
今後は少しずつプログラムも中身のあるものを作っていけたらなぁと思います。

>匿名さん
なるほど、素材選びのセンスですか。
それは特に意識したことが無かったので自分でも新たな発見で驚いております。
凝り性なのが功を奏したのかもしれません。

匿名さんの指摘するようにめんどくさがりの人や、環境によっては見れない人も
考えられるので、今後はテキスト版の説明書も加えますね。

>softyaさん
やはり分業制ですよね;
どちらのスキルもまだまだ未熟なのが我ながら悔しいですorz

最初のゲームでC言語の復習や2Dのコントロールは勉強できたので、
3DやC++の勉強もしていこうと思います。
適切なアドバイスありがとうございました!

>himaさん
ちょくちょく同人誌を制作して、販売会に参加などはしております。
そういう点ではグラフィッカー寄りなのかもしれませんが、デッサンは
高校の授業以来久しくやっていないので、作品提出で詰まるのですよね…。

短期間でどの程度吸収できるか分かりませんが、こちらの掲示板を通して
もう少しプログラムの腕を磨いていこうと思います。


2倍のポイントを手に入れた! 1,236ポイント を手に入れた。

Name: 山崎  ..プログラマー(38,390ポイント)   Date: 2010/05/13(木) 08:04   No:52026     
Title: Re:初めてゲーム作ってみました    
七兎さんにはいつもお世話になっております、山崎です。
七兎さんの絵の腕前にはいつも驚かされるばかりです。

私も最初は意見したときは絵が凝っていたため
「初めての作品でこの絵のクオリティはさすが彼だ」と驚いたものです。
加えて、短い期間でちゃんとゲームとして成り立っているものを作れた、というのも驚きです。
ただ、どこまでがご自身で制作した絵なのかがちょっとわかりにくかったですけれどね。

この作品をゲーム会社に提出する上で、感じた疑問がふたつあります。
・既存のキャラを主人公として作ったゲームは評価が低くなってしまうのでは?
・他人のサンプルコードをもとにしたプログラムは評価が低くなるのでは?

ちょっとこの機会を借りて皆様にお伺いしたいのですが、
上で挙げた二つのポイントは、実際にゲーム会社に作品として提出する上で、
大きなマイナスポイントになったりしないのでしょうか?

会社によって判断は様々だろう、というのが殆どの場合だと思うのですが、
何かご意見を聞かせていただければ幸いです。


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

Name: softya [URL]  ..ハッカー(164,960ポイント)   Date: 2010/05/13(木) 11:26   No:52041     
Title: Re:初めてゲーム作ってみました    
>・既存のキャラを主人公として作ったゲームは評価が低くなってしまうのでは?
プログラマ志望でしたら、全然関係ありません。
ただ、版権に厳しい会社なら多少あるかも知れません。

>・他人のサンプルコードをもとにしたプログラムは評価が低くなるのでは? 
サンプルが無いと作れないと見なされるので、評価は低くなりますね。

仕事で例えば、
先輩「これこれ、こういう仕様で作っておいてくれる?」
新人「はい。分かりました」
 ↓ 数時間経過
先輩「どう?出来た?」
新人「出来てません。本やWEBでサンプルを探したんですが・・・。」
先輩「・・・」
なんて事になるかも知れませんからね。

仕事に入れば、ツール作りを頼まれるかも知れませんし、メニューを作ってくれとか、戦闘ルーチンの一部を作ってくれとか、色々なことがあるわけです(私がゲーム業界に転職したての時に一週間以内に頼まれた仕事の実話です)。当然サンプルがあるわけじゃ無いですから、アルゴリズムを自分で組み立てられる力があるかが重要視されるわけです。


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

Name: 山崎  ..プログラマー(38,430ポイント)   Date: 2010/05/14(金) 12:24   No:52101     
Title: Re:初めてゲーム作ってみました    
softyaさん
ご意見どうもありがとうございます。
版権にびくびくしていた私ですが、どうやらプログラマーとしての応募ならそれほど厳しくないみたいですね。

七兎君、脅かしてゴメンネ


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,187,450ポイント)   Date: 2010/05/14(金) 18:14   No:52123     
Title: Re:初めてゲーム作ってみました    
遅れながら遊ばせて頂きました。

これが初めて作ったゲームとは!
しかも素材が自作なんて素晴らしいですね^^

メニューやコンフィグもしっかり作ってあってすごいなと思いました。

私が初めて作ったゲームなんてそれはそれは酷いものでしたよ・・。
これからのご活躍に期待します^^

しかし2011年入社の新卒募集ってまだやってるんでしょうか・・?


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

Name: softya [URL]  ..ハッカー(165,887ポイント)   Date: 2010/05/14(金) 18:43   No:52124     
Title: Re:初めてゲーム作ってみました    
>しかし2011年入社の新卒募集ってまだやってるんでしょうか・・?

中小なら随時募集(通年採用)もあると思いますが・・・。
大手は終わってるでしょうね。

例えば、AAA(トライエース)は特に次期を設けていませんね。
http://www.tri-ace.co.jp/recruit/index.html
他にも探せばあると思います。

日本一ソフトウェアは5月31日までエントリー受付中。
http://www.nippon1.co.jp/recruit/index.html


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

Name:  ..初心者(8,361ポイント)   Date: 2010/05/15(土) 16:53   No:52157     
Title: Re:初めてゲーム作ってみました    
初めまして。
少し時間がたってしまいましたが、プレイさせていただきました。
ランクはBでした。

感想ですが、絵が上手く音もちょうどあっていると感じたのですごいと思いました。
ただステージが1つなのでちょっと物足りなく感じました。
キャラクターの性能が2段ジャンプ可能or滞空移動速いとかでいくつか作って選択できるようにしてみたらちょっと幅が広がるかなと思いました。

私は初めて作ったものがテトリスだったので、初めてでこのレベルのものを作れるのはとてもすごいと思います。

これからのご活躍を期待しています。





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

Name: 七兎  ..かけだし(1,996ポイント)   Date: 2010/05/19(水) 17:09   No:52348 解決!     
Title: Re:初めてゲーム作ってみました    
返信遅れまして申し訳ありません。

皆さんからいただいた助言を、今後のゲーム制作に活かして
いきたいと思います!


>山崎さん
参考になる質問を提示していただきありがとうございます。
やはり、プログラマーでやっていくからには、“コードが全て”
というわけですね。

まだまだサンプルレベルを逸脱できていないので、そこは
今後も努力を重ねていきたい所存です。

>softyaさん
具体的なエピソードありがとうございます。私も最初の作品とは言え、
本やサンプルに頼っている割合が多いので、今後は基礎を学びつつ、
自分で考えたアルゴリズムを組んでいきたいと思います。

就活はちょくちょく中小を探していきます。

>Dixqさん
ニコ動にアップされていたDixqさんの初期の作品は拝見しました!
戦闘シーンの動きが凝っていて、普通に凄いなぁと思いました。
私ももう少し早いうちにゲームらしいものを作っていればなと
反省しております。

メニューやコンフィグ部分は、自分で動作を考えた部分でしたので、
嬉しいお言葉です。今後はそういう部分を増やしていきたいものです。

>烏さん
キャラクター性能にオプションを付けるのも面白そうですね!
ステージや障害物ばかりにとらわれて、その発想はありませんでした。
今後のバージョンアップの参考にしたいと思います。

いきなり定番でも何でもないゲームを作っちゃったので、
烏さんのように、定番ゲームでもう少し基礎を学んでいきたいです。


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



Name: shizuha  ..ぴよぴよ(196ポイント)   Date: 2010/05/18(火) 15:43   No:52285       
Title: 龍神録の講座について    
はじめましてsizuhaといいます。
タイトルに記しましたが、龍神録の講座について質問があります。
VC++2010をつかってやっているのですが、
"実行してみよう"のところでつまずいてます(早

こぴぺして、実行しているのですが

1>LINK : fatal error LNK1104: ファイル 'libtheora_static_d.lib' を開くことができません。

というビルドエラーが発生していまい、実行できません;

ファイルを開くときにVC++2010に対応するように変換したのですが
それが原因でしょうか?

初歩的(?)かもですがどなたかお助け願いますm(_ _)m 編集済み


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


Name: ムンバ  ..熟練のプログラマー(48,003ポイント)   Date: 2010/05/18(火) 17:18   No:52286     
Title: Re:龍神録の講座について    
こんにちは。

過去ログにありましたので、ご参照下さい。

http://www.play21.jp/board/formz.cgi?action=res&resno=51957&page=&lognum=159&id=dixq&rln=51993


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,190,687ポイント)   Date: 2010/05/18(火) 22:37   No:52315     
Title: Re:龍神録の講座について    
すごいリンクがネストしていますね;

こちらで2008で試すとうまくいくのですが・・。ダウンロードが正常に行われていないのでしょうか?

DXライブラリをダウンロードして、
http://homepage2.nifty.com/natupaji/DxLib/dxdload.html
中にある「プロジェクトに追加すべきファイル_VC用」フォルダにある中身を

project\include\

に上書きコピーしたら解決するでしょうか?


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

Name: ムンバ  ..熟練のプログラマー(48,053ポイント)   Date: 2010/05/19(水) 01:19   No:52326     
Title: Re:龍神録の講座について    
こんばんは。

>>すごいリンクがネストしていますね;

 まさに、人任せの入り子状態ですね;<自分 ---←誤字修正---

おやすみなさい。
  編集済み


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

Name: shizuha  ..ぴよぴよ(5ポイント)   Date: 2010/05/19(水) 14:22   No:52342     
Title: Re:龍神録の講座について    
shizuhaです。

リンクネストありがとうございます(マテ

参考になりました。

DXライブラリの設定をいじったらひとまず実行できました。


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

Name: shizuha  ..ぴよぴよ(46ポイント)   Date: 2010/05/19(水) 14:24   No:52343 解決!     
Title: Re:龍神録の講座について    
> こちらで2008で試すとうまくいくのですが・・。ダウンロードが正常に行われていないのでしょうか?

一応ダウンロードしなおしましたが、無意味でした。


> DXライブラリをダウンロードして、
http://homepage2.nifty.com/natupaji/DxLib/dxdload.html
> 中にある「プロジェクトに追加すべきファイル_VC用」フォルダにある中身を

> project\include\

> に上書きコピーしたら解決するでしょうか?


これもためしましたがやはり意味なし。


プロパティ自体を変更したらうまく実行できました。


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



Name: タマン  ..ぴよぴよ(108ポイント)   Date: 2010/05/18(火) 14:25   No:52277       
Title: 不明な宣言????    
こんにちは。
google等で調べている途中ですが、みなさんの知恵をお借りしたいので質問させていただきます。
現在、とあるオープンソースソフトウェアのコードを調査しているのですが、その中の宣言記述に理解できないものがありました。

---ここから
static int     (*p_app_setbuff) (app_t *, int d);
---ここまで

これは一体どのような宣言なのでしょうか。
関数プロトタイプ宣言ではなさそうですし。。。

どなたかお力をいただけると嬉しいです。
宜しくお願い致します。


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


Name: ドラ  ..初心者(5,177ポイント)   Date: 2010/05/18(火) 15:30   No:52283     
Title: Re:不明な宣言????    
p_app_setbuff は「app_t*型とint型の引数をとり、int型の値を返す関数」
を指す関数ポインタです。

記述がゴチャゴチャしていますが、以下のようにすると多少読みやすくなります。

typedef int Func(app_t *, int);
static Func *p_app_setbuff;


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

Name: たかぎ [URL]  ..ハッカー(189,212ポイント)   Date: 2010/05/19(水) 00:33   No:52324     
Title: Re:不明な宣言????    
慣れれば、へたにtypedef名にするより、元の書き方のほうが読みやすくなります。
typedef名にすると、一見して関数へのポインタだとは気付きませんよね。


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

Name: ookami  ..上級者(16,232ポイント)   Date: 2010/05/19(水) 08:45   No:52334     
Title: Re:不明な宣言????    
おはようございます。
皆さんの仰るとおりなので、参考リンクだけ↓
http://www.geocities.jp/ky_webid/c/043.html


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

Name: ドラ  ..初心者(5,070ポイント)   Date: 2010/05/19(水) 12:57   No:52341     
Title: Re:不明な宣言????    
>慣れれば、へたにtypedef名にするより、元の書き方のほうが読みやすくなります。 
>typedef名にすると、一見して関数へのポインタだとは気付きませんよね。

そうですね。
関数ポインタに不慣な人の理解を助けるための脳内イメージとして書きました。


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



Name: ななし  ..かけだし(1,924ポイント)   Date: 2010/05/18(火) 20:17   No:52291       
Title: int型配列が戻り値の関数    
int型配列を戻り値にする関数を作りたいのですが、配列は戻り値に指定できないため、intのポインタを反すものを用意しました。
が、その配列から受け取ったデータをfor文でまわし、添字アクセスするとなかみがみれませんでした。文法的によろしくなかったのでしょうか?


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


Name: box  ..ハッカー(152,712ポイント)   Date: 2010/05/18(火) 20:20   No:52292     
Title: Re:int型配列が戻り値の関数    
ソースコードを見せてください。
詳しい話はそれからです。


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

Name: ななし  ..入門者(2,548ポイント)   Date: 2010/05/18(火) 20:28   No:52293     
Title: Re:int型配列が戻り値の関数    
質問主です。
あるクラスAで
// クラスのメンバ変数
int _array[5];
を宣言し、
for(int i=0; i<sizeof(_array)/sizeof(_array[0]); i++){
    _array = i;
}
のように初期化し、
そのクラスのメンバ関数として
int* getArray()
{
    return _array;
}
を用意し、
別のクラスから
int* array = Aクラスへのポインタ->getArray();//配列取得
int arraysize = sizeof(array)/sizeof(array[0]);//arraysizeが1になっている
for(int i=0; i<arraysize; i++){
    _array = i;
}
といった感じ取得しましたが配列の先頭しか見えてませんでした。
説明が下手ですみません。よろしくお願いします。


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

Name: たいちう  ..比類無きプログラマー(81,959ポイント)   Date: 2010/05/18(火) 20:37   No:52295     
Title: Re:int型配列が戻り値の関数    
> といった感じ取得しましたが配列の先頭しか見えてませんでした。
> 説明が下手ですみません。よろしくお願いします。

配列の先頭アドレスだけから、配列の長さを知ることはできません。
次のような方法などなら使えます。
私だったらstd::vectorを使いますけど。
int ClassA::getArray(int **array) {
    *array = array_;
    return sizeof(array_)/sizeof(array_[0]);
}


それとC/C++で、変数名を"_"で始めてはいけません。
全て予約語です。


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

Name: ななし  ..入門者(2,843ポイント)   Date: 2010/05/18(火) 21:05   No:52298 解決!     
Title: Re:int型配列が戻り値の関数    
たいちうさん

>配列の先頭アドレスだけから、配列の長さを知ることはできません。 
確かに、そうですね。
というか配列サイズもですが、添え字アクセスした中身もデバッガで追ったところ
見えていませんでした。

>私だったらstd::vectorを使いますけど。 
今回は配列が固定だったので素直に書いていました。
vectorで同じように書いてみたところ、サイズも.size();で取得できるしこちらの方が使い勝手よさそうですね。

>それとC/C++で、変数名を"_"で始めてはいけません。
>全て予約語です。 
予約語とは知りませんでした。
今回はメンバ変数に目印として付けていましたが、今後気をつけます。
 
vectorで要求する動作ができましたので打ち切りたいと思います。ありがとうございました。


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

Name: たかぎ [URL]  ..ハッカー(188,272ポイント)   Date: 2010/05/18(火) 21:40   No:52301     
Title: Re:int型配列が戻り値の関数    
サイズが固定なら、arrayクラステンプレートを使うか、配列へのポインタを使うのもよいかと思います。

int (*getArray())[5];

のようにです。

> それとC/C++で、変数名を"_"で始めてはいけません。 
> 全て予約語です。 

違います。
Cの場合、下線で始まり、下線または大文字が続く識別子は予約済み識別子になります。
また、通常の名前空間またはタグ名前空間におけるファイル有効範囲を持つ識別子については、下線で始まる全識別子が予約済み識別子になります。

C++の場合、1個の下線で始まり大文字が続くか、2個の下線を含む識別子は予約名になります。
また、下線で始まる名前は、大域的名前空間における名前として処理系に予約されています。

ルールが煩雑ですので、下線で始まる名前は全廃する方が無難ですが、だからといって、下線で始まる名前があらゆる状況で常に予約されているわけでもなければ、予約語でもありません。


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

Name: ななし  ..入門者(3,128ポイント)   Date: 2010/05/19(水) 10:50   No:52336     
Title: Re:int型配列が戻り値の関数    
解決済みとしましたがあらたな所でつまずきました。

>配列の先頭しか見えてませんでした。
は解決したのですが、次にこの取得した配列(_array)を
Bクラスのローカル関数の中で

int* array = Aクラスへのポインタ->getArray();//配列取得
for(int i=0; i<sizeof(array)/sizeof(array[0]); i++){ 
    array[i] = 10;//値を代入
}
といったように上書きして保存する、ということをしたいのですが
毎ループ上書きした値が保持されていません。
この場合
arrayをAクラスのstaticなメンバ変数として宣言し、値を一意に保つようにするのがよいのでしょうか?

>予約語
ルールを一度調べて確認してみたいと思います。


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

Name: たいちう  ..比類無きプログラマー(81,929ポイント)   Date: 2010/05/19(水) 11:11   No:52338     
Title: Re:int型配列が戻り値の関数    
予約語は言いすぎでしたね。予約されていると書くつもりでした。

が、予約されていないこともあるとは...orz
ご指摘ありがとうございました。


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



Name: kurouma  ..ぴよぴよ(770ポイント)   Date: 2010/05/13(木) 01:08   No:52014       
Title: C++初心者で全くわかりません.    
0 からa-1 までの整数の乱数をn 個発生させ、発生した整数のヒストグラムを
プリントアウトして下さい。
a とnはコマンドラインから引き渡します。

この問題では、乱数および配列の使い方を勉強します。特にヒストグラムに使う配列につ
いては、本を見て、よく理解して下しさい。

ヒント:0 からa-1 までの整数を発生する乱数の書き方は
(int)((double)rand()/((double)RAND_MAX+1) *a); 

です。

プログラム内で

printf(“%d\n”, RAND_MAX); 
とすれば、RAND_MAX の値が分かります。皆さんのPC では、RAND_MAX がいくつに
なっているかも調べて報告して下さい。

たとえば、プログラムをRandHist としたとき
RnadHist 10 1000 

と入力すれば

0 982 
1 1035 
2 956 
3 1102 


9 971 

などと。出力されるようなプログラムを作る問題です。a とn は、任意に変えられるように
して下さい。

配列に関する解説を追加します。説明はshort の配列になっていますが、他のタイプ(char, 
int, float)でも同じ事です。


一般に、領域(配列)の確保には2つの方法があります。short で先頭番地b から10 個の
要素(20 バイト)を確保する場合を例にとって説明します。

1 コンパイル時に確保する。

short b[10]; 
要素数が少ないとき(大体2000 個くらいまで)に主に使います。


2 実行時に確保する。

short *b; 

b を使う前に、
b=new short[10]; 

を実行します。
new 関数で、[]の中に書かれた要素数だけ領域を確保し、この時、領域の先頭番地がb の中
に代入されます。画像では、この方法を使います。また、実行してみなければ、配列の要
素数が確定しない場合などは、必須の方法です。

方法1でも2でも、確保した後の使用法は全く同じです。たとえば、

b[5]=200; 

などと使います。

この問題には、1と2 の両方のプログラムを作って下さい。ただし、1 の方法を使えば、a 
の最大値に制限が付きます。

というものです.お願いします.


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


Name: やっくん  ..上級者(20,711ポイント)   Date: 2010/05/13(木) 01:39   No:52017     
Title: Re:C++初心者で全くわかりません.    
<規約と注意事項>からの転載です。
1. 自分は今何がしたくて
2. どう取り組んで(作ったプログラムはどれで
3. どのようなエラーやトラブルで困っていて
4. 自分は何が解らないのか、知りたいのか
5. 今のCの知識はどの程度なのか
この5点をしっかりと明記して下さい。
環境に依存する場合やライブラリを使っているときは
使っているOS名・コンパイラ名・ライブラリ名も明記しましょう。
コンパイルエラーの質問時は必ず最低限のエラーメッセージも書きましょう。

--------

全くわからないとありますが、どの辺りまで理解しているのでしょうか??
本当に全くわからないのであれば教科書、参考書などを最初から読むことをお勧めします。


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

Name: kurouma  ..かけだし(1,260ポイント)   Date: 2010/05/17(月) 01:08   No:52230     
Title: Re:C++初心者で全くわかりません.    
現在このようなプログラムを書いています.
しかし,思ったように乱数表示,ヒストグラムのプリントアウトができず困っています.

配列については静的確保,動的確保については多少理解できましたがアドバイスいただけると幸いです.

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

int main(int argc, char *argv[])
{
int a[10]={0,1,2,3,4,5,6,7,8,9};      //配列(静的確保)
int n;                    //乱数の数用
int i,j,k,m;                            //forループ用変数

a[10]=atoi(argv[1]);                      //atoi関数
n=atoi(argv[2]);             //atoi関数

//引数のチェック
if(argc!=3)
{
printf("引数の数が違います\n");
exit(0);
}

//引数の表示
for(j=0; j<argc; j++)
        {
        printf("argv[%d]=%s\n",j,argv[j]);
        }

//乱数
for(k=0; k<n; k++) 
{
n=(int)((double)rand()/((double)RAND_MAX+1) * a[10]);

}

for(m=0; m<a[10]; m++)
{
printf("%d %d\n",m,a[k]);
}
}


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

Name: たかぎ [URL]  ..ハッカー(188,202ポイント)   Date: 2010/05/18(火) 01:16   No:52260     
Title: Re:C++初心者で全くわかりません.    
> プリントアウトができず困っています.

環境に依存しない方法はありません。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,191,272ポイント)   Date: 2010/05/18(火) 22:59   No:52317     
Title: Re:C++初心者で全くわかりません.    
まず、円滑に情報交換する為には、回答者さんの質問に漏れなく答える事が不可欠ですので、
なるべく聞かれている事に漏れが無いか確認して下さいね。
(とくにやっくんさんに聞かれた事)


1.
「プリントアウト」とはプリンターで印刷することを意味しますが、そうしたいのですか?
で、あればより環境についての補足が必要になります。

それともプリントアウトという言葉が誤用で、たんに画面に出したいだけでしょうか?
ヒストグラムはどうやって出力するのでしょうか?
アスタリスク?エクセル?本当に画像か何かにしてプリントアウト?


2.
わざわざstdlibインクルードしてexit使わなくてもreturnで終われますよ。


3.
main関数の最後にreturnが必要です。


4.
RnadHist 10 1000 
と入力して何故1000以上の値が出るのか解りません。
どういう仕様なのでしょうか?


5.
乱数をnに入れているようですが、nはループの上限にも使っています。
生成した乱数はどこに入れるべきですか?


6.
for文のカウンタ変数を全て分ける必要はありません。全て同じiで統一して大丈夫です。


7.
int a[10];
で確保すると、10個の入れ物が出来ます。

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]

さて、[10]はあるでしょうか?
そう、a[10]に値を代入することは出来ません。


8.
a宣言時に入れている値はどこで使う予定ですか?


9.
atoi(argv[1]);とatoi(argv[2]);はそれぞれ何を意味し、何の変数に入れなければならないですか?


まずはこの辺を整理してみましょう。
しかし

>本を見て、よく理解して下しさい。 

こういうとこまではいらないのでは・・


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

Name: たかぎ [URL]  ..ハッカー(189,050ポイント)   Date: 2010/05/18(火) 23:15   No:52319     
Title: Re:C++初心者で全くわかりません.    
> main関数の最後にreturnが必要です。

C++(またはC99)では、mainの最後のreturn文を省略すると、return 0;が記述されたものとみなされます。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,191,280ポイント)   Date: 2010/05/19(水) 00:08   No:52320     
Title: Re:C++初心者で全くわかりません.    
C++でしたか・・。

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

Name: たかぎ [URL]  ..ハッカー(189,139ポイント)   Date: 2010/05/19(水) 00:13   No:52321     
Title: Re:C++初心者で全くわかりません.    
> C++でしたか・・。

まあ、タイトルは「C++初心者で全くわかりません.」ですが、C++初心者なのはkuroumaさんの状態であって、いま対象にしているのは別の言語という可能性もないわけではありませんね。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,191,496ポイント)   Date: 2010/05/19(水) 00:23   No:52322     
Title: Re:C++初心者で全くわかりません.    
それから

>ヒント:0 からa-1 までの整数を発生する乱数の書き方は 
>(int)((double)rand()/((double)RAND_MAX+1) *a);  

というのはすごく抵抗があるのは私だけでしょうか・・。

現在はaがRAND_MAXまでである事を想定しているのでしょうから問題ないのでしょうが、
RAND_MAXよりaが十分大きい時は0〜a-1にはならないですよね。

それにaがRAND_MAXまでだったとしても、わかりにくい計算式のような気がします。

私なら0〜aの生成は

(double) rand() / RAND_MAX * a

と書くでしょうか。
aが大きくなくて、RAND_MAXがINT_MAXより十分小さければintだけで計算出来るように

rand() * a / RAND_MAX

もありでしょうが、今回はしない方が良いでしょうね。


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



Name: JJ  ..ぴよぴよ(9ポイント)   Date: 2010/05/18(火) 21:43   No:52302       
Title: 分割コンパイルで分からないことがあります    
『分割コンパイル時に、複数のファイルのそれぞれで、同じ名前の大域変数の定義を行った場合、どういう結果になるか示せ。また、エラーになった場合はその原因を示せ』という課題なのですが、まったくわからないので手を貸してください

コンパイルすることができない状況なので、誰か答えを教えてください


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


Name: たかぎ [URL]  ..ハッカー(188,539ポイント)   Date: 2010/05/18(火) 21:46   No:52304     
Title: Re:分割コンパイルで分からないことがあります    
言語も処理系も不明なので、正確なことが何もいえませんが...

1. 「大域変数」の定義を明確にしてください。

2. 複数のファイルとありますが、複数の翻訳単位ではなく、複数のソースファイルということでよろしいですね?


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

Name: JJ  ..ぴよぴよ(17ポイント)   Date: 2010/05/18(火) 22:04   No:52306     
Title: Re:分割コンパイルで分からないことがあります    
すいませんが、課題には書いたとおりの事しか書いていないのでよく分かりません・・・
分かる範囲でいいので回答をお願いします


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

Name: たかぎ [URL]  ..ハッカー(188,646ポイント)   Date: 2010/05/18(火) 22:07   No:52308     
Title: Re:分割コンパイルで分からないことがあります    
質問者自信がわからないことを、回答者がわかるはずがありません。

> 分かる範囲でいいので

不明な点を勝手に解釈してよいなら回答可能ですが、それでよいのでしょうか?


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

Name: JJ  ..ぴよぴよ(36ポイント)   Date: 2010/05/18(火) 22:41   No:52316     
Title: Re:分割コンパイルで分からないことがあります    
不明な点を勝手に解釈していただいてよいので回答お願いします

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

Name: たかぎ [URL]  ..ハッカー(189,019ポイント)   Date: 2010/05/18(火) 23:10   No:52318     
Title: Re:分割コンパイルで分からないことがあります    
言語はC++で、「大域変数」とは大域的名前空間有効範囲を持つオブジェクトのことだと解釈します。

> 分割コンパイル時に、複数のファイルのそれぞれで、同じ名前の大域変数の定義を行った場合、どういう結果になるか示せ。

1. 同一翻訳単位に属している複数のファイルで、同じ名前の大域変数の定義を行った場合はコンパイルエラーを生じる。
2. 異なる翻訳単位に属している複数のファイルで、同じ名前を持ち、かつ外部結合を持つ大域変数の定義を行った場合はリンクエラーを生じる。
3. 異なる翻訳単位に属している複数のファイルで、同じ名前を持つ大域変数を定義した場合でも、内部結合を持つ場合は原則として問題ない。
4. 異なる翻訳単位に属している複数のファイルで定義された同じインライン関数またはテンプレートで、3.の条件に合致する大域変数を挙用した場合はエラーを生じる場合がある。
5. GCCのように、1.から4.に該当する大域変数であっても、初期化子を伴わない定義の場合は問題なく利用できる処理系もある。

> エラーになった場合はその原因を示せ

単一定義規則違反


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



Name: しろ  ..ぴよぴよ(762ポイント)   Date: 2010/05/18(火) 22:02   No:52305       
Title: 変数の宣言に関する質問です。    
C言語を勉強中の超初心者です。


九九の表を作るプログラムで

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

#include<stdio.h>

int main(void){

    int i,j;
    int k=i*j;
    

    for(i=1;i<=9;i++){
        for(j=1;j<=9;j++){
            
            printf("%d\t",k);
        }
        printf("\n");
    }


    return 0;

}

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

とするとエラーがでました。


int k=i*j;

の位置の問題で試しに

for(j=1;j<=9;j++){
            int k=i*j;
            printf("%d\t",k);
        }

のよう入れ子にするとうまくいきます。

これはなぜなのでしょうか?


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


Name: たかぎ [URL]  ..ハッカー(188,597ポイント)   Date: 2010/05/18(火) 22:06   No:52307     
Title: Re:変数の宣言に関する質問です。    
処理系不明なので詳しいことはいえませんが...

> エラーがでました。 

どんなエラーが出たのでしょうか?
警告ならわかりますが、エラーが出る状況ではないと思います。


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

Name: しろ  ..ぴよぴよ(890ポイント)   Date: 2010/05/18(火) 22:12   No:52309     
Title: Re:変数の宣言に関する質問です。    
説明不足で申し訳ありません。。

visual studioでソリューションのビルド→デバックなしで実行

とするとDebug error

Run-time check failure#3 the variable 'i' is being used without being intialized

とでます。

英語は苦手なのでなんのことやら? といった感じなのですが・・・・・・


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,190,364ポイント)   Date: 2010/05/18(火) 22:23   No:52311     
Title: Re:変数の宣言に関する質問です。    
和訳に困ったらエキサイト翻訳っ!
http://www.excite.co.jp/world/english/

と思いましたが、とんでもない和訳になりますね;
私も英語が苦手なので、気持ちはよく解ります。

・・が、別に完璧な和訳が出来なくてもなんとなく意味は解りませんか?

「initialize」は「初期化する」ですよね?
で、
「without」が「〜なしに」
で、
「use」が「使う」

この辺で大体解ってきませんか?
苦手意識を持たずにとりあえず挑戦してみて下さい。

また、変数は初期化せずに使うとエラーを引き起こす原因になります。
変数は用意しただけではゴミが入っています。

何も代入していない物を表示させても意味ありませんしね。
ということで、上のプログラムに置いて、i,jは使われていますか?
使うことなくkに代入していませんか?

もしこの意味が解らないようなら、プログラムの処理の順番が解っていないのだと思います。
プログラムは上から下へと処理が流れます。
ですから

int i,j;
int k = i*j;

では、kに何がはいっているのかわかりません。
i,jには何が入っているか解らないのですから。

iとjは下で掛け算に使っているじゃないかと思うかもしれませんが、
kに代入した時点で掛け算の処理は行われていませんよね。

例えば

「りんごを受け取る」
「みかんを受け取る」
「2つの果物を絞る」

という3つの動作があったとしましょう。
今やってる順番は

「2つの果物を絞る」
「りんごを受け取る」
「みかんを受け取る」

になってしまっているのです。ですから、絞るものが無くて困っているのです。
iとjに値を代入してあげてから掛け算の結果を代入しましょう。


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

Name: しろ  ..ぴよぴよ(936ポイント)   Date: 2010/05/18(火) 22:30   No:52313 解決!     
Title: Re:変数の宣言に関する質問です。    
>プログラムは上から下へと処理が流れます。 

なるほど、ありがとうございます。おかげで理解できました。

なお、北大通り沿いにある北15条くらいの郵便局向かいの孔子飯店の四川麻婆豆腐は世界一です。 編集済み


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,190,594ポイント)   Date: 2010/05/18(火) 22:35   No:52314     
Title: Re:変数の宣言に関する質問です。    
何の話かと思えば札幌の話でしたか、今度チェックしてみます^^;

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



Name: しん  ..ぴよぴよ(322ポイント)   Date: 2010/05/18(火) 03:46   No:52264       
Title: コンパイル時に暗号!?    
コンパイルするときに暗号化ってできますか?

開発環境
VC++ 2008
Windows XP SP3
C言語使用

VC++のコマンドプロントで
cl ○○.c
とやるとコンパイルが実行されて
○○.exe
という実行ファイルが作成されます。
※いつもCUIでコンパイルしてるので
 GUIの方はわかりません。

作成された実行ファイルを逆アセンブラすると
簡単にソースがわかりました。
これを回避するにはソースの暗号化しか
ないと思うのですが、どのように暗号化したら
よろしいのでしょうか?

よろしくお願いします。


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


Name: 御津凪 [URL]  ..ハッカー(141,756ポイント)   Date: 2010/05/18(火) 09:58   No:52268     
Title: Re:コンパイル時に暗号!?    
> 作成された実行ファイルを逆アセンブラすると
> 簡単にソースがわかりました。

デバッグ実行時の逆アセンブラ表示でのことでしょうか?
そうなのであればデバッグを助ける為にアセンブラコードと共にソースコードも一緒に表示されているだけです。

配布が行えるリリース版でビルドすれば、逆アセンブラしても元のソースコードは(ソースコードも一緒に配布していない限り)現れません。


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

Name: しん  ..ぴよぴよ(347ポイント)   Date: 2010/05/18(火) 13:49   No:52273     
Title: Re:コンパイル時に暗号!?    
すみません。。
配布が行えるリリース版というのはなんでしょうか?
VC++ 2008に付属していますか?


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

Name: Dixq (管理人)  ..ウィザード(1,190,339ポイント)   Date: 2010/05/18(火) 14:15   No:52275     
Title: Re:コンパイル時に暗号!?    
メニューバーのとこに「Debug」か「Release」か選択出来るところがありますからそれをReleaseにしてください

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

Name: しん  ..ぴよぴよ(395ポイント)   Date: 2010/05/18(火) 14:18   No:52276     
Title: Re:コンパイル時に暗号!?    
普段VC++のコマンドプロントでコンパイルしているので
GUIの方のコンパイルがちょっと・・・・

コマンドプロントではできませんか?


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

Name: 御津凪 [URL]  ..ハッカー(142,064ポイント)   Date: 2010/05/18(火) 15:10   No:52279     
Title: Re:コンパイル時に暗号!?    
コマンドプロンプトではデバッグ・リリースの区別がありませんでしたね。すみません。
デバッグ情報を含めた実行ファイルにはビルドしたディレクトリなどの個人情報が紛れ込むことがあるため、
上記の記事のように書きました。(他にも理由がありますが)

通常のコマンド(cl main.c とか)では、デバッグ情報無し、最適化無しなどの状態でコンパイルします。
つまりこのような形で作られた実行ファイルにはデバッグ情報は入っていません。

dumpbin /all /out:dump.txt ○○.exe
で実行ファイルの中身を見れますが、元のソースコードの記述はどこにも無いはずです。

しんさんの仰る「ソース」が機械語(実行ファイル内のデータ)から逆アセンブルして現れるアセンブラコードのことであれば、
それを暗号化するようなことは出来ません。
(OS が理解できないコードになるため)

符号化するプログラムを含めれば実現できなくもないですが、結局そのプログラムは暗号化できないコードになるので、
突き詰めれば結局元のコードが解ってしまいます。

簡単にコードを見れないように、ということであればそのようにしてもいいのですが、
変なことをやるとセキュリティソフトにウイルスと誤認されてしまいます。


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

Name: しん  ..ぴよぴよ(468ポイント)   Date: 2010/05/18(火) 15:21   No:52280 解決!     
Title: Re:コンパイル時に暗号!?    
なるほど。
そうだったんですか・・・

私が言ったソースとは
アセンブラコードもそうですが
たまにprintfので出力する文字列が
そのまま逆アセンブルで表示されることが
あるので、そういうのをなくしたかったです。

逆を言えばどんなソフトでも
アセンブラを理解していれば
Cのソースはバレてしまうということですね。

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


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

Name: しん  ..ぴよぴよ(591ポイント)   Date: 2010/05/18(火) 15:21   No:52281 解決!     
Title: Re:コンパイル時に暗号!?    
なるほど。
そうだったんですか・・・

私が言ったソースとは
アセンブラコードもそうですが
たまにprintfので出力する文字列が
そのまま逆アセンブルで表示されることが
あるので、そういうのをなくしたかったです。

逆を言えばどんなソフトでも
アセンブラを理解していれば
Cのソースはバレてしまうということですね。

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


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

Name: Dixq (管理人)  ..ウィザード(1,190,410ポイント)   Date: 2010/05/18(火) 18:03   No:52288     
Title: Re:コンパイル時に暗号!?    
文字列を発見されないようにするだけなら文字コードをあるキーで排他的論理和をとった数値とキーで表示するなどしてみたらどうでしょう?
もっと簡単にいえば、文字コード+1しただけでパッと見はわからくなると思います。


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



Name: ムウ  ..ぴよぴよ(782ポイント)   Date: 2010/05/17(月) 20:41   No:52247       
Title: C言語の問題がわかりません    
 親の血液型と子の血液型の関係を扱うプログラムを考えます。血液型にはAA、AB、AO、BB、BO、OOの 6通りがあるとします。x, y, z, wのそれぞれが、A,B,Oのいずれかであるときに、xy型の父親とzw型の母親からは、 xz型、xw型、yz型、yw型のどれかの型の子供が生まれるものとします。ただし、BA,OA,OB型はそれぞれ AB、AO,BO型と同一であると考えることにし、AB、AO、BOを正式の呼び名とします。例えば、AO型の父親とBB型の母親からは、ABまたはBO型の子供が生まれます。

血液型AA、AB、AO、BB、BO、OOのそれぞれを順に番号0、1、2、3、4、5 で表すことにします。 3つの番号 n1、n2、n3 を入力し、番号n1の血液型の父親と番号n2の血液型の母親から、番号n3の血液型の子供が生まれる可能性があるかどうかを判定するプログラムを書いてください。出力の形式は、可能性のあるとき
Possible: father %1, mother %2, child %3
可能性のないとき
Impossible: father %1, mother %2, child %3
としてください。ここで、%1、%2、%3のところには、順に父親、母親、子の血液型がはいります。血液型は、出力においては番号で示すのではなく、AA、ABなど半角の 2文字で表現してください。

この問題で# 父親の型と母親の型の組み合わせ 6*6=36 通りのそれぞれを別個に処理するのは大変です。
血液型をふたつの要素に分解してから判定をすると楽だと思い、父親の血液型を変数 f1 と f2 を使って表すことにし、A、B、O をそれぞれ 0、 1、 2 で表すとすれば、血液型が AO のときは、f1 = 0, f2 = 2、 BB のときは f1 = 1, f2 = 1 としました。
途中まではプログラムを書いてみたのですが、よくわからなくなってしまったのでどなたかご教授お願いします

#include <stdio.h>
int main(void){

int n1, n2, n3;
int x, y, z;
int f1, f2;
int m1, m2;
int c1, c2;
scanf("%d", &x);
scanf("%d", &y);
scanf("%d", &z);

if(x == 0)
f1 = 0;
f2 = 0;
if(x == 1)
f1 = 0;
f2 = 1;
if(x == 2)
f1 = 0;
f2 = 2;
if(x == 3)
f1 = 1;
f2 = 1;
if(x == 4)
f1 = 1;
f2 = 2;
if(x == 5)
f1 = 2;
f2 = 2;

if(y == 0)
m1 = 0;
m2 = 0;
if(y == 1)
m1 = 0;
m2 = 1;
if(y == 2)
m1 = 0;
m2 = 2;
if(y == 3)
m1 = 1;
m2 = 1;
if(y == 4)
m1 = 1;
m2 = 2;
if(y == 5)
m1 = 2;
m2 = 2;

if(z == 0)
c1 = 0;
c2 = 0;
if(z == 1)
c1 = 0;
c2 = 1;
if(z == 2)
c1 = 0;
c2 = 2;
if(z == 3)
c1 = 1;
c2 = 1;
if(z == 4)
c1 = 1;
c2 = 2;
if(z == 5)
c1 = 2;
c2 = 2;

if(f1 == c1 || m1 == c1){
if(f2 == c2 || m2 == c2)
printf("Possible: father %d, mother %d, child %d")
}
printf("Impossible: father %d, mother %d, child %d", x, y, z)
return(0);
}


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


Name: lbfuvab  ..プログラマー(26,793ポイント)   Date: 2010/05/17(月) 20:57   No:52249     
Title: Re:C言語の問題がわかりません    
まず、
if(z == 0)
c1 = 0;
c2 = 0; 


などの記述がありますが、
これでは"c2 = 0"は無条件に実行されますが、それでよいのでしょうか?

後、見づらいのでpreタグでインデントをつけてください。


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

Name: ムウ  ..かけだし(1,230ポイント)   Date: 2010/05/17(月) 21:03   No:52251     
Title: Re:C言語の問題がわかりません    
すいません;;

#include <stdio.h>
int main(void){

 int n1, n2, n3;
 int x, y, z;
 int f1, f2;
 int m1, m2;
 int c1, c2;
 scanf("%d", &x);
 scanf("%d", &y);
 scanf("%d", &z);

 if(x == 0){
  f1 = 0;
  f2 = 0;
 }
 if(x == 1){
  f1 = 0;
  f2 = 1;
 }
 if(x == 2){
  f1 = 0;
  f2 = 2;
 }
 if(x == 3){
  f1 = 1;
  f2 = 1;
 }
 if(x == 4){
  f1 = 1;
  f2 = 2;
 }
 if(x == 5){
  f1 = 2;
  f2 = 2;
 }

 if(y == 0){
  m1 = 0;
  m2 = 0;
 }
 if(y == 1){
  m1 = 0;
  m2 = 1;
 }
 if(y == 2){
  m1 = 0;
  m2 = 2;
 }
 if(y == 3){
  m1 = 1;
  m2 = 1;
 }
 if(y == 4){
  m1 = 1;
  m2 = 2;
 }
 if(y == 5){
  m1 = 2;
  m2 = 2;
 }

 if(z == 0){
  c1 = 0;
  c2 = 0;
 }
 if(z == 1){
  c1 = 0;
  c2 = 1; 
 }
 if(z == 2){
  c1 = 0;
  c2 = 2;
 }
 if(z == 3){
  c1 = 1;
  c2 = 1;
 }
 if(z == 4){
  c1 = 1;
  c2 = 2;
 }
 if(z == 5){
  c1 = 2;
  c2 = 2;
 }
 if(f1 == c1 || m1 == c1){
  if(f2 == c2 || m2 == c2)
   printf("Possible: father %d, mother %d, child %d")
 }
 printf("Impossible: father %d, mother %d, child %d", x, y, z)
 return(0);
}


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

Name: たいちう  ..比類無きプログラマー(81,330ポイント)   Date: 2010/05/17(月) 21:18   No:52252     
Title: Re:C言語の問題がわかりません    
人に見てもらうプログラムは、原則としてコメントを付けましょう。
よくわからなくなってしまった、とありますが、
判りやすいコメントがあれば、自分でももう少し先に進めるのでは?


# 面白そうな題材なので、そのうち私もプログラムを書いてみますが、
# 他の人のプログラムも読んでみたいです。
# でも質問者が解決する前に模範解答やマニアックな解答を載せるのには抵抗があります。

# で、(どちらかというと自分勝手な)提案ですが、

# > 父親の型と母親の型の組み合わせ 6*6=36 通りのそれぞれを別個に処理するのは大変です。

# それぞれ別個に処理するプログラムを完成させてはいかがですか?
# 例えベストではなくても、仕様を満たすプログラムを自力で完成させることは大切です。
# 曲がりなりにも自分で解答を得た後ならば、私としては喜んで別解を提示できますが。
# (それまでは基本的にはアドバイスのみです)


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

Name: ぽこ  ..中級者(10,814ポイント)   Date: 2010/05/17(月) 21:32   No:52253     
Title: Re:C言語の問題がわかりません    
> この問題で# 父親の型と母親の型の組み合わせ 6*6=36 通りのそれぞれを別個に処理するのは大変です。
組み合わせは多くても4パターンでそれぞれが第3引数とマッチするか見た方が良くないですか?


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

Name: たいちう  ..比類無きプログラマー(81,846ポイント)   Date: 2010/05/18(火) 13:52   No:52274     
Title: Re:C言語の問題がわかりません    
昨夜色々書いたけど、時間ができたので気が変わって作成。
元の問題の解答ではないですが、参考にはなるかと。
昨夜書いた色々よりもコードの方が短いという罠。
時間もかからんかったし。
#include <iostream>
#include <string>

using namespace std;

bool check(const string &bt1, const string &bt2, const string &bt3) {
    string u = bt3.substr(0, 1);
    string v = bt3.substr(1, 1);
    return (bt1.find(u) != string::npos && bt2.find(v) != string::npos) ||
           (bt1.find(v) != string::npos && bt2.find(u) != string::npos);
}

int main() {
    const string bt[] = { "AA", "AB", "AO", "BB", "BO", "OO" };
    for (int i = 0; i < 6; i++)
        for (int j = i; j < 6; j++) {
            cout << bt[i] << ", " << bt[j] << " -> ";
            for (int k = 0; k < 6; k++)
                if (check(bt[i], bt[j], bt[k]))
                    cout << bt[k] << " ";
            cout << endl;
        }
    return 0;
}


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



Name: ookami  ..中級者(13,021ポイント)   Date: 2010/05/15(土) 01:45   No:52130       
Title: 【雑談】知らない人同士でのゲーム作りで気をつけること    
こんばんは。ookamiです。初めての【雑談】なので不備あったらすみません。


時々、インターネット上でゲーム作りの人員募集をする人を見かけます。

例えば...
http://www.tekepon.net/fsm/modules/reqbb/viewtopic.php?topic_id=1072&forum=8 魔女の一枚絵の製作依頼
http://www.tekepon.net/fsm/modules/reqbb/viewtopic.php?topic_id=3987&forum=9 別の素材サイトさんの一枚絵を別の人が歩行グラフィック化依頼
↑のように、質問や依頼が 具体的・ピンポイント であればあるほど、直接的な回答が集まりやすいですね。

それに対して...
http://www.freem.ne.jp/cgi-bin/bbs/party/osiete.cgi/mode_view/no_992/p_3/
↑のように、募集文を読んでも、何がしたいのかボンヤリ・大枠は分かるのですが、具体的な作業レベルに落としこめていないためか、心温まるアドバイス(笑)が乱れ飛んでいる例もあります。


正解はないとは思いますが、インターネット上での面識の無い人同士でのゲーム作りに際して、こんな事に気をつけるべき、とか、こんなツールが便利、など、識者の方々の見識を伺いたくスレッド立てました。

とりあえず呼び水としてはこんなところであります。
・仕様を明確にし、メンバーの誰もが「何が正しい状態か」常に分かるようにする。
・役割分担を明確に決める。
・利権(著作権)や配当などのルールをプロジェクト開始前に明確に決める。
・制作期間(〆切り)を決める。
・プロジェクト開始前に、各人のスキルやセンスが分かるとベター。

結果的には↓このスレッドの抜粋みたいになってしまいました。
http://www.play21.jp/board/formz.cgi?action=res&resno=50517&page=&lognum=156&id=dixq&rln=50912

よろしくお願いします。


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


Name: Dixq (管理人) [URL]  ..ウィザード(1,189,538ポイント)   Date: 2010/05/15(土) 03:17   No:52135     
Title: Re:【雑談】知らない人同士でのゲーム作りで気をつけること    
3つ目のリンク先は募集もコメントも酷いですね・・。
やはりリーダーを務めるつもりが無い人が見ず知らずの人たちと一つの作品を作る募集をかけるのは無理がありますよねぇ。

以前下のリンク先で「過去に失敗した経験があるので・・」とか言っていますが、
私もいくつか参加させてもらった事があるんですよね。
その時は私がリーダーではなく、声をかけてもらって参加しました。

全て完成までたどり着いた事はありません・・。

何が一番大変って、企画?みんなの想像図の一致?コミュニケーション?
いや、一番大変なのは、全員のモチベーションが最後まで持続するようにすることだと思います。
フリーゲームだと余計にそうでしょう。

人数が多ければ多いほど、途中で飽きて連絡が取りにくくなる人が出てくる可能性高くなると思います。

しかも、全く見ず知らずの人ですから「締め切り過ぎましたけどまだですか?」みたいなメールを送ると
「解ってるようるさいな・・」って雰囲気になってしまい、更に相手のモチベーションを下げるんですよね。
うまくいかなくなりかけた時、全く見ず知らず同士の人達で軌道を戻すのは至難の業だと思います。

また、提出してきた素材が幼稚でレベルが低かった時、なかなか「作り直してください」っていいにくいんですよね・・。
こちらがお願いして作ってもらった立場でもそうですが、
具合の悪い事に誠意で無償提供してくれている人だと余計に文句を付けにくいんですよね・・。
そうなると妥協に妥協を重ね、きっと満足いく作品は出来なさそう・・。

こういう問題を全てまとめて「コミュニケーションの問題」と総称するならば、一番大変なのはやはりコミュニケーションでしょうか。
そりゃ見ず知らずの人達が一致団結しようとするんですから難しいのは当然ですよね。

全員の意思疎通が円滑に進み、全員のモチベーションを高い状態に維持し続けるように出来るリーダーでなければ見ず知らずの人達で何かを作るプロジェクトは成功しないと思います。

その後、何度も失敗したので、私は複数で作る事をやめて一人で作る事にしました。
いくつもゲームを作り続けてきましたが、やはり一人で作れる規模には限界があります・・。
もう学生じゃないから時間も無いし、いつまでも一人では刺激も無い。
いつまでも一人で作っていたら成長もしないと思い、複数で作ろうという計画を立てました。

今現在、私は初めて複数で制作を試みています。
会社の同期にプログラム大好きな人がいて、いつも3人で昼飯の時間は設計会議になっています。
明日も私の家で13時から24時まで設計やらする予定です。
参考になりそうなゲームを2〜3個買ってきて一通りやってみて、良いところを学んだりもしますし、
一人一つずつテーマを持って勉強会開いたりもする予定です(ARToolKit,OpenCV,各種物体検知アルゴリズムなど・・)
いい案が思いつけばすぐメッセンジャーで話し合ったりします。

普段これだけコミュニケーション取っていても、全然伝わっていなかった仕様があったり、思い描いている想像図が違っていたりする部分があるので、
見知らぬ人と何かを作り上げる人達って本当にどんな魔法をつかっているのかとすら思います。
(会社でも他事業所との仕様検討・確認は出張、最低限TV会議で行いますからねぇ)


で、私は失敗した経験とまだ初めての本格的な共同作業中なので、偉そうなことは言えませんが、
間違いの少ない役割配分としては、
「音楽・画像・プログラム・シナリオ」のように完全に担当を分けるのが一番ではないでしょうか。
プログラム部を複数で作るならC++でなるべく独立性の高いモジュール単位で作るとか。
・・なんて特に珍しい話でもないですね。すみません。

後、共同で一つのプログラムを作る時はSubversionを使うと便利ですよ。
例えばA君がプログラムコードを修正してサーバーに上げるとします。
B君はA君がデータを更新した事を知らずに、別の修正をしてサーバーに上書きしてしまったとします。
普通ならA君のデータは消えますが、subversionを使うとうまいことマージして、両者の修正が両方反映するようにしてくれます。(修正がぶつかったらまた別の対応が取れたりします)

また、バージョン管理が出来るので「あ〜どうしても意味不明なバグが出た!2日前に戻したい!」なんて事になった時もコマンドひとつで戻ります。

他にも色々つまらない話はありますが、前トピでも書きましたし、この辺にしておきます^^;


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

Name: たかぎ [URL]  ..ハッカー(186,508ポイント)   Date: 2010/05/15(土) 03:40   No:52138     
Title: Re:【雑談】知らない人同士でのゲーム作りで気をつけること    
オープンソースの開発経験からいっても、やはり定期的に(月1回程度は)顔をあわせて打ち合わせを行わないと、うまくいきませんね。
ましてや、どこの誰かも分からない者どうしでは話になりません。ごく一部だけを外注的にお願いするならできるかもしれませんが。
あと、中高生と大学生と社会人では明らかに状況が違いますので、なるべく似たような状況のメンバーを揃えないとコントロールが難しいと思います。


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

Name: Ma  ..比類無きプログラマー(96,135ポイント)   Date: 2010/05/15(土) 09:28   No:52142     
Title: Re:【雑談】知らない人同士でのゲーム作りで気をつけること    
グループ製作は半年の1回だけの私でよければ、ちょっと思ったことをかきこんでみます。

・気をつけたい事 (できるだけ挙げられていない事をリストしてみました。)
仕様書は作りたいところ。
(言葉の面で)リーダーだとしても、できるだけ対等として接する。(決定権とかは別です)
リーダーならメール連絡はできるだけ24時間以内に返信。携帯とかもありかも・・・?
可能なら即時コミュニケーションできるようにできるだけオンライン状態にする。(メッセ等)
ホームページ・掲示板など、常に情報確認できるページを作っておくこと。
また、上記のページの最低週数回程度の頻繁な更新。
可能なら会議などにSkype等を使って面と面との対話、あるいはボイスチャットの対話で親睦をある程度深める。
↑効率もアップ、相手の勘違いも防ぎやすいので、とにかくチャットよりはいい。
メンバーがリア友だからといってメンバー入り選考時に優遇しすぎない。メンバーになっても気を抜かない。(いれば)


・チーム製作において(私的に)便利だと思ったツール

Subversion:皆さんが知ってるとおりで(ry
Skype:上にあったような、会議とメンバーとの親睦に使えて一石二鳥。
Messenger:簡単な会話、会議なら使える。
TeamViewer:最近発見したリモートコントロールツール。誰かがPC操作で困ったとき、何かを教えたい時、などに使える。(ボイスチャット:カメラチャット:複数人 可能)
Windows Live メール:複数のメールアカウントを管理するのに便利。個人用、仕事用、サークル用、ユーザーサポート用 等。




>あと、中高生と大学生と社会人では明らかに状況が違いますので、なるべく似たような状況のメンバーを揃えないとコントロールが難しいと思います。 

私はそんな事ないと思いますよ。
時間的余裕の話なら、その人の空き時間に見合う作業をしていただければいいとおもいます。
私は学生でありながら社会人と協力をしましたが、適材適所に仕事を分配すると上手くいくとおもいます。
そのためには、相手のことを最低限知っておかないといけませんけどね。



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

Name: ookami  ..中級者(14,665ポイント)   Date: 2010/05/15(土) 13:35   No:52144     
Title: Re:【雑談】知らない人同士でのゲーム作りで気をつけること    
Dixqさん、たかぎさん、Maさん、お返事ありがとうございます^^

長文になりますが、順番にお返事を述べてまいります。


■Dixqさん

> やはりリーダーを務めるつもりが無い人が見ず知らずの人たちと一つの作品を作る募集をかけるのは無理がありますよねぇ。 
> 一番大変なのは、全員のモチベーションが最後まで持続するようにすることだと思います。 
> 誠意で無償提供してくれている人だと余計に文句を付けにくいんですよね・・。 
> こういう問題を全てまとめて「コミュニケーションの問題」と総称するならば、一番大変なのはやはりコミュニケーションでしょうか。 
> 全員の意思疎通が円滑に進み、全員のモチベーションを高い状態に維持し続けるように出来るリーダーでなければ ~ 成功しないと思います。

→ コミュニケーション云々については、私も身に覚えが...

高校の頃、地元の友達と毎日のように会い、打ち合わせをしながらゲームを作っていましたが、
顔を合わせていてさえ、意見がまとまらなかったり、モチベーションが下がってしまったりしました。
せっかく集まっても、研究という名のゲーム三昧になることもしょっちゅうでした^^;

「メンバーの足並みをそろえる」「モチベーションを高める」「まとめ役がちゃんとまとめる」「ケンカしないようなルール決めをする」といった事が大事なんだと思った記憶があります。


> やはり一人で作れる規模には限界があります・・。 
> もう学生じゃないから時間も無いし、いつまでも一人では刺激も無い。
> 3人で昼飯の時間は設計会議になっています。 
> 明日も私の家で13時から24時まで設計やらする予定です。 

→ 11時間wwww やはり直接顔を合わせるのが、コミュニケーションの効率が良いですよね。

「インターネット上でゲーム作りの人員募集」をすると、遠く離れた人が参加できるという反面、直接会っての打合せが難しくなるんですよね。
掲示板やチャットでは限界がありますし、「一緒に作っている」という実感も沸きにくくなってしまう。


> 「音楽・画像・プログラム・シナリオ」のように完全に担当を分ける
> プログラム部を複数で作るならC++でなるべく独立性の高いモジュール単位で作るとか。 

→ 確かに、この辺をあいまいにしておくと、できる人に全部押し付けられてしまうようなことも起こりますね。

それから、担当を分けた上で、人の仕事に「客観的な意見は言うが、主観的・感情的な文句は言わない」、といった建設的なことが
自然とできる人が集まらないと、収集がつかなくなるんですよね^^;

メンバーのうち1割でもそういう人がいると、残りの9割の人のやる気を根こそぎ奪っていくような場合もありそうです。


> Subversionを使うと便利ですよ。 

→ ですね^^ TortoiseSVNを使っていたことがあります。
ちょっと導入時の敷居が高い気はしますが、利点は挙げられている通りと思います。
プログラマが複数人いる場合は必須ですね!1つのファイルに複数人が関わることが多いですから。


■たかぎさん

やはり顔合わせが大事ということですね。
細かい点になるほど、書面だけ見ていると勘違いがありますよね。

> あと、中高生と大学生と社会人では明らかに状況が違いますので、なるべく似たような状況のメンバーを揃えないとコントロールが難しいと思います。 

Maさんの仰るように、うまく分担できれば問題ないと思いますが、
人的トラブルの収拾なんかは、たかぎさんの仰るように、より感覚が近い者同士の方が、解決しやすいのかも。


■Maさん

> リーダーだとしても、できるだけ対等として接する。(決定権とかは別です)

> 可能なら会議などにSkype等を使って面と面との対話、あるいはボイスチャットの対話で親睦をある程度深める。 

コミュニケーションを重視し、それも、文字だけより、映像・音声もあったほうが、より密度が上がるということですね。具体的なツールも示していただきありがとうございます。


> メンバーがリア友だからといってメンバー入り選考時に優遇しすぎない。メンバーになっても気を抜かない。

なるほど...! 他の人が気を悪くしないための配慮ですね。
基本なのに、ついやってしまいそうです。ちょっと盲点でした。

TeamViewer 知りませんでした^^; 確かに、誰かがPCの操作に困っている時に使えますね。
こういったリモートツールは、サーバのメンテナンスみたいな時に使う先入観があったので、意外でした...!



-- 新たに沸いてきた疑問...ここからはちょっと理想論かも

お三方に、様々な具体例を示していただいて、とても参考になりました。

いずれも、(非常に大雑把に言えば)「リーダーとメンバー間の(広い意味での)コミュニケーションにかかっている」、というのが前提となっていると思います。

その観点では、いわゆるダメリーダーの元ではゲームは完成しない、というのは当然ですね。開発が始まらないうちに空中分解することもあるでしょう。


ここで新たに沸いてきた疑問なのですが、いわゆる「素材屋さん(広く、音楽・画像・プログラム・シナリオを含む)」と「リーダー」を比べると、私から見て、圧倒的に「素材屋さん」が多くて、「私用・商用の別なくぜんぜん勝手に使ってくれておk」という(かつ結構ハイクオリティな)ものが、使われずに(あるいは、使われてもゲーム全体は完成されず、結局 世に出ることが無く)眠ったまま、という状況が、かなり多いんじゃないかという気がします。

皆さんも、同じように思われているでしょうか。

↑これが、新たに沸いてきた疑問
↓このあたりから理想論というか、ちょっと現実的な議論ではなくなるかもしれませんが...

となると、どうしたらダメリーダーがダメじゃなくなるか、とか、

あるいは、最初っからリーダー不在でゲームを完成させる方法(またはツールやコミュニティ)、とか、

要するに、「フリー素材(?)をもっと皆で使いこなす」ような議論は有意義か...な?(尻すぼみ)


すいません。私もコミュニケーション力の無い人間の一人ですね^^;;;;

引き続き、よろしくお願いいたします。


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

Name: Ma  ..比類無きプログラマー(97,658ポイント)   Date: 2010/05/15(土) 14:01   No:52145     
Title: Re:【雑談】知らない人同士でのゲーム作りで気をつけること    
>> メンバーがリア友だからといってメンバー入り選考時に優遇しすぎない。メンバーになっても気を抜かない。 
>なるほど...! 他の人が気を悪くしないための配慮ですね。 
>基本なのに、ついやってしまいそうです。ちょっと盲点でした。 

もちろん、優遇して入れてしまって申し訳ないというのもあります。
ですが、それよりもリアトモだと気軽に話を持ちかけるため
ゲーム作り最初OKしてくれたら最後まで快くやってくれるだろう。
あんま(絵が、シナリオが、プログラムが・等)上手くないけど、時間かければ上手くなるだろう。
しょっちゅう会うし、協力しやすいだろうなー。

なんて、期待しすぎちゃうんです。(少なくとも恥ずかしながら自分はそうでした。)

実際作業を開始してみると、ネットで有志で集った人達よりも大抵モチベーションがかなり差があると思います。
集めた人達は自分からやりたいと思って募集を読んで参加しようと思った人達なのですから仕方ないです。
結局その分担の作業は終わらないし友達関係が少しややこしくなるし、自分に被害が戻ってちゃうかもしれない。

リアトモを誘うのにはそういうリスクがあると思います。


>素材
はい、そのとおりで、たしかにいい素材がネット上で隠れてます。
ですが、フリー素材の利用にはいろいろ弱点がおおいです。

一つ目の弱点は時間のロスですね。
まず、サイトを探すのに時間がかかり、次にサイトの利用規約を探します。
利用規約で完全フリー状態ならラッキーで素材集から使いたい素材を探す時間がかかります。
利用規約において、著名表示が必要ならそれの手配。知らせなければならないならなんらかの手段で連絡。
使いたい素材が見つかればラッキーだけど、見つからなかったらまたサイト探し。
RPG系ならまだ比較的見つけやすいけど、それ以外の素材はなかなか見つからない。
結局最後は自分で作ってみると、あっという間にできてしまう。
ということだとおもいます。

二つ目にオリジナリティが下がります。
フリーゲームをやっていると結構よく耳にする効果音ってありませんか?
個人的な意見ですが、他のゲームでもよく聞く効果音を聞くとやすっぽく見えるようになるんですよね。
画像素材はまだだぶることは少ないですが、それでもたまに使いまわしを見かけるので、ちょっと手を抜いているなって思うことがあります。
たとえば、RPGツクールで作られたゲームを見ると、なんだツクールか、と思っちゃうのは私だけでしょうか?
画像を自作してるツクールゲームはいいんですが、最初から入っているものだと特に期待度が下がっちゃうんですよね。


>となると、どうしたらダメリーダーがダメじゃなくなるか
それは、もう普段の生活でリーダーシップを身に着けてからゲーム製作に応用するのが一番じゃないでしょうか。
今考えてみると、ゲーム製作でリーダーする前は学校行事で進んでリーダーとしていろんな事をしました。
(文化祭、卒業アルバム製作、学芸会 等)

>あるいは、最初っからリーダー不在でゲームを完成させる方法(またはツールやコミュニティ)、
リーダーがいらなくなるのは、一人で製作する時だけだと思います。

 編集済み


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

Name: ゆうき  ..入門者(3,374ポイント)   Date: 2010/05/15(土) 14:46   No:52146     
Title: Re:【雑談】知らない人同士でのゲーム作りで気をつけること    
すみません。

僕も同じような事をしているので書き込みさせていただきます。

僕は2、3ヶ月前に友達二人を誘ってRPGのゲームの制作に入りました。

一人は音楽、一人はグラフィック、そして僕はプログラミング。
(三人ともあまり仲がよくありません。住んでいるところも神奈川、長野、東京とばらばらです。)

僕はプログラミングなんかやった事なかったのですが、開発環境が無料で手に入るという事なので
それだけの理由で人を巻き込んで始めてしまいました。

ですがプログラミングの世界はあまくなく、意味のわからない言葉ばかり出てきて
勉強してもすぐに「こんな事していてなんの意味があるんだろう」
という負の思いが走るようになりました。
言いだしっぺの自分が管理人様の言う「モチベーションが持続しない」状況に陥りました。

誘った二人は、この話は自然と忘れるだろうという…
とも思っていたので、もう勉強も何もしないで連絡も絶っていたのですが
数日後、音楽担当の友達がRPG用の曲を何曲も仕上げて送りつけてきました。
その曲の一部をここに張っておきます。
http://www.nicovideo.jp/watch/sm9894367

もう後には引けなくなってしまいました。。。
作ると約束したのはいいが、めんどくさくて勉強していませんなど口が裂けても言えなくなってしまったので
今は毎日休むことなくC++の勉強を後悔と苦しみを背負いながらもやっています。


リーダーは自分のはずなのですが、「ちゃんとしたもの」を作り上げる人の存在が一番の説得力なんだと強く感じました。とほほ…


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

Name: softya [URL]  ..ハッカー(164,292ポイント)   Date: 2010/05/15(土) 15:58   No:52153     
Title: Re:【雑談】知らない人同士でのゲーム作りで気をつけること    
仕事でしか経験がありませんが、身近にいても起きる問題も含めて。

・リーダーが仕様・進行について責任をもつ。とにかく仕様がコロコロ変わるのが一番困ります。仲間からアイデアを募るのは良いですが、根本から仕様が変わるのは避ける必要があるでしょう。仲間のアイデアを入れていくのはモチベーション向上にも繋がるので積極的に行って良いと思います。その結果進行の段取りが変わることに付いてはあおりを食うメンバーのフォロー・説得・段取りも含めてリーダーが責任を持ちましょう。

・暇な人が発生するのは極力避ける。時間なくて作業が出来ないのは仕方ないと言うか良いのですが、仕事待ちになるのはモチベーションが保てなくて良くありません。そういう意味でリーダーは、自分以外のメンバー同士の意思疎通にも気を配る必要があります。

・リーダーは、スケジュールや進行状態を把握しましょう。各人が想像しているスケジュールがリーダーの思うものと違うかも知れません。ちゃんとすり合わせましょう。
進行状況も報告と実態が食い違っているかも知れません(ゲーム会社でもありえるんですよね)。うまく状況を聞き出して把握しましょう。特にプログラムは進行状況が把握しづらいです。本人ができると思っていても、実は他のプログラマから見たら無理なことが結構あります。

・企画・ゲームデザイン・シナリオは先行して作成しましょう。それらが決まらないと何も作れないからです。作れるだけの概要だけで細かいところは未完成でも構わないです。ゲームデザインとシナリオの担当に全体像や重要な部分のイメージが無いのは致命的です。聞いても答えてもらえないから作れないわけですからね。それと情報を小出しにされるのも困ります。

>>ゆうきさんへ
引くに引けないとの事ですが、C系の勉強をしてまともにゲームを作れるようになるのに早くて数カ月かかります。RPGだと最後まで構築出来る技量を得るのに最低でも一年ぐらいかかるかも知れません。実際にまともにRPGを作り出せるのは、そこから先の話です。それまで、お友達を待たせるつもりでしょうか?と言うか学生時代が終わってしまいませんか?

話の中に、シナリオやゲームデザインの話も出てきませんので、それも問題になると思いますので、RPGツクールやフリーのRPGツールに手を出した方が良いんじゃないでしょうか?これらをまともに作るだけでも相当手間がかかります。あくまて提案なので、決めるのはゆうきさんなんですけどね。

有料のRPGツクール。RGSSと言うRuby系の言語でプログラミング可能。
http://tkool.jp/
無料の『WOLF RPGエディター』(通称ウディタ)
http://www.silversecond.com/WolfRPGEditor/
こちらもスクリプトで、そこそこプログラミング可能。

ついでに、RPGで必要な作業の例。

[プログラム作業]ざっと考えただけでも次のものが必要です。
・フィールド処理(移動・エンカウント・街人表示・イベント処理など)
→マップを作成するツールも必要。自分で作った方が後々都合が良いので自分で作るのをお薦め。
・バトル処理(バトル突入エフェクト、メニュー、攻撃処理、魔法処理、敵の思考ルーチン、経験値処理、アイテム処理)。
・成長システムの処理。
・買い物のお店処理。
・シナリオを実行するスクリプト処理。
・メニュー(アイテムや装備)やセーブロードなど。
・サウンド処理

[プログラミング以外の作業]
・シナリオ。
・シナリオを実行するスクリプトコード。
・フィールド背景データ。
・主人公・仲間や町人などのフィールド・キャラクタデータ
・戦闘背景データ。
・戦闘キャラクタデータ。
・音楽や効果音データ。
・アイテムや主人公、仲間、敵キャラなどのデータ、パラメータ。 


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

Name: ゆうき  ..入門者(4,208ポイント)   Date: 2010/05/15(土) 17:59   No:52159     
Title: Re:【雑談】知らない人同士でのゲーム作りで気をつけること    
>softyaさん

具体的な指示ありがとうございます!
このままではいけないと思い、4月後半からC++のセミナーを受けるようにしました。
講師曰く、C++で教えるべき事を詰め込むのに半年程度は必要との事なので、自分は人の3倍は勉強して少しでも早く本作に手をつけなければと思い奮闘中です。
友達にはそのような状況であることは伝えました。

脚本、キャラ、アイテム、パラメータなど諸々の設定は一応考えています。
そこはきちんと計算する必要性があるので、ドラクエを参考にモンスターの強さや戦闘回数、経験値など
出てくるパラメータや数値化できるものは全てデータとして収めました。

ですが、自分は所詮は素人で、そこから派生してできるソフトはよくてドラクエもどきなんだとデータ採取中に感じました。
グラフィック担当の人も「素人がプロを真似ると痛々しい作品が出来るだけ。どっかどっかで絶対ボロも出てくるし」と言っていて、基本的なところから再考の必要性が生じました。

なので現段階では脚本、設定にオリジナリティをつけやすいシュミレーションRPG(?)の企画が出てきています。
(具体的には厨二病の子が、厨二病特有の台詞や道具を使うことで様々なイベントを乗り越えていくというというもので、親しみをもてるように2チャンなどにある有名な厨二病の実話をイベントに入れようと思っています。)

ですが自分の場合、ゲーム内容うんぬんの前に「ちゃんとプログラミングができるか?」という事が解決すべき大きな問題となっているため、そこを第一優先として取り組んでいる状況です。

なんとかすべて自作で作りたいです(ここの方の力は借りますが…)

とはいえ、softyaさんに教えていただいたウディタというものが非常に気になりました…
自分の現状と見合わせて、検討の必要があるのだと思います。

来週から週一のわずかな時間なのですが、DXライブラリの開発者様と直接相談できる状況になれそうです。(調べたら偶々知っている方だったというのが真相ですが…)
色々とスキルを吸収できたらなと思っています。



恐れ多くもookamiさんの質問に便乗して貴重なアドバイスをいただきました。ありがとうございます。 編集済み


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

Name: softya [URL]  ..ハッカー(164,139ポイント)   Date: 2010/05/15(土) 19:07   No:52162     
Title: Re:【雑談】知らない人同士でのゲーム作りで気をつけること    
>>ゆうきさんへ 
・戦闘エフェクトデータ。
が抜けてましたので追加します。

>とはいえ、softyaさんに教えていただいたウディタというものが非常に気になりました…
>自分の現状と見合わせて、検討の必要があるのだと思います。 

自分の力で作り上げるにしても、どの様な機能を作る必要があるか多大なヒントを与えてくれると思います。
なので、見ておくことをお勧めします。

シミュレーションRPGも検討していると言うことで、これも無料のツールをご紹介します。
「シミュレーションRPGエディター」
http://www.omoshiro-game.com/menu_game/SRPGEditor/


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

Name: ookami  ..上級者(15,670ポイント)   Date: 2010/05/15(土) 20:42   No:52164     
Title: Re:【雑談】知らない人同士でのゲーム作りで気をつけること    
Maさん、ゆうきさん、softyaさん、お返事ありがとうございます。

■Maさん

> リアトモ
→ なるほど... そんなリスクもあるんですね。

> 素材
> 一つ目の弱点は時間のロスですね。 
> 二つ目にオリジナリティが下がります。 
→ どちらも凄く思い当たるフシがあります!
ただ...私は「自分で作ってみると、あっという間にできてしまう。 」というわけにはちょっと^^; だからこそ「フリー素材を使いこなしたい」という発想になってしまうわけです。

http://www.sozai-r.jp/
↑こういうのが、コンセプトとしては近いのかも。でも、このサイトではイマイチ的確に思ったものがヒットしないですね...。それに、結局サイトへのリンクを貼っているだけなので、規約などの手間は Ma さんの仰るとおりですし。

> 普段の生活でリーダーシップを身に着けてからゲーム製作に応用するのが一番じゃないでしょうか。
→ なるほど... まぁ、リーダーシップを身に着けるのは、普段の生活でも、ゲーム製作を通してでも、良いのでしょうが、後者の方が敷居は高いですね。でも、リーダーシップって自分では分からないものですよね。中途半端な募集文で「自分はリーダーやります」みたいなのもあるようですから...。

> リーダーがいらなくなるのは、一人で製作する時だけだと思います。 
→ 確かに一人で製作すればリーダーは不要ですね^^; まぁ、「複数人でリーダー無しでゲームを作る」なんて、自分でも書きましたが、現実的でないですよね。


■ゆうきさん

一度は「始めなければよかった」と思いつつも挫けずに頑張っている姿勢がすごいと思いました! このスレッドの主旨にも合っていると思うので、特に便乗とは思っておりませんですよ。

ところで、
> 2チャンなどにある有名な厨二病の実話をイベントに入れようと思っています
→ これはこれで2チャンの人に「パクり」だと言われるような... とはいえ、まずは仰るとおり、完成させることを優先するのが良いと思います。完成させるプログラミングスキルがあれば、あとからシナリオだけ変えるのは簡単ですから^^ 頑張ってください!


■softyaさん

> とにかく仕様がコロコロ変わるのが一番困ります。
→ 仕様変更の被害(笑)にあうメンバーへのフォローは あまり考えていませんでした。確かに大事ですね。仕様変更は必ず出てきますから...

> 仕事待ちになるのはモチベーションが保てなくて良くありません。
> スケジュールや進行状態を把握しましょう。
→ スケジュール管理も大事ですね。期限が決まっているような場合は「Aさんの仕事が遅いせいで、Bさんの作業時間がどんどん無くなっていく」とか、期限が無くても「ゲームがいつ完成するのか分からない」という状況は良くないですね。

> プログラムは進行状況が把握しづらいです。
→ これは本当にそうですね。「あとちょっとでできそう」と思ったのに、根本的な勘違いをしていて大幅に作り直しをしたり... 他の役割(グラフィッカーなど)に比べて「プログラマが勘違いしているかどうか」というのは、最も気づきにくいもののような気がします。

> 企画・ゲームデザイン・シナリオは先行して作成しましょう。
→ 確かにこれが無いと、必要な素材を洗い出せませんね^^; これまた基本ながら、現実には全体像をほとんど決める前に各論に入ってしまう例が多いようなので、気をつけたいところです。ほとんど「○○みたいなゲームを作ります」だけの説明で募集している人もいるようですから...。

--

皆様の貴重な体験を聞くことができ、ありがとうございます。大変参考になります。
もう数日は、「解決!」にしないでおきますね。


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

Name: DVDM [URL]  ..熟練のプログラマー(53,018ポイント)   Date: 2010/05/16(日) 01:24   No:52179     
Title: Re:【雑談】知らない人同士でのゲーム作りで気をつけること    
>>ookamiさん
はじめまして、DVDMです。
グループ経験を三回ほど経験しましたので体験談的なもので宜しければ。


「定期的に顔を合わせる」と、たかぎさんも仰っていますが、
実際、毎日顔を合わせていたとしても上手くいく保証はどこにもないんだなと思いました。
コミュニケーションも勿論大事ですが、モチベーションの持続やワイワイ出来るか
という所は非常に大切だと思いました。


【仕様面について】
仕様を一から作る段階でも勿論ですが、すでに仕様が決まっている状態でも
皆の意見を幅広く取り入れることは大切だと思いました。

「なんか意見ない?」と言われて案を出した時
「う〜ん・・・」と納得できない顔で返され、その案については何も触れられなかった経験もあります。
「意見ないんか聞いたんちゃうん・・・」と思ってしまいましたが
どうも、頭の中に構想があったらしくそれと外れてしまったため却下になったそうです(後日談)

意見を出し合うと必ずいい意見が飛び出します。
「なんだよそれ・・・」と言うような意見が実はいいスパイスになったりします。
なので、「いや、それはちょっとちゃうかなぁ〜」と考えるのではなく
「それやったらこんなんどうやろか」みたいな感じで捉えると企画も楽しいかもしれません。

後は質問したことに対して出来る限りはっきりと答えられる人も大きいと思います。
作業の出しやすさ・理解のされ方が格段に変わると思います。



【プログラムについて】
プログラムに関しては技術面がセーフであれば意外となんとかなったりすると思っています。
なので、プログラムに直接関係ないかもしれませんが
グループでの話し合いからワイワイ持っていければ勝ちだと思います。
そんな中怪しい雰囲気を持った方がいれば雲行きが怪しくなるかもしれません。

私はデバッグだから!とおふざけで制作者権限を使い(いわゆるチートっぽいの)
対戦なのに自分だけめっぽう強いとか、おかしな動きをするオブジェクトを配置したりなど
作ってて楽しいプログラムを心がけております。
値は後から調整すればいいだけなんで(笑)


【グラフィックについて】
プログラムよりも仕様が重要なのではないかと個人的に思いました。
サイズ、保存形式、アニメの枚数、絵の構図、色彩などなど
イメージできる仕様を出せれば・・・
といっても自分なりの感覚的な部分もあるので結構難しいと思います。
色々な面に置いて視覚に訴えてくる部分ですので仕様が適当では微妙かもしれません。


ある企業様から一度、キャラクターを描いてほしいと依頼を受けたことがあります。
約二ヶ月での制作だったのですが
こんな構図(写真付き)でお願いします→描いてみる→いや、やっぱイメージが違うな
が三回続きました。
その内の一回はイメージが湧きにくく
その仕様を満たすようなキャラを描くと間違いなく人間の体ではありませんでした(笑)

一応納得したものを納品することが出来て本当に助かりましたが
こういう時、せっかく描いたのに・・・
とならないためにもやはり重要なのではないでしょうか。
その没絵をゲーム内でギャラリー的なので使うのも一つの手かもしれません。


【サウンドについて】
これは専門外すぎてノーコメントです。



全体を通して一か所に精通しているのもいいですが、幅広く理解が出来れば
チーム内での話も盛り上がるのではないでしょうか。
なにやら良く解らないことばかり書いているかもしれませんが
制作頑張って下さい!!
陰ながら応援しております!
長文失礼いたしました。


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

Name: ookami  ..上級者(15,703ポイント)   Date: 2010/05/16(日) 11:03   No:52193     
Title: Re:【雑談】知らない人同士でのゲーム作りで気をつけること    
DVDMさん 始めまして。体験談ありがとうございます。大変参考になります。

> モチベーションの持続やワイワイ出来るか 
> 皆の意見を幅広く取り入れることは大切だと思いました。 
ワイワイやっている中で、良い意見が出たり、イメージが固まっていったりするんですよね。その意味でも、打合せは 文字だけよりテレビ会議、テレビ会議より目の前でワイワイやって、必要に応じて紙に書いたり皆で書き込んだりするのは効率的だと思います。

> デバッグ ~ 対戦なのに自分だけめっぽう強いとか ~ 作ってて楽しいプログラムを心がけております。 
「作ってて楽しい」は大切にしたいですね。特にフリーゲームの場合は、見返りが「スキルアップ」と「人脈」と「作る楽しさ」くらいですからね^^;

> グラフィックについて ~ 自分なりの感覚的な部分もあるので結構難しいと思います。 
> 描いてみる→いや、やっぱイメージが違う ~ せっかく描いたのに・・・
そうですね。特にフリーゲームの場合は、Dixqさん(52135) のように、文句を言いにくい、ていうのもあるんですよね。言ったらやる気をなくしてしまうんじゃないか心配...みたいな。報酬がある場合は、「作り直しも含めての報酬だ」と割り切ることができる分、まだいいかも知れませんね。この辺は、グラフィックに限らず全ての役割について言えるかもですね。

貴重な体験談をありがとうございました。

-- [URL]をクリックしたら、http://http//www.geo... になっていて「http//」を取ったらいけました^^; 念のため。


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

Name: やっくん  ..上級者(21,578ポイント)   Date: 2010/05/16(日) 13:47   No:52203     
Title: Re:【雑談】知らない人同士でのゲーム作りで気をつけること    
知らない人同士でのゲーム作りの話とは関係ないですが。

>[プログラム作業]ざっと考えただけでも次のものが必要です。 
>・フィールド処理(移動・エンカウント・街人表示・イベント処理など) 
>→マップを作成するツールも必要。自分で作った方が後々都合が良いので自分で作るのをお薦め。 
>・バトル処理(バトル突入エフェクト、メニュー、攻撃処理、魔法処理、敵の思考ルーチン、経験値処理、ア?>テム処理)。 
>(略)

1年前からCやC++を学び、同時進行でRPG作りをしてます。
RPGの構成を自分で考えていってると、まさにこの通りであちこちに手を伸ばさなきゃいけなくなりました。
現在も終わる目処がたたないですが。

私の場合、絵やシナリオなどは友達に無理言って作ってもらいましたね。
とりあえず進行状況に合わせて必要な分だけを。
例えば戦闘を作ってるなら戦闘に必要な主人公の絵やフィールドでの主人公の絵など。
シナリオも大まかな設定だけを小説書いてる友達に言ったら、見事なシナリオ書いてくれました。
やはり、絵やシナリオなどを頼む場合は気軽に話せる友達が良いかなと私は思います。
それなりの知識、技術がある人でなければ頼めませんが。

私は情報系の大学生ですがゲーム作りを友達としたい!とはいつも思っていました。
ですが、学科の人とはプログラムに対してのモチベーションの差を感じるので誘うことはありませんでした。
キューさんも仰ってますが、一番重要なのはやる気やモチベーションだと思います。
これが無ければ少しの挫折で途切れてしまいます。3日坊主で終わってしまいます。
だから私は一人で作ろうと思いました。

大きい物を作ることは中々大変ですが、長い時間がかかっても一つの作品を自分で作り終えたときの達成感を想像したら・・・止められません!
こういうことできるのも大学生の内だけかも知れませんね(´д’;)


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

Name: ookami  ..上級者(15,755ポイント)   Date: 2010/05/16(日) 20:11   No:52214     
Title: Re:【雑談】知らない人同士でのゲーム作りで気をつけること    
やっくんさん お返事ありがとうございます。

> 私の場合、絵やシナリオなどは友達に無理言って作ってもらいましたね。 
> シナリオも大まかな設定だけを小説書いてる友達に言ったら、見事なシナリオ書いてくれました。 
確かに身近な人だと、気軽に引き受けてくれる場合が多いですよね。いい物を作ってくれるとこちらもモチベーション上がりますね。

> だから私は一人で作ろうと思いました。 
一人だと気楽にマイペースでできるのが、やはり一番のメリットですよね。複数人だと、どんなに小さなゲームでも、コミュニケーションを取りながら全員が納得する形で進めないと行けないから、結局リーダーシップが必要なんですよね。

> 大学生の内だけかも知れませんね(´д’;)
お仕事次第だと思いますよ。最近は厳しいご時世ですが、プライベートをきっちり取れる仕事につけば... なんて、なかなか狙った通りには行かないですけどね(T_T)


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

Name: たかぎ [URL]  ..ハッカー(187,564ポイント)   Date: 2010/05/16(日) 21:35   No:52217     
Title: Re:【雑談】知らない人同士でのゲーム作りで気をつけること    
> お仕事次第だと思いますよ。最近は厳しいご時世ですが、プライベートをきっちり取れる仕事につけば... なんて、なかなか狙った通りには行かないですけどね(T_T) 

少々仕事が忙しくても、独身のうちはどうにかなるもんです。
結婚して子供ができると、環境はかなり変わりますね。


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

Name: やっくん  ..上級者(22,020ポイント)   Date: 2010/05/16(日) 21:53   No:52219     
Title: Re:【雑談】知らない人同士でのゲーム作りで気をつけること    
>結婚して子供ができると、環境はかなり変わりますね。 
このことについて考えたことがあります。
結婚したら自分の時間取れないんだよな〜って思ったら独身でも良いかもしれないとも思います。
だけど、長く生きていく上では結婚は欠かせないものなんでしょうね。


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

Name: たかぎ [URL]  ..ハッカー(187,733ポイント)   Date: 2010/05/16(日) 22:51   No:52222     
Title: Re:【雑談】知らない人同士でのゲーム作りで気をつけること    
> 結婚したら自分の時間取れないんだよな〜っ

そんなこともないですけどね。
ただ、独身の時に比べれば制約が多いのは確かです。

> 独身でも良いかもしれないとも思います。 

悪いことばかりではありませんし、むしろよいことの方が多いですからね。
生涯独身を通すのであれば、よほど人望が厚くないかぎり、最期は孤独死したあとゴミのように捨てられる覚悟が必要です。

# かなり横道にそれましたが、雑談ということで...


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

Name: ookami  ..上級者(15,798ポイント)   Date: 2010/05/18(火) 12:25   No:52271 解決!     
Title: Re:【雑談】知らない人同士でのゲーム作りで気をつけること    
ある程度時間が経ちましたので、解決にしたいと思います。
皆様、貴重なご意見・体験談をありがとうございました! 編集済み


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



Name: ムンバ  ..熟練のプログラマー(47,627ポイント)   Date: 2010/05/18(火) 00:59   No:52257       
Title: C言語とC++の、strcpy関数・strcpy_s関数について?    
こんばんはっ!

先日は配列についてご指導頂き、ありがとう御座いました。
連続投稿&また、いつも質問だけで相変わらず申し訳御座いません。(謝
こちらの掲示板での、皆さんのご質問やご解説、とても勉強になってます。
傍観してるだけで大変恐縮です。(_ _)
どうもありがとうございます。

今日は、構造体について勉強(購入した本や参考サイトで復習)をしてたのですが・・・
今回も長文になります。大変申し訳御座いません。

↓自分は、C言語だと思って作ったソース
----------------------------------------------------------------------------------------
// kouzoutai.c

#include <stdio.h>
//#include <string.h>    //    ←strcpy関数・C言語(.C)の時は必要無い?

struct munba{        //    構造体名:munba
    
    char name[10];    //    ↓メンバ
    char *sex;    //
    int year;        //
    float f_pai;    //
    double not_pai;    //    ↑メンバ

};//munba data;        // <C++(.cpp) C言語(.c)の場合は、コメントアウト不可? ; は必要

int main(){

    struct munba data;    // <C言語(.c) C++(.cpp)の場合はコメントアウト不可?
    
    strcpy(data.name, "ムンバ");    // . (←ドット)構造体メンバ演算子
    //strcpy_s(data.name, "ムンバ");    // strcpy_s関数は、C言語(.c)では使えない?

    printf("名前:%s\n", data.name);    //整数:%d 文字:%c 文字列:%s 実数:%f など

    data.sex = "男";
    printf("性別:%s\n", data.sex);

    data.year = 14;
    printf("年齢:%d歳\n", data.year);

    data.f_pai = 3.141592653589793;
    printf("円周率:%f\n", data.f_pai);

    data.not_pai = 3141592653.589793;
    printf("円周率の小数点の位置変更:%fは無意味です。\n\n", data.not_pai);

    return 0;
}
---------------------------------------------------------------------------------------- ↓自分は、C++だと思って作ったソース ----------------------------------------------------------------------------------------

// kouzoutai.cpp

#include <stdio.h>
#include <string.h>    //    ←strcpy関数・C言語(.C)の時は必要無い?

struct munba{        //    構造体タグ:munba
    
    char name[10];    //    ↓メンバ
    char *sex;    //
    int year;        //
    float f_pai;    //
    double not_pai;    //    ↑メンバ

};munba data;        // <C++(.cpp) C言語(.c)の場合は、コメントアウトしてもしなくてもOK? ; は必要 

int main(){

    //struct munba data;    // <C言語(.c) C++(.cpp)の場合はコメントアウトしてもしなくてもOK?
    
    //strcpy(data.name, "ムンバ");    // . (←ドット)構造体メンバ演算子
    strcpy_s(data.name, "ムンバ");    // strcpy_s関数は、C言語(.c)では使えない?

    printf("名前:%s\n", data.name);    //整数:%d 文字:%c 文字列:%s 実数:%f など

    data.sex = "男";
    printf("性別:%s\n", data.sex);

    data.year = 14;
    printf("年齢:%d歳\n", data.year);

    data.f_pai = 3.141592653589793;
    printf("円周率:%f\n", data.f_pai);

    data.not_pai = 3141592653.589793;
    printf("円周率の小数点の位置変更:%fは無意味です。\n\n", data.not_pai);

    return 0;
}

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

自分が見易い様に、コメントとか字下げとかしてますので
見づらい様でしたら、どうかご勘弁下さい。

以上の構造体に関するソースを作るのに
参考にさせて頂いた本は、「猫でもわかるC言語プログラミング 第2版」
参考にさせて頂いたサイトは、こちらの「ゲームプログラミングの館」「苦しんで覚えるC言語」など
です。

ちなみに「苦しんで覚えるC言語」のサイトのアドレスなのですが
旧アドレス:http://homepage3.nifty.com/mmgames/c_guide/
新アドレス:http://9cguide.appspot.com/
と、お引越しされた様です。

相変わらず、自分が見た時に思い出せる様に
自分勝手に遊んで、保存してるソースです。

そこで、構造体の復習をしていたのですが(1年以上、プログラムの勉強さぼってました。)
上述したソースの、C言語(.c)とC++(.cpp)の違いが、ごちゃごちゃになってしまいました。(自爆
c++に関しての、教本とかサイトは勉強していません。
いつの間にか、導入されているのかもしれませんが。^^;


環境:Windows NT(32bit) VC++2008(SP1) 

質問1:strcpy関数を使いたい時に

 // kouzoutai.c のソースでは、
 #include <string.h> は、必要無いみたいなのですが
 // kouzoutai.cpp のソースでは、
 #include <string.h> が、必要でした。

 C言語では strcpy関数 は、
  #include <stdio.h> から呼び出せて
  #include <string.h> には入っていない。
 C++ では strcpy関数 は
  #include <stdio.h> には入ってないで
  #include <string.h> から呼び出せる。

 と、解釈して良いのでしょうか?

誤字・脱字等ありましたら、ご勘弁下さい。
相変わらず勝手ながら、今日は寝てしまいます。
悩んだ挙句、いつも皆さんに頼ってしまってます。

ご指導頂ける方がいらっしゃいましたら
ご解説の程、宜しくお願い致します。
すみません。おやすみなさい。(謝

---編集部位---
preタグ付け忘れてました。
すみません。 編集済み


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


Name: たかぎ [URL]  ..ハッカー(188,165ポイント)   Date: 2010/05/18(火) 01:14   No:52258     
Title: Re:C言語とC++の、strcpy関数・strcpy_s関数について?    
Visual C++特有の話なのか、一般論なのかがよくわかりませんが...

まず、一般論ということであれば、//で始まる行コメントはC99でなければ使うことができません。
C99であれば、関数を呼び出す際には関数原型を伴なう宣言が不可欠ですので、ヘッダのインクルードを省略することはできません(厳密なことをいえば、自分で宣言を書いてもよいのですが...).

Visual C++特有の話だとすると、C99には対応していませんので、関数原型無しで関数を呼び出すことはCであれば可能です。
その場合でも、返却値の型がintであればよいのですが、そうでなければ未定義の動作になります。
32ビット版であれば、intとchar*等のサイズが同じですのでたまたま動きますが、64ビット版だと問題が起こるかもしれません(未確認です)。

あと、strcpyは<string.h>で宣言されています。決して<stdio.h>ではありませんし、もしそんなところで宣言されていれば、それは処理系の不具合です。

CとC++の違いについては、
http://www.kijineko.co.jp/tech/cpp2c
を参考にしてください。
# 上記URLのコーナーも、条件演算子の違いに関する記述が抜けているのですが...


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

Name: ムンバ  ..熟練のプログラマー(47,872ポイント)   Date: 2010/05/18(火) 10:12   No:52269     
Title: Re:C言語とC++の、strcpy関数・strcpy_s関数について?    
こんにちは。
たかぎさん、早速のご解説ありがとうございます。

今、職場のPCでもやってみたのですが .CPPの方
#include <string.h>をコメントアウトすると

c:(略)\visual studio 2008\projects\c++001\c++001.cpp(18) : error C3861: 'strcpy': 識別子が見つかりませんでした
c:(略)\visual studio 2008\projects\c++001\c++001.cpp(29) : warning C4305: '=' : 'double' から 'float' へ切り詰めます。
ビルドログは "file://c:(略)\Visual Studio 2008\Projects\C++001\Debug\BuildLog.htm" に保存されました。
C++001 - エラー 1、警告 1
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

と出てしまいます。
無理やり実行はできるのですが、どうしてでしょうか?

夜になってしまいますが、帰宅したら
もう1度、ゆっくり考えて見ますね。^^;

---修正箇所---
(略)を修正しました。 編集済み


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

Name: ムンバ  ..熟練のプログラマー(47,949ポイント)   Date: 2010/05/18(火) 10:19   No:52270 解決!     
Title: Re:C言語とC++の、strcpy関数・strcpy_s関数について?    
すみません。
たかぎさんのおっしゃってる意味が解りました! ---←誤字修正部位---

またまた私の勉強不足と思い違いでしたね。
ご迷惑をおかけしました。
出直してきます。<_ _>
ありがとうございました。
 編集済み


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



Name: Ma  ..比類無きプログラマー(96,708ポイント)   Date: 2010/05/15(土) 10:55   No:52143       
Title: IT系大学進路相談    
IT関係(特にソフト)に進むつもりの高校生です。
帰国子女入試を使って、大学入試に挑むつもりで、金銭的負担で国立を目指しています。
大学では情報系の学科に入るつもりでいます。
大学で勉強している間に、実際の企業や研究になんらかの形で携わる事ができる環境があればいいなと思っています。
(無償でのお手伝い、研究施設、デバッグ協力 等)

現在、進路で検討しているのは、
1.筑波大学
2.大阪大学
3.東京工業大学
の3つですが、これ以外にもIT系ですぐれている国立大学はたくさんあると思います。
ですが、情報収集が上手くないため、あまり詳しくありません。

大阪大学は、ロボット系で優れていると聞いたことがあります。
筑波大学は回りに研究施設が充実していて、深く学べると聞いたことがあります。

このような情報ありましたら、是非教えてください。
(帰国子女制度があるかどうか分からなくても書き込みしていただいてかまいません。)

今は海外なので、このような情報の入手の仕方が分からなくて、掲示板で質問させていただいた次第です。


これはついでなのですが、IT関連のプロやIT系の学科で大学卒業した方などに質問です。
大学生時代にやっておけばよかった事、後悔していることなどありましたら教えてください。


*質問文に何か不足しているものがありましたら、何なりとご指摘ください。


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


Name: cuma  ..ぴよぴよ(555ポイント)   Date: 2010/05/16(日) 02:41   No:52186     
Title: Re:IT系大学進路相談    
こんにちわ。いつも楽しく掲示板を閲覧専門で利用させてもらってるモノですが、
少しだけ(?)書かせて頂きます。


自分は今、東京で大学生をしており(東工大ではないです)、ソフトウェア開発の会社でアルバイトとして
製品の実装や障害修正をしています。


個人的な意見です。一参考意見として聞き流してください。


筑波大学
研究所が募集しているプログラムコーディングのバイトとかあるらしいです。
ただ、そこまで募集も多くないので自分の希望にあった分野でできるかは運しだいです。
静かな場所で、誘惑するものもないので、自分のやりたい事があれば思いっきり没頭できると思います。


大阪大学
あまりよく知らないのですが、京都大学や神戸大学など他の大学と提携して、いくつか取り組みがあり、院まで行くと実際閉じられたネットワークを作り、ウィルスを送り込んだり、それを防いだりを2手に分かれて行い
さらには顧客対応もシュミレートしたりするセミナーがあります。これは今自分も来年の院試に向けて少し興味を持っています。
参考→http://it-keys.naist.jp/


東京工業大学
個人的には一番オススメします。
Maさんは大学生活の間に企業や研究所で実際の現場に関わりたいそうですが、東京という
立地は日本で一番その希望に添えると思います。
大学紹介のバイトでも企業からの求人がたくさんあります。
大学生で起業して会社を運営している人もいるし、大学という枠にとらわれずに各分野で色々行っている人も多いので結構触発されます。


最後に自分が大学卒業までにやっておきたいことは様々な技術の勉強をしつつも、専門分野を作りたいということです。ソフトといってもいろんな分野があるので一番得意な、これなら自信があるっていうやつを1つ持ちたいなって思ってます。


大学生活のオススメは身近に尊敬できる人を見つけて仲良くなることです。
同級生でも大人でもいいので。そうすると驚くほど成長できます。

長文になってしまいました。すみません。また独りよがりな文章になってしまったかもしれませんが
少しでも考える糧となれば幸いです。


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

Name: Ma  ..比類無きプログラマー(98,454ポイント)   Date: 2010/05/16(日) 06:04   No:52189     
Title: Re:IT系大学進路相談    
>cuma さん
まず最初に書き込みありがとうございます。

大阪大学が参加するそのセミナーは、難しそうでいてとても面白そうですね。
参加してみたくなってしまいました。

東京工業大学はやはり都心というだけあって、そのような環境が整っているんですね。なるほどです。
上手くバランスを取って勉学に没頭しながら現場経験も積めれば最高ですね。

>専門分野を作りたいということです
ですね。
私は知能とかメディア系に興味があるので、そちらを専攻してみようと思ってます。
(もっと細分化したほうがいいのかな?)

>大学生活のオススメは身近に尊敬できる人を見つけて仲良くなることです。 
私のような受験生でも言えることですね。たしかに尊敬できる人はほしいです。
ありがとうございます。

大変参考になりました。ありがとうございます。

>みなさん。
上で挙げた3大学以外の他の大学の情報でもウェルカムですので、引き続き書き込みお待ちしております。


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

Name: no  ..中級者(13,078ポイント)   Date: 2010/05/17(月) 02:45   No:52232     
Title: Re:IT系大学進路相談    
どこかの内職系サイトにデバッグ要員募集がそれなりにあったので、お金を稼ぎながらデバッグ力(?というのでしょうか、よくわかりませんが)を養うのはどこでもできるのではないかと思います。

しかし有名どころが多いですね。私が勉強教えている人たちはみんな私大希望ですよ、まあ本人がいきたいといってるので別にいいんですけど。

Maさんの学力がどの程度かは知りませんし、高校何年生なのかも知りません。なので具体的なことはいえませんが、大学選びは基本的に、一番いきたい大学を一つと、分野は同じだけど入学難易度は一番行きたい大学より低い大学を選ぶのが一般的です。

そこで、Maさんの提示した大学は

http://anond.hatelabo.jp/20090929213842

より、とっても難しいところです。なのでそこから一本選ぶのは構いませんが、落ちたときの身の振り方を考える必要もあります。
加えて、ITといっても、グラフ理論であったり、人工知能であったり、ソフトウェア工学であったり……と、いくつか分野がわかれています。極めて具体的な例をあげますと、

(1)人工知能(北陸先端科学技術大学院大学)
将棋のプロに勝つ知能を開発する。チェスは完成しているようですが、将棋は"おく"ことができるのでとても難しいようです。

(2)グラフ理論(筑波大学……だったかなちょっと失念)
ウェブ上にある膨大なページ一つ一つを点、クリックしたら移動するようなリンクを線と捕らえ、点を線で結ぶと超巨大な一つのグラフが完成する。これを解析することによってインターネットの挙動を捉えることができる。この研究結果で、あらゆるホームページは16回のクリックで到達することができると明らかになった。(点と線がつながっている場合のみ)

などです。さすがに情報系の講義を受けていないと「情報系の○○がやりたい!」なんて言えないと思いますが、まあ参考として読むといいでしょう。(ちなみに北陸は大学院生しかとっていません。博士の授業がすべて英語という鬼畜さという理由で倍率が低い)

というわけで、ITが強いといっても強さの方向性は異なります。
あえて結論をいうならば、どこでもやることは一緒ですよ。

有名な国立大だろうが、地方国立大だろうが、やる内容はほとんど一緒です。有名な教授=授業うまいは成り立ちませんので。
差が出るといえば卒業研究でしょうけど、所詮は1年半程度ですので……。
情報で修士や博士を取りたいなら別です。けどまあそのときは行きたい院を勝手に受験すれば良い話ですが。

あくまで私的な意見ですが、その3箇所のどれかを第一志望でいいと思います。

学力が足りないようなら、長岡技術科学大学、豊橋技術科学大学なんかを滑り止めにするとよろしいんではないかと。比較的簡単に入れる上、教授連中がやたらと有名です。やや他の大学と性質が異なるので簡単に特徴を箇条書きにしますと、

・国立です。
・学部一回生の入学定員は80名。→無名のため実質倍率は1.5倍ちょっと。
・高専卒業生のために作られた大学。
 →15歳の時点で情報科目に染まっている高専卒が大学三年生に大量に編入学してきます。なので1,2年で手を
  抜くと大分劣等感に苛まれるようです。
・最後まで行けば情報学で博士を取れます。
・大学院生が大量にいます。学部1〜4年生の総量と同程度。
 →自分より遥かに情報系の知識を持っている人間がいっぱいいます。
・留年率が他大学と比べ、かなり高い。
 →倍率低いのに授業が難しい。というかやる気の問題です。
・就職先がとてもよい。

倍率低い割りに、上位大学と同じくらいの環境が整っているという感じです。


長くなりましたが、大学はどこでもいいと思います。基本的なことはどこでも教えてくれます。
なにかをやりたい! ……の何かのレベルによりますが、「学部レベルのなにか」だとどこでもできるんじゃないかなぁ……というのが個人的な意見です。この教授についていくんだ! ってのは大学卒業後でよろしいのではないかと思います。

どこでもいいので情報系の大学に入り、3年間で満遍なく情報系科目を学び、満遍なく学んだ後に自分の専門を決め、決めたらその分野の研究室にはいる努力をし、更に発展させたいのならその道に優れている大学院を選ぶ。これが最適だと思います。


東工大の院試に落ちたものの意見でした。

若造の意見なので無視しても結構です、あくまで自分の意見なので押し付ける気はありません。

もし研究者になりたい(博士とって大企業の研究部門に配属されたい、大学の教師になって情報系の自分の好きな研究をお金を貰いながらやりたい)ならまた別の意見があります。ややけだるいものですが、私も研究者志望なので熱く語りたいものがありますw

また長くなってしまった><


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

Name: Ma  ..比類無きプログラマー(98,788ポイント)   Date: 2010/05/17(月) 14:29   No:52234     
Title: Re:IT系大学進路相談    
すごく参考になるリンクまではっていただいてありがとうございます。
偏差値まで見れるなんて、助かります。参考にさせていただきますね。

東京工業に入れたらすごいだろうなぁ。

あと、いまのところ、まだ研究者になりたいとまでは思っていませんが、大学に入っていろいろ学んだらそう思うかもしれません。

>長岡技術科学大学、豊橋技術科学大学
長岡の9月入学の出願期間の締め切りあさってでしたw
豊橋技術科学大学は、出願は11月みたいです。考えて見ます。
豊橋は地元に近いし、名前も以前から聞いていましたが、影で人気だったんですね。

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


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

Name: no  ..中級者(13,393ポイント)   Date: 2010/05/17(月) 15:54   No:52236     
Title: Re:IT系大学進路相談    
お仕事上(といってもバイトですが)進路相談をよく行うので熱くなってしまう><


ついでに、工学部ランキングも乗せておきます。ちょっと古いですけど。

http://homepage3.nifty.com/katu-kobayashi/doppo/kougaku_kennkyu.htm

情報系学科は基本、工学部に属しています。
筑波大学には工学部が存在せず情報のみで確立しているためここにはランキングされていません。
が、仮に筑波に順位をつけるのなら20位以内に入ると思います。あくまで私見ですが。
長岡や豊橋は極めて無名ですが、順位はかなり高いです。
過去問も公開されているので勉強しやすいのではないでしょうか。

それと、前述しましたが、学部レベルならどこも似たような授業です。
ですがやはり、上の大学ほど学生の志が高いのが普通です。もちろん全員とはいいませんが。

以前所用のため50位付近の大学構内にはいったところ、ずぼんをずりさげパンツをみせながらあるいている学生がいてショックを受けました。まともな学生もいるんでしょうが、ちょっと悲しかったです。

>長岡の9月入学の出願期間の締め切りあさってでしたw 

えーと、高校三年生なら通常、4月入学になると思いますよ。

では、がんばってください。
10位付近に私の所属もあります。残念ながら情報系ではないため、詳しい話はできませんが……。
殆どが知り合いの受け売りです。


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

Name: Ma  ..比類無きプログラマー(98,844ポイント)   Date: 2010/05/18(火) 06:19   No:52265 解決!     
Title: Re:IT系大学進路相談    
なるほど。
やはり有名どころのほうが周りの人や環境もあって気が引き締まるのかもしれませんね。
ひとまず解決にしますが、引き続き情報お待ちしております。


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



Name: デラ初心者  ..初心者(5,025ポイント)   Date: 2010/05/15(土) 15:11   No:52148       
Title: 最初に読んだゲーム作りの本    
お久しぶりです。デラ初心者です。

時間が無く4ヶ月程プログラミングをしていなかったので
苦しんで覚えるC言語で復習しています
http://9cguide.appspot.com/

時間が空いたのでまたゲーム作りを勉強することに
したのですが、ここのサイト以外ゲームを作るサイトがないので
本にしようと思いました。

なので皆さんが最初に読んだ本を教えて下さい。


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


Name: Justy  ..伝説なるハッカー(531,277ポイント)   Date: 2010/05/16(日) 01:49   No:52181     
Title: Re:最初に読んだゲーム作りの本    
>最初に読んだ本を教えて下さい
 最初のゲームプログラミング本ということであれば、amazonの記録と本棚をあさってみたら2001年に買った

Game Programming Gems 日本語版
http://www.borndigital.co.jp/book/detail.php?id=53

が最古でした。

 当時はたしかほとんどゲーム制作解説本なんてなくて珍しかったですし、
なかなか興味深い内容が多く CDもついていて実務に役立ちそうだったので、
思わず速攻で買ったのを覚えています。


>ここのサイト以外ゲームを作るサイトがないので 
 いや、そんなことはないでしょう。
 
 検索すればいろいろ見つかりますよ。
 試しに検索してみたら数分で
 
ゲーム作りで学ぶ! 実践的C言語プログラミング - karetta.jp
http://karetta.jp/book-cover/game-programming

FrontPage - ゲームプログラミングWiki
http://www.c3.club.kyutech.ac.jp/gamewiki/

ジャンル別ゲームの作り方とアルゴリズムまとめ - ネットサービス研究室
http://d.hatena.ne.jp/seikenn/20090627/1246028707

ゲームプログラム
http://www5f.biglobe.ne.jp/~kenmo/program/program_ind.htm

TonyuアクションRPG - アクションゲーム、アクションRPGゲームプログラム制作解説
http://www.tonyu-arpg.com/

Core Techniques and Algorithms in Game Programming
http://gamealgorithms.tar.hu/

とかこんだけ見つかりました。

 もっと時間を掛けてさがせば他にも見つかると思いますが、これらではダメなのでしょうか?


>本にしようと思いました
 どうせ本を読むなら C/C++の応用的なものとかプログラミング力をつける本の方が
よくないですか?


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

Name: dic  ..熟練のプログラマー(67,516ポイント)   Date: 2010/05/16(日) 13:41   No:52202     
Title: Re:最初に読んだゲーム作りの本    
最初に読んだ本でしたら
http://www.amazon.co.jp/C%E8%A8%80%E8%AA%9E%E5%85%A5%E9%96%80-ASCII-SOFTWARE-SCIENCE-Language/dp/4756102700/ref=cm_cr-mr-img
短いリンクにできようですが、覚えてないんで すいません

当時(2001-2004年)くらいは、たくさんゲーム関連の本や
C言語に関する本が出回ってたんですけどね
最近はほとんど見かけませんね
ネットに移行した感じがします

雑誌にちらほらC言語の練習のような講座がありますが
あまり、有益な情報ではないですね

オープンソースなど、調べてみるのもいいですね


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

Name: デラ初心者  ..初心者(5,235ポイント)   Date: 2010/05/16(日) 19:51   No:52212     
Title: Re:最初に読んだゲーム作りの本    
Justyさん

意外と多くありましたね
検索不足でした すいません。

>どうせ本を読むなら C/C++の応用的なものとかプログラミング力をつける本の方が 
よくないですか?

確かに実力がないと本を見て作っても意味がわからなかったら
意味無いですからね・・・

応用や練習問題などが載ったサイトや本を紹介してくれると
とても嬉しいです。

dicさん

その本amazonでの評価は良いみたいですね。
ですが、予算が無いので買うことが出来ませんorz


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

Name: softya [URL]  ..ハッカー(164,541ポイント)   Date: 2010/05/16(日) 20:20   No:52215     
Title: Re:最初に読んだゲーム作りの本    
>応用や練習問題などが載ったサイトや本を紹介してくれるととても嬉しいです。 

実際のところ、どんな応用問題が必要だと思いますか?
デラ初心者さんが知識がたらないと思う理由は何が出来ないからでしょうか?
私のような古い人間だと応用問題を解きながら覚えたのでは無く、実際にプログラミングに挑戦して苦心しながら(実際のところ楽しみながら)覚えてきたので、今の時代に様にサンプルとかがアッチコッチに落ちているので何も困るようなことは無いんじゃないかと思うんですよね。
難しいアルゴリズムや数学理論は本やサイトが無いとどうにもなりませんが、ヒント的なものは「ゲームプログラミングの館」や「龍神録プログラミングの館」、DXライブラリ置き場のサンプルコードやソース公開されたゲームなど十分揃っている気がするんですけど。

アルゴリズムの参考になりそうなサイト。

「シミュレーションゲーム作成工房」
http://www.jyouhoukaiseki.com/
「ジャンル別ゲームの作り方とアルゴリズムまとめ」
http://d.hatena.ne.jp/seikenn/20090627/1246028707
「パズル問題解法のアルゴリズム講座」
http://www.ic-net.or.jp/home/takaken/pz/index.html
「地球にやさしいアルゴリズム」
http://itpro.nikkeibp.co.jp/article/COLUMN/20070109/258278/?ST=develop
 編集済み


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

Name: デラ初心者  ..初心者(5,356ポイント)   Date: 2010/05/17(月) 17:53   No:52238     
Title: Re:最初に読んだゲーム作りの本    
>デラ初心者さんが知識がたらないと思う理由は何が出来ないからでしょうか?
正直な所それすら分かってない気がします。
C言語 練習問題
http://www.geocities.jp/kenji_y0328/crenshu/index.html
R022までしか解けませんが、どこまで解ければ良い方でしょうか?

URL参考にさせて頂きます。


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

Name: softya [URL]  ..ハッカー(164,711ポイント)   Date: 2010/05/17(月) 18:08   No:52239     
Title: Re:最初に読んだゲーム作りの本    
>R022までしか解けませんが、どこまで解ければ良い方でしょうか? 

特殊な理論や難しい理論はないので、ゲームを自力で作れる人なら最後のR096まで作れると思います。まぁ、事務処理系のマスタ・トランザクション処理に慣れてないと時間は掛かると思いますが。
ところで、R023の何が分からないのでしょうか?

それと事務処理系よりも楽しめそうな問題を紹介しておきます。
http://akabas.net/%28S%28taliry45fkng1j55hxqqv045%29%29/lib/CTask.aspx
練習問題が必要との事ですが、子供の頃に日常的に遊んでいたトランプやボードゲームなどルールを良く知っているものをプログラム化してみると良い練習になると思いますよ。


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

Name: デラ初心者  ..初心者(5,381ポイント)   Date: 2010/05/17(月) 18:21   No:52240     
Title: Re:最初に読んだゲーム作りの本    
間違えましたR025から分かりません。

それなら事務系よりも良いですね。


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

Name: softya [URL]  ..ハッカー(164,764ポイント)   Date: 2010/05/17(月) 18:38   No:52241     
Title: Re:最初に読んだゲーム作りの本    
>間違えましたR025から分かりません。 

これの何処が分からないのでしょうか?
出来ているソースコードを貼ってみてください。


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

Name: デラ初心者  ..初心者(5,399ポイント)   Date: 2010/05/17(月) 19:09   No:52242     
Title: Re:最初に読んだゲーム作りの本    
途中ですが貼ります。
strcpyって何ですか?


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

Name: softya [URL]  ..ハッカー(165,075ポイント)   Date: 2010/05/17(月) 19:27   No:52244     
Title: Re:最初に読んだゲーム作りの本    
>strcpyって何ですか?

どちらかと言うと、それはC言語の標準関数に関する知識不足ですね。
C言語の標準関数の一覧
http://www.bohyoh.com/CandCPP/C/Library/index.html
まず、一覧(リファレンス)などを調べることを覚えた方が良いでしょう。検索しても色々と出てくると思いますから、まず検索して調べるべきだと思います。

今までの話からするとゲームの作り方やゲーム・アルゴリズム以前の知識を勉強した方が良さそうですね。

「アルゴリズム入門」
http://www5c.biglobe.ne.jp/~ecb/algorithm/algorithm00.html
「アルゴリズムとデータ構造編」
http://www.geocities.jp/ky_webid/algorithm/index.html
「アルゴリズムの紹介」
http://fussy.web.fc2.com/algo/index.htm


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

Name: デラ初心者  ..初心者(5,461ポイント)   Date: 2010/05/17(月) 19:51   No:52246 解決!     
Title: Re:最初に読んだゲーム作りの本    
strcpyなんて初めて知りました。
読んだ本に書いてなかった気がします(忘れた気もします)

やっぱり基本が大事ですよねw

解決しました。
有り難うございました。

質問の時はよろしくお願いします。


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



Name: lbfuvab  ..プログラマー(26,663ポイント)   Date: 2010/05/16(日) 04:35   No:52188       
Title: MCIでの音楽再生    
mp3のプレーヤーを作ろうと思い、以下のようなコードを書きました(ダイアログボックスは何のコントロールも載せてません)
しかし、MCI_PLAYを実行すると固まってしまいます。
どうすればmp3を正常に再生できるか教えてください。
環境はWin7 Pro + VC++2008 ExpressEditionです。

#include<windows.h>
#include<mmsystem.h>
#include"resource.h"

#pragma comment(lib,"winmm.lib")

LRESULT CALLBACK WndProc(HWND hWnd,UINT msg,WPARAM wp,LPARAM lp);

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR pCmdLine, int showCmd){
    return DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG1),NULL,(DLGPROC)WndProc);
}

LRESULT CALLBACK WndProc(HWND hWnd,UINT msg,WPARAM wp,LPARAM lp){
    static char path[MAX_PATH]="";
    static BOOL bPlaying=FALSE;
    static MCI_OPEN_PARMS mop;

    switch(msg){
        case WM_DROPFILES:
            if(bPlaying==TRUE){
                mciSendCommand(mop.wDeviceID,MCI_CLOSE,0,0);
                bPlaying=FALSE;
            }

            DragQueryFile((HDROP)wp,0,path,MAX_PATH);

            mop.lpstrDeviceType="MPEGVideo";
            mop.lpstrElementName=path;

            MessageBox(hWnd,path,"",MB_OK);
            
            if(mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_TYPE | MCI_OPEN_ELEMENT,(DWORD)&mop)){
                MessageBox(hWnd,"エラー","error",MB_OK);
                exit(-1);
            }
            MessageBox(hWnd,"a","",MB_OK);
            mciSendCommand(mop.wDeviceID,MCI_SEEK,MCI_SEEK_TO_START,0);
            MessageBox(hWnd,"b","",MB_OK);

            mciSendCommand(mop.wDeviceID,MCI_PLAY,0,0);
            bPlaying=TRUE;
            break;
        case WM_COMMAND:
            switch(LOWORD(wp)){
                case IDCANCEL:
                    if(bPlaying)
                        mciSendCommand(mop.wDeviceID,MCI_CLOSE,0,0);
                    EndDialog(hWnd,0);
                    break;
                default:
                    return FALSE;
            }
            break;
        default:
            return FALSE;
    }
    return TRUE;
}



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


Name: Justy  ..伝説なるハッカー(531,369ポイント)   Date: 2010/05/16(日) 11:52   No:52196     
Title: Re:MCIでの音楽再生    
 これが原因かどうかは判りませんが、とりあえず MCI_PLAYのところのmciSendCommand関数の
呼び出しで第4引数を 0にしないで、MCI_PLAY_PARMS構造体へのポインタを指定してみて下さい。


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

Name: lbfuvab  ..プログラマー(26,694ポイント)   Date: 2010/05/17(月) 16:13   No:52237     
Title: Re:MCIでの音楽再生    
きちんと再生できました、ありがとうございました!
次はシークバーの実装を頑張ります!


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



Name: nescafe  ..ぴよぴよ(71ポイント)   Date: 2010/05/17(月) 00:19   No:52226       
Title: − ビンゴゲームのプログラム −    
C言語の初心者です

C言語の課題がどうしてもわからないので教えてください


・1〜50 の番号がランダムに配置された5 行×5 列のビンゴカードを作成する。
ただし、カード中央のマスには、マスが空いた状態を表す0 をあらかじめ配置しておく。

・カード初期状態を表示したあと、乱数を用いた番号の抽選を開始する。ENTER キーの入力
で、乱数を取得し番号に適用する。

・抽選によって選ばれた番号がカードにあった場合、番号表示とともにその旨を表示し、
カードのその番号のマスを空け(0 に書き換え)、最新のカードの状態を表示する。

・抽選によって選ばれた番号がカードにあった場合、ビンゴしたかどうかカードをチェックする。

・カードの縦、横、斜めいずれか1列が全て空いたら(いずれか1 列に0 が並んだら)、ビ
ンゴしたとみなす。

・番号の抽選とカードの書き換え、およびカードのチェックを繰返し、ビンゴしたらプロ
グラムを終了する



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


Name: たかぎ [URL]  ..ハッカー(187,764ポイント)   Date: 2010/05/17(月) 00:53   No:52229     
Title: Re:− ビンゴゲームのプログラム −    
規約を熟読してください。


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

Name: ru  ..ぴよぴよ(826ポイント)   Date: 2010/05/17(月) 02:45   No:52231     
Title: Re:− ビンゴゲームのプログラム −    
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int i, j;
int w;
int state[50];
int card[5][5];

int GetNumber()
{
    while (1)
    {
        w = rand() % 50 + 1;

        if (state[w] == 0)
        {
            state[w] = 1;
            break;
        }
    }
    return w;
}

void Disp()
{
    for (i=0; i<5; i++)
    {
        for (j=0; j<5; j++)
        {
            printf("%.2d ", card[i][j]);
        }
        printf("\n");
    }
}

// 抽選によって選ばれた番号がカードにあった場合、番号表示とともにその旨を表示し、
// カードのその番号のマスを空け(0 に書き換え)
int NumberCheck(int n)
{
    for (i=0; i<5; i++)
    {
        for (j=0; j<5; j++)
        {
            if (card[i][j] == n)
            {
                printf("%.2dはある\n", n);
                card[i][j] = 0;
                return 1;
            }
        }
    }
    printf("%.2dはない\n", n);
    return 0;
}

// カードの縦、横、斜めいずれか1列が全て空いたら(いずれか1 列に0 が並んだら)、ビ 
// ンゴしたとみなす。 
int BingoCheck()
{
    for (i=0; i<5; i++)
    {
        w = 0;
        for (j=0; j<5; j++)
        {
            w += card[i][j];
        }
        if (w == 0)
        {
            return 1;
        }
    }

    for (i=0; i<5; i++)
    {
        w = 0;
        for (j=0; j<5; j++)
        {
            w += card[j][i];
        }
        if (w == 0)
        {
            return 1;
        }
    }

    w = 0;
    for (i=0; i<5; i++)
    {
        w += card[i][i];
    }
    if (w == 0)
    {
        return 1;
    }

    w = 0;
    for (i=0; i<5; i++)
    {
        w += card[i][4-i];
    }
    if (w == 0)
    {
        return 1;
    }
    return 0;
}

int main()
{
    srand((unsigned)time(NULL));

    for (i=0; i<50; i++)
    {
        state[i] = 0;
    }

    // 1〜50 の番号がランダムに配置された5 行×5 列のビンゴカードを作成する。
    for (i=0; i<5; i++)
    {
        for (j=0; j<5; j++)
        {
            card[i][j] = GetNumber();
        }
    }
    // ただし、カード中央のマスには、マスが空いた状態を表す0 をあらかじめ配置しておく。
    card[2][2] = 0;

    for (i=0; i<50; i++)
    {
        state[i] = 0;
    }
    // カード初期状態を表示
    Disp();

    // 番号の抽選とカードの書き換え、およびカードのチェックを繰返し、ビンゴしたらプロ 
    // グラムを終了する 
    while (1)
    {
        // ENTER キーの入力
        printf("ENTER");
        getchar();
        // 乱数を取得し番号に適用する。乱数を用いた番号の抽選を開始する
        if (NumberCheck(GetNumber()))
        {
            // 最新のカードの状態を表示する。
            Disp();
            // 抽選によって選ばれた番号がカードにあった場合、ビンゴしたかどうかカードをチェックする。
            if (BingoCheck())
            {
                printf("ビンゴ\n");
                break;
            }
        }
    }

    printf("終了\n");

    return 0;
}



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

Name: nescafe  ..ぴよぴよ(120ポイント)   Date: 2010/05/17(月) 03:44   No:52233 解決!     
Title: Re:− ビンゴゲームのプログラム −    
ぴよぴよさん

ありがとうございます!!

たかぎさん

規約を全然読んでませんでした以後気をつけます。


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



Name: テトリ  ..ぴよぴよ(538ポイント)   Date: 2010/05/16(日) 21:05   No:52216       
Title: ヘッダをインクルードするとエラーが出てしまう    
 こんにちわ。どうしてもわからないエラーがあるのでよろしくお願いします。

環境
Windows XP Professional
Visual Studio 2005

・やろうとしていること
クラスAのメンバのクラスBのポインタを、
グローバル変数として用意したい。

・困ってること
クラスBが宣言されているヘッダファイルを
グローバル変数用のヘッダファイルでインクルードしようとすると、
エラーが発生する。

//----------------------------------------------------------------------------
・詳細です

ファイルは以下の様な構成でヘッダファイル3つと、ソースファイル3つです。

    global.h    //グローバル変数のextern宣言
    global.cpp    //グローバル変数の実体
    main.h        //MainControlクラスの宣言
    main.cpp    //MainControlクラスの内容
    sub.h        //SubControlクラスの宣言
    sub.cpp        //SubControlクラスの内容

SubControlクラスはMainControlクラスのメンバとして使用しています。

    class MainControl{
    private:
        SubControlsubcnt;
    }

また、global.h を main.h と sub.h でインクルードしています。
※global.h にはSTLのvectorを利用するために #include <vector> の記述があります。

ここで、 global.h と global.cpp に SubControlクラスのポインタを用意するために、
global.h の中で sub.h をインクルードすると、main.cpp のコンパイル中に下記のように
エラーがでてしまいます。

//-----------------------------------------------------------------------------
sub.h(同じ行) : error C2143: 構文エラー : ';' が '<' の前にありません。
sub.h(同じ行) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
sub.h(同じ行) : error C2238: ';' の前に無効なトークンがあります。
//-----------------------------------------------------------------------------
'<'は vector<構造体> 変数名 ・・・の部分の<です。
なぜかvectorが型として認識されていないようです。

エラーが発生する状況としては sub.h に global.h をインクルードする記述があり、
さらに global.h に sub.h をインクルードする記述があると、
このようなエラーが発生するようなのですが、
なぜエラーになってしまうのでしょうか?

関係あるかどうか分かりませんが、ヘッダファイルは、全て複数回読込を防ぐために、
#ifndef xxx
#define xxx
#endif
を記述しています。

また、各ヘッダファイルがインクルードしているものは次の通りです。
global.h
#include "DxLib.h"
#include <vector>
#include "frame.h"

main.h
#include "global.h"
#include "sub.h"

sub.h
#include "global.h"


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


Name: たかぎ [URL]  ..ハッカー(187,585ポイント)   Date: 2010/05/16(日) 21:37   No:52218     
Title: Re:ヘッダをインクルードするとエラーが出てしまう    
エラーが再現するコードを貼った方がよいのでは?


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

Name: テトリ  ..ぴよぴよ(588ポイント)   Date: 2010/05/16(日) 22:36   No:52220     
Title: Re:ヘッダをインクルードするとエラーが出てしまう    
ソースファイルとヘッダファイルです。
global.hの9行目が問題の箇所です。★マークつけておきました。
よろしくお願いします。


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

Name: たかぎ [URL]  ..ハッカー(187,613ポイント)   Date: 2010/05/16(日) 22:42   No:52221     
Title: Re:ヘッダをインクルードするとエラーが出てしまう    
ざっと見ただけですが、global.hとsub.hが循環参照になっていますね。


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

Name: テトリ  ..ぴよぴよ(674ポイント)   Date: 2010/05/16(日) 23:35   No:52224 解決!     
Title: Re:ヘッダをインクルードするとエラーが出てしまう    
循環参照というものを始めて聞いたのでさっそくgoogleで
調べてみたのですが、厄介なもののようですね;
ずっとヘッダファイルは#ifndef〜を書いておけば大丈夫という認識でした。

ヘッダ間で循環が起きないように工夫していきたいと思います。
どうもありがとうございました。


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



Name: ムンバ  ..熟練のプログラマー(43,792ポイント)   Date: 2010/05/16(日) 01:11   No:52178       
Title: 配列の要素数(大きさ?)プラス雑談    
こんばんはっ!

先日は、ご迷惑をお掛けしまして、大変申し訳御座いませんでした。(_ _)
相変わらず質問ばかりのプログラマーで、すみません。
気が付いたら「熟練のプログラマー」に昇進してますが
「熟練の質問するだけのプログラマー」ですので、お許し下さい。w

添付させて頂いたファイルは、sprintf関数について、後々
自分が見て理解できる様に(すぐ忘れるから)、自分向けに作った例文(ソース)です。
ここでは、ポインタは使いません。
(環境:Windows NT VC++2008(SP1))

#include <stdio.h>

int main(){
    
    char str_all[36+11];

    char   no[2+1] = "の";        // 2バイト
    char   ha[2+1] = "は";        // 2バイト
    char  ten[2+1] = "、";        // 2バイト
    char maru[2+1] = "。";        // 2バイト

    char str1[2+1] = "今";        // 2バイト
    char str2[8+1] = "総理大臣";    // 8バイト
    char str3[6+1] = "民主党";        // 6バイト
    char str4[8+1] = "鳩山さん";    // 8バイト
    char str5[4+1] = "です";        // 4バイト

    ---修正部位(↓straii → str_all)---

    sprintf(str_all, "%s%s%s%s%s%s%s%s%s%s", str1, no, str2, ha, ten, str3, no, str4, str5, maru);
    // 表示結果:今の総理大臣は、鳩山さんです。

    printf("%s\n\n", str_all);
    
    return 0;
}

添付したソースを、色々いじって遊んでいます。
結果、配列の値は上述の様になって、実行できました。
(環境:Windows NT VC++2008(SP1))

質問1:各配列の要素数(大きさ?)で、無駄にメモリ(バイト数)を使ってる箇所はありますか?
質問2:各配列の要素数(大きさ?)で、メモリ(バイト数)が足りない箇所はありますか?
質問3:各配列の[]内の +1 ([36+11]を除く)は、ヌル文字「\0」または「NULL」が入るのでしょうか?
質問4:char str_all[36+11]; の +11 は、char型を宣言で10個用意したので +1 で +11 にしてみました。
   +10 でも大丈夫でしょうか? 

どうも頭がごちゃごちゃになっていて、配列の要素数の整理が付かなくなってしまいました。
sprintf関数の質問ではなく、配列の質問です。
これって、ノイローゼーなのですかね?^^;

質問5:質問4で、「char型を宣言で10個用意したので +1 で +11 にしてみました。」
    と質問してますが、質問の意味が解りますでしょうか?


     編集済み


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


Name: box  ..ハッカー(152,679ポイント)   Date: 2010/05/16(日) 01:27   No:52180     
Title: Re:配列の要素数(大きさ?)プラス雑談    
> 質問1:各配列の要素数(大きさ?)で、無駄にメモリ(バイト数)を使ってる箇所はありますか?

はい。
str_all[]です。

> 質問2:各配列の要素数(大きさ?)で、メモリ(バイト数)が足りない箇所はありますか?

いいえ。
ただ、no[]〜str5[]の配列要素数は省略できます。例えば、
char no[] = "の";
と書けば、コンピューターが自動的に3バイト確保してくれます。
自分でバイト数を数えるより、コンピューターに数えさせる方が楽だし、
間違いないですよね。

> 質問3:各配列の[]内の +1 ([36+11]を除く)は、ヌル文字「\0」または「NULL」が入るのでしょうか?

'\0'が入ります。NULLは入りません。
'\0'とNULLとは、全く別のものです。

> 質問4:char str_all[36+11]; の +11 は、char型を宣言で10個用意したので +1 で +11 にしてみました。
>    +10 でも大丈夫でしょうか? 

+1でじゅうぶんです。


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

Name: たかぎ [URL]  ..ハッカー(186,797ポイント)   Date: 2010/05/16(日) 01:51   No:52182     
Title: Re:配列の要素数(大きさ?)プラス雑談    
この手の問題を考えるときは、いくつかの点を考慮しなければなりません。

各配列の内容は変わることがありますか?
もし、次の総選挙後に、たちあがれ日本の与謝野さんが総理大臣になったらどうするのでしょう?

もうひとつはエンコーディングの問題です。
VC++2008とのことなので、シフトJISに決め打ちになっているのでしょうが、移植性は皆無です。
わかっていてやっているのなら構いませんが、一般的な理解を目指すのであれば不十分です。


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

Name: ムンバ  ..熟練のプログラマー(43,962ポイント)   Date: 2010/05/16(日) 02:06   No:52184     
Title: Re:配列の要素数(大きさ?)プラス雑談    
boxさん、早速のご返答、ありがとうございます。
ご解説、悩む(調べる)時間下さい。

特に

>>'\0'とNULLとは、全く別のものです。<(ヌル文字とNULL)
>> +1でじゅうぶんです。<(配列)

ありがとうございます。
今日は、寝てしまいます。すみません。
おやすみなさい。<(_ _)>






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

Name: ムンバ  ..熟練のプログラマー(44,301ポイント)   Date: 2010/05/16(日) 02:38   No:52185     
Title: Re:配列の要素数(大きさ?)プラス雑談    
たかぎさん、こんばんは。
すみません。
レスさせて頂いていたので、気が付きませんでした。<(_ _)>

boxさん、たかぎさん、詳細は後日、必ずご返信させて頂きます。

ん?むむっ?
次の総理大臣が与謝野さんになった時は・・・
もしかしたら、高速道路の料金が、統一1円になってたり
働かなくても、毎月50万円の生活費が知らぬ間に、自分の口座に入ってたり・・・
とかですか?

つまり、+1 がプラスになる事もありマイナスになる事にもなる?

>>各配列の内容は変わることがありますか?
 政治家は、常に変わると思います。
  
>>もし、次の総選挙後に、たちあがれ日本の与謝野さんが総理大臣になったらどうするのでしょう? 
 総理大臣の「名前」が変わるだけかと私は思います。w

ごめんなさい。改めてレスさせて頂きます。
おやすみなさい!ε=ε=┏( ^_^)┛






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

Name: たかぎ [URL]  ..ハッカー(186,892ポイント)   Date: 2010/05/16(日) 09:14   No:52191     
Title: Re:配列の要素数(大きさ?)プラス雑談    
> 総理大臣の「名前」が変わるだけかと私は思います。w 

なぜ、"たちあがれ日本"の"与謝野さん"と書いたかを考えてください。
"民主党"(3文字)、鳩山さん(4文字)分の領域しかないところに、"たちあがれ日本"(7文字)、"与謝野さん"(5文字)をどうやって格納するのでしょう?


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

Name: ムンバ  ..熟練のプログラマー(44,675ポイント)   Date: 2010/05/16(日) 11:44   No:52195     
Title: Re:配列の要素数(大きさ?)プラス雑談    
おはようございます。

boxさん、ありがとうございます。

 >>'\0'とNULLとは、全く別のものです。<(ヌル文字とNULL) 
 了解しました。ありがとうございます。
 []内、省略できるのは、勉強済みです。
 そこで、char str_all[36+11]; なのですが
 +3 までは普通に実行できたのですが、
 +2 と +1 では、私の環境ではデバックエラー表示が出てしまいます。
 環境依存?って事なのでしょうか?

たかぎさん、ありがとうございます。

 >>各配列の内容は変わることがありますか? 
 >>わかっていてやっているのなら構いませんが(略)
 あっ、いや。言葉が足りなくてすみません。
 各配列の内容を変えながら、配列の要素数も変えて遊んでいたら
 今回の疑問が出たので、質問させて頂きました。
 >>なぜ、"たちあがれ日本"の"与謝野さん"と書いたかを考えてください。
 タイトルに「・・・プラス雑談」とさせて頂いたので
 ブラックジョークかと思って答えてしまったのですが・・・。(汗
 char str4[10+1] = "与謝野さん";    // 10バイト  
 で、合ってますか?
 
となると、全体的には char str_all[36+11]; 
の +11 の所が、賢くないと言う事になるのでしょうか?

あと、エンコーディングの問題が解りません。(←編集・追加させて頂きました。)

---追加---
レスもれなど、御座いましたら申し訳御座いません。
ご指摘頂けます様、宜しくお願い致します。
(久々に、カレーハウスCoCo壱番屋の宅配待ちです。<10辛 ^^)  編集済み


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

Name: たかぎ [URL]  ..ハッカー(187,187ポイント)   Date: 2010/05/16(日) 12:13   No:52197     
Title: Re:配列の要素数(大きさ?)プラス雑談    
> ブラックジョークかと思って答えてしまったのですが・・・。(汗 

ブラックジョークということはないと思いますよ。
反民主連立政権ができれば、平沼さんを擁立する可能性が出てきますが、健康問題を考えると与謝野さんに白羽の矢が立つ可能性はゼロではありません。自民以外から首相を出すのであれば、舛添さんは参議院議員ですし、山田さんはそもそも国会議員ではありません。渡辺さんは連立に加わるかどうかも怪しいです。だとすると...
実際には、そんな深読みをして挙げた名前ではなく、姓が三文字の国会議員といえば真っ先に思いつくのが与謝野さんだっただけです。

いずれにせよ...

> もしかしたら、高速道路の料金が、統一1円になってたり 
> 働かなくても、毎月50万円の生活費が知らぬ間に、自分の口座に入ってたり・・・ 

こういうのはあり得ませんね。

> char str4[10+1] = "与謝野さん";    // 10バイト   
> で、合ってますか? 

そのやり方だと、総理大臣がかわるたびに再コンパイルが必要になりますが、そういう意図なのでしょうか?
実行時に名前を変えるつもりであれば、十分な大きさの配列を用意するか、その都度malloc等で動的に割りつける必要があります。


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

Name: たかぎ [URL]  ..ハッカー(187,325ポイント)   Date: 2010/05/16(日) 12:16   No:52199     
Title: Re:配列の要素数(大きさ?)プラス雑談    
> あと、エンコーディングの問題が解りません。

WindowsではシフトJISを使いますので、多バイト文字は2バイト以内です。
けれども、Windows以外では、最近ではUTF-8を使うことが圧倒的に多くなっています。
UTF-8での漢字は3バイトが普通ですので、多バイト文字1文字を2バイトに決め打ちするのは問題です。
せめて、MB_LEN_MAX * 文字数とすべきではないでしょうか?


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

Name: ムンバ  ..熟練のプログラマー(45,381ポイント)   Date: 2010/05/16(日) 13:55   No:52204     
Title: Re:配列の要素数(大きさ?)プラス雑談    
>>こういうのはあり得ませんね。
 ですよね。^^;

たかぎさん、再度ご解説、ありがとうございます!

>>そういう意図なのでしょうか?

 PearのCGIの変数に $ENV{'CONTENT_LENGTH'};
 という、文字などのバイト数を調べる変数があるのですが
 漢字で 1文字が、3バイトの文字があったのです。
 そこで、C言語ではどうなんだろ?と思って遊んでいるうちに疑問が浮かび
 こちらで質問させて頂きました。
 
 エンコーディングのご解説ありがとうございます。
 やはり、boxさんがおっしゃっている様に
 char str4[] = "鳩山さん"; 
 の様にした方が良さそうです。

そこで、サイズは sizeof演算子を使い、文字列はポインタを使って
サイズを調べてみました。

ちょっと見難いと思います。

#include <stdio.h> 

int main(){ 
    
    int s_size; 
    
    char *p_str_all[] = {"今", "の", "総理大臣", "は", "、", "鳩山さん", "です", "。", "\0"}; //文字表示の言葉
    
/*
  char str_all[36+2];        //38バイト
  char str_all[] = "今の総理大臣は、鳩山さんです。";  // 31バイト

  char   no[] = "の";        // 3バイト 
    char   ha[] = "は";        // 3バイト 
    char  ten[] = "、";        // 3バイト 
    char maru[] = "。";        // 3バイト 

    char str1[] = "今";        // 3バイト 
    char str2[] = "総理大臣";    // 9バイト 
    char str3[] = "民主党";        // 7バイト 
    char str4[] = "鳩山さん";    // 9バイト 
    char str5[] = "です";        // 5バイト  

    sprintf(str_all, "%s%s%s%s%s%s%s%s%s%s", str1, no, str2, ha, ten, str3, no, str4, str5, maru); 
    表示結果:
    今の総理大臣は、鳩山さんです。 // 39バイト
*/

    int i;
    
    for (i = 0; i < 8; i++){
        printf("%s", p_str_all[i]);
    }
    // 表示結果:
    // 今の総理大臣は、鳩山さんです。 // 36バイト ←ポインタ使った時


    printf("\n\n"); 

    s_size = sizeof(p_str_all);
    printf("バイト数:%dバイト\n\n", s_size); 
     
    return 0; 
}

またまた遊んでみました。

  char str_all[] = "今の総理大臣は、鳩山さんです。";  // 31バイト

  char *p_str_all[] = {"今", "の", "総理大臣", "は", "、", "鳩山さん", "です", "。", "\0"}; // 36バイト

この、5バイトの差で悩んでます。



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

Name: たかぎ [URL]  ..ハッカー(187,483ポイント)   Date: 2010/05/16(日) 15:05   No:52205     
Title: Re:配列の要素数(大きさ?)プラス雑談    
> PearのCGIの変数に $ENV{'CONTENT_LENGTH'}; 
> という、文字などのバイト数を調べる変数があるのですが 
> 漢字で 1文字が、3バイトの文字があったのです。 

Pearlですね。PEARはPHPのライブラリです。
CONTENT_LENGTHはCGIの環境変数ですが、1文字が3バイトになるのはUTF-8が使われる機会が多いということです。
ちなみにEUC-JPでも1文字が3バイトになることはあります。

> この、5バイトの差で悩んでます。 

根本的なところで理解できていないように思います。
31バイトは、2バイト文字×15文字=30バイトとナル文字が1バイトで、計31買取になっています。
一方、36バイトというのは、4バイトのポインタが9個なので、4×9=36バイトになっています。
ですので、両者はまったく異なります。


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

Name: nishi  ..ぴよぴよ(229ポイント)   Date: 2010/05/16(日) 16:40   No:52207     
Title: Re:配列の要素数(大きさ?)プラス雑談    
WindowsはシフトJISだけではなく、Unicode(UTF-16)も存在します。

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

Name: たかぎ [URL]  ..ハッカー(187,502ポイント)   Date: 2010/05/16(日) 16:55   No:52209     
Title: Re:配列の要素数(大きさ?)プラス雑談    
> WindowsはシフトJISだけではなく、Unicode(UTF-16)も存在します。

今はワイド文字の話はしていませんので、UTF-16は対象外です。



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

Name: ムンバ  ..熟練のプログラマー(45,715ポイント)   Date: 2010/05/16(日) 19:23   No:52210 解決!     
Title: Re:配列の要素数(大きさ?)プラス雑談    
お二方とも、ご解説どうもありがとうございます。

正確には Perl ですね。失礼しました。(謝

>>Pealですね。PEARはPHPのライブラリです。 
>>CONTENT_LENGTHはCGIの環境変数ですが、1文字が3バイトになるのはUTF-8が使われる機会が多いということで>>す。 
>>ちなみにEUC-JPでも1文字が3バイトになることはあります。

 そういう事だったんですね。ためになります。

そうか!4バイトのポインタが9個で36バイトですね。
気が付きませんでした。

nishi さん、ありがとうございます。

たかぎさん、何度も貴重なお時間を割いて頂き本当にありがとうございました。
しっかり、頭に入りました。
また、へんちくりんな質問するかもしれませんが
その節は、宜しくお願い致します。
失礼します。<(_ _)>


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

Name: たかぎ [URL]  ..ハッカー(187,518ポイント)   Date: 2010/05/16(日) 19:40   No:52211     
Title: Re:配列の要素数(大きさ?)プラス雑談    
> 正確には Perl ですね。

ついつられてPearlと書いてしまいましたが、Perlが正解ですね。


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

Name: ムンバ  ..熟練のプログラマー(45,717ポイント)   Date: 2010/05/16(日) 19:52   No:52213 解決!     
Title: Re:配列の要素数(大きさ?)プラス雑談    
はいです。w
ありがとうございました。


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



Name: CUser  ..ぴよぴよ(15ポイント)   Date: 2010/05/15(土) 15:07   No:52147       
Title: ただコンパイラ    
今でも、ただで Turbo C++ や Borland C++ を入手できるサイトがあったら教えてください。

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


Name: たかぎ [URL]  ..ハッカー(186,584ポイント)   Date: 2010/05/15(土) 16:00   No:52154     
Title: Re:ただコンパイラ    
ここがそうですね。
https://downloads.embarcadero.com/free/c_builder

ただ、Turbo C++はすでになくなっているので、C++ Builderの30日トライアル版しか入手できません。


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

Name: softya [URL]  ..ハッカー(164,323ポイント)   Date: 2010/05/15(土) 16:12   No:52155     
Title: Re:ただコンパイラ    
Borland C++ Compiler 5.5だと下記サイトの手順で入手可能です。
http://www.cppdrive.jp/bcc/index.html


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

Name: CUser  ..ぴよぴよ(52ポイント)   Date: 2010/05/16(日) 10:58   No:52192 解決!     
Title: Re:ただコンパイラ    
なるほど。Turbo C++ はもうなくなっているんですね。
ありがとうございます。


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

Name: dic  ..熟練のプログラマー(67,369ポイント)   Date: 2010/05/16(日) 13:22   No:52201     
Title: Re:ただコンパイラ    
コンパイラでしたらgcc

タイトルよく読んでなかったです
すいません 編集済み


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



Name: FP  ..ぴよぴよ(18ポイント)   Date: 2010/05/16(日) 11:42   No:52194       
Title: ゲームのギミックについて    
ゲーム(ACみたいな)でブーストをかけるアクションをすると加速しますが
あれどうすれば良いの?
シフトキー押したときだけ速度倍にしたけどなんかリアルじゃないような・・・

やっぱり速度ベクトルで管理するのかなあ


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


Name: Justy  ..伝説なるハッカー(531,482ポイント)   Date: 2010/05/16(日) 12:16   No:52198     
Title: Re:ゲームのギミックについて    
>シフトキー押したときだけ速度倍
 速度・加速度ベースの移動で管理して、移動の時の加速度をシフトキー押したときだけ
通常時よりも上げればいいかと。
 うまく値を調整すればブーストっぽく一気に、そして滑らかに速度が上がります。

 勿論押されている間ずっと高い加速度だと次第にとんでもない速度になるので、
最大速度に近づくにつれ加速度を下げるなどの処理は必要になります。


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



Name: まるこす  ..ぴよぴよ(39ポイント)   Date: 2010/05/15(土) 20:14   No:52163       
Title: プログラミング初心者です    
龍神録みたいなシューティングゲームを3人で協力して作りたいんですが、
3人で役割分担してプログラミングとかはできるんですか?
もしできるなら、どんな感じで役割分担したら良いか教えてほしいです。


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


Name: Tororo  ..初心者(7,027ポイント)   Date: 2010/05/15(土) 20:43   No:52165     
Title: Re:プログラミング初心者です    
>>もしできるなら、どんな感じで役割分担したら良いか教えてほしいです。
画像、音楽、プログラム  とかでしょうか?

また、3人全員がプログラムをするとなると、ちょっと難しいかなと思います^^;




ただ、自分が考えるやり方なので、もっと良い分担方法があるかもしれません><


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

Name: バグ  ..ハッカー(196,599ポイント)   Date: 2010/05/15(土) 20:47   No:52166     
Title: Re:プログラミング初心者です    
誰か指示を出せる経験者がいないと、全員が初心者だと難しいと思います。
最初はそれぞれが1人で規模の小さい物を作成し、ゲームを作るのに必要な事を学んだ方がいいと思いますよ。
その後、ゲームの設計をおこない、分担できそうな箇所を切り出していくべきでしょう。
設計や仕様も決まっていないのに闇雲に割り振ってもうまくいきませんよ。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,190,298ポイント)   Date: 2010/05/16(日) 04:00   No:52187     
Title: Re:プログラミング初心者です    
まず3人がどの程度の知識をお持ちかで変わってくると思います。
もし仮に3人ともゲーム制作はほぼ初めてとかだといきなりは無理だと思います。

少しでも経験があるなら、まず3人で小さなミニゲームを作る事をお勧めします。

弾幕ゲームで、大きく中身を分けるとすると、

弾(弾幕)、敵、自機、背景、とかでしょうか。
複数で制作しやすくする為にはC++で制作するか、完全に物ごとに処理を分ける必要があるでしょう。
各モジュールに依存関係が強いほど正確な設計書が無いと制作は難しくなると思います。

弾幕ゲームは弾幕がメインになりますから、弾幕作りをひたすらやる人を一人用意してもいいかもしれませんね。
しかし絵やサウンドはどうするのでしょうか?
こちらの制作にもかなり時間がかかると思いますよ。
それならいっそのこと絵・音楽・プログラムで分けた方がやりやすいかもしれません。


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

Name: Ma  ..比類無きプログラマー(98,609ポイント)   Date: 2010/05/16(日) 06:13   No:52190     
Title: Re:プログラミング初心者です    
>弾幕ゲームで、大きく中身を分けるとすると、 
>弾(弾幕)、敵、自機、背景、とかでしょうか。 

個人的には、

・UI/メニュー系。
・シューティング計算・処理。
 -弾、敵、自機
 -エフェクト、背景、テキスト

のような三分がいいかと思います。
UIは簡単なものなら時間かかりませんが、マウスに対応させる/パッドに対応させる などの機能をつけるとなると、そこそこ大変になります。(ボリュームコントロールとか、キーコンフィグとか。)

ですが、皆さんもおっしゃるとおり、グラフィッカー、シナリオ製作 等の役割が決まっていて、3人ともプログラマーの場合ならです。
(Subversion のようなものを使う前提で。) 編集済み


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



Name: monolith  ..ぴよぴよ(317ポイント)   Date: 2010/05/15(土) 23:30   No:52168 解決!       
Title: コンパイルエラー    
初めまして、このサイトを知って間もないものです。
自分はゲーム制作を学びたいと思っていたのでDxlibを導入するまではよかったのですが
後に別にプログラミングをする時にコンパイルエラーが出てしまうようになりました。
エラー内容は下記の通りです
説明                                                         ファイル
1:error LNK2019: 未解決の外部シンボル_WinMain@16が関数___             LIBCMTD.lib
  tmainCRTStartupで参照されました。

2:fatal error LNK1120: 外部参照1が未解決です。                         (このプログラム名) 

使用ソフトはvisual studio 2008  Professional Editionです

プログラミングを初めて1か月ですので至らない点は多々ありますが
Dxlibの設定で何か本体自体の設定が変わってしまうことはないのでしょうか?
解決法などわかる方教えて下さい!!

念のためプログラムも載せますね

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

void main()

{
    int x;

    srand((unsigned int )time( NULL ) );

    x = rand();

    printf("乱数の値は%d\n", x );
}
-------------------------------------------


 編集済み


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


Name: ひよこ  ..比類無きプログラマー(82,928ポイント)   Date: 2010/05/16(日) 00:05   No:52174     
Title: Re:コンパイルエラー    
これってコンソールのアプリケーションじゃないでしょうか?
DXライブラリを使うにはウィンドウズアプリケーションじゃなければだめだと思います。


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

Name: monolith  ..ぴよぴよ(397ポイント)   Date: 2010/05/16(日) 00:14   No:52176     
Title: Re:コンパイルエラー    
>>ひよこさん
すみません解決しました。
プロジェクトをWIN32プロジェクトのまま設定してしまってたようです。
昨日から悩んでたのがバカらしいですね;
意見参考になりました。ありがとうございました。


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



Name: あsdf  ..ぴよぴよ(454ポイント)   Date: 2010/05/15(土) 02:34   No:52132       
Title: ポインタ    
@のプログラムは正常に動作しますが、Aのプログラムは、コンパイルはできるのですが、実行した際に強制終了されてしまいます。なぜでしょうか。

@
#include <stdio.h>
#include <string.h>

void swapcase(char *s1) {
    while (*s1) {
        if (islower(*s1) != 0)
            *s1 = toupper(*s1);
        else
            *s1 = tolower(*s1);
        s1++;
    }
}


int main(void) {
    char *str;


         printf("単語を入力(大文字小文字変換をする)");
    scanf("%s", str);

    if (strcmp(str, "quit") == 0)
        return 0;
        
    swapcase(str);
    
    printf("%s\n", str);
    
    return 0;
}
A
#include <stdio.h>
#include <string.h>

void swapcase(char *s1) {
    while (*s1) {
        if (islower(*s1) != 0)
            *s1 = toupper(*s1);
        else
            *s1 = tolower(*s1);
        s1++;
    }
}


int main(void) {
    char *str;
    char *a;
    
    printf("単語を入力(大文字小文字変換をする)");
    scanf("%s", str);

    if (strcmp(str, "quit") == 0)
        return 0;
        
    swapcase(str);
    
    printf("%s\n", str);
    
    return 0;
}


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


Name: あsdf  ..ぴよぴよ(520ポイント)   Date: 2010/05/15(土) 02:37   No:52133     
Title: Re:ポインタ    
一応言っておきます。
@とAの違いは、char *a があるかないかというだけです。

OSは、windows7で、Borland C++ Compilerを使っています。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,187,802ポイント)   Date: 2010/05/15(土) 02:45   No:52134     
Title: Re:ポインタ    
本当にコンパイル通りますか?
少なくとも<ctype.h>をインクルードする必要があるように思いますが。

後、

char *str;

ではアドレスの入れ物を用意しただけで文字列を入れるいれ物は用意されていません。
この場合、そのように用意するのではなく例えば

char str[20];

のように用意すれば20文字(19+ヌル文字)格納できる入れ物が用意できます。
今回うまくいったのはたまたまだと思います。


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

Name: あsdf  ..ぴよぴよ(717ポイント)   Date: 2010/05/15(土) 03:21   No:52136     
Title: Re:ポインタ    
返信ありがとうございます。

コンパイルは、両方とも通ります。そして、@は正常に動作します。
しかし、この@も char *str の部分がおかしいとのことですが、何がおかしいかよく分かりません。

char str[20]; のように宣言すると、19個の文字までしか受け取れないので、20以上の文字数が打たれた際には要素数を超えてしまいますが、ポインタだと、任意の文字数を受け取れると思ったのですが・・・
(例えば、abcという文字が打たれたとすると、strのさすアドレスにa、次のアドレスにb・・・というふうになると思ったのですが、違うのでしょうか)

もしかして、char*型の変数は初期化を必ずしないといけないのでしょうか。
さっきためしに、char *str="";としてみたら、Aの場合でも正常に動きました。




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

Name: たかぎ [URL]  ..ハッカー(186,375ポイント)   Date: 2010/05/15(土) 03:33   No:52137     
Title: Re:ポインタ    
> 本当にコンパイル通りますか? 
> 少なくとも<ctype.h>をインクルードする必要があるように思いますが。 

それはC++の話では?
C、少なくともC90ではコンパイルできます。C99では未定義になりますが、普通はコンパイルできます。

私の手元の環境では、両方ともSegmentation faultになるので、動いているのはたまたまです。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,190,244ポイント)   Date: 2010/05/15(土) 03:42   No:52139     
Title: Re:ポインタ    
じゃこんなたとえ話をしましょう。
今、下のように

「a100番地には4つの箱」
「a101番地には3つの箱」
「a102番地には5つの箱」

が用意されています。

a100 : □□□□
a101 : □□□
a102 : □□□□□

こんな感じですね。
プログラムコードで書けば

char a100[4];
char a101[3];
char a102[5];

と言ったところでしょうか。
今、100番地にある箱に"abc"を入れたとすると

a100 : a b c □
a101 : □□□
a102 : □□□□□

こんな感じになりますよね。(ヌル文字省略)

所で、

char *str;

は何を指すでしょうか?
これはポインタといって「アドレスを入れる入れ物」です。
先ほどの箱はデータそのもの、つまり文字を入れる事が出来たのに対して、これは「住所番号」を入れるものです。
他のものは入りません。
つまり、先ほどで言う「a100番地」とか「a101番地」というデータです。
その為、strにa100番地というデータを入れるとstrは「abc」を指します。
この事をプログラムで確認してみましょう。

#include <stdio.h>

int main(void) {

    char a100[5]="abc";
    char *str;

    str = a100;
    printf("%s",str);

    return 0;
}

実行する前に何が出力されるか想像出来ますか?
ということで、

char *str;

ではデータを入れるための領域は確保されていません。

char a100[5];

とかけば5バイトのものが入れられる入れ物が用意されます。
文字列を入れたいなら必要なバイト数先に確保しなくてはなりません。

後、(1)は正常に動くと言っていらっしゃいますが、上でも書いたようにたまたま動いているだけで、間違っています。
他のPCでは動かないかもしれません。現に私のPCでは動きません。

>20以上の文字数が打たれた際には要素数を超えてしまいますが、ポインタだと、任意の文字数を受け取れると思ったのですが・・・ 

残念ながらそこまで融通は利きません。
プログラムはやれと言った事しかやってくれないので、自分で何文字入ってくるのか考えてその分先に確保しなければなりません。

>例えば、abcという文字が打たれたとすると、strのさすアドレスにa、次のアドレスにb・・・というふうになると思ったのですが、違うのでしょうか

ではstrの指すアドレスにaは無事格納出来たとしましょう。
次のアドレスにbと書いてありますが、そのアドレスが使用可能であるかはどうしてわかりますか?
ひょっとしたら100万文字入ってくるかもしれないんですよね。
コンパイラはPCのメモリのどこにstrの先頭アドレスを用意したらいいか解るでしょうか?

ということで、ポインタを用意しただけじゃダメなのです。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,190,252ポイント)   Date: 2010/05/15(土) 03:45   No:52140     
Title: Re:ポインタ    
> たかぎさん

> それはC++の話では? 

あ、そうだったのですね。C++でコンパイルしていました。
http://homepage1.nifty.com/MADIA/vc/C/c_lang_ansi12.htm
ここ見て必要なのかと思いました。
良く見たらvoid main・・・

愛用のボーヨーさんの所でも・・
http://www.bohyoh.com/CandCPP/C/Library/islower.html


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

Name: たかぎ [URL]  ..ハッカー(186,575ポイント)   Date: 2010/05/15(土) 04:24   No:52141     
Title: Re:ポインタ    
islowerやtolowerなどを使う場合は、<ctype.h>をインクルードするのが筋ではあります。
ただ、行儀は悪くても<ctype.h>なしでコンパイルできますし、規格上も保証されます。


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

Name: あsdf  ..ぴよぴよ(784ポイント)   Date: 2010/05/16(日) 00:12   No:52175 解決!     
Title: Re:ポインタ    
配列を使うことによりちゃんと動作しました。

ポインタについてもっと理解を深めようと思います。

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


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



Name: ローラーパニック  ..ぴよぴよ(345ポイント)   Date: 2010/05/15(土) 23:20   No:52167       
Title: 多次元配列の初期化    
初めまして。

VC6.0で以下のコードを実行したところ、添付ファイルのような結果になりました。

12fe00[1]    12fe04[2]    12fe08[3]    12fe0c[4]    12fe10[5]    …
というような結果を期待していたのですが、どこがいけなかったのでしょうか?
#include <stdio.h>

int main()
{
    int tbl[][4][2] = {        // tbl[成長タイプ][年齢][性別]
        {1, 2}, {3, 4}, {5, 6}, {7, 8},
        {9, 10}, {11, 12}, {13, 14}, {15, 16},
        {17, 18}, {19, 20}, {21, 22}, {23, 24}
    };
    int grow, age, sex;

    for (grow = 0; grow < 3; grow++) {
        for (age = 0; age < 4; age++) {
            for (sex = 0; sex < 2; sex++) {
                printf("%x[%d]\t", &tbl[grow][age][sex], tbl[grow][age][sex]);
            }
        }
    }

    return 0;
}


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


Name: Justy  ..伝説なるハッカー(530,585ポイント)   Date: 2010/05/15(土) 23:34   No:52169     
Title: Re:多次元配列の初期化    
 初期化のところに問題があります。

 簡単に言えば必要なところに {}がないので、tbl[][4][2]配列は初期化データから
tbl[12][4][2]として扱われています。
 その為、{3, 4}や {5, 6}などが本来想定していたところとは別のところに設定されて
しまっています。


C言語編 第25章 多次元配列
http://www.geocities.jp/ky_webid/c/025.html


# あと printfのところで、ポインタを表示するときは %pとして下さい。



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

Name: ru  ..ぴよぴよ(5ポイント)   Date: 2010/05/15(土) 23:36   No:52170     
Title: Re:多次元配列の初期化    
2次元配列になってるから

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

Name: ローラーパニック  ..ぴよぴよ(430ポイント)   Date: 2010/05/15(土) 23:48   No:52171 解決!     
Title: Re:多次元配列の初期化    
Justy様、詳しい説明ありがとうございました。
中括弧の有無とは無関係に連続的に値がセットされていく、と思い込んでいたのがいけなかったようです。

ru様、レスありがとうございます。


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



Name: Hashimo  ..ぴよぴよ(963ポイント)   Date: 2010/05/15(土) 15:18   No:52149       
Title: DirectShowでフルスクリーンでの動画再生方法について    
はじめまして。

DirectShowで動画再生のプログラムを作っているのですが、
表示ウインドウがフルスクリーンモードの状態で動画再生を行うと画面が黒いままで表示がされない現象があり困っております。
お詳しい方おられましたら教えていただきたいです。

現状は、
ウインドウモードの状態から動画再生を行うと正常に再生されます。
フルスクリーンモードでは、正常に再生されたり、表示がされなかったり不安定です。
BGMは正しく鳴っています。

ソースコード
    IGraphBuilder *m_pGraphBuilder;
    IMediaControl *m_pMediaControl;
    IMediaEventEx *m_pMediaEvent;
    IMediaSeeking *m_pMediaSeek;
    IVideoWindow *m_pVideoWindow;

    HRESULT hr;

    // COMを初期化
    hr = CoInitialize(NULL);
    if (FAILED(hr))
    {
        return S_FALSE;
    }

    // FilterGraphを生成
    hr = CoCreateInstance ( CLSID_FilterGraph,
            NULL,
            CLSCTX_INPROC_SERVER,
            IID_IGraphBuilder,
            (VOID **)&m_pGraphBuilder);
    if (FAILED(hr))
    {
        return S_FALSE;
    }

    // MediaControlインターフェース取得
    hr = m_pGraphBuilder->QueryInterface(IID_IMediaControl,
    (VOID **)&m_pMediaControl);
    if (FAILED(hr))
    {
        return S_FALSE;
    }

    hr = m_pGraphBuilder->QueryInterface(IID_IMediaEvent,
    (VOID **)&m_pMediaEvent);
    if (FAILED(hr))
    {
        return S_FALSE;
    }

    hr = m_pGraphBuilder->QueryInterface(IID_IMediaSeeking,
    (VOID **)&m_pMediaSeek);
    if (FAILED(hr))
    {
        return S_FALSE;
    }

    hr = m_pGraphBuilder->QueryInterface(IID_IVideoWindow,
    (VOID **)&m_pVideoWindow);
    if (FAILED(hr))
    {
        return S_FALSE;
    }

    // Graphを生成
    hr =  m_pGraphBuilder->RenderFile(wstrSearchPath, NULL);
    if (FAILED(hr))
    {
        return S_FALSE;
    }

    LONGLONG Current;
    LONGLONG Stop;

    hr = m_pMediaSeek->GetAvailable( &Current, &Stop );

    hr = m_pVideoWindow->put_Owner((OAHWND)hWindow);
    if (FAILED(hr))
    {
        return S_FALSE;
    }

    hr = m_pVideoWindow->put_WindowStyle(WS_CHILD|WS_CLIPSIBLINGS);
    if (FAILED(hr))
    {
        return S_FALSE;
    }

    RECT rect;
    GetClientRect ( hWindow, &rect );
    hr = m_pVideoWindow->SetWindowPosition( 0, 0, rect.right, rect.bottom );
    if (FAILED(hr))
    {
        return S_FALSE;
    }

    // 再生開始
    hr = m_pMediaControl->Run();


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


Name: Justy  ..伝説なるハッカー(530,318ポイント)   Date: 2010/05/15(土) 15:57   No:52152     
Title: Re:DirectShowでフルスクリーンでの動画再生方法について    
IVideoWindow::put_FullScreenMode
http://msdn.microsoft.com/ja-jp/library/cc369761.aspx

 再生を開始する前に、これはどこかで呼んでいますか?


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

Name: Hashimo  ..かけだし(1,082ポイント)   Date: 2010/05/15(土) 16:41   No:52156     
Title: Re:DirectShowでフルスクリーンでの動画再生方法について    
IVideoWindow::put_FullScreenModeは使っておりません。
フルスクリーン状態でput_FullScreenModeを使いますと、フルスクリーン表示になりませんでした。
フルスクリーンの解像度は640*480、動画の解像度も640*480なのですが、なぜが左上に小さく表示されます。
ウインドウモード状態でput_FullScreenModeを使いますと動画再生時の表示はフルスクリーンになるのですが、
フルスクリーン状態から切り替えなしに動画再生をする必要があるため困っております。
 編集済み


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

Name: Justy  ..伝説なるハッカー(530,438ポイント)   Date: 2010/05/15(土) 18:56   No:52161     
Title: Re:DirectShowでフルスクリーンでの動画再生方法について    
 なるほど。そうですか。

 んー、再現できる全体のコード(ウインドウの生成とかフルスクリーン化のあたりとか)が
あるといいんですが。
 
 フルスクリーンウインドウって ChangeDisplaySettings()と併用して作ったものですか?


#追記 簡単なフルスクリーンの動画再生サンプルを作ってみました。
 PlayMovie関数は再生待ちと解放周りを追加しただけで、Hashimoさんが書かれたコードと
ほとんど変わりはありません。
 左クリックでフルスクリーン化、右クリックで再生開始です。
 再生中はウインドウ処理が全部止まっていますので注意して下さい。
 MovieFilePath変数が動画ファイルパスになっています。適当に変えて試してみて下さい。
 編集済み


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



Name: TKOZ  ..熟練のプログラマー(55,590ポイント)   Date: 2010/05/15(土) 15:30   No:52150       
Title: ファミコンの画像フォーマット    
ネット上で入手したソースに手を加えて、Windowsのコマンドプロンプトで
動く様にしたものなのですが、0番スプライトしか表示されません。
1番スプライト以降も表示させるには、どうすれば良いですか?
誰か詳しい方教えてください。

#include<stdio.h>
#include<windows.h>

#define BACK_RED (BACKGROUND_RED | BACKGROUND_INTENSITY)
#define BACK_YELLOW (BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_INTENSITY)
#define BACK_GREEN (BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_INTENSITY)
#define BACK_BLUE (BACKGROUND_BLUE | BACKGROUND_INTENSITY)
#define BACK_WHITE (BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE | BACKGROUND_INTENSITY)
#define BACK_PURPLE (BACKGROUND_RED | BACKGROUND_BLUE | BACKGROUND_INTENSITY)
#define BACK_WATER (BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_INTENSITY)

#define FORE_RED (FOREGROUND_RED | FOREGROUND_INTENSITY)
#define FORE_YELLOW (FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY)
#define FORE_GREEN (FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY)
#define FORE_BLUE (FOREGROUND_BLUE | FOREGROUND_INTENSITY)
#define FORE_WHITE (FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY)
#define FORE_PURPLE (FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY)
#define FORE_WATER (FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY)

void print_pixel(unsigned char b) 
{  
    HANDLE mystdout;
    
    mystdout=GetStdHandle(STD_OUTPUT_HANDLE);
    
    switch(b) 
    {    
        case 0 :
            SetConsoleTextAttribute(mystdout,0 );
            printf("  "); 
            break;    
        case 1 :
            SetConsoleTextAttribute(mystdout,BACK_RED | FORE_RED );  
            printf("■"); 
            break;    
        case 2 :
            SetConsoleTextAttribute(mystdout,BACK_WHITE | FORE_WHITE);  
            printf("■"); 
            break;    
        case 3 :
            SetConsoleTextAttribute(mystdout,BACK_WATER | FORE_WATER);  
            printf("■"); 
            break;    
        default : 
            printf("%d", b);  
    }
}

void DrawPixel(unsigned char tile[16])
{
    int i,j,k;
    for(i = 0, j = 8; i < 8; i++, j++) 
        {    
            for(k = 7; k >= 0; k--)      
                print_pixel(((((tile[i] >> k) & 1) << 1) | 
                ((tile[j] >> k) & 1)));    
                putchar('\n');  
        }
}

int main(void) 
{  
    FILE *fp;
    int l;  
    unsigned char tile[2][16];  
    char filename[64];
    
    printf("ファイル名を入力してください。\n");
    scanf("%s",filename);
    //if(argc < 2)    return 1;  
    if(!(fp = fopen(filename, "r")))    
        return 1;
    for(l=0;l<2;l++)
    {  
    fread(tile[l], 1, 16, fp);  
        DrawPixel(tile[l]);
    }
    fclose(fp);
    
    int temp;
    scanf("%d",&temp);
      
    return 0;
}

使用例:
ファイル名を表示してください。
giko.spr[enterで
表示される。] 編集済み


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


Name: TKOZ  ..熟練のプログラマー(55,615ポイント)   Date: 2010/05/15(土) 15:51   No:52151 解決!     
Title: Re:ファミコンの画像フォーマット    
すみません。自己解決しました。迷惑かけてすみません。 編集済み

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



Name: シノニム  ..初心者(5,269ポイント)   Date: 2010/05/14(金) 20:15   No:52126       
Title: 3Dモデルのモーションについて    
お久しぶりです。いつもお世話になっております

今回質問したいのは3Dモデル(XFile形式)のモーションについてです

学校のチーム制作で3Dモデルを使うことになっているんですが、現在困っているのが、モーションの合成?です
モーションブレンドというのを調べてみたんですが少し求めている内容と違っていました

端的に言えばTPSなんですが、銃を構えるモーションと移動するモーションを同時に再生したいんです
ちょっと説明がしづらいんですが、
@銃を向けるモーション(腕のボーンのみを動かすモーション)
A走るモーション(足のボーンのみを動かすモーション)

上記2つを合成し、走りながら銃を向けるというモーションに(2つのモーションを同時に再生)したいです

・・・まずこれは可能なんですかね?可能であれば是非方法を教えていただけたらなと思います
不可能であるなら良い解決方法などを教えていただきたいです

OS : XP
環境 : VC++

よろしくお願いします




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


Name: Justy  ..伝説なるハッカー(530,007ポイント)   Date: 2010/05/14(金) 23:21   No:52128     
Title: Re:3Dモデルのモーションについて    
>可能なんですかね
 Xファイルはほとんど触ったことがないですが、フォーマット的には複数モーションや
特定のところだけアニメーションするような情報の持たせ方ができるようなので、
問題はありません。
 後は使っているライブラリが対応していれば可能です。
 対応していなければ自分で作る必要があります。
 つまり、どちらにしても可能ってことです。


>@銃を向けるモーション(腕のボーンのみを動かすモーション) 
>A走るモーション(足のボーンのみを動かすモーション) 
 「走るモーション」は全身でなくていいのですか?
 完全に2つのモーションの対象部位が完全に異なるのであれば(それはそれで大変だとは
思いますが)モデルを別々に作って別々に制御してもいいですよね。

 もし「走るモーション」が全身を対象に、「銃を向けるモーション」は腕だけ、のように 
それぞれの対象部位かぶっているのであれば、2つのモーションをブレンドさせるときに 
「銃を向けるモーション」がある腕の部分は「走りのモーション」から 「銃を向けるモーション」に
ブレンドで遷移させ、モーションがないそれ以外の部分はそのまま「走りのモーション」を適用すれば
望み通りの動きになるかと。 編集済み


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

Name: シノニム  ..初心者(5,420ポイント)   Date: 2010/05/14(金) 23:34   No:52129 解決!     
Title: Re:3Dモデルのモーションについて    
>Justyさん

返答ありがとうございます!
なんとそんな方法が・・・読む限りだと実装までには以外と時間がいりそうですね
考え方は分かったので、ちょっとチャレンジしてみます!

もしXFile関連の便利な関数などご存知の方がいたら書き込んで頂けると幸いです
Justyさん、ありがとうございました。とりあえず解決ということで収めたいと思います


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



Name: bb  ..ぴよぴよ(311ポイント)   Date: 2010/05/14(金) 17:13   No:52120       
Title: 変数の型について    
10章の「敵を表示させてみよう」で
void graph_enemy(){
        int i;
        for(i=0;i<ENEMY_MAX;i++){
                if(enemy[i].flag==1){
                        DrawRotaGraphF(enemy[i].x+FIELD_X,enemy[i].y+FIELD_Y,1.0f,0.0f,img_enemy[0][enemy[i].img],TRUE);
                }
        }
}
とありますがenemy[i].x,enemy[i].yは型がdoubleでの宣言ですが
DrawRotaGraphの引数の型はintですよね?
ここで「intにdoubleが使われてデータを失う危険があります」とビルド中出ます。
立ち上げて動くには動くのですがこれでいいのでしょうか?
VC++2008ではなく2010でやって変換がうまくいかなかったので自分でヘッダとかソース追加してやってるんですが関係ありますか?



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


Name: softya [URL]  ..ハッカー(165,757ポイント)   Date: 2010/05/14(金) 17:21   No:52121     
Title: Re:変数の型について    
DrawRotaGraphの引数の型はintですが、DrawRotaGraphFの引数の型はfloatです。
名前が微妙に違いますので注意してください。

Dxlib.hより抜粋。

extern    int            DrawRotaGraph( int x, int y, double ExRate, double Angle, int GrHandle, int TransFlag, int TurnFlag = FALSE  ) ;                                    // グラフィックの回転描画
extern    int            DrawRotaGraphF( float xf, float yf, double ExRate, double Angle, int GrHandle, int TransFlag, int TurnFlag = FALSE  ) ;                                // グラフィックの回転描画

もしオリジナルのヘッダを作っているなら、原因を調べて元のヘッダを使えるようにしないと今後が面倒だと思います。 編集済み


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

Name: Dixq (管理人)  ..ウィザード(1,187,347ポイント)   Date: 2010/05/14(金) 17:27   No:52122     
Title: Re:変数の型について    
警告を消す章が少し先にあります。
しかしdoubleを全部floatにした方が早いです…。
Directxを使うと計算過程すら両者が同じ精度になると知らなかったからこうしてあるんですよね;


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

Name: bb  ..ぴよぴよ(385ポイント)   Date: 2010/05/14(金) 19:14   No:52125 解決!     
Title: Re:変数の型について    
ありがとうございます。
参考にしながら別のゲーム(STG)をつくってますので
とりあえずdoubleをintにして座標計算はすべて整数型で処理してみようと思います。
ありがとうございました。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,187,660ポイント)   Date: 2010/05/14(金) 21:13   No:52127     
Title: Re:変数の型について    
いや、それはまずいです。

softyaさんが仰っているように、DrawRotaGraphF関数の引数はfloat型であってint型ではありません。
警告はとりあえず無視でも大丈夫です。
これも上と重なりますが、気になるようなら37章を参考にするか、全てfloat型にして下さい。

int a=0;

a += 0.9;
a += 0.9;
a += 0.9;
a += 0.9;
a += 0.9;

の計算結果がどうなるかを考えて頂ければ整数型で座標管理をしてはいけない理由がお解りいただけると思います。


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



Name: しん  ..ぴよぴよ(16ポイント)   Date: 2010/05/14(金) 15:26   No:52108       
Title: 出力文字を上書きする    
for(i=1; i<=100; i++)
{
printf("%d\n",i);
}

このようなソースがあったとします。
実行したら
1
2
3
4
5
と100まで表示されます。

私は
1を表示したら次に2を表示するとき
1を消して1のあった場所に2を表示する
ということがやりたいです。

使用言語はC言語(C++わからないので)で
開発環境はVC++ 2008
OSはWindows XP SP3
です。

どのようにしたらよろしいでしょうか?
ご教授お願いします。


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


Name: Dixq (管理人)  ..ウィザード(1,187,285ポイント)   Date: 2010/05/14(金) 16:00   No:52109     
Title: Re:出力文字を上書きする    
printfの最初に

%r

を書いてみてください。


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

Name: たかぎ [URL]  ..ハッカー(186,331ポイント)   Date: 2010/05/14(金) 16:09   No:52110     
Title: Re:出力文字を上書きする    
> %r 
> を書いてみてください。

\rですね。

printf("\r%d", i);

とすれば、期待通りになりますが、早すぎて分からないかもしれません。


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

Name: しん  ..ぴよぴよ(110ポイント)   Date: 2010/05/14(金) 16:20   No:52111     
Title: Re:出力文字を上書きする    
ありがとうございます。
えーと試してみたのですが出来ないみたいです。。。


printf("\r現在%d回ループしました。",i);

このようにしたのですが、
printfの中に他の文字列が入ったらダメなのでしょうか?


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

Name: バグ  ..ハッカー(196,462ポイント)   Date: 2010/05/14(金) 16:21   No:52112     
Title: Re:出力文字を上書きする    
カーソルを戻すだけなら\rでOKです。
文字を消したいならば、消したい文字数分だけバックスペースを出力するという方法が楽かな?


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

Name: バグ  ..ハッカー(196,486ポイント)   Date: 2010/05/14(金) 16:23   No:52114     
Title: Re:出力文字を上書きする    
printf("現在%d回ループしました。\r",i);

こうじゃない?


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

Name: Dixq(管理人)  ..ぴよぴよ(371ポイント)   Date: 2010/05/14(金) 16:38   No:52115     
Title: Re:出力文字を上書きする    
な、何故%と書いたし!

すみません、訂正ありがとうございます^^;

後、windowsならclsだったか何かで全消しも出来ますよね。


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

Name: たかぎ [URL]  ..ハッカー(186,359ポイント)   Date: 2010/05/14(金) 16:38   No:52116     
Title: Re:出力文字を上書きする    
> printfの中に他の文字列が入ったらダメなのでしょうか?

字数が増える方向に変化するなら問題ないはずです。
どうダメだったのかを補足してください。


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

Name: たかぎ [URL]  ..ハッカー(186,342ポイント)   Date: 2010/05/14(金) 16:39   No:52117     
Title: Re:出力文字を上書きする    
> 文字を消したいならば、消したい文字数分だけバックスペースを出力するという方法が楽かな?

\bを出力しても、カーソル位置を変化させるだけですね。


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

Name: しん  ..ぴよぴよ(130ポイント)   Date: 2010/05/14(金) 16:40   No:52118 解決!     
Title: Re:出力文字を上書きする    
>バグさん
ありがとうございます。
printf("現在%d回ループしました。\r",i); 
これで期待通りの結果になりました^^


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

Name: バグ  ..ハッカー(196,494ポイント)   Date: 2010/05/14(金) 16:52   No:52119     
Title: Re:出力文字を上書きする    
>>\bを出力しても、カーソル位置を変化させるだけですね。 

うわ!!失礼しました。
文字数分だけバックスペースを出力して、同じ回数だけスペースで上書きしないと駄目でした…m(_ _)m
たかぎさん、指摘ありがとうございました。


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



Name: 山崎  ..プログラマー(39,187ポイント)   Date: 2010/05/14(金) 12:45   No:52102       
Title: 画面消去"0x1b[2J"について    
いつもお世話になっております、山崎です。
今回は、エスケープシーケンスを使って画面の文字を消去する方法について伺いに参りました。

OSはXP、VisualStudio2010プロフェッショナルを使っております。
使用言語はC++です。

現在、ライブラリを用いずに、コマンドプロンプト上で動くような
簡単なゲームを作ってみようかなと考えております。
画像ファイルを用いずに、文字だけで表現する感じです。

そこで、一度標準出力した文字を画面から消すというプログラムを試すために
以下のようなコードを書いて実行してみたのですが、どうも消去されません。

#include <stdio.h>
#include <conio.h>    //getch()のため

int main()
{
    char Letter;    //入力したキーの文字コード
    bool ProgramEnd=false;

    while(ProgramEnd==false)
    {
        Letter=getch();

        if(Letter=='q')
            ProgramEnd=true;

        if(Letter=='c')
            printf("0x1b[2J");    //画面に描いた文字を消去したい!

        printf("%c\n",Letter);    //入力したキーの文字を表示する
    }

    return 0;
}



実行すると、以下のように"0x1b[2J"がそのまま標準出力され、
画面消去されません。(試しにaとsとdを入力しております)

------------------------実行結果-------------------------
a
s
d
0x1b[2Jc
---------------------------------------------------------

printf("0x1b[2J");
の部分ですが、
printf("\0x1b[2J");
に変えても駄目でした。

調べてみたところ、0x1b[2Jというエスケープシーケンスを使えるかどうかは環境に依る、
というような感じのことが書かれておりました…。
プログラム初心者にこのあと手ほどきしたいと思っているので、
APIに深く突っ込んだりパスを変えたりせず、
なるべく簡単なコードでなんとかならないかと思案しております。

環境を変えたりAPIに深く踏み込んだりせずに、
標準出力した文字を消去する方法はあるでしょうか。


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


Name: たかぎ [URL]  ..ハッカー(186,303ポイント)   Date: 2010/05/14(金) 12:49   No:52103     
Title: Re:画面消去    
> 環境を変えたりAPIに深く踏み込んだりせずに、 
> 標準出力した文字を消去する方法はあるでしょうか。

APIに深く踏み込むというのがどの程度のことかわかりませんが...
Windows APIを直接使わないということであれば、

system("cls");

とすれば、画面を消去できると思います。



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

Name: softya [URL]  ..ハッカー(165,529ポイント)   Date: 2010/05/14(金) 12:54   No:52104     
Title: Re:画面消去    
エスケープシーケンスはMS-DOS系(WindowsMEまで)なら有効でしたが、NT系であるWindows2000/XP/Vista/7では基本的には利用できません。
たかぎさんの方法を私も推薦します。


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

Name: 山崎  ..プログラマー(39,307ポイント)   Date: 2010/05/14(金) 13:00   No:52105 解決!     
Title: Re:画面消去    
たかぎさん softyaさん
非常に素早いご返信、ありがとうございます。
ちょっと下の階に行っている間に… ^^;

たかぎさんの
system("cls");
を使った方法を試してみたところ、あっけなくやりたいことができました。
これを知らなかったとはお恥ずかしいです…
ありがとうございました。

お二人のお勧めの方法を是非とも採用させていただきます。
素早いご返信、誠にありがとうございました。


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

Name: バグ  ..ハッカー(196,409ポイント)   Date: 2010/05/14(金) 14:07   No:52106     
Title: Re:画面消去    
ちなみにWINAPIを使用するならば、FillConsoleOutputAttribute関数とかFillConsoleOutputCharacter関数辺りを調べてみるとよいかと思います。

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



Name: にのさん  ..ぴよぴよ(131ポイント)   Date: 2010/05/13(木) 19:46   No:52069       
Title: if文分岐がうまくできない    
わからないところがあったのでみてほしいです。
char[]型に入ってる数字の判定で、a[n]が'2'から'9'の数字かつ、a[n+1]は空白なら
っていう分岐をつくりたいんですけど、
if((int)a[n]>49&&(int)a[n]<58&&a[n+1]==' ')
これでやったら分岐がうまくいきませんでした。どうやったらいいでしょうか。

 編集済み


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


Name: たいちう  ..比類無きプログラマー(80,498ポイント)   Date: 2010/05/13(木) 20:25   No:52072     
Title: Re:if文分岐がうまくできない    
空白が半角スペースの事を指しているならこう。

if ('2' <= a[n] && a[n] <= '9' && a[n + 1] == ' ')


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

Name: にのさん  ..ぴよぴよ(235ポイント)   Date: 2010/05/13(木) 20:34   No:52075     
Title: Re:if文分岐がうまくできない    
たいちうさんありがとうございます。
そちらの方法でやったところ、やっぱり、"2 "という文字列で
偽になってしまい、elseのほうにいってしまいます。
確認のために、このif分岐を通過しないように実行したときは成功しました。


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

Name: たいちう  ..比類無きプログラマー(80,543ポイント)   Date: 2010/05/13(木) 20:41   No:52077     
Title: Re:if文分岐がうまくできない    
if文の直前に次の行を入れて結果を教えて下さい。
printf("n = %d, a = \"%s\"\n", n, a);


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

Name: にのさん  ..ぴよぴよ(317ポイント)   Date: 2010/05/13(木) 20:52   No:52078 解決!     
Title: Re:if文分岐がうまくできない    
H2
n = 1, a = "H2
"
ok

okはifが真の時にでるものですがなぜかでました
ほかのとこに原因がありそうです。ほかの原因を探してみます。
たいちうさんありがとうございました。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,187,034ポイント)   Date: 2010/05/13(木) 21:13   No:52081     
Title: Re:if文分岐がうまくできない    
if文のところ、イコールは付いていますか?

if ('2' <= a[n] && a[n] <= '9' && a[n + 1] == ' ')

それでも解決しないようなら、一度プログラムコードを投稿されてはいかがでしょうか?


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

Name: ookami  ..中級者(12,735ポイント)   Date: 2010/05/13(木) 21:47   No:52087     
Title: Re:if文分岐がうまくできない    
「解決!」になっていたのでスルーしてましたが、続きそうなので私からも。

"2 "ではダメで"H2 "では意図どおりということは、n=0の場合をチェックしていないのではないかと思ったのですが、いかがでしょうか。


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

Name: たいちう  ..比類無きプログラマー(80,548ポイント)   Date: 2010/05/14(金) 08:55   No:52099     
Title: Re:if文分岐がうまくできない    
なぜ2つめの"が改行後に表示されるのでしょうか?
私の書いた¥マークが\になっているので判りにくかったかもしれませんが、
一応確認して再度実行したほうが良いと思います。


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

Name: たかぎ [URL]  ..ハッカー(186,262ポイント)   Date: 2010/05/14(金) 11:17   No:52100     
Title: Re:if文分岐がうまくできない    
> 私の書いた¥マークが\になっているので判りにくかったかもしれませんが、 

本来は逆斜線(バックスラッシュ)であるべきで、円記号の方が文字化けなのですが、あまり知られていないんですかねえ。


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



Name: ぽぽ  ..ぴよぴよ(68ポイント)   Date: 2010/05/13(木) 08:29   No:52035       
Title: C言語初心者です    
今取り組んでいる課題で分からないのがあります。 初心者なのでどう調べていいかもわからずここにこさせていただきました。できたら教えてください。

問題
あるクラスの試験の点数を整数で繰り返し入力し、点数の合計と平均点を出力するプログラムを作成しなさい。
点数は、0点以上100点以下とし、この範囲外の点(0点未満または100点より大きい点)が入力されたときは、入力を終了し、点数の合計と平均点を出力する(最後に入力された範囲外の点は集計の対象としない)。 また、平均は小数点以下2桁まで出力する。
繰り返しの命令は、何を使ってもよい。


よろしくお願いします。


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


Name: ookami  ..中級者(12,206ポイント)   Date: 2010/05/13(木) 08:47   No:52037     
Title: Re:C言語初心者です    
おはようございます。

とりあえず↓でsoftyaさんが紹介されているC言語の入門サイトをコピーさせていただきます。
http://www.play21.jp/board/formz.cgi?action=res&resno=51928&page=&lognum=&id=dixq&rln=51943

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

それから、規約も参考にされるとよいでしょう。
http://dixq.net/board/board.html

また、ぽぽさんのご自宅や学校(?)などに、C言語のコンパイル環境はありますか?少しコードを書いてはコンパイルして確認する繰り返しが必要と思いますので。


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

Name: ぽぽ  ..ぴよぴよ(281ポイント)   Date: 2010/05/13(木) 12:08   No:52043     
Title: Re:C言語初心者です    
早速ありがとうございました。サイト参考にさせていただきます。コンパイル環境はありますが失敗ばかりです。

はじめてきたサイトだったので、投稿してから規約を読んでしまいました。申し訳ありません。

マナー違反ですが、お許しください。

それで問題の続きがあったのでもしお許しいただけるなら教えてください。

問題 
あるクラスの試験の点数を整数で繰り返し入力し、点数の合計と平均点を出力するプログラムを作成しなさい。 
点数は、0点以上100点以下とし、この範囲外の点(0点未満または100点より大きい点)が入力されたときは、入力を終了し、点数の合計と平均点を出力する(最後に入力された範囲外の点は集計の対象としない)。 また、平均は小数点以下2桁まで出力する。 
繰り返しの命令は、何を使ってもよい

実行例
点数:10
点数:100
点数:20
点数:35
点数:120

合計:165点
平均: 41.25点


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

Name: たかぎ [URL]  ..ハッカー(185,293ポイント)   Date: 2010/05/13(木) 14:09   No:52047     
Title: Re:C言語初心者です    
規約を読まれたとのことですが...

環境や言語、自分はどこまでやったかなど、必要な情報を補足してください。


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

Name: ぽぽ  ..ぴよぴよ(494ポイント)   Date: 2010/05/13(木) 15:08   No:52054     
Title: Re:C言語初心者です    
 
 C言語です。

 僕がやっていたのは、
 
 int nin,tenk,goukei,heikin;
  goukei=0;
  nin=0;
  while(1){
     printf("Enter ten=>");
     scanf("%d", &ten);
     if(ten<0) break;
     goukei+=ten;
     nin++;
   }
   printf("goukei:%d ten\n",goukei);
   heikin=goukei/nin;
   printf("\nheikin:%dten\n",heikin);

 以上なんです。まったく話にならないプログラムかもしれませんが、コンパイルはエラーになります。

なんどもすみません。


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

Name: たかぎ [URL]  ..ハッカー(185,527ポイント)   Date: 2010/05/13(木) 15:12   No:52055     
Title: Re:C言語初心者です    
何か一冊入門書を読むことをお勧めします。
一見遠回りのようでも、結局はその方が近道です。


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

Name: ぽぽ  ..ぴよぴよ(517ポイント)   Date: 2010/05/13(木) 15:20   No:52056     
Title: Re:C言語初心者です    
そうですよね。

課題の提出期限が今日までだったので、とりあえずで出そうと思ったんですけど。

やっぱり地道にやらないとだめですよね。


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

Name: 胡椒  ..初心者(7,411ポイント)   Date: 2010/05/13(木) 15:39   No:52057     
Title: Re:C言語初心者です    
コードは最初から最後まで全てを貼ったほうがいいですよ。
エラーも、どんなエラーが出たのかを書いてもらわないと答えにくいですし。

まず、平均点はintでは出ませんよね。宣言もtenがtenkになってますし。
また、0点未満が入力されたとき、while文から抜け出しているので、後は100点より大きい点が入力されたときもwhile文から抜け出せばよいわけです。
printf("\nheikin:%dten\n",heikin); の最初の\nは何か意図があるのでしょうか?



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

Name: たかぎ [URL]  ..ハッカー(185,920ポイント)   Date: 2010/05/13(木) 15:41   No:52058     
Title: Re:C言語初心者です    
ぽぽさんに限らず誰にでも通じることですので、やや説教じみたことをあえて書きます。

> 課題の提出期限が今日までだったので、

よほどの緊急事態ならともかく、出題から提出期限までが1日かそこらしかないということはないと思います。
与えられた課題を期限までに仕上げて提出するためには、次のことを徹底しなければなりません。

1. 最初の段階で何をすべきなのかを明確にする。
 明確にならなければ、明確になるまで出題者に確認を行うこと。

2. 十分な余裕を持って、技術的な問題点を洗い出し、その解決策を見つける。
 問題点を洗い出すには、この程度の課題なら実際に作ってみるのが一番

3. 期限に間にあいそうにないと判断した場合は、巻き返し可能な段階で対策を講じる。
 出題者に相談するなど

4. 可能であれば期限前に提出するなどし、それで問題ないかを確認する。

ここまでしなくてもできる自信があるのなら問題ありませんが、できないならできないなりの対応をすべきです。
それができることが「やる気がある」ということです。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,187,270ポイント)   Date: 2010/05/13(木) 21:38   No:52085     
Title: Re:C言語初心者です    
あぁ・・一足遅かったですか・・。
もうちょっと早めに投稿されると色々アドバイスが受けられると思いますよ。

ところで、提出後もまだ勉強されるでしょうか?
投稿されたコードは結構おしいところまで出来ていますね。
次のヒントを元にコードを改良してみて下さい。

・0未満が入力されたらループを抜ける事が出来るが、100超過だと現在はそのままになっている
・1回目に0〜100以外が入力されたらnin=0になっており、「0で割る」というしてはいけないことをするコードになっている
・小数点が表せる実数はint型ではなくdouble型(or float型)
・double型の変数の中身をprintfで表示させるには%fを使う
・int型とint型の計算結果はint型になるので、平均計算の際は整数同士の計算にならないように気を付ける。

この辺を踏まえて修正すると解けると思いますよ。


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

Name: ぽぽ  ..ぴよぴよ(553ポイント)   Date: 2010/05/14(金) 08:33   No:52096     
Title: Re:C言語初心者です    
> コードは最初から最後まで全てを貼ったほうがいいですよ。
> エラーも、どんなエラーが出たのかを書いてもらわないと答えにくいですし。

> まず、平均点はintでは出ませんよね。宣言もtenがtenkになってますし。
> また、0点未満が入力されたとき、while文から抜け出しているので、後は100点より大きい点が入力されたときもwhile文から抜け出せばよいわけです。
> printf("\nheikin:%dten\n",heikin); の最初の\nは何か意図があるのでしょうか?



ありがとうございます。
改行の文字を入れたんですが/になってしまいました。


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

Name: ぽぽ  ..ぴよぴよ(570ポイント)   Date: 2010/05/14(金) 08:34   No:52097     
Title: Re:C言語初心者です    
> ぽぽさんに限らず誰にでも通じることですので、やや説教じみたことをあえて書きます。

> > 課題の提出期限が今日までだったので、

> よほどの緊急事態ならともかく、出題から提出期限までが1日かそこらしかないということはないと思います。
> 与えられた課題を期限までに仕上げて提出するためには、次のことを徹底しなければなりません。

> 1. 最初の段階で何をすべきなのかを明確にする。
>  明確にならなければ、明確になるまで出題者に確認を行うこと。

> 2. 十分な余裕を持って、技術的な問題点を洗い出し、その解決策を見つける。
>  問題点を洗い出すには、この程度の課題なら実際に作ってみるのが一番

> 3. 期限に間にあいそうにないと判断した場合は、巻き返し可能な段階で対策を講じる。
>  出題者に相談するなど

> 4. 可能であれば期限前に提出するなどし、それで問題ないかを確認する。

> ここまでしなくてもできる自信があるのなら問題ありませんが、できないならできないなりの対応をすべきです。
> それができることが「やる気がある」ということです。

 

次回から気をつけさせていただきます。ありがとうございます。



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

Name: ぽぽ  ..ぴよぴよ(633ポイント)   Date: 2010/05/14(金) 08:36   No:52098     
Title: Re:C言語初心者です    
> あぁ・・一足遅かったですか・・。
> もうちょっと早めに投稿されると色々アドバイスが受けられると思いますよ。

> ところで、提出後もまだ勉強されるでしょうか?
> 投稿されたコードは結構おしいところまで出来ていますね。
> 次のヒントを元にコードを改良してみて下さい。

> ・0未満が入力されたらループを抜ける事が出来るが、100超過だと現在はそのままになっている
> ・1回目に0〜100以外が入力されたらnin=0になっており、「0で割る」というしてはいけないことをするコードになっている
> ・小数点が表せる実数はint型ではなくdouble型(or float型)
> ・double型の変数の中身をprintfで表示させるには%fを使う
> ・int型とint型の計算結果はint型になるので、平均計算の際は整数同士の計算にならないように気を付ける。

> この辺を踏まえて修正すると解けると思いますよ。

管理人さんへ
ありがとうございます。一度これで再提出をさせていただきます。
みなさんいろいろと丁寧に教えていただいてありがとうございます。


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



Name: SIN  ..かけだし(1,529ポイント)   Date: 2010/05/13(木) 14:34   No:52050       
Title: C言語のBM法について    
C言語のプログラム(BM法)についての質問です。
テキストファイルweb.txtから文字列thereforeを検索し、thereforeの表れた回数を数えるプログラムを作っているのですが、thereforeの数が効率が悪い方法と一致しません。どうやらBM法のプログラムがthereforeをカウントできていない時があると思われます。
分かる方よろしくお願いします。
C Pad for Borland C++Compilerで作成しています。

どなたか教えて下さい。
BM法のプログラム-------------------
#include<stdio.h>
#include<string.h>
int bmSkip(int *skip, char *pattern, int patn_len);

int bm_search(char *text, char *pattern,int line)/*_テキストファイルweb.txtから文字列thereforeを検索する(BM法)_*/
{
    int i;/*_注目しているテキストの位置_*/
    int j;/*_注目しているパターンの位置_*/
    int t=0;
    int text_len,patn_len;
    int skip[256],count = 0;

    text_len = strlen(text);/*_テキストの長さをセット_*/
    patn_len = strlen(pattern);/*_パターンの長さをセット_*/

    bmSkip(skip,pattern,patn_len);
    i=text_len-1;//iにテキストの最初の注目位置をセット

    while( i > patn_len ) {
        j=patn_len  - 1;//jにパターンの最初の注目位置をセット
        while(text[i]==pattern[j]){//テキストとパターンを1文字比較
            if(j==0){//すべての文字が一致したら
                printf("Line%d, t=%d\n",line,t+1);
                //printf("%s\n",text);
                count++;
            }
            i--;//テキストの位置を1文字戻す
            j--;//パターンの位置を1文字戻す
            t++;
        }
        i-=skip[text[i]];//テキストの注目点(i)を,不一致になった文字に応じた分量だけずらす
    }
    return count;
}

int bmSkip(int *skip, char *pattern, int patn_len)
{
    int i;

    for(i=0;i<256;i++){
        skip[i]=1;
    }
    for(i=0;i<patn_len;i++){
        skip[pattern[i]]=patn_len-i-1;
    }
    return 0;
}

int main(void)
{
    char text[80],word[]="therefore";
    FILE *fp;
    int line = 0;
    int count = 0;

    fp = fopen("web.txt","r");
    if(fp==NULL){
        printf("cannot open file\n");
        return -1;
    }

    memset(text,0x00,sizeof(text));//_読込み領域の初期化
    while(fgets(text,80,fp)!=NULL){//_1行(80字以内)ずつ読み込みながら
        line++;
        count += bm_search(text,word,line);
        memset(text,0x00,sizeof(text));//_読込み領域の初期化
    }
    fclose(fp);
    printf("%s : %d times appear\n",word,count);// 個数を表示
    return 0;
}
---------------------------------------------------
効率が悪いプログラム(1文字ずつ比較する)----------
#include <stdio.h>
#include <string.h>

int simplesearch( char *text, char *pattern, int line )
{
    int i, j, t, m, n, count = 0;
    
    n = strlen(text); //行の長さ
    m = strlen(pattern); //検索パターンの長さ
    
    for(t=0; t<n-m; t++) { //t:探索開始位置
        for(i=t,j=0; j<m; i++,j++) {
            if(text[i]!=pattern[j]) break;
        }
        if(j==m) { //パターンの最後まで一致=発見
            printf("Line%d, t=%d\n",line, t+1); //パターンの位置を表示
            printf("%s\n",text); //パターンの含まれる行の文章を表示
            count++;
        }
    }
    return count;
}

int main(void)
{
    char text[80], word[] = "therefore";
    FILE *fp;
    int line = 0;
    int count = 0;
    fp = fopen("web.txt","r");
    if(fp==NULL) {
        printf("cannot open file\n");
        return -1;
    }
    while(fgets(text, 80, fp)!=NULL) { // 1行(80字以内)ずつ読み込みながら
        line++;
        count += simplesearch( text, word, line ); //素朴な手法により検索
    }
    fclose(fp);
    
    printf("%s : %d times appear\n", word, count); //個数を表示
    return 0;
}
----------------------------------------------------------------------


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


Name: SIN  ..かけだし(1,535ポイント)   Date: 2010/05/14(金) 03:55   No:52095 解決!     
Title: Re:C言語のBM法について    
出来ました。

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



Name: ゆーずぃ  ..入門者(3,512ポイント)   Date: 2010/05/11(火) 22:15   No:51948       
Title: [雑談] ゲーム会社への転職について    
こんにちは。いつも皆様の深い知識に感服しながら掲示板を拝見しております。

私は今18歳から4年間、IT業界で言うところの運用系の会社に勤めておりまして、今年で23になります。今月で私の受け持っていたプロジェクトが一段落を終え、近々異動になることが決定しています。そこで、これを機に兼ねてからの夢であったゲーム会社にゲームプログラマとして転職をしたいと考えております。色々とゲームプログラマへの転職の方法や心構えなどは調べたのですが(このサイトの過去ログも検索しましたが、あまり見つかりませんでしたので)、出来れば関係者の生の声も聞きたいと思い質問させて頂きました。

私の情報は、高校は普通科で、卒業後現在の会社へ。開発経験は無しです。C言語とC++とVBAは扱えますが(個人用ツールが作れる程度)、ゲームを作ったことはありません。一応情報処理の資格として基本情報技術者を取得しました。4月に応用情報技術者を受験しましたが、午後試験が及第点まで届かない気がしています;(発表は6月)

正直に言いますと、全くの異業種なので聞きたいことばかりなのですが;とりあえずは、

1・中途採用の際に重要視されること
2・ゲーム会社へ転職するに当たってやっておいた方が良いこと
3・おすすめの会社規模

で質問させて頂きます。

とはいえ、ただ「ゲーム会社 転職」のキーワードで雑談をしたいだけなので、ゲーム会社への転職のコツなど、何でもいいのでお話して頂けるとありがたいです^^
識者の皆々様、宜しくお願いいたします。m(_ _)m 編集済み


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


Name: softya [URL]  ..ハッカー(161,704ポイント)   Date: 2010/05/11(火) 22:37   No:51949     
Title: Re:[雑談] ゲーム会社への転職について    
元ゲームプログラマですが、私の経験の範囲でお答えします。

1・中途採用の際に重要視されること

プログラムの技術力です。
即戦力として期待されますので、やはり経験がモノを言います。
ゲーム業界でなくても良いのですが、設計力・チーム開発・C++やJavaの深い知識などが要求されます。ネッワーク・プログラミングに強いなどもアピールのポイントに成ります。
もちろん、同人でも良いのでゲーム開発の経験などがあればなお良いでしょう。
残念ながら、基本情報技術者などの資格は重要視されません。

2・ゲーム会社へ転職するに当たってやっておいた方が良いこと

今までの仕事・独学の経験をまとめた資料と開発可能な言語や技術力をアピール出来るソースコードなどがあると良いと思います。
技術力をアピール出来るソースコードとゲームプログラムを用意してください。

3・おすすめの会社規模 

大手は難しいと思います。
大手なら、高い実績が必要で有名ゲームの一部を手がけたとか、それなりの実績が必須です。
中小は実力主義ですので、対人関係に苦手が無く技術力が高ければ、即採用されます。

例えばイナズマイレブンやレイトン教授で有名な「レベルファイブ」の場合。
学歴不問、18〜35歳位までの方
プログラマは、C/C++プログラム経験必須
と成っています。


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

Name: ゆーずぃ  ..入門者(3,922ポイント)   Date: 2010/05/11(火) 23:07   No:51953     
Title: Re:[雑談] ゲーム会社への転職について    
>softyaさん

早速のレスをありがとうございます!

>>設計力・チーム開発・C++やJavaの深い知識などが要求されます。ネッワーク・プログラミングに強いなどもアピールのポイントに成ります。 

運用の仕事でしたので、仕事の経験で上記のアピールに当たるものはありませんorz
何かゲームを作ったとして、そのソースだけでは充分とは言えないでしょうか?

>>技術力をアピール出来るソースコードとゲームプログラムを用意してください。
やはり一つはゲームを作っておいた方がいいですよね…。落ち物パズルなどの定番ものよりも、少し凝った作品の方がいいのでしょうか? その時は2Dで大丈夫です‥よね?

>>プログラマは、C/C++プログラム経験必須 
よくある文句なのですが、これは会社としては一体どの程度の経験を想定しているのでしょうか?やはりsoftyaさんも言うようにゲームプログラム(個人・同人含む)の経験でしょうか?

質問ばかりですみません;お手すきの時に返信をお願いいたします。


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

Name: softya [URL]  ..ハッカー(162,593ポイント)   Date: 2010/05/11(火) 23:49   No:51955     
Title: Re:[雑談] ゲーム会社への転職について    
>何かゲームを作ったとして、そのソースだけでは充分とは言えないでしょうか? 

評価するとすれば、ゲーム自体のセンスも評価されます。
何と言いますか、全体的な操作性や動きの凝り方、ちょっとしたエフェクトなど気が効いているかどうかです。
ゲームのプランナーが基本設計やチューニングを行うとは言え、ゲームプログラマーの技量次第でゲームの操作性や快適性は変わってきます。ロードのタイミングとか、メニューの出方とか、細かいところに気を配っているかですね。
ソースコードは、オリジナルのコードの量(サンプルや丸写しは極力避けて)、ライブラリの使い方の熟練度、コメントやコーディング・スタイルなど可読性に対する考慮、オブジェクト指向や構造化プログラミングに対する理解度などが評価されると思います。

>やはり一つはゲームを作っておいた方がいいですよね…。落ち物パズルなどの定番ものよりも、少し凝った作品の方がいいのでしょうか? その時は2Dで大丈夫です‥よね? 

会社によりますが、3Dメインの会社に2Dだと評価が低くなります。DS主体なら構わないと思いますが。
作品は、完成度が高いこと、作品のオリジナリティよりもプログラムの技量が高いことが重要になると思います。
要は、新卒採用でゲーム学校の人が出してくる作品よりもプログラム技量を示さなければ採用は難しいと言うことです。

>>プログラマは、 C/C++プログラム経験必須  
>よくある文句なのですが、これは会社としては一体どの程度の経験を想定しているのでしょうか?やはりsoftyaさんも言うようにゲームプログラム(個人・同人含む)の経験でしょうか? 

これも会社によると思いますが、要求されたプログラムが作れる技量があるかどうかです。
アルゴリズム力やアイデア力を含めたプログラミング力があるかと言うことですね。言語はある程度理解しているのは前提となります。課題を出されることもありますので、その課題を自力でやって提出出来る技術力も欲しいです。

ただ、基本的な技術があり、理解力とやる気が認められれば将来性を買って受かる例もありますので、チャレンジしてみるのは無駄ではありません。
[追記]
重要視される部分としてはコミニケーションがあります。これは結構重要です。人の意見を聞ける人、それでいて自分の意見を言える人、伝えたいことをまとめられる人かどうかですね。受身な人も困るので採用率が下がると思います。 編集済み


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

Name: ゆーずぃ  ..入門者(4,069ポイント)   Date: 2010/05/13(木) 00:46   No:52012     
Title: Re:[雑談] ゲーム会社への転職について    
>softyaさん

遅くなってしまいすみませんでした;
目からウロコのご意見をありがとうございました!元ゲームプログラマ様ということでとても説得力があり、一念発起、ウンとやる気が出ました!ここで質問をさせて頂いて本当に良かったです^^

迷惑ついでにあともう一つお聞きしたいことがあるのですが、ゲーム会社で使うライブラリというのは、DXライブラリや(フリーの)物理エンジンのような、フリーのライブラリを使うのでしょうか?当たり前かもしれませんが、大手と中小ならばそこでもまた違かったりするのでしょうか?もしご存知でしたらご教示願います(>_<)


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

Name: softya [URL]  ..ハッカー(164,530ポイント)   Date: 2010/05/13(木) 01:22   No:52016     
Title: Re:[雑談] ゲーム会社への転職について    
>迷惑ついでにあともう一つお聞きしたいことがあるのですが、ゲーム会社で使うライブラリというのは、DXライブラリや(フリーの)物理エンジンのような、フリーのライブラリを使うのでしょうか?
>当たり前かもしれませんが、大手と中小ならばそこでもまた違かったりするのでしょうか?もしご存知でしたらご教示願います(>_<)

DSやPSP程度だとオリジナルのエンジン/ライブラリが多いです。
PS3、Xbox360、Wii辺りになると、ハード会社のライブラリ、自社のエンジン、エンジン専門メーカーのエンジンなど色々入り乱れています。中小だとPS3/Xbox360を使いこなすのは困難なのでソニーやらマイクロソフトなどのライブラリで細々とやってると思います。

有名なのは、
Unreal Engine (Epic Games)
Crystal Tools (スクウェア・エニックス)
MT Framework (カプコン)
PLAYSTATION Edge (ソニー)
など他にも多数ありますね。
詳しくは、こちらで紹介されてますので参考にしてください。
「3Dゲームファンのためのグラフィックス講座」
http://game.watch.impress.co.jp/docs/series/3dcg/

Unreal Engineに関しては「unreal development kit」の名前で非商用に限りフリーで公開されています。
「今日からあなたもゲーム開発者! Epic Games,Unreal Engine 3用のゲーム開発キット「Unreal Development Kit」の無償配布を開始」
http://www.4gamer.net/games/032/G003263/20091106014/
「Unreal Development Kit Wiki」
http://wikiwiki.jp/udk/

ゲーム業界を志すなら、ぜひ触ってみてください。


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

Name: ゆーずぃ  ..入門者(4,221ポイント)   Date: 2010/05/14(金) 03:33   No:52094 解決!     
Title: Re:[雑談] ゲーム会社への転職について    
なるほど!とても勉強になりました!
ゲーム業界に対して漠然としたイメージしかなかったのですが、ようやく入口に立てたような気がします!
リンク先のページにもきちんと目を通して、勉強させて頂きます。また分からないことがあったらここでご質問させて頂きますので、その際はよろしくお願いします。

softya様、貴重なお時間を頂きまして、本当にありがとうございました!勝手ながら、これをもって解決とさせて頂きますm(__)m


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




 
[ 1 , ... ]
 
 
管理者画面   RSS   + Powered By 21style +