C言語何でも質問掲示板

Total hit  今日  昨日  



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

 
   敵の判定   
     ・[41550] cdj 
   デフォルト引数とコン ....   
     ・[41476] たかぎ 
     ・[41477] あまち 
     ・[41478] たかぎ 
     ・[41479] あまち 
     ・[41480] たかぎ 
     ・[41481] あまち 
     ・[41482] たかぎ 
     ・[41485] あまち 
     ・[41494] ドラ 
     ・[41538] あまち 
   マップチップを並べる ....   
     ・[41533] たいちう 
     ・[41537] yusssanstar 
   カウンタを徐々に早く ....   
     ・[41501] チルチル 
     ・[41503] Libra 
     ・[41506] ☆ 
     ・[41519] Libra 
     ・[41525] そうは問屋の最終兵器 
   mp3ファイルが再生出来 ....   
     ・[41516] Mist 
     ・[41517] Sakana 
     ・[41518] Mist 
     ・[41520] Sakana 
     ・[41521] ひよこ 
     ・[41522] Sakana 
   シリアル通信について ....   
     ・[41468] たかぎ 
     ・[41474] KEV 
     ・[41509] uuu 
     ・[41512] Mist 
   "定義済み処理"を用い ....   
     ・[41508] YuO 
     ・[41511] NAGI 
   フルスクリーン起動終 ....   
   ▽マウスでも可能に! ....   
     ・[39945] array 
     ・[39946] Ma 
     ・[39947] zwi 
     ・[39948] Dixq (管理人) 
     ・[39949] Dixq (管理人) 
     ・[39951] Ma 
     ・[39952] yu 
     ・[39953] ディア 
     ・[39955] pooka 
     ・[39956] ひよこ 
     ・[39970] Dixq (管理人) 
     ・[39974] 組木紙織 
     ・[39981] こめかみ 
     ・[39987] kazuoni 
     ・[39993] Tatu 
     ・[39995] Dixq (管理人) 
     ・[39997] ねこ 
     ・[40010] ケイ 
     ・[40019] 海岸砂丘 
     ・[40031] はね 
     ・[40054] huradyio 
     ・[40064] Dixq (管理人) 
     ・[40225] Dixq (管理人) 
     ・[40227] ぺとれり 
     ・[40228] Dixq (管理人) 
     ・[40229] ぺとれり 
     ・[40230] Dixq (管理人) 
     ・[40231] Dixq (管理人) 
     ・[40232] ぺとれり 
     ・[40234] trx 
     ・[40249] R 
     ・[40251] Dixq (管理人) 
     ・[40252] Dixq (管理人) 
     ・[40257] Dixq (管理人) 
     ・[40258] aae 
     ・[40259] Dixq (管理人) 
     ・[40260] Dixq (管理人) 
     ・[40262] lbfuvab 
     ・[40263] Dixq (管理人) 
     ・[40268] dkdera 
     ・[40269] ぺとれり 
     ・[40270] Dixq (管理人) 
     ・[40273] はくろうりん 
     ・[40275] Dixq (管理人) 
     ・[40276] はくろうりん 
     ・[40277] Dixq (管理人) 
     ・[40280] はくろうりん 
     ・[40283] Dixq (管理人) 
     ・[40284] ひよこ 
     ・[40285] Dixq (管理人) 
     ・[40289] 鶏剣 
     ・[40292] ダイナマイト 
     ・[40293] Dixq (管理人) 
     ・[40294] MNS 
     ・[40296] ひよこ 
     ・[40297] 鶏剣 
     ・[40299] Dixq (管理人) 
     ・[40300] Dixq (管理人) 
     ・[40301] 匿名 
     ・[40302] ショウ 
     ・[40303] Justy 
     ・[40304] Dixq (管理人) 
     ・[40305] ぽよ 
     ・[40306] Dixq (管理人) 
     ・[40308] Dixq (管理人) 
     ・[40310] ぽよ 
     ・[40314] リシュアン 
     ・[40332] Dixq (管理人) 
     ・[40337] Justy 
     ・[40338] Dixq (管理人) 
     ・[40347] fatens 
     ・[40407] ぬぱ 
     ・[40423] くさいおじさん 
     ・[40426] DVDM 
     ・[40465] Dixq (管理人) 
     ・[40470] 海岸砂丘 
     ・[40481] DVDM 
     ・[40510] ゼェリー 
     ・[40518] lbfuvab 
     ・[40519] ダイナマイト 
     ・[40523] ひよこ 
     ・[40525] そうは問屋の最終兵器 
     ・[40534] ixchel 
     ・[40557] ナナシア 
     ・[40567] Tatu 
     ・[40631] Dixq (管理人) 
     ・[40705] Dixq (管理人) 
     ・[40718] ナナシア 
     ・[40721] Dixq (管理人) 
     ・[40766] ixchel 
     ・[40767] ixchel 
     ・[40789] Dixq (管理人) 
     ・[40793] Justy 
     ・[40870] Dixq (管理人) 
     ・[40871] Justy 
     ・[41040] Tatu 
     ・[41107] wing 
     ・[41162] Dixq (管理人) 
     ・[41163] kazuoni 
     ・[41195] Tatu 
     ・[41200] Dixq (管理人) 
     ・[41230] Tatu 
     ・[41488] Dixq (管理人) 
     ・[41489] ひよこ 
     ・[41492] Tatu 
   メモリの効率の良い使 ....   
     ・[41484] Justy 
     ・[41486] softya 
     ・[41490] やっくん 
   ウィンドウモードにつ ....   
     ・[41350] Naohiro19 
     ・[41487] min 
   エラーがでます   
     ・[41473] やっくん 
     ・[41483] box 
   就職   
     ・[41408] Dixq (管理人) 
     ・[41421] バグ 
     ・[41424] sizuma 
     ・[41426] たかぎ 
     ・[41428] array 
     ・[41429] たかぎ 
     ・[41431] たいちう 
     ・[41471] 三郎 
   描く処理で   
     ・[41462] ひよこ 
     ・[41464] Dixq (管理人) 
     ・[41467] ひよこ 
   オイラーの公式を使う ....   
     ・[41389] non 
     ・[41395] クロカ 
     ・[41396] non 
     ・[41461] クロカ 
   キーについて   
     ・[41277] Mist 
     ・[41279] YS 
     ・[41280] Mist 
     ・[41281] Mist 
     ・[41282] YS 
     ・[41284] conio 
     ・[41361] YS 
     ・[41388] conio 
     ・[41448] YS 
     ・[41450] Mist 
     ・[41452] YS 
     ・[41458] Mist 
     ・[41459] conio 
   無題   
     ・[41435] Dixq (管理人) 
     ・[41440] 初心者 
     ・[41457] Dixq (管理人) 
   敵データの読み込みに ....   
     ・[41439] non 
     ・[41442] ひよこ 
     ・[41443] non 
     ・[41444] ひよこ 
     ・[41445] non 
     ・[41447] ひよこ 
     ・[41449] non 
     ・[41451] ひよこ 
     ・[41453] サイト愛用者 
     ・[41456] ひよこ 
   RPGサンプル   
     ・[41441] Mist 
     ・[41454] Dixq (管理人) 
   管理人さんのお名前の ....   
     ・[41371] たかぎ 
     ・[41372] 荒丸 
     ・[41374] たかぎ 
     ・[41392] kazuoni 
     ・[41403] Dixq (管理人) 
     ・[41418] たかぎ 
     ・[41432] 荒丸 
   ゼルダのようなアクシ ....   
     ・[41272] ちゃお 
     ・[41274] conio 
     ・[41422] sisi 
   変換方法について   
     ・[41365] イネ 
     ・[41366] バグ 
     ・[41370] たかぎ 
     ・[41376] softya 
     ・[41419] イネ 
   音楽を停止した位置か ....   
     ・[41404] Dixq (管理人) 
     ・[41405] チルチル 
     ・[41407] トゥル太郎 
     ・[41410] Dixq (管理人) 
     ・[41414] トゥル太郎 
   会話シーン   
     ・[41387] ひよこ 
     ・[41391] kazuoni 
   マウスのクリック   
     ・[41111] ドラ 
     ・[41112] Justy 
     ・[41160] cdj 
     ・[41161] Justy 
     ・[41297] cdj 
     ・[41304] Justy 
     ・[41390] cdj 
   キャラクターが地面を ....   
     ・[41336] ひよこ 
     ・[41344] Marin 
     ・[41348] ひよこ 
     ・[41349] ひよこ 
     ・[41354] ひよこ 
     ・[41356] バグ 
     ・[41358] ひよこ 
     ・[41359] softya 
     ・[41362] ひよこ 
     ・[41375] Marin 
     ・[41377] softya 
     ・[41385] ひよこ 
   ファイルポインタで内 ....   
     ・[41352] toyo 
     ・[41353] non 
     ・[41378] array 
     ・[41379] Mist 
     ・[41380] array 
     ・[41382] array 
     ・[41383] non 
     ・[41384] array 
   ポインタ配列の初期化   
     ・[41360] softya 
     ・[41363] Naohiro19 
     ・[41368] ぺん 
   本家の弾幕を再現する ....   
     ・[41067] Justy 
     ・[41075] Dixq (管理人) 
     ・[41231] Tatu 
     ・[41256] そうは問屋の最終兵器 
     ・[41355] 把握太郎 
   ボスをアニメーション ....   
     ・[41288] ひよこ 
     ・[41290] 柏 
     ・[41292] softya 
     ・[41293] 柏 
     ・[41294] softya 
     ・[41295] 柏 
     ・[41296] softya 
     ・[41300] 柏 
     ・[41314] softya 
     ・[41346] 柏 
     ・[41347] 柏 
     ・[412731260453319] z 
   pixiaというフリーソフ ....   
     ・[41180] Justy 
     ・[41181] ひよこ 
     ・[41207] Mikan 
     ・[41208] 光翼型近接支援残酷超初心者 
     ・[41220] Justy 
     ・[41262] 光翼型近接支援残酷超初心者 
     ・[41263] softya 
     ・[41264] Justy 
     ・[41265] Justy 
     ・[41301] 光翼型(略)。携帯より 
     ・[41341] 光翼型近接支援残酷超初心者 
   どなたか教えてくださ ....   
     ・[41275] Mist 
     ・[41298] hack 
     ・[41299] sizuma 
     ・[41302] box 
     ・[41303] conio 
     ・[41313] hack 
     ・[41321] lbfuvab 
     ・[41322] box 
     ・[41324] conio 
     ・[41335] hack 
     ・[41340] conio 
   4章 キャラを描写し ....   
     ・[41329] ひよこ 
     ・[41331] softya 
     ・[41338] さいら 
   第5章 宣言の仕方を工 ....   
     ・[41328] トゥル太郎 
   無題   
     ・[41312] バグ 
     ・[41315] 銘茶ハリガネ 
     ・[41316] とおりすがり 
     ・[41317] softya 
     ・[41323] たかぎ 
   スタックを用いて整数 ....   
     ・[41319] softya 
     ・[41320] ずんだもち 
   [雑談]自分自身を出力 ....   
     ・[41237] Naohiro19 
     ・[41238] 組木紙織 
     ・[41243] 御津凪 
     ・[41247] Eeel 
     ・[41249] hoge 
     ・[41252] たかぎ 
     ・[41254] 組木紙織 
     ・[41255] たかぎ 
     ・[41257] 組木紙織 
     ・[41306] Naohiro19 
     ・[41309] 組木紙織 
     ・[41310] たいちう 
   スタックによる並び替 ....   
     ・[41308] 組木紙織 
   地霊殿の交信強度を実 ....   
     ・[41222] ひよこ 
     ・[41305] ☆ 
   クリア画面表示   
     ・[41286] softya 
     ・[41287] ひよこ 
     ・[41291] softya 
   C++ 再帰関数   
     ・[41250] Eeel 
     ・[41253] Aru 
     ・[41289] たいちう 
   無題   
     ・[40960] s-rush 
     ・[41002] YS 
     ・[41003] Mist 
     ・[41077] YS 
     ・[41078] conio 
     ・[41098] YS 
     ・[41101] conio 
     ・[41283] YS 
   番兵と検索関連の質問   
     ・[41082] conio 
     ・[41083] asd 
     ・[41084] asd 
     ・[41102] アスタリスク 
     ・[41105] ドラ 
     ・[41106] box 
     ・[41113] アスタリスク 
     ・[41115] non 
     ・[41153] ドラ 
     ・[41278] アスタリスク 
   困っています知恵を貸 ....   
     ・[41212] C言語初心者 
     ・[41213] C言語初心者 
     ・[41214] ちゃお 
     ・[41219] しっぽ 
     ・[41248] スレ主 
     ・[41259] しっぽ 
     ・[41271] ちゃお 
   50章でバグっぽいも ....   
     ・[41267] Justy 
     ・[41268] kai 
   左右2方向の歩きが上 ....   
     ・[41260] softya 
     ・[41261] 万次郎 
   DxLibでロード画面を作 ....   
     ・[41216] ちゃお 
     ・[41218] ちゃお 
     ・[41233] yskey 
     ・[41234] Justy 
     ・[41251] yskey 
   DXライブラリでのフ ....   
     ・[41143] softya 
     ・[41148] くりあ 
     ・[41157] softya 
     ・[41164] くりあ 
     ・[41168] 羽流布 
     ・[41172] softya 
     ・[41184] くりあ 
     ・[41209] softya 
     ・[41217] くりあ 
     ・[41227] softya 
     ・[41241] くりあ 
     ・[41242] softya 
     ・[41246] くりあ 
   C言語のコンパイラ   
     ・[41239] softya 
     ・[41240] softya 
     ・[41244] まりも 
   タイトルでBGMが鳴 ....   
     ・[41175] ひよこ 
     ・[41232] 59221  

Name: cdj  ..ぴよぴよ(504ポイント)   Date: 2009/11/07(土) 11:52   No:41548       
Title: 敵の判定    
マウスでクリックすると敵が消えるような感じのものを作っているのですが、
敵に体力をつけるとうまくいきません。
やり方がわからないので質問しました。


{
int MouseInput=(GetMouseInput()& MOUSE_INPUT_RIGHT); //マウスの押した状態取得

if( ( MouseInput & 1<<1 ) != 0)
{
mouse->Button[1]++;//押されていたらカウントアップ


for(int t = 0;t < ENEMY_MAX;t++){
if(mouse->Button[1] < 3 && (enemy2[t].x - mouse->x) * (enemy2[t].x - mouse->x)
+ (enemy2[t].y - mouse->y) * (enemy2[t].y - mouse->y)
<= (enemy2[t].r + mouse->r) * (enemy2[t].r + mouse->r))
{
enemy2[t].hp -= 1;
if(enemy2[t].hp < 0)
{
enemy2[t].flag = false;
score +=30;
break;
}

else
shot_eff->flag = false;
}
else
mouse->Button[1] = 0; //押されてなかったら0
}
}


}


これだと、敵は消えないし、スコアの上がり方もおかしくなってしまいます。。


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


Name: cdj  ..ぴよぴよ(477ポイント)   Date: 2009/11/07(土) 11:57   No:41550     
Title: Re:敵の判定    
すいません。敵は消えます。
でも一瞬で消えてしまいます。。


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



Name: あまち  ..ぴよぴよ(84ポイント)   Date: 2009/11/05(木) 21:08   No:41475       
Title: デフォルト引数とコンストラクタについて    
初めまして。
C++で導入された(と思っています)デフォルト引数について
疑問がありますので掲示板にて質問させていただきます。

C++では関数の多重定義が許されており、
また、クラスの実体(オブジェクト?)を作成したときに
実行されるコンストラクタも多重定義可能です。
ここで質問なのですが
引数が1つのコンストラクタを作成し、
引数が一つも与えられない場合はデフォルトの値を
使用するつもりでデフォルト引数としてコンストラクタを作成しました。
しかしいざコンパイルすると
コンストラクタに引数を与えるときはコンパイルに成功し、
コンストラクタに引数を与えないときはコンパイルに失敗します。
デフォルト引数のコーディング作法が悪いかと思い
コンストラクタではないメンバ関数を作成し確認しましたが、
うまく動作しています。

コンストラクタでは失敗し、メンバ関数では成功することから
コンストラクタではデフォルト引数を使用することができないのでしょうか?
またできるならどのような場合に使用することができるのでしょうか?

以上、ご教授お願い致します。


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


Name: たかぎ [URL]  ..ハッカー(115,799ポイント)   Date: 2009/11/05(木) 21:14   No:41476     
Title: Re:デフォルト引数とコンストラクタについて    
問題が再現するソースコードを補足してください。


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

Name: あまち  ..ぴよぴよ(309ポイント)   Date: 2009/11/05(木) 21:24   No:41477     
Title: Re:デフォルト引数とコンストラクタについて    
たかぎ様
下記がソースとなります。
# 長くなりますのでコンストラクタとデストラクタ以外は削除しました。

main.cppは下記のとおりです。

#include <stdio.h>
#include "CQueue.h"

int main(void)
{
class CQueue CQ(); // NG

return 0;
}


CQueue.hは下記のとおりです。

class CQueue
{
protected:
WORD m_wQueueSize;

public:
CQueue(WORD wQueueSize = DEFAULT_QUEUE_SIZE);
~CQueue(void);
};

CQueue::CQueue(WORD wQueueSize)
{
m_wQueueSize = wQueueSize;
}

CQueue::~CQueue(void)
{
m_wQueueSize = 0;
}


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

Name: たかぎ [URL]  ..ハッカー(115,820ポイント)   Date: 2009/11/05(木) 21:26   No:41478     
Title: Re:デフォルト引数とコンストラクタについて    
> class CQueue CQ(); // NG

↑は、引数を受け取らず、class CQueue型の返却値を返すCQ関数の宣言です。


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

Name: あまち  ..ぴよぴよ(421ポイント)   Date: 2009/11/05(木) 21:35   No:41479     
Title: Re:デフォルト引数とコンストラクタについて    
たかぎ様
返信ありがとうございます。

>> class CQueue CQ(); // NG
> ↑は、引数を受け取らず、class CQueue型の返却値を返すCQ関数の宣言です。
関数の宣言としてコンパイラに認識されてしまうのですね・・・
本来私は引数がなかったらデフォルト引数を引数として
コンストラクタを実行してもらい、
引数があったらそれを引数として(日本語として変ですね)
コンストラクタを実行してもらいたかったのですが。
上記のような動作を実装したい場合は
コンストラクタを二つ用意するのが普通なのでしょうか?


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

Name: たかぎ [URL]  ..ハッカー(115,857ポイント)   Date: 2009/11/05(木) 21:44   No:41480     
Title: Re:デフォルト引数とコンストラクタについて    
> コンストラクタを二つ用意するのが普通なのでしょうか?

いいえ。

CQueue CQ;

とします。CQueueの前のclassはあってもかまいませんが、括弧は取ってください。


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

Name: あまち  ..ぴよぴよ(555ポイント)   Date: 2009/11/05(木) 21:54   No:41481 解決!     
Title: Re:デフォルト引数とコンストラクタについて    
たかぎ様
返信ありがとうございます。

>> コンストラクタを二つ用意するのが普通なのでしょうか?
> いいえ。
> CQueue CQ;
> とします。CQueueの前のclassはあってもかまいませんが、括弧は取ってください。
指摘のとおりに実装しましたらきちんとコンパイルが成功し
意図した通りの動作になりました。
デフォルト引数が設定されているメンバ関数では
Func( );
Func(1);
としても動作しますがコンストラクタは違うのですね。
まだ理解ができてませんが解決方法がわかり、
すっきりしました。

おかげで本件、解決することができました。
ご教授ありがとうございました。


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

Name: たかぎ [URL]  ..ハッカー(115,876ポイント)   Date: 2009/11/05(木) 22:00   No:41482     
Title: Re:デフォルト引数とコンストラクタについて    
> デフォルト引数が設定されているメンバ関数では
> Func( );
> Func(1);
> としても動作しますがコンストラクタは違うのですね。

一時オブジェクトを作る場合であれば、普通の関数と同じように、

CQueue()
CQueue(1)

とします。


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

Name: あまち  ..ぴよぴよ(745ポイント)   Date: 2009/11/05(木) 22:14   No:41485     
Title: Re:デフォルト引数とコンストラクタについて    
たかぎ様
返信ありがとうございます。

> 一時オブジェクトを作る場合であれば、普通の関数と同じように
> CQueue()
> CQueue(1)
> とします。
上記は
CQueue CQ( ); // 引数としてデフォルト引数が設定されるはず
CQueue CQ(1); // 引数として1が設定される
ということでしょうか?
CQueue CQ( );
はコンパイルに失敗してしまいます。
先ほどたかぎ様に関数宣言とみなされるとコメントを頂きました。
普通の関すと同じように括弧も使用したいのですが
可能なのでしょうか?
何度も質問してしまい申し訳ございませんが
ご教授をお願い致します。


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

Name: ドラ  ..入門者(2,678ポイント)   Date: 2009/11/06(金) 00:53   No:41494     
Title: Re:デフォルト引数とコンストラクタについて    
>CQueue CQ( );
この文のトークンの並びをよく見てください。

型名 識別子( );

ですね?
このような順番にトークンが並んでいると、次のように解釈できる可能性があります。

・CQueue型の CQ という名前のインスタンスを引数なしで作ろうとしている。
・CQueue型を返す CQ という名前の引数をとらない関数のプロトタイプ宣言をしている。

こうなるとコンパイラにはどちらか判断できないので、
このような場合は、"宣言であるとみなす"というのがC++のルールです。
だから「CQueue CQ( );」という並びに限って
引数なしでCQueue型のインスタンスを構築するとは解釈してくれないのです。
(逆に言うとそれ以外ならOK)


>普通の関すと同じように括弧も使用したいのですが可能なのでしょうか?
CQueue CQ; で我慢してください。


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

Name: あまち  ..ぴよぴよ(818ポイント)   Date: 2009/11/07(土) 02:32   No:41538     
Title: Re:デフォルト引数とコンストラクタについて    
ドラ様
返信ありがとうございます。

> >普通の関すと同じように括弧も使用したいのですが可能なのでしょうか?
> CQueue CQ; で我慢してください。
了解しました。
またおかげで理解することができました、


たかぎ様、ドラ様のおかげで無事完全解決することができました。
ありがとうございました。



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



Name: yussanstar  ..かけだし(1,847ポイント)   Date: 2009/11/07(土) 00:24   No:41532       
Title: マップチップを並べる。    

http://www.vector.co.jp/soft/win95/art/se183834.html

にあるJ-TipRemoverというソフトと、同様あるいはそれ以上、それ付近の機能を持つソフトを教えてください。
つまり、これ以外のマップチップを並べるソフトを教えてください。


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


Name: たいちう  ..プログラマー(36,487ポイント)   Date: 2009/11/07(土) 00:37   No:41533     
Title: Re:マップチップを並べる。    
それを参考にして自分で作ればベターなものができるんじゃないの?
少なくとも自分にとって必須な機能は付けれるでしょ。

せめて欲しい機能を書かないと。


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

Name: yusssanstar  ..ぴよぴよ(32ポイント)   Date: 2009/11/07(土) 02:27   No:41537     
Title: Re:マップチップを並べる。    
質問補足:
 例のソフトは、32×32ごとにしか分けることができませんが、
 分割するサイズを指定できるものが欲しいです。


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



Name:  ..上級者(24,355ポイント)   Date: 2009/11/06(金) 07:24   No:41500       
Title: カウンタを徐々に早くする方法&遅くする方法    
こんにちは。
龍神録を改造して
東方のスペルカードボーナスを実装してるところなんですが、
一つ分からないことがあったのでアドバイスお願いします。
本家東方のスペルカード発生時、
下から上に向かってスペルカード名が移動する動作があるのですが
良く見ると、これって上に上昇するスピードが急激に上がっていき、
止まる直前で急激にスピードが下がってるのですが、
これはどういう計算でカウンタを使って動かしてるのでしょうか?



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


Name: チルチル  ..比類無きプログラマー(73,722ポイント)   Date: 2009/11/06(金) 08:07   No:41501     
Title: Re:カウンタを徐々に早くする方法&遅くする方法    
東方でどうやってるかはわかりませんが
龍神録なら物理的移動で再現できるかもしれません


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

Name: Libra  ..中級者(10,117ポイント)   Date: 2009/11/06(金) 08:31   No:41503     
Title: Re:カウンタを徐々に早くする方法&遅くする方法    
こんな感じでしょうか?

(例)仕様
1、カウンタ(恐らくボスの時間)が150未満の時位置を計算
2、150以上の時、位置固定

文字位置のy座標は、最初450、最終的に30まで上がる

実装方法
・sin波を使って、位置を決める



double y ; //y:表示y座標位置
double angle ; //角度

if( 1の時 ){
angle = (double)time * ( PI / 2.0 ) / 150.0 ;
y = 450.0 - ( 450.0 - 30.0 ) * sin( angle ) ;
}
else{
y = 30.0 ;
}



(計算したy座標を使って)文字表示



多分、このままだと少し違うと思いますが、条件式などを付け加えてうまく調整してください。



追記
cos波を使うと、多分意図したとおりの動きになるかと思います。

angle = (double)time * PI / 150.0 ;
y = 最終的な位置 + 動く距離 * ( cos(angle) + 1.0 ) / 200.0 ;


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

Name:  ..上級者(24,416ポイント)   Date: 2009/11/06(金) 10:31   No:41506     
Title: Re:カウンタを徐々に早くする方法&遅くする方法    
チルチル様、Libra様返答ありがとうございます。
>Libra様
位置を動かすのは分かるのですが
速度がだんだん速くする箇所、遅くする箇所が見当たらないのですが
どの部分がそれに該当してるところなのでしょうか?


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

Name: Libra  ..中級者(10,229ポイント)   Date: 2009/11/06(金) 18:12   No:41519     
Title: Re:カウンタを徐々に早くする方法&遅くする方法    
> >Libra様
> 位置を動かすのは分かるのですが
> 速度がだんだん速くする箇所、遅くする箇所が見当たらないのですが
> どの部分がそれに該当してるところなのでしょうか?


cos波のグラフの傾きが加速度に該当します。

この方法だと、移動する距離によって速さが変わるので、
速さがどのくらいになるかはわかりませんが、
最初に加速、中間の時間で最高速度、その後減速しますし、
時間で位置がきっちり設定できます。

もし、速さを知った状態で処理を行いたいなら、
速さや距離から、かかる時間を求めて計算する必要があります。
ただし、こちらのほうは、かかる時間が速さに依存しますし、
自力で計算しなければいけない部分が増えます。


追記: No:41503で書いた式の0が多かったので修正しておきます^^;

angle = (double)time * PI / 150.0 ;
y = 最終的な位置 + 動く距離 * ( cos(angle) + 1.0 ) / 2.0 ;


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

Name: そうは問屋の最終兵器  ..かけだし(1,616ポイント)   Date: 2009/11/06(金) 22:12   No:41525     
Title: Re:カウンタを徐々に早くする方法&遅くする方法    
y+=((最終的な位置)-y)/(速さ)

で、それっぽい動きになりますよ。
(速さ)の部分は0に近づくほど速くなります。本家の速さだと15くらいでしょうか。
ただ、あくまでも「っぽい」動きなので、正確に時間などを測りたい場合はLibraさんの方法がいいと思います。


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



Name: Sakana  ..ぴよぴよ(208ポイント)   Date: 2009/11/06(金) 15:12   No:41515       
Title: mp3ファイルが再生出来ない    
ゲームプログラミングの館15,16の音楽を流すについての質問です
DXライブラリのリファレンスにも目を通したのですが、当方の環境では何故だか音がなりません
試しにtest.mp3を適当なwavに変えてみたら音が鳴ったのですが
ソースに間違いがあるのでしょうか、ご教示願います


int Sound;
Sound = LoadSoundMem("sound/test.mp3");//音楽ファイルを読みこむ
PlaySoundMem(Sound, DX_PLAYTYPE_NORMAL);//バックグラウンド再生


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


Name: Mist  ..比類無きプログラマー(70,451ポイント)   Date: 2009/11/06(金) 15:26   No:41516     
Title: Re:mp3ファイルが再生出来ない    
二個確認してください。

1.test.mp3はメディアプレイヤーなどで問題なく再生できますか?
2.LoadSoundMemの戻り値が-1(ロード失敗)になっていませんか?


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

Name: Sakana  ..ぴよぴよ(303ポイント)   Date: 2009/11/06(金) 15:52   No:41517     
Title: Re:mp3ファイルが再生出来ない    

ご指摘頂いた点を確認してきました
メディアプレイヤーでは再生出来、LoadSoundMemの戻り値は-1でした

ロードが失敗している原因が今ひとつ特定できません
どのように解決すればいいのでしょうか


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

Name: Mist  ..比類無きプログラマー(70,560ポイント)   Date: 2009/11/06(金) 16:06   No:41518     
Title: Re:mp3ファイルが再生出来ない    
DXライブラリを使用したプログラムを実行すると「Log.txt」という、DXライブラリ内部のログファイルが出力されます。
ロード失敗理由がそこに出力されている可能性がありますので、そのファイルを添付するか、中身をコピペしてもらえますか。


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

Name: Sakana  ..ぴよぴよ(584ポイント)   Date: 2009/11/06(金) 18:46   No:41520     
Title: Re:mp3ファイルが再生出来ない    
ログも見てみましたが依然として原因が分かりません

ソースも載せておきます
よろしくお願いします


#include "DxLib.h"
int Sound;

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}

Sound = LoadSoundMem("test.mp3");
PlaySoundMem(Sound, DX_PLAYTYPE_NORMAL);
WaitKey() ; // キーの入力待ち((7-3)『WaitKey』を使用)

DxLib_End() ; // DXライブラリ使用の終了処理

return 0 ; // ソフトの終了
}



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

Name: ひよこ  ..熟練のプログラマー(65,153ポイント)   Date: 2009/11/06(金) 18:50   No:41521     
Title: Re:mp3ファイルが再生出来ない    
740:右記の音声ファイルのロードに失敗しました_2:test.mp3
プロジェクトと同じところにtest.mp3はありますか?


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

Name: Sakana  ..ぴよぴよ(654ポイント)   Date: 2009/11/06(金) 19:18   No:41522 解決!     
Title: Re:mp3ファイルが再生出来ない    
他のPCで試してみたら音が鳴りました

恐らく開発に使っているPCのサウンドカード?の問題だったようです
お騒がせしてすいません、レスありがとうございました


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



Name: uuu  ..ぴよぴよ(290ポイント)   Date: 2009/11/05(木) 15:38   No:41466       
Title: シリアル通信について /C言語    
こんにちは、通信についての質問です.

現在RS232cを使用し「 0R<cr><lf> 」 と送信するとデータが返ってくるプログラムを作成しています。
ケーブル間で送受信を行うプログラムはできているのですが,<CR><LF>をどのように表現してよいのかわかりません.

tera term上では,端末の設定で,送信すると語尾に<CR><LF>が付属されるので

0R を送信すると,<CR><LF>が付属されるため受信が成功します。

して、C言語上では  0R で送信すると  0R で送信されます。
語尾にtere term上 で扱われる<CR><LF>を付属する方法はないでしょうか。
話では、<CR>をキャリッジリターン,<LF>をエンターと意味するらしいのです。

そんなわけでscanf関数に 0R\r と入力し、エンターを押しても受信されません。

scanfを用いた方法で<CR>の記述方法がわかるかた、どうぞよろしくお願いします。


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


Name: たかぎ [URL]  ..ハッカー(115,779ポイント)   Date: 2009/11/05(木) 15:42   No:41468     
Title: Re:シリアル通信について /C言語    
どうせ電文の最後は<CR><LF>を送ることになるのでしょうから、入力は改行文字なしにして、自分で"\r\n"を付加するとよいのでは?
あるいは、fgets等で'\n'ごと入力させて、"\n"を"\r\n"に置き換えるのもひとつの手かと思います。


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

Name: KEV  ..初心者(6,203ポイント)   Date: 2009/11/05(木) 20:59   No:41474     
Title: Re:シリアル通信について /C言語    
たしかscanf関数で文字列を取得した場合、
バッファに改行コードが格納されてしまうはずです。

例えば、「0R\r」 と入力してエンターを押すと、
「0R\r <LF>」みたいに中では処理しているんじゃないかと。
なので、この最後の <LF> を自分で消したりする作業が逆に必要になるかもしれません。

\n\r を送信したいのなら、入力文字だけ取得して、
後は配列の後ろに付け加えるのが楽だと思います。
scanf関数で直接実現する方法はちょっと分かりませんでした。


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

Name: uuu  ..ぴよぴよ(291ポイント)   Date: 2009/11/06(金) 12:41   No:41509     
Title: Re:シリアル通信について /C言語    
例えば,

キャラ型変数を用意して,その中に" 0R\r\n "を格納し,送信すると" 0R<CR><LF> "と送ったことになるのでしょうか.

以下のような感じでしょうか?


//////////

char a[];

a="0R\r\n";

aを送信;

/////////


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

Name: Mist  ..比類無きプログラマー(70,515ポイント)   Date: 2009/11/06(金) 13:14   No:41512     
Title: Re:シリアル通信について /C言語    
uuuさんがどんなプログラムを組まれているかわからないので回答できる人は誰もいないでしょう。
聞くよりやってみるほうがはるかに早いと思います。

ちなみに

char a[] = "0R\r\n";

正しくはこうだと思いますが。


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



Name: NAGI  ..ぴよぴよ(922ポイント)   Date: 2009/11/06(金) 10:01   No:41505       
Title: "定義済み処理"を用いたプログラム    
前回質問したときに答えてくださった皆様、本当にありがとうございました。
ここで聞いたことや、友達に教わりながらプログラムを完成させることはできたのですが、そのプログラムを"定義済み処理"を用いるような形に直せとのことでした。

授業では定義済み処理の話はしていましたが、実際にプログラムとして作成していなかったのでどのように作ればよいのかがわかりません。
教えていただけないでしょうか?

以下に前回作った、プログラムを載せておきます。
テニスのように、先に4勝するとどちらかの勝ちで終わるが、3勝3敗となったときには先に2連勝した方が勝ちになるように変更したプログラムです。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(void)
{
int a,b,w1=0,w2=0;
while(1){
srand(time(NULL));
b=rand()%2;
printf("Input the hand number[0 or 1]>>");
scanf("%d",&a);
if(a==0&&b==0){
w1=w1+1;
printf("You win.\n");
}
else if(a==0&&b==1){
w2=w2+1;
printf("You lose.\n");
}
else if(a==1&&b==0){
w2=w2+1;
printf("You lose.\n");
}
else if(a==1&&b==1){
w1=w1+1;
printf("You win.\n");
}
else{
printf("Input the right number.\n");
}
if(w1==4){
break;
}
if(w2==4){
break;
}
if(w1==3&&w2==3){
break;
}
if(w1==3&&w2==3){
w1=0;
w2=0;
while(1){
if(a==0&&b==0){
w1=w1+1;
printf("You win.\n");
w2=0;
}
else if(a==0&&b==1){
w2=w2+1;
printf("You lose.\n");
w1=0;
}
else if(a==1&&b==0){
w2=w2+1;
printf("You lose.\n");
w1=0;
}
else if(a==1&&b==1){
w1=w1+1;
printf("You win.\n");
w2=0;
}
else{
printf("Input the right number.\n");
}
if(w1==2){
break;
}
if(w2==2){
break;
}
}
}
}

return 0;
}

長いプログラムになっていますが、よろしくお願いします。


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


Name: YuO  ..プログラマー(34,918ポイント)   Date: 2009/11/06(金) 11:20   No:41508     
Title: Re:    
"定義済み処理"という用語の定義を教えてください。
その用語はCの用語として一般的なものではないと思いますが。


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

Name: NAGI  ..かけだし(1,467ポイント)   Date: 2009/11/06(金) 12:56   No:41511     
Title: Re:    
>YuOさん

1.srand(time(NULL));
b=rand()%2;

2.printf("Input the hand number[0 or 1]>>");
scanf("%d",&a);

3.if(a==0&&b==0){
w1=w1+1;
printf("You win.\n");
}
else if(a==0&&b==1){
w2=w2+1;
printf("You lose.\n");
}
else if(a==1&&b==0){
w2=w2+1;
printf("You lose.\n");
}
else if(a==1&&b==1){
w1=w1+1;
printf("You win.\n");
}
else{
printf("Input the right number.\n");
}
if(w1==4){
break;
}
if(w2==4){
break;
}
if(w1==3&&w2==3){
break;
}
if(w1==3&&w2==3){
w1=0;
w2=0;
while(1){
if(a==0&&b==0){
w1=w1+1;
printf("You win.\n");
w2=0;
}
else if(a==0&&b==1){
w2=w2+1;
printf("You lose.\n");
w1=0;
}
else if(a==1&&b==0){
w2=w2+1;
printf("You lose.\n");
w1=0;
}
else if(a==1&&b==1){
w1=w1+1;
printf("You win.\n");
w2=0;
}
else{
printf("Input the right number.\n");
}
if(w1==2){
break;
}
if(w2==2){
break;
}
}
}
}

の3つを関数化するらしいのですが・・・

フローチャートでは、
start
|
関数1
|
関数2
|
関数3
|
end

という流れになるとのことでした。



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



Name:  ..入門者(2,845ポイント)   Date: 2009/11/06(金) 03:01   No:41496       
Title: フルスクリーン起動終了後のwindowsからの警告    
お久しぶりです。


いつも、答えてくださる方ありがとうございます。


現在、簡単なゲーム制作をしておりまして、かつそれとは別に大学からも課題が出たので、DxLibを使ってプログラムを制作していたところなのですが、


プログラムをデバッグする関係上ALT + F4の強制終了を多様します。


ウィンドウモードではなんともないのですが、フルスクリーン起動時に強制終了すると、


○○○.exe は閉じられました。
○○○.exe は動作を停止しました。


とwindowsのほうから警告がきます。


龍神録やDxLibのサンプルプログラムでは発生していないので、自分のプログラムが原因だと思うのですが、原因がわかりません。



どうかよろしくお願いします。


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




Name: Dixq (管理人) [URL]  ..ウィザード(1,060,535ポイント)   Date: 2009/10/04(日) 12:42   No:39943       
Title: ▽マウスでも可能に!カメラを使った音ゲー「Aerobeat」公開▽    
※10/11 21:15 マウスでも操作可能になりました!※
マウスで操作される方は、設定.exeで操作方法をマウスにしてプレイして下さい。


現在ver3.00制作中!

ver.3では誰でも曲、譜面データが追加出来るようになります。
増える曲の可能性は無限大!
お楽しみに! (公開は10/28辺り)



以前ちょこっと作りかけていた動画をアップしましたが、今回きちんと完成したので、公開します。
ウェブカメラからの映像を使って遊ぶ音ゲーです。

http://dixq.net/Aerobeat.html
(紹介動画もリンク先にあります)

もしよければご覧ください♪
(ニコニコアカウントお持ちではない方はこちらからご覧いただけます)

動画だけ見た感想でも何でも構いませんので何かコメント頂けると幸いです^^

また、もしよろしければ、どれ位のPC性能でプレイ中何FPS位だったかを教えて下さい!

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

更新履歴 (2009/10/11 - 13:40 更新)

ver2.20 (2009/10/12 - 16:00)
・難易度表記を一部修正
・ポリゴン数を3000にした時の不具合を修正
・著作権表記を一部修正
・トライチ対策を実装
・判定タイミング計算式を更に一部修正
・譜面データを一部変更

ver2.10 (2009/10/11 - 23:45)
・ヒットタイミング計算式を修正

ver2.00 (2009/10/11 - 21:15)
・マウスで操作可能に
・メニュー画面にてハイランクが確認可能に
・リザルト画面で今までのフルコンボが確認可能に
・リザルト画面で何で操作したかが確認可能に
・プレイ中、バージョンを表示するよう機能追加
・プレイ中、何で操作しているかを表示
・コンボに繋がる条件を変更
・ヒットタイミングによる評価条件を変更
・設定.exeにマウス操作選択項目追加

ver1.21 (2009/10/11 - 13:40)
・640x480にしか対応していないカメラでも使えるよう機能追加
 (設定.exeにて変更可能)
・より低スペックPCでも動くよう、ローポリゴン選択可能に

ver1.20 (2009/10/11 - 07:00)
・メニュー画面で曲ごとに最高リザルト結果が確認出来る機能を追加
・スコアリザルト画面に詳細項目リザルト項目を追加
・スコアリザルト画面にフルコンボクリア時のエフェクトを追加
・ゲージの減り具合を設定で変更できるよう機能追加
・デフォルトのゲージの減り具合を修正

ver1.11 (2009/10/10 - 21:20)
・設定.exeで色々と設定出来るようにしました。
・設定で低スペックPCでも動かせるようになりました。
・プレイ中に処理落ちが発生すると、
 設定変更を促すログを表示するようにしました。
・カメラのデバイス番号を設定.exeで変更できるようにしました。
・「Error:70703 - スコアでSCORE_MAX点以上が渡されています。」
 のエラーを修正しました。

ver1.10 - (2009/10/10 01:30)
・フルスクリーンに対応しました。
・並画質、高画質がコンフィグで設定出来るようになりました。
・ビットマップ?!をbpmに修正しました。


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


Name: array [URL]  ..熟練のプログラマー(57,553ポイント)   Date: 2009/10/04(日) 12:50   No:39945     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
凄いクオリティーですね。

こだわっていた、光で描画していくロゴ表示かっこよかったです。
あとは、前回問題としていたヒット感が無いっていうのは、やっぱり改善が難しかったんですかね
(それでも楽しそうなゲームですが)

今から、外出するので帰ってきてから遊ばせて貰います^^


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

Name: Ma  ..中級者(11,099ポイント)   Date: 2009/10/04(日) 12:51   No:39946     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
あー!プレイしたい! でも、ウェブカメラない・・・orz
買ってこようかな。

それはともかく、完成おめでとうございます!
ウェブカメラ入手次第遊んでみます^^

それにしても、背景やらエフェクトやらがすごい・・・・。
それに、ダブルも面白そう。


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

Name: zwi  ..中級者(9,907ポイント)   Date: 2009/10/04(日) 13:17   No:39947     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
おっ完成おめでとうございます。
しかし、WEBカメラがない・・・(ToT)
ついでにAIR EDGEなので帯域が足りず動画も見れない・・・(ToT)
後日改めて見させてもらいます。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,061,267ポイント)   Date: 2009/10/04(日) 13:19   No:39948     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
>>arrayさん

御覧下さりありがとうございます〜^^
エフェクトには色々とこだわりました!
しかし無い物を創作することは出来なかったので完全に某ゲームのエフェクトをパk・・参考にしました^^;
ヒット感については、あれから色々とやってみて、譜面を縦にしたり、実際にテーブルを叩くようにしたり、
やってみたものの、どれもイマイチで・・、結局元に戻りました^^;
ん〜ヒットした時に音が鳴るので、これで勘弁を・・、ということに^^;


>>Maさん

御覧下さりありがとうございます〜^^
わざわざウェブカメラ入手についても考えていただき恐縮です^^;
(・・ウェブカメラは無駄に3つもあるので一つ差し上げたい位です・・。)

先日Pro9000ってウェブカメラ購入したんですが、
オートフォーカスでマイクも内蔵でハイビジョン撮影も出来て、動きも滑らか、顔追尾機能もあるという
とてもすぐれもので気に入ってます^^
・・・ただ結構値段がするんですよねこのカメラ;

ダブルについては、初めてやると混乱するかもしれないですw


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,061,379ポイント)   Date: 2009/10/04(日) 13:21   No:39949     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
>>zwiさん

コメありがとうございます〜^^
動画だけで写真すら無いのはよくなかったですね;
その上ニコニコはアカウントが無いとみられないですが、
御覧くださっている方の何割がアカウントお持ちなんでしょう・・。
だいたいお持ちかなという考えは浅はかですかね〜^^;


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

Name: Ma  ..中級者(11,235ポイント)   Date: 2009/10/04(日) 13:33   No:39951     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
連続投稿失礼します。


>いつかきちんとした形でサンプルプログラミングの館で公開しようと思います〜☆
よければ、例のエフェクト(ロゴ)とかの、解説も一緒にお願いします^^

>ヒット感
加速度を計算して、、、っていうのはどうでしょうか?
ゆっくり等速(または減速)で範囲内に入っても無効にすれば、空中で振る必要が出てくるので、
もうすこしヒットしているような気持ちになる…かな?


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

Name: yu  ..プログラマー(39,688ポイント)   Date: 2009/10/04(日) 14:19   No:39952     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
おぉ!素晴らしいですね!
いかにも自分で創作しているって感じがします
エフェクトもとても綺麗でした
曲を選択する画面が格好良かったです(3D,文字が流れるディスプレイ...etc)

唯、皆様と同じくウェブカメラが無いのでプレイできません orz
動画だけでも十分楽しめましたがw

後、何故かタイトル画面がとても重かったです;
FPSが20ぐらいでした(自分のパソコンが悪いのかな orz)


制作お疲れさまでした


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

Name: ディア  ..入門者(4,765ポイント)   Date: 2009/10/04(日) 14:39   No:39953     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
これは・・・・


売れますってww


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

Name: pooka [URL]  ..上級者(17,918ポイント)   Date: 2009/10/04(日) 14:46   No:39955     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
昔もらった30万画素のカメラがあったのでさっそく遊んでみました。
ターゲットの設定に時間がかかってしまいましたが、とても面白かったです^^
まだ数曲しか遊べてませんが、感覚がつかめていないので残念な結果に・・・

光に反射したりして認識しないときもあったのでいろいろ試してみます。

エフェクト綺麗ですね〜
細部にまでこだわっていてとてもよかったです。
こういうのを見ると自分でも作ってみたいな〜って思いますね。

気になったんですが、全画面では遊べないのでしょうか?

製作お疲れ様です。


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

Name: ひよこ  ..熟練のプログラマー(54,111ポイント)   Date: 2009/10/04(日) 14:51   No:39956     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
ダウンロードして遊びたいのですがウエブカメラがないです。
買おうと思ったのですが、「このゲームはある程度高機能なカメラが必要です。」って
どういう意味でしょうか?
ウエブカメラにどれくらいの画素数が必要?マイク機能が必要みたいな
ことを教えてほしいです。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,062,274ポイント)   Date: 2009/10/04(日) 18:09   No:39970     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
>>Maさん

>よければ、例のエフェクト(ロゴ)とかの、解説も一緒にお願いします^^

わかりました^^

>ヒット感

実は加速度ではないですが、移動速度によって判定する方法も考えたんですが、
このターゲットは持っている物体の光の具合などで、ほとんど動かしてないのに高速である程度
移動してしまったりすることがあるんです。
そういう時誤作動してしまうんですよね;
う〜む・・。
色じゃなくちゃんとしたセンサーを使えということか・・^^;


>>yuさん

御覧下さりありがとうございます^^
ウェブカメラの普及ってあまり進んでないみたいですね;
まぁ元々自己満足なゲームですので^^;
タイトル画面については、う〜ん、よく解りません・・。
ゲームを再起動してもやはり同じ状態になります?タイトル画面だけでしょうか?


>>ディアさん

御覧下さりありがとうございます^^
う〜ん、思ったよりウェブカメラの普及が進んでいないようです^^;
お褒めの御言葉ありがとうございます^^


>>pookaさん

お〜遊んで下さりありがとうございます^^
特殊な環境でしかも適切な物体を用意しなければならず、現実的なゲームではないんですよね;
そしてヒット感も薄いのでやってみると結構難しかったりすると思います^^;

>気になったんですが、全画面では遊べないのでしょうか?

出来るはずなんですが、私の色計算の計算式がおかしいのか、
全画面にするとカメラの映像が取得出来ないんで、とりあえずウィンドウモードにしてあります;
曲を提供して下さっている方がいらっしゃるので、次回のver.upまでに何とかしようと思います。
なお、現在でもウィンドウのサイズは右下を引っ張ることで変更可能です。


>>ひよこさん

御覧下さりありがとうございます。
ある程度高機能なカメラが必要なのは、動きがカクカクにしかならないカメラだと、
鬼譜面などをやった時に正常に位置が取得出来ないからです。
リフレッシュレートが高く、正確に映像が取得できるカメラが必要です。
ちょっとやってみる程度でしたらどんなカメラでも一応できるとは思います。
私が使用しているカメラは説明のページにリンクが張ってありますのでご覧ください。


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

Name: 組木紙織  ..比類無きプログラマー(71,186ポイント)   Date: 2009/10/04(日) 18:44   No:39974     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
>このターゲットは持っている物体の光の具合などで、ほとんど動かしてないのに高速である程度
>移動してしまったりすることがあるんです。

変位&(速度or加速度)で判別するのはどうでしょうか。

またはローパスフィルター掛けて急な変動を抑制するとか。


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

Name: こめかみ  ..熟練のプログラマー(49,328ポイント)   Date: 2009/10/04(日) 19:51   No:39981     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
まだ動画をちょっと見ただけですが面白そうですね。

webカメラ持ってないや。
買ってこようかなー


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

Name: kazuoni [URL]  ..ハッカー(109,835ポイント)   Date: 2009/10/04(日) 21:16   No:39987     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
制作お疲れ様です!

>実は作り始めたきっかけは「メニューの作り方」の質問が多かったのでそのサンプルを気合い入れて作ろうとした事です^^;

これは脱線しす(ry
自分もカメラ持ってないですね^^;
贅沢をいえば、マウスで疑似体験してみたかったorz
金欠な自分には、カメラなんて・・・w
友達に総当たりしてきます。

お疲れ様でした!
ちなみに、このサンプルプログラム・・・
どんだけ親切なんですか?w


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

Name: Tatu  ..中級者(10,308ポイント)   Date: 2009/10/04(日) 22:28   No:39993     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
完成おめでとうございます。

動画を見て面白そうだと感じましたが

私もカメラを持っていません。

マウスでもプレイできたならよかったのに残念です。

動画の中のdoubleの譜面は腕を交差させる必要のある場面はありませんでしたが、

これなら二人でも遊べるのではないでしょうか。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,062,780ポイント)   Date: 2009/10/04(日) 22:39   No:39995     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
>>組木紙織さん

あ〜なるほど。
ただ環境によってはブルブル震えたりするんですよね〜、そういうときどうなるんだろう^^;
色々と工夫してみますね!

>>こめかみさん

ウェブカメラって思ったより皆さんおもちじゃないんですね;
まぁ私もいつ使ってるかと聞かれたら友達と少し話すか、実家の親に顔見せる位でしょうか^^;

>>kazuoniさん

>これは脱線しす(ry

ですよねーw
自分でもここに書くまで作り始めたきっかけを忘れていましたよ・・w

>金欠な自分には、カメラなんて・・・w

1500円位のやつでも出来ますよ^^ まぁちょっとやってみる程度かもしれませんが^^;
最近カメラはドンドン良くなっているので、今の安い奴ならそれなりにできるかも・・?
http://kakaku.com/camera/web-camera/
価格コムで評判聞いてもいいかもしれませんね・・・
・・・って見てみたら私が使ってる奴全部1位だ・・^^;
これはやはり自信持ってお勧めできます・・w

>どんだけ

私も人のサンプルや助言を助けに色々と作っているので私も誰かの為になればと思います^^

>>Tatuさん

>マウスでもプレイできたならよかったのに残念です。

なるほど!何故気付かなかったのか・・。
確かにマウスでも出来ますね。ダブルはできなさそうですが・・。
次のver.upでマウスプレイありにできるよう検討してみます〜^^

>動画の中のdoubleの譜面は腕を交差させる必要のある場面はありませんでしたが

鋭いですね!
最初交差ありにしたら手がもつれて大変なことになりましたw

>これなら二人でも遊べるのではないでしょうか。

ただ基本ポジションが中央なので二人でやると相当みっちゃくしないと難しいかと^^;
夫婦やカップルでやるならありかもしれませんが、男友達二人とかだと・・・(嫌w


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

Name: ねこ  ..熟練のプログラマー(43,738ポイント)   Date: 2009/10/04(日) 22:45   No:39997     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
WEBカメラ持ってない組がここにも一人^^;

楽しそうですね。見た感じしゃかしゃかタンバリンっぽく、家でも出来るお手軽なパーティーゲームになると思いました。
Wiiとかで出来ても違和感無いデキですねぇ。
カメラ無い人用にマウス対応してみてはどうでしょう?と考えましたがそうすると多分CIRRINGにかぶっちゃいますね(´・ω・`)
カメラ買う機会があったら遊んでみようと思います、それまでは解説でwktkしてますね(笑

通過箇所は固定だと思いますが、横にスライドさせて連続でカカカカカッとなる譜面を作れたり。
二ヶ所を通過して、その中間を判定として加えるフープみたいな感じ。
1か所で何度も左右・上下に出し入れを加えてコンボや得点を稼ぐような機能とかあると良いな〜と個人的に思いました。
もし面白いと思えたら御一考を^^;


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

Name: ケイ  ..ぴよぴよ(111ポイント)   Date: 2009/10/05(月) 12:08   No:40010     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
これはカメラのデバイスの選択は出来ないんでしょうか?
キャプチャカードを指してるんですが、それを先に認識してしまっていて
webカメラを認識してくれません。

キャプチャカードのドライバを無効にしてとりあえず動きましたが、
他にも仮想デバイスをインストールしたりしているので、ソフト側や
コンフィグファイル等で選択出来るようにしてもらえると有難いです。


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

Name: 海岸砂丘  ..ぴよぴよ(70ポイント)   Date: 2009/10/05(月) 19:11   No:40019     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
どうみても姫寺と指なのは置いといて・・・w
いやーすごいものを作りましたね・・・音ゲー好きにはたまりませんなぁw
さっそくプレイしました。
これはスコアを出そうとすると結構カメラに依存するかもしれませんね・・・
コンボは(判定ゆるいから)つながるけど・・・
数百円のノンブランドだとだめだなこりゃ
あと曲の強制終了はほしかった・・・(F12だとウィンドウが落ちる・・・フルコン粘着してるときにはゲージヘルの待つのはきつい・・・)

なんか三点リーダーばっかりですね。すいません。


追伸;曲プレイ中に音飛びが発生します。おそらくサウンドユニットをつないでいるせいだとは思いますが・・・


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

Name: はね  ..中級者(13,499ポイント)   Date: 2009/10/06(火) 00:30   No:40031     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
オプションつけて
マウスの移動で出来たら面白そうですね。


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

Name: huradyio [URL]  ..ぴよぴよ(5ポイント)   Date: 2009/10/06(火) 16:08   No:40054     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
130万画素のwebカメラでも認識してくれますかね??

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

Name: Dixq (管理人) [URL]  ..ウィザード(1,064,426ポイント)   Date: 2009/10/06(火) 21:02   No:40064     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
>>ねこさん

う、カメラの需要低いですね〜^^;

>家でも出来るお手軽なパーティーゲームになると思いました

お〜、なるほど、それはありがたいです^^
実は実家に帰ったときうちの90歳のばあちゃんがプレイしてくれました・・w
大勢でわいわい出来そうですね^^

>カメラ無い人用にマウス対応してみてはどうでしょう?

それいい案ですよね。
すぐにでも実装したいんですが、、、、。
・・あ〜やりたいこといっぱいあるのに毎日会社で出来ないぃぃ(T_T
しばらく会社休んで1年位好きなことやりたい・・。・・なんてできない話ですが・・。
くぅ〜学生時代もっと色んなことやっときゃよかった・・。

>横にスライドさせて連続でカカカカカッとなる譜面を作れたり。

実はそういうの試したんですが、ヒット感が無いので、動く方向が変わらないと余計にヒット感がなくなってしまうんです。
なので同じ方向に連続で、というのは、やってみるとあまり気持ちいいものじゃなかったんですよ;

>二ヶ所を通過して、その中間を判定として加えるフープみたいな感じ。

お〜今2色感知できるので、そういうのもできそうですね。
ご意見ありがとうございます^^



>>ケイさん

>これはカメラのデバイスの選択は出来ないんでしょうか?

あ〜確かに現在は出来ませんが出来るようにも出来ます。
そうですね、そのような環境があることを考えていませんでした。
次のバージョンアップででも、コンフィグに追加できたらと思います。ご意見ありがとうございます^^



>>海岸砂丘さん

>どうみても姫寺と指なのは置いといて・・・w

あのメニュー画面かっこいいな〜・・と思い、
実はゲーセンに行ってプレイもせずにずっとメニュー画面眺め続けて家に帰り実装し・・
それでも納得いかなかったから、またプレイせずに携帯で画面撮って
それを見ながらエフェクトの勉強しました^^;
なんか逆にパクリ過ぎてしまいましたね・・。以後気をつけます;

>曲の強制終了はほしかった・・・

あ〜しまった!書くの忘れていましたが、F1キーで曲の終了が出来ます。
説明にありませんでしたね、すみません><

>曲プレイ中に音飛びが発生します。おそらくサウンドユニットをつないでいるせいだとは思いますが・・・

あ〜きっとそれは処理が追いついていないせいだと思います。
処理落ちすると、処理の方を合わせるのではなく、曲の方を合わせるプログラムなんですよ^^;
ですので、FPSが常に60ではないと、曲が時々処理と同期する為に少しまき戻ります。
気持ち悪いですよね・・ごめんなさい;
処理の軽いモードなども追加したいと思います。



>>はねさん

>マウスの移動で出来たら面白そうですね。

確かにそうですね、思いつきませんでした。次のバージョンアップで出来るかやってみますね!



>>huradyioさん

>130万画素のwebカメラでも認識してくれますかね??

はい、画素数自体は320x240しか使ってないので、いくら高画質でも6万位しか使っていません。
重要なのはオートフォーカスなどでピントが合うか、高速で移動してもカクカクにならないかということです。
安いウェブカメラでも簡単な曲なら遊べると思います。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,068,204ポイント)   Date: 2009/10/10(土) 02:38   No:40225     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
少し落ち着いたので、DL公開したら、また落ちてしまいました。申し訳ないですm(_ _;)m
さくらのサーバーは確かに良いサーバーなのですが、少しアクセスが上がったらすぐに落ちてしまいますね;
料金の高い方のプランを見ても、アクセス負荷についての記述は無いし、
比較サイトを見てもどれ位のアクセスに耐えられるのかという記述が見当たりません・・。
何か良い方法は無いものでしょうか・・。


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

Name: ぺとれり  ..ぴよぴよ(54ポイント)   Date: 2009/10/10(土) 03:16   No:40227     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
さっそくDLさせていただきました。

そしてさっそく質問です><

Aerobeat起動はしたのですが、コンフィング・曲を選んだ後落ちます。

OSはVistaです。

よろしくお願いします


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,069,559ポイント)   Date: 2009/10/10(土) 03:30   No:40228     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
>>ぺとれりさん

Aerobeatで遊んで頂きありがとうございます!

ところで、カメラは接続されていますか?
ドライバはきちんと入っています?
他のソフトでカメラを占有していないでしょうか?

その辺いかがでしょう?
今回は龍神録と違ってVistaでも正常に動くはずですので。

いまいちカメラが接続されていなかった場合の処理の仕方がわからないんで、
現状、カメラが接続されていない状態で継続すると落ちてしまうのです・・。

そういえば、上でケイさんが、キャプチャカードを先に認識してしまってウェブカメラを認識してくれないとおっしゃっていましたね。
接続されている機器の番号を指定出来るようにするべきですね。
もしそのことが原因で落ちているなら、キャプチャカードを無効にするなどしてみてください。


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

Name: ぺとれり  ..ぴよぴよ(81ポイント)   Date: 2009/10/10(土) 03:37   No:40229     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
ご返答ありがとうございます。

カメラですが、PC本体に内臓されているカメラでも動作するでしょうか?


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,069,691ポイント)   Date: 2009/10/10(土) 03:39   No:40230     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
そういえばバイオに内蔵されているカメラで動作しなかったと言っていました。
今回私はたいして多くのPC環境でテストしていないので、どのように動作するのかあまり把握していません、すみません;
少し調べて4:00までにもう一度お答えします。しばらくお待ちください。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,069,762ポイント)   Date: 2009/10/10(土) 03:59   No:40231     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
カメラが接続されていなかった時の処理は解りました。
内蔵カメラについても何とかなるかもしれません。
ちょっと今日は遅いので明日また対応させて下さいm(_ _)m


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

Name: ぺとれり  ..ぴよぴよ(119ポイント)   Date: 2009/10/10(土) 04:00   No:40232     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
遅くまで有難うござりましたm()m

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


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

Name: trx  ..中級者(10,413ポイント)   Date: 2009/10/10(土) 04:18   No:40234     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
エラーが起きました。
ロード中の画面で、止まってしまいます。
こっちの、パソコンが遅いのですか?


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

Name:  ..ぴよぴよ(44ポイント)   Date: 2009/10/10(土) 15:26   No:40249     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
はじめまして、DLさせていただきました。
Aerobeatは起動するのですが、音楽を選択してからの黒いロード画面で止まってしまいます。
カメラも接続できており、PCのほうには特に問題はありません。
不具合なのでしょうか。

宜しくお願いします。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,069,684ポイント)   Date: 2009/10/10(土) 18:47   No:40251     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
う〜ん、カメラをちゃんと認識出来ないという報告が多いですね;
今現在その原因を追究し、バグ修正に努めていますので少々お待ち下さい;

また、重いというご意見がありましたので、コンフィグで並画質にするより、更に軽く動作するバージョンも作ります。
更に、エラー番号70703が発生する事もわかっていますので、そちらも修正中です(こちらはすぐに直せます)

少々お待ち下さいm(_ _;)m


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,069,768ポイント)   Date: 2009/10/10(土) 20:13   No:40252     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
21:20までには修正、機能追加を行った、ver1.11がアップ出来ると思います。
今しばらくお待ちくださいm(_ _;)m


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,069,891ポイント)   Date: 2009/10/10(土) 21:31   No:40257     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
ver1.11をアップしました。
今度は設定.exeで色々と変更出来るようになりました。設定次第で低スペックPCでも動作します。
また、カメラのデバイス番号を指定出来るようになりました。
これで解決出来るかどうかわかりませんが、
もしノートPCのカメラで識別されない方は、設定.exeにてカメラの識別番号をほかの番号で試してみてください。


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

Name: aae  ..ぴよぴよ(20ポイント)   Date: 2009/10/10(土) 21:35   No:40258     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
クリアしたら、ハイスコアが何とかって出てエラー落ちしました
再現性は無く原因は不明です


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,070,008ポイント)   Date: 2009/10/10(土) 21:39   No:40259     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
>>>aaeさん

ご報告有難うございます。
verはいくつで発生したでしょうか?

先ほどアップしたver1.11で解決した

(更新情報より)
「・「Error:70703 - スコアでSCORE_MAX点以上が渡されています。」のエラーを修正しました。」

とは別のログだったでしょうか?


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,070,085ポイント)   Date: 2009/10/10(土) 22:01   No:40260     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
う・・、新しいバージョンをリリースしたらサーバーがダウンしてしまいました><;
ご迷惑おかけしてすみません・・。

もっと高負荷に耐えられるサーバーにしたいな・・。


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

Name: lbfuvab  ..上級者(22,208ポイント)   Date: 2009/10/10(土) 23:06   No:40262     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
MEGAUPLOADとかRapidShareとかで公開されてはどうでしょうか?

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

Name: Dixq (管理人) [URL]  ..ウィザード(1,070,133ポイント)   Date: 2009/10/10(土) 23:10   No:40263     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
>>lbfuvabさん

ありがとうございます。
既にアップローダはいくつか使っているのですが、
ここで公開しなくても、アクセスが集中しただけで(誰もDLしてなくても)
落ちてしまうんです・・。


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

Name: dkdera  ..ぴよぴよ(56ポイント)   Date: 2009/10/11(日) 01:53   No:40268     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
色設定して、同じ色の物をだしても、ポインタの出てくる所がずれます。なぜなんでしょうか?
自分のWebカメラがだめなんでしょうか・・・?

因みに出した場所の左上方向にずれます。物を出していない時はポインタが出ません


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

Name: ぺとれり  ..ぴよぴよ(183ポイント)   Date: 2009/10/11(日) 04:11   No:40269     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
ver1.11も試し、設定も変えてみたのですが

コンフィング・曲を選ぶとやはり落ちてしまいます;

内臓カメラはVAIOの「MOTION EYE」という奴です

これでも起動しますでしょうか?


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,071,042ポイント)   Date: 2009/10/11(日) 06:30   No:40270     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
先ほどver1.20をアップしました。
う〜、一晩中こうやってプログラム書くのも久しぶりだ〜(><;

>>dkaderaさん

複数、広範囲個所条件マッチするピクセルがあると、その中心を示すので思った位置にならない場合があるかもしれません。
そうではなくて、明らかにターゲットではない場所を指しているなら、何かのバグかもしれません・・。
そのスクリーンショットを撮って頂くことは出来ますか?

>>ぺとれりさん

ダメですかぁ・・。
手元にカメラ内蔵のノートが無いんですよね><;
また明日調べてみます。対応が遅くてすみませんm(_ _;)m


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

Name: はくろうりん  ..ぴよぴよ(90ポイント)   Date: 2009/10/11(日) 11:57   No:40273     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
私もdkderaさんと同じようにポインタの位置がずれます
同じように左上にずれるのですが
ターゲットを右下に移すとずれが減ってきて右下の端までつけばほぼそろいます
ターゲットを左上に移すにつれてずれてきて
最後はカメラに写るターゲットが中心でもポインタは左上端までいってしまします
おそらく同じ症状なのでスクリーンショットもつけておきます


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,071,167ポイント)   Date: 2009/10/11(日) 12:38   No:40275     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
なるほど。
カメラによっては設定した解像度に対応しておらず、指定した解像度で計算しているにもかかわらず、
実際に画面に映っているのは別の解像度の映像といった現象が起きているのではないかと思います。

私は勝手に320x240のサイズに対応していないカメラはそうそう無いだろうと決め付けてしまいましたが、
おそらくあるのではないかと・・。
設定.exeのカメラの解像度はいくつになっていますか?

320x240、160x120、80x60いずれにも対応していないとなると、ちょっとこれは別の対策を立てないといけなさそうです。

撮って頂いたSSを見る限り、かなり高精細ですね。
例えば「MOTION EYE」は640x480の解像度サイズにしか対応していないといった仕様なのではないでしょうか・・。

VGAサイズで遊べる実行ファイルを作ってみますので少々お待ち下さい。
ただし、VGAサイズにすると計算しなければならない計算量がかなり増えてしまうので、
まともに遊べないかもしれません。。。
目安としては13:30までにアップします。


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

Name: はくろうりん  ..ぴよぴよ(57ポイント)   Date: 2009/10/11(日) 13:21   No:40276     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
調べてみたところ
自分のカメラは1.3メガピクセル
設定は320x240でした
160x120、80x60も試してみたけれどやはりずれるようです
カメラが対応してなかったようでした。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,071,278ポイント)   Date: 2009/10/11(日) 13:43   No:40277     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
遅くなりました。
640x480を選択できるようにして、ver1.21公開しました。
設定で640x480にしてプレイしてみてください。
重くなるかもしれませんが・・。

もしよろしければ、どれ位のPC性能で、プレイ中何だいたい何FPS位だったか教えて頂けないでしょうか?
また、メニュー画面も結構重くなると思うのですが、そちらもよろしければ。


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

Name: はくろうりん  ..ぴよぴよ(126ポイント)   Date: 2009/10/11(日) 14:28   No:40280     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
640x480やってみました
Configを選ぶと応答なしになりストップしました…
なぜかゲームはプレイでき、重いですけどほとんどずれなくなりました
FPSはメニューもゲーム中も解像度に関係なく58から60くらいでした
ただ640x480ではゲーム中に設定.exeを〜の文が表示されます
スペックはどのように書けばいいかわかりませんが、とりあえずPCメモリは3Gです


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,071,317ポイント)   Date: 2009/10/11(日) 15:05   No:40283     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
う、Config部の計算式間違ってましたorz
今、マウスで操作出来るようにしているので、次のバージョンで修正しますね。


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

Name: ひよこ  ..熟練のプログラマー(54,393ポイント)   Date: 2009/10/11(日) 15:15   No:40284     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
Dixqさん 今、マウスで操作出来るようにしているので
>>それってカメラなしでマウスだけでプレイできるってことですか?


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,071,340ポイント)   Date: 2009/10/11(日) 15:23   No:40285     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
そうです。結構そういう要望が多かったので実装してみようかと・・。
夜までにはアップできると思います。


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

Name: 鶏剣  ..ぴよぴよ(65ポイント)   Date: 2009/10/11(日) 16:10   No:40289     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
更新作業お疲れ様です。
動画を見て興味を持ったのでダウンロードさせて頂きましたが、どうもカメラの認識が上手くいかないらしく、コンフィグ、もしくは曲を選ぶと強制終了が起きてしまいます。
スペックは、
OS:XP
CPU:Intel core2Duo 3.0GHz
グラボ:Geforce7600GS 256MB
カメラ:Buffalo BWC35H01
です。ちなみに機器番号を1〜5全てを試してもダメでしたorz


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

Name: ダイナマイト  ..ぴよぴよ(29ポイント)   Date: 2009/10/11(日) 20:30   No:40292     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
こんばんは
さっそく質問なんですが
ゲームプレイしようとすると画面が合わせ鏡のようになってしまいます。
プレイ画面にまたプレイ画面でそのなかにまたプレイ画面

そしてそのまま曲が曲選択の時の音楽のままになってしまいます
どうしたらいいでしょうか


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,071,501ポイント)   Date: 2009/10/11(日) 21:22   No:40293     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
ver2.00でマウス操作可能になりました。
マウスで操作される方は、設定.exeで操作方法をマウスにしてプレイして下さい。


>>鶏剣さん

BWC35H01なら全く問題無いはずですね・・。
スペック的にも全く問題ないですし、う〜ん、どうしてでしょう;
マウスで操作可能になりましたので、マウス操作状態なら曲選択出来るか一度試していただいてもよろしいでしょうか?

>>ダイナマイトさん

合わせ鏡?!
よければその画像をスクリーンショットにとってアップしてもらえますか?
Alt + PrintScreenで撮影後、ペイントなどで貼り付けて保存して頂けると画像として画面が保存出来ます。


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

Name: MNS  ..上級者(18,891ポイント)   Date: 2009/10/11(日) 22:03   No:40294     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
マウスで出来るということなので、遊ばせていただきました^^
とても面白く、市販のゲーム並みのクウォリティを感じました。
ゲームの感想は他の方々がされていると思われますので、動作報告だけさせていただきます。

設定
・解像度:640*480
・色:1600万色
・FPS:60
・画質:高画質
環境
・WindowsVista32bit
・Core2Quad Q9300
・メモリ4GB
・Geforce9800GT

この設定および環境でプレイしましたが、一瞬処理落ちが発生しているというメッセージが出たものの、
プレイに支障はなく、快適にプレイすることが出来ました。
追記:FPSは57〜60を行き来しています。

一つ、設定で音量が調整できるようになったほうが良いのでは、と思いました。


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

Name: ひよこ  ..熟練のプログラマー(54,566ポイント)   Date: 2009/10/11(日) 22:13   No:40296     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
マウスで遊ばせていただきました。とっても楽しいです。そしてとっても難しいです。
難易度をEasy,Normal,Hardと3種類になるといいなぁと思います。
パソコンはVista HomeEdition Core2Duo 2.1GHzでたまに処理落ちとでます。
並画質っていうのはカメラのことですよね?
FPSは59〜60くらいを行き来してます。
Dixqさんの開発環境ってどんなパソコンなんですか?
最新型のパソコンだったらどうしよう・・・・・・



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

Name: 鶏剣  ..ぴよぴよ(166ポイント)   Date: 2009/10/11(日) 22:15   No:40297     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
更新お疲れ様です!
早速マウスでの起動を試してみましたが、こちらは問題なく動作しました。
ですが、やはりカメラで起動を試みると同じ現象になってしまいます。
カメラをUSBで接続するだけでは設定が不十分だったりするんでしょうか?


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,071,633ポイント)   Date: 2009/10/11(日) 22:59   No:40299     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
>>MNSさん

遊んで頂きありがとうございます☆
また、ご報告ありがとうございます。
参考にさせて頂きます^^


>>ひよこさん

画質というのはゲーム自体の画質です。
でも、設定が別にあるので、ここではほとんど意味がないものになっています。
で、私のパソコンは

CPU: Core i7 860
メモリ:8GB
VGA:Geforce 9600GT
OS :Vista x64、XP x32

です。先月発売した新しいCPU、待ってたので買ってしまいました^^


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,071,770ポイント)   Date: 2009/10/11(日) 23:11   No:40300     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
>>鶏剣さん

どもです^^
う〜ん・・カメラのドライバなどは入っていますよね?
例えばLogicoolとかについてくるソフトでカメラで自分を映すこととかは出来ますよね?
友達に似たような機種のカメラ持ってる奴がいるので、ちょっと明日試してみます。
確かなことがいえず申し訳ないです;


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

Name: 匿名  ..上級者(18,462ポイント)   Date: 2009/10/11(日) 23:43   No:40301     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
お聞きしたいのですが、SEや音楽はDixq (管理人)さん自身が作成したものなのでしょうか?
フリーでお借りした場合ではAll Rights Reservedと表記するのは
かなり危ないと思うのですがその点は大丈夫なのでしょうか?
すべて(All)の権利を保有していますという意味ですので
もしも自作でないのならば
(C)借りてる素材屋さんの名前/原作の著作権者(ネタ元)
(C)二次的著作物の著作権者(あなたの名前)
みたいな感じで書いたほうがいいと思いますよ。
もっと言うと書かないと色々とまずいです。
All Rights Reserved自体"書かない"という手もありますが


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

Name: ショウ  ..ぴよぴよ(52ポイント)   Date: 2009/10/12(月) 00:00   No:40302     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
マウスでできるようになったときいて
させていただきました

一曲おわったあとモード選択にもどらないで
次の曲をえらべるようにできたほうがいいとおもいます


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

Name: Justy  ..伝説なるハッカー(440,386ポイント)   Date: 2009/10/12(月) 00:43   No:40303     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
 マウスに対応した!(うちにはカメラがない)ってことでv2.00をDLしてみました。

 いや、相変わらずクォリティ高いですね。
 いつの間に作っていたのやら。

 Perfect/Marvelousをとるのは、なかなかタイミングがシビアで苦戦しましたが、
エフェクトも曲もなかなか良く、最近あまりプレイしなかったジャンルなので
新鮮でした。

 あと、細かいところですが、ウインドウを自由にリサイズできるようにしたのは
いいですね。
 大きめにすると高解像度になった感じがします。



>どれ位のPC性能でプレイ中何FPS位だったかを教えて下さい

 Core2Duo + GeForceのノートPCでウインドウモードだとメニュー中もゲーム中も
ほぼ 57台です。
 フルスクリーンだと 58.5前後です。
 画面の切り替わり時以外はこの数値前後で安定しています。

 CPU使用率はウインドウモードで、読み込み時など瞬間的に 30を越えることはありますが、
プレイ中は 2〜4%くらいです。


 さて、少し気になった点でも。

・ 音のもたつき
 時折もたついたり、すこし音が飛んだ感じがします。
 時間ベースではなく、カウンタベースなのでしょうか。

・ アプリがバックグランドにいるときでも上下や ENTERなどのキーにアプリが反応している
 これを書いている今も改行や日本語変換の確定をする度にメニューで決定キーを
押したことになって、ゲームが始まってしまいます……。

・ メニューのマウス対応
 折角マウスに対応したのなら、メニューとかの選択も含めて対応してみてはどうでしょうか。

・ メニューのポリゴン数を 3000に設定するとアプリが落ちる
 メニューのポリゴン数を 3000に変更して起動したところ、
タイトル画面から STARTを選んでロゴが出た次の画面(3Dのメニュー)が
始まる前にアプリが落ちました。

Aerobeat.exe の 0x004090d0 でハンドルされていない例外が発生しました
0xC0000005: 場所 0x805810a8 を読み込み中にアクセス違反が発生しました。

    004090A0  push        ecx  
    004090A1  mov         edx,dword ptr ds:[0CC7E98h]
    004090A7  fld         dword ptr ds:[0CC8364h]
    004090AD  inc         dword ptr ds:[0CC8368h]
    004090B3  fsub        qword ptr ds:[5644B8h]
    004090B9  shl         edx,8
    004090BC  lea         edx,[edx+5810A8h]
    004090C2  mov         eax,edx
    004090C4  fstp        dword ptr ds:[0CC8364h]
    004090CA  push        esi  
    004090CB  lea         esi,[eax+1]
    004090CE  mov         edi,edi
->  004090D0  mov         cl,byte ptr [eax]
    004090D2  inc         eax  
    004090D3  test        cl,cl
    004090D5  jne         004090D0
    004090D7  mov         ecx,dword ptr ds:[0CC8000h]
    004090DD  push        0    
    004090DF  push        ecx  
    004090E0  sub         eax,esi
    004090E2  push        eax  
    004090E3  push        edx  
    004090E4  call        00413470
    004090E9  fld         dword ptr ds:[0CC8364h]
    
EAX = 805810A8 EBX = 00000001 ECX = 00000000 EDX = 805810A8
ESI = 805810A9 EDI = FFFFFFFE EIP = 004090D0 ESP = 0012FF20
EBP = 0012FFC0 EFL = 00000287

OV = 0 UP = 0 EI = 1 PL = 1 ZR = 0 AC = 0 PE = 1 CY = 1

 ポリゴン数が 2400以下だと起きないようです。
 
 察するにポリゴン数に応じた領域の確保がされていないのかメモリを破壊してしまい、
結果文字列テーブルを参照するときに本来想定されたところ以外を見てしまい、
そこがアクセスできないメモリだったので(文字列の長さを調べようとして)落ちているようです。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,071,873ポイント)   Date: 2009/10/12(月) 00:46   No:40304     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
>>匿名さん

そうですね、その記述を作った時は、すべて自作でしたが、作りこむに従ってそうではなくなりました。
不適切な記述が残ったままでしたね。変更しておきます。ご指摘ありがとうございます。

>>ショウさん

そうですね、私もやってる時そう思ってました。
次回バージョンの修正の参考にさせて頂きます。
ご意見ありがとうございます。


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

Name: ぽよ  ..ぴよぴよ(851ポイント)   Date: 2009/10/12(月) 01:24   No:40305     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
 おなじくマウス対応とのことで遊ばせていただきました^^;
マウスプレイでの報告であまり参考にならないかもしれませんが…
設定:ほぼディフォルトのまま、色数だけを1600万色に
環境:
・Windows2000pro
・Pentium4 2.4GHz
・メモリ512MB
・GeForce6200A 256MB-DDR2 AGP4X

フルスクリーンなら(たまに処理落ちの注意は出るものの)ほぼ問題なく遊べました。
ウィンドウモードだと(曲によってバラつきはありますが)終始50FPSほどでキツくなる感じです。



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

Name: Dixq (管理人) [URL]  ..ウィザード(1,072,370ポイント)   Date: 2009/10/12(月) 01:26   No:40306     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
>>Justyさん

プレイして下さってありがとうございます^^
前より奇麗なエフェクトを・・、前より見栄えのある演出を・・。
そうやって段々自分の首を絞めつつあります・・^^;
しかし、こうしてお褒めの言葉を頂ければ苦労の甲斐があったと感じることが出来ます^^
また、FPSなどのご報告もありがとうございます。

>時間ベースではなく、カウンタベースなのでしょうか。

そうなんですよね、時間ベースにするべきだと解っていながら、カウンタベースにしました^^;
早すぎるなら待機する、遅すぎるならその周は描画をせずに2回計算関数を通るなど
方法はいくらでもあると思うので、時間ベースにするよう調整してみます。

>アプリがバックグランドにいるときでも上下や ENTERなどのキーにアプリが反応している

これは、ノンアクティブでも動作するようにしてくれと言われて途中から仕様変更したのですが、
キーまで受け付けるのは良くないですね・・。
う〜ん、動作しつつも、キーは受け付けないようにする・・。

>メニューのマウス対応

なるほど、操作を統一した方がやりやすいですね。

>メニューのポリゴン数を 3000に設定するとアプリが落ちる

仰る通り、完全にメモリの確保ミスでした。

ご意見、ご感想ありがとうございます^^
今後活かしていきたいと思います。重ねて感謝申し上げます!


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,072,444ポイント)   Date: 2009/10/12(月) 01:50   No:40308     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
>>ぽよさん

プレイして下さり、ありがとうございます^^

その環境でまともに動くというご報告はとても参考になります。
しかもウィンドウモードではきついということで、ちょうどその辺りが境界ラインだと思われます。

メニュー画面では60FPS保っていたでしょうか?


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

Name: ぽよ  ..かけだし(1,061ポイント)   Date: 2009/10/12(月) 08:52   No:40310     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
 すみません、返信が遅くなってしまいました。
以下前出設定環境フルスクリーンでの状況です。
メニューは初回のポリゴン描画?の一瞬だけ4〜9FPSまで落ちます(笑)
2回目以降はまったく処理落ちはありませんでした。
あとは曲を選ぶ時、上下で選択肢を変更するとその一瞬だけ47〜49FPSあたりになります。
他には曲が始まるときの演出が出るあたり一瞬20FPS程度まで落ちます。
多分何かを読み込みしてる時だけですかね?

プレイ中は終始安定し、問題なく遊べる状況です。
コンフィグでもっと軽く出来ると思うのでもう少し低スペックでもいけそうですね。


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

Name: リシュアン  ..ぴよぴよ(290ポイント)   Date: 2009/10/12(月) 12:05   No:40314     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
Dixqさん初めましてm(_ _)mペコ
プレイしてみて気になったので、投稿しました。
まず、自分の環境ですが、

OS: WindowsXP SP3 HomeEdition
CPU: IntelCore2DuoCPU E8400 @ 3.00GHz(2 CPU)
GPU: NVDIA GeForce 9600GT
メモリ: 3072MB
DirectXバージョン: DirectX9.0c

でプレイさしてもらいました。
フルスクリーンで、プレイしていると、全体的には60FPSを保っていますが、たまに、演奏中に処理落ちがおこります。ウィンドウだと、余計に処理落ちが目立つ時があります。
設定.exeの設定は、
(上から)

160x120
表示しない
表示しない
2400
6万色
30FPS
1
0
マウス(カメラもやってみましたが同じことが)

他の低スペックPCでも動いたので、処理落ちさえどうにかなればいけると思います。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,073,482ポイント)   Date: 2009/10/12(月) 16:27   No:40332     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
>> ぽよさん

情報提供感謝致します^^
仰る通り、画面の切り替わり時は、データの読み込み、解放を行っているので、FPSは落ちてしまいます。
そのフレームだけFPS計算に入れないようにした方がよかったですね。
プレイ中は問題ないということで安心しました。


>>リシュアンさん

はじめまして^^ 情報ありがとうございます☆
そのスペックで処理落ちするのはちょっと問題ですね;通常60は保てているということですね。

処理落ちした際の動作を時間軸ベースになるように修正しなければなりませんね。
ありがとうございます。


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

Name: Justy  ..伝説なるハッカー(440,660ポイント)   Date: 2009/10/12(月) 17:40   No:40337     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    

>FPS

 うちの環境で処理落ちるというのは何ででしょうね。
 CPU使用率からしてほとんど消費していない状態なので、
単純な CPU/GPU負荷ではないような気がしますし。

 ちなみに龍神録 plusですとウインドウモードで 59.5〜60.0で
3回に1回は 60.0がコンスタントに出ています。



>動作しつつも、キーは受け付けないようにする・

 多分 GetWindowActiveFlag()とか GetActiveFlag()とかでウインドウがアクティブかどうか
見分けられますので、それを元にキーの入力を有効・無効にするとか、、
SetKeyExclusiveCooperativeLevelFlag()で排他制御すればいいんじゃないでしょうか。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,073,669ポイント)   Date: 2009/10/12(月) 17:50   No:40338     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
>FPS

う〜ん、FPS制御の仕方が完全じゃないようで・・。
たまに全画面にすると61になるときがあるなど、よく解らない状態になる事があるので、何か間違いがあるのかな・・。
今のところ、1秒ずつで計算しているので、もう少し長い範囲で計算するなど、FPS制御の方法を改善したいと思います。

>動作しつつも、キーは受け付けないようにする

そう言われると簡単ですね^^;
有難い的確なご指摘ありがとうございます。
ノンアクティブな時はキーを受け付けなければいいだけですね・・。


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

Name: fatens  ..入門者(3,068ポイント)   Date: 2009/10/12(月) 20:01   No:40347     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
カメラがないのでマウスでやってみました。
EASYは楽しめましたがHARDになるとさすがに難しかったです。 (演奏なら楽なのに…
初期設定、ウィンドウモード、以下の環境であまり処理落ちなくプレイできました。
逆にフルスクリーンはまともに表示されない...orz
OS:Windows XP Home Edition SP3
CPU:Celeron D 345J 3.06GHz
GPU:オンボード
メモリ:512MB

あと、Contents Select の Aero Beat は Aerobeat だと思います。


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

Name: ぬぱ  ..ぴよぴよ(471ポイント)   Date: 2009/10/13(火) 22:01   No:40407     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
はじめまして、ぬぱと申します。
とてもすばらしいソフトですね。
カメラを購入してきて早速遊んでみました。
PCのスペックは以下のとおりです。
-------------
OS: WindowsXP Professinal Edition SP3
CPU: IntelCore2DuoCPU E8400 (3GHz)
GPU: NVDIA GeForce 9600GT
メモリ: 2GB
DirectXバージョン: DirectX9.0c
-------------
マウスのほうがはるかに簡単ですね(笑)

カメラはエレコムのUCAM-DLU130Hという比較的安価な
130万画素のものです
640x480モードしか対応していないようで、設定.exeで
640x480の並画質にしています。それ以外はそのままです。

重いせいもあるのだと思いますが、マーカーの
移動が滑らかではないです。

また、フルスクリーンですと曲のテンポがずれまくります。
ウィンドウモードとの比較は以下のとおりです。

フルスクリーン
FPS:56〜60
CPU: cpu0=85%, cpu1=20%
※曲のテンポがずれます

ウィンドウモード
FPS:58〜60
CPU: cpu0=20%, cpu1=5%
※曲のずれはありません

このほか、ウィンドウモードでフォーカスが無い場合でも
キー入力を拾っているようです。
フォーカスが無い場合にはキー入力を拾わないように
していただけるとうれしいです。

もし逆の要望をされる方がいるのであれば設定.exeで
選択が可能であればなおうれしいです。

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


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

Name: くさいおじさん  ..ぴよぴよ(72ポイント)   Date: 2009/10/14(水) 03:06   No:40423     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
どうやらメニカム(デスクトップキャップチャーソフト)をパソコンに入れてるとメニカムの方がウェブカメより優先されるみたいです。たぶん自分のノートパソコン(カメラ一体型)だけかもしれませんが。

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

Name: DVDM [URL]  ..入門者(4,147ポイント)   Date: 2009/10/14(水) 08:24   No:40426     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
お久しぶりです。
マウス対応と言う事でプレイさせて頂きました。
webカメラがないのでカメラでの動作は一切確認できておりません。
特にバグらしいものは見つけられませんでしたが、ちょっとした要望を。

【一つ目】
画面遷移なのですが、
曲が終わった後、どのモードで遊ぶかを選択する画面に戻りますが
個人的に、今終わった曲に戻ってもらえると連続でプレイしやすいかなと感じました。

【二つ目】
プレイ中のHIT音ですが、有/無 を切り替えられるようにしておいてもいいかなぁと思いました。

【三つ目】
ゲームの処理落ちなのかどうかは解りませんが、
HITさせるオブジェクトのタイミングが若干ずれている用に感じました。
(全部と言う訳ではなく、部分的にです)

【四つ目】
モード選択画面で「USBカメラが無いと遊べません」と書いてある項目があります。
マウスに対応したみたいなので御時間がある時に修正したほうがいいかもです。

【五つ目】
曲が終了した時のリザルト画面ですが、
何をプレイしたか解らないので曲名や、ゲームレベル、難易度などを表示してみるといいかもしれません。


私のPCの性能を書いておきます。
御参考になれば幸いです。

OS:Microsoft Windows XP Home Edition Version 2002 Service Pack 3
CPU:Intel(R) Core(TM)2 Duo CPU(2.20GHz, 2.21GHz)
メモリ:2046MB RAM
DirectX 9.0c
グラフィックボード :NVIDIA GeForce 8400 GS
VRAM:512MB
リフレッシュレート :60Hz
デスクトップ解像度 :1280*1024 pixel


プレイ中のFPSは東方電気笛様の動画込みのフルスクリーンで大体55〜60くらいでした。
(ウインドウモードでは試していません)


※とりあえずHARDはGAMEレベル3で全てSランククリア出来そうなので頑張ってみます。
制作お疲れ様でした!
お仕事も頑張ってください><
また何かあったら報告します〜


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,075,690ポイント)   Date: 2009/10/14(水) 20:17   No:40465     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
>>fatensさん

遊んでみて下さりありがとうございます^^
また、実行状態報告ありがとうございます。参考にさせて頂きます。

>あと、Contents Select の Aero Beat は Aerobeat だと思います。

ぐは、間違いですね^^;
直しておきます。ありがとうございます。


>>ぬぱさん

こんにちは
遊んで下さりありがとうございます^^
また、ご報告に感謝いたします。今後の参考にさせて頂きます。

>マウスのほうがはるかに簡単ですね(笑)

そうですね。昨日私は自分で奇跡的に満点出してしまって自分でびっくりしました^^;

>640x480モードしか対応していないようで

結構VGAしか対応していないカメラあるんですね。
横サイズが2倍になると、計算量は4倍になってしまいますからね〜;
まぁサイズが大きかったらひとつ置きに計算するなど方法はいくらでもあるでしょうけど。

>重いせいもあるのだと思いますが、マーカーの移動が滑らかではないです。

というと60FPSを保っていないということでしょうか?
教えて頂いた情報からしてそこまで処理落ちしているようではないようですので、
単に位置が定まらないのなら、設定が適切ではないのではないでしょうか。
センサーターゲットがきちんと捕まえられていないのではないかと思います。
ちょっとコンフィグが使いにくいと思いますが・・・よろしければ再調整してみてください。

>フォーカスが無い場合にはキー入力を拾わないようにしていただけるとうれしいです。

そうですね。これは結構簡単に実装出来るので週末にでも実装したいと思います。


>>くさいおじさんさん

>どうやらメニカム(デスクトップキャップチャーソフト)をパソコンに入れてるとメニカムの方がウェブカメより優先されるみたいです。

なるほど、情報提供ありがとうございます。
参考にさせて頂きます。


>>DVDMさん

>お久しぶりです。マウス対応と言う事でプレイさせて頂きました。

おー。お久しぶりです^^ お元気でしたか?

>【一つ目】
>画面遷移

やはり言われてしまった・・^^;
私もそう思いながらもメニューのプログラムを変えるのが面倒だと思ってしまい・・。
妥協と満足は天敵だと思っていたのに!
実はver3.0でメニューががらっと変わる予定です。
(曲や譜面データを自分で追加出来るようにする予定)


>【二つ目】
>プレイ中のHIT音

そうですね。欲しい人と要らない人がいるかもしれませんね。

>【三つ目】
>ゲームの処理落ちなのかどうかは解りませんがHITさせるオブジェクトのタイミングが若干ずれている用に感じました。

さすがビートマニアマニア・・w
いや、さすが音ゲーますたーですね!リズムには厳しいw
その理由はver3.0がリリースされた時にわかるでしょう・・^^;

>【四つ目】
>モード選択画面で「USBカメラが無いと遊べません」と書いてある項目があります。

あ〜これも一度見て「なおさなきゃ」と思ったままでした。直しておきますね。

>【五つ目】
>曲が終了した時のリザルト画面ですが、
>何をプレイしたか解らないので曲名や、ゲームレベル、難易度などを表示してみるといいかもしれません。

まさに日記に書いたとおり・・^^;
そうなんですよね!
これは是非実装しようと思います。

>※とりあえずHARDはGAMEレベル3で全てSランククリア出来そうなので頑張ってみます。

すご・・^^;

貴重な情報提供ありがとうございます!
今後に活かしていこうと思います^^


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

Name: 海岸砂丘  ..ぴよぴよ(0ポイント)   Date: 2009/10/14(水) 20:47   No:40470     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
あれマウスでできるようになってるし・・・
ウィンドウ・フルスクリーンともにマウスでやってみたところまだ音飛びするなぁ・・・
最低設定でもダメっぽいしこりゃ相性かねぇ。
あとフルスクリーンだとポインタが滑ります・・・
因みにFPSは窓、全画面ともに60-59付近を安定しています。

参考までにPCスペックです
OS:Microsoft Windows XP Home Edition Version 2002 Service Pack 3
CPU:Intel(R) Core(TM)2 Duo E8400(3.0GHz)をOCにより3.2GHzで動作させています
メモリ:4096MB RAM
グラフィックボード :NVIDIA GeForce 9600 GT
VRAM:512MB
リフレッシュレート :60Hz
デスクトップ解像度 :1920*1080 pixel


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

Name: DVDM [URL]  ..入門者(4,329ポイント)   Date: 2009/10/15(木) 04:12   No:40481     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
要望ばかり書いてしまい申し訳ないのですが書き忘れました;
キーボードだけでなくマウスでも項目を選択できるようにすると
さらにスムーズにゲームが出来るのではないでしょうか。
まぁ今のままでも特に気にはならないですが;


※HARD、GAMEレベル3で全曲Sを取ったので記念に上げときます。
私の中でのNo1は「Rush」です。
とてもかっこ良い曲でしたので本当に御馳走様です><


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

Name: ゼェリー  ..ぴよぴよ(206ポイント)   Date: 2009/10/16(金) 03:08   No:40510     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
DLしました!
さっそくプレイしようと思ったのですが、ゲームがカメラを認識してくれません。PCには正常に接続されていて認識もされています。
因みにカメラ以外にキャプチャーボードもさしてあります。他にもメニカム、SCFHなどのキャプチャーソフトも入っています。
そこで設定.exeのカメラのデバイス番号を1〜5まで変えてみましたが駄目でした。全てキャプチャーボードを認識します。メニカムなどを終了してみても認識しませんでした。

認識させる方法はありますか?


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

Name: lbfuvab  ..上級者(22,899ポイント)   Date: 2009/10/16(金) 18:31   No:40518     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
カメラは持っていません。参考になれば良いのですが・・・

Core2 Duo(3GHz) + 2GB Mem + 9800GTでは
フルスクリーン・ウィンドウともにサクサクいけました。

Pen4(3.4GHz) + 1GB Mem + オンボ(Intel 82865G Graphics Controller)では
フルスクリーンでプレイすると意味不明な状態になりました(ガクガクって感じで)
ウィンドウモードでやると結構うまくいきました(チョイチョイ処理落ち)


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

Name: ダイナマイト  ..ぴよぴよ(127ポイント)   Date: 2009/10/16(金) 18:39   No:40519     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
合わせ鏡になるダイナマイトです
遅れましたがこれがキャプ画像です

たぶんすでに入れていたManycamのせいだとは思うんですが、切って遊ぼうとしたらこんどはManycamのロゴが背景にきてカメラを認識してくれません


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

Name: ひよこ  ..熟練のプログラマー(55,122ポイント)   Date: 2009/10/16(金) 19:20   No:40523     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
やっとカメラが買えたので遊んでみましたが、
的に当てるまるみたいなものがうまく動いてくれませんでした。
やっぱりカメラが安くてうまくいきませんでした。
というよりマウスで遊ばないとSには程遠くなってしまうので、
これからはマウスで遊びますね。

しかし、このゲームは、よくできてるって感じますね。
自分には無理です。(エフェクトとか・・・・・

このゲームってサンプルのところに置きますか?
そしたら、
このゲームのソースが見られるのを楽しみにしてます。(高度すぎてわからないでしょうけど。


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

Name: そうは問屋の最終兵器  ..かけだし(1,392ポイント)   Date: 2009/10/16(金) 21:18   No:40525     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
久々に時間がとれたので、遅ればせながらプレイさせていただきました。
カメラがないのでマウスでプレイしました。
音ゲー特有の高揚感があって、「音ゲーやってるなー!」って感じがして楽しかったです。
近々もう少しスペックの高いPCに乗り換える予定なので、ついでにカメラも買って楽しもうかと…。

スペックですが、
OS : Microsoft Windows XP Home Edition Version 2002 Service Pack 3
CPU : Mobile Intel(R) Celeron(R) CPU 1.80GHz
メモリ : 990MB RAM

で、ウィンドウモードでは正常にプレイできましたが(最軽量と思われる状態で、FPS 58〜60)、
フルスクリーンだと画面にちらつきがはしって、音楽が飛び飛びになることがありました。


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

Name: ixchel  ..ぴよぴよ(83ポイント)   Date: 2009/10/16(金) 23:13   No:40534     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
DLさせていただきました

早速プレイ!!と思ったのですが、どのような設定にしてもメニューでスタートを押すとエラーが出て落ちてしまいます。
ちなみにウェブカメラではなくマウスでの設定です。
どうすれば解決できるでしょうかね?


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

Name: ナナシア  ..ぴよぴよ(134ポイント)   Date: 2009/10/17(土) 03:59   No:40557     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
面白そうなのでダウンロードしてみたのですがpc関係には詳しくなく思うようにできません
まずデータのセーブができていません
そして設定.exeでマウスに操作を変えてみてもまた元に戻ってしまいできません
ダウンロードした後はインストールというのがあるのでしょうか?
すごく初歩的なことかもしれませんが教えていただけるとありがたいです


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

Name: Tatu  ..中級者(14,062ポイント)   Date: 2009/10/17(土) 12:08   No:40567     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
イージー全曲フルコンボ達成しました。

動作環境
オペレーションシステム:Windows Vista Business
プロセッサ: Intel(R) Core(TM)2 Duo CPU U7500 @ 1.06GHz(2 CPUs)
メモリ: 1014MB RAM
ディスプレイデバイス: Mobile Intel(R) 965 Express Chipset Family

プレイ中、ときどき処理落ちしますが、特に問題となるほどではありません。

以下のバグが2回発生しました。

クリアやフルコンボをしなくてもSランクフルコンボを達成した状態になります。
その時、その曲のランキングが全てカメラでプレイし0点をとった状態になる。
しかしもう一度やり直せば曲選択時の表示は正常になります。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,076,648ポイント)   Date: 2009/10/18(日) 23:42   No:40631     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
うぬぬ・・なかなか掲示板に来る時間がない><;

皆様コメントありがとうございます!じっくり拝見させて頂いています。
音飛びや曲が少ないなどのご意見が多かったので、それを解決するためのver3.00を製作中です。
・・って今からだけど^^;
平日に一日何時間作れるかなぁ・・。
1週間と土日で何とかver3.00が作れたらいいなと思っています。

また明日きちんとお返事書かせていただきたいと思います。
コメント下さった方々本当に感謝いたします☆


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,077,832ポイント)   Date: 2009/10/20(火) 23:06   No:40705     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
>>海岸砂丘さん

ありがとうございます音飛びの件はver3.00で改善しようと思います。
また、情報提供ありがとうございます。参考にさせて頂きます。


>>DVDMさん

>キーボードだけでなくマウスでも項目を選択できるようにすると
>さらにスムーズにゲームが出来るのではないでしょうか。

そうですよね。キーボードだったりマウスだったりすると操作が面倒ですよね。
マウスでも操作出来るように考えてみようと思います。

>※HARD、GAMEレベル3で全曲Sを取ったので記念に上げときます。

すごい!!こうしてみると輝かしいですね〜w
一覧のスコアデータみたいなページいるかな・・?

>私の中でのNo1は「Rush」です。

この曲はリア友が作ってくれた曲なので、そのお言葉伝えておきます^^


>>ゼェリーさん

>ゲームがカメラを認識してくれません。
>因みにカメラ以外にキャプチャーボードもさしてあります。

なるほど・・キャプチャソフトが影響するようですね。
実はDirectShowは特に詳しいわけではなく、サンプル見ながら見よう見まね状態なので、細かいことがわからなかったりします^^;
解決策をなんとか見つけたいと思います。情報提供ありがとうございます。


>>lbfuvabさん

情報提供ありがとうございます!
参考にさせていただきます。


>>ダイナマイトさん

なるほど・・。
これはカメラの映像ではありませんね。
キャプチャソフトの問題は今解決策がよくわからない状態なのでしばらく考えてみます;

>>ひよこさん

>やっとカメラが買えたので遊んでみましたが的に当てるまるみたいなものがうまく動いてくれませんでした。
>やっぱりカメラが安くてうまくいきませんでした。

恐らく設定の問題だと思います。
または、部屋に誤感知するものが置いてあるとか。
安いカメラだと発色が悪かったり、動きがスムーズでなかったりすることはあるかもしれませんが、
センサーターゲットの感知は出来ると思います。
部屋に誤感知するものを置かず、コンフィグでRGB値を設定してみてください。
それでもだめならどうしようもないですが・・。

>このゲームってサンプルのところに置きますか?

そうですね〜。
そうはいってもコメント無しでおいただけでは意味不明なコードになってしまうと思うので、
いくらか説明用に改良するかもしれません。


>>そうは問屋の最終兵器さん

プレイして頂きありがとうございます☆

>音ゲー特有の高揚感があって、「音ゲーやってるなー!」って感じがして楽しかったです。

お〜そう言っていただけると光栄です^^

また、情報提供ありがとうございます。
セレロンでも結構きちんと動いてくれるようですね。


>>ixchelさん

むむむ・・。
どういったエラーでしょうか?
エラー番号が表示される、こちらが用意したエラー画面でしょうか?
それとも・・。
Vistaだと管理者権限などの影響で、設定が保存されていないのかもしれません。


>>ナナシアさん

>まずデータのセーブができていません

Vistaをマイドキュメントなどのフォルダ以外に置くと設定によっては
管理者権限などの都合で書き込みが出来ないので、そのような状態になっているのかもしれません。
まず、環境を教えていただけますでしょうか?
もしVistaである場合、マイドキュメントなどのフォルダに置いてプレイしてみてください。


>>Tatuさん

お〜S・・・ってdoubleですか?!
doubleをマウスでフルコンボって・・・^^;
すごすぎますw
できるもんなのですね^^;

>クリアやフルコンボをしなくてもSランクフルコンボを達成した状態になります。

あ、私もその状態一度見ました・・。
セーブデータ関連や、メニューのプログラムは跡形もなくver3.00で変わるので、大丈夫だと思います。
新しいバージョンで新たなバグが出ることはあるかもしれませんが^^;
今の状態が続くことはないと思います。
セーブデータ関連は今は暗号化していないのですが、ver3.00で暗号化するので、
ver2.00からは引き継げません・・すみません;



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

Name: ナナシア  ..ぴよぴよ(412ポイント)   Date: 2009/10/21(水) 03:01   No:40718     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
マイドキュメントのフォルダに入れることで保存できるようになりました
環境ってどういえばいいのかよくわからないですけど
OSはvistaです
インテルcore2DuoプロセッサーT8300
3GBDDR2メモリー
512MBGDDR3グラフィックメモリー
1,3メガピクセル ウェブカメラ
320GB HDD
ですかね…パソコンの左下に書かれててそれっぽいものを書きました

マウスで遊べてとても楽しかったのでカメラでもやりたいのですが
どうしても色のまとがうまくいかないんです
ターゲットの位置が明らかずれるんです
部屋に誤作動を起こすような他の色がない状態でも位置が左にずれます
これもカメラの設定か何かで直せるのでしょうか?
手が空いたときにでも書き込んでくだされば幸いです


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,078,147ポイント)   Date: 2009/10/21(水) 06:53   No:40721     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
>>ナナシアさん

そうでしたか、解決してよかったです。
しかしVistaのこの仕様は問題ですねぇ・・。
環境についての情報提供ありがとうございます。

また、ターゲットの位置がずれる件ですが、
設定したカメラの解像度がそのカメラに対応していないのかもしれません。
たとえば320x240で設定していても、カメラが640x480にしか対応していなければ、
表示している座標と計算している座標が異なることになってしまいます。
しかし、基準となる位置は同じなので、おそらくそのターゲットを画面の一番右にもってくると、一致するのではないかとおもいます。
もしターゲットを一番右に持ってきて、右だと一致する場合は解像度の問題です。
お持ちのカメラがどの解像度に対応しているか、調べ、あった設定にしてみてください。


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

Name: ixchel  ..ぴよぴよ(93ポイント)   Date: 2009/10/21(水) 21:10   No:40766     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
連投すみません

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

Name: ixchel  ..ぴよぴよ(151ポイント)   Date: 2009/10/21(水) 21:13   No:40767     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
あれ・・・?
さっきのレスが消えている・・・
改めて連投すみません

上記のようなエラーです
ちなみにXPを使っています


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,078,467ポイント)   Date: 2009/10/22(木) 00:26   No:40789     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
SS投稿ありがとうございます。
なるほど、こちらが用意したエラーではありませんね。

そしてXPなら問題ないですね・・。
設定はうまく保存されていますか?
もう一度設定を開いてもマウスになっています?

もしそうならすぐには解決策がわかりそうにありません;
少し調べてみますね。


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

Name: Justy  ..伝説なるハッカー(448,776ポイント)   Date: 2009/10/22(木) 00:48   No:40793     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
# ixchelさん、管理人さん
>>メニューでスタートを押すとエラーが出て落ちてしまいます
>もしそうならすぐには解決策がわかりそうにありません

 そのダイアログの「ここをクリックしてください」をクリックすると表示されるウインドウの中に
「エラー報告に関する技術情報: ここをクリックしてください」というところがあります。

 さらにこれをクリックすると「エラー報告の内容」というウインドウがが現れます。
 このウインドウの「このエラー報告には以下のファイルが含まれます」と書かれたパスにある
テキストファイルはアプリが落ちたアドレスやメモリなどの状況が書かれています。

 このファイルを見て、ビルド時の mapファイルなどやデバッガで状況を調べてみてはどうでしょうか?


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,078,529ポイント)   Date: 2009/10/23(金) 21:18   No:40870     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
10/28は長距離出張が入ったので、もう少しver3.00の公開は伸びるかもしれません;

>>Justyさん

なるほど!そういうやり方があるのですね。
情報提供して下さる方はよろしければご協力いただけると幸いです><


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

Name: Justy  ..伝説なるハッカー(449,697ポイント)   Date: 2009/10/23(金) 21:51   No:40871     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    

>なるほど!そういうやり方があるのですね

 負担の少ない方法としてはそういうやり方になるのですが、
本当は Windowsのワトソン博士の設定をしてクラッシュダンプをとってもらうと、
WinDbgとか VisualStudioのデバッガで、落ちたときの
状況を再現できますので、その方が原因は調べやすいかもしれません。


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

Name: Tatu  ..上級者(15,599ポイント)   Date: 2009/10/28(水) 09:15   No:41040     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
HARDの9曲フルコンボ達成しました。

doubleはフルコンボをするだけでも大変ですが、
マウスを素早く動かせば二つ同時にでたときに両方とも
marvelousをとることが可能です。
それが無理でもperfect以上のみであれば満点なので 、
マウスでdoubleをやっても満点がとれないことはなさそうです。

フルコンボをしてもそのデータがランキングに入ってなければ、
曲表示にフルコンボマークがつきません。

10/29追記
HARDのdoubleで6曲でフルコンボを達成。
残り3曲でもSランクが取れました。


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

Name: wing  ..ぴよぴよ(22ポイント)   Date: 2009/10/29(木) 22:08   No:41107     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
ニコ動見ましたけど管理人さんイケメンすぎでしょwww

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

Name: Dixq (管理人) [URL]  ..ウィザード(1,079,314ポイント)   Date: 2009/10/30(金) 23:57   No:41162     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
黙々とAerobeatを作っています。
1日24時間じゃ足らないぃ〜><;

エアロビートver3は着々と出来ています。
大きく進化して再リリース出来るよう頑張ります!

>>Justyさん

ワトソン博士っていうものがあるんですね^^;
なるほど、ありがとうございます。

>>Taruさん

えぇ〜!マウスをダブルで?!しかもハードで、更にオールフルコンボ?!^^;
神過ぎますよ・・w
おめでとうございます!そしてそこまでやって頂いてありがとうございます。
それだけプレイされたら音が一致していない部分とかもよくおわかりになったことでしょう^^;
フルコンボデータについて、仰るとおりでした。
過去に一度でもフルコンボを達成したことがあるかというデータの取り方じゃなければなりませんでしたね。
早速実装しました。ありがとうございます。

>>wingさん

顔隠してるから何もわからないですよ^^;


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

Name: kazuoni [URL]  ..ハッカー(111,498ポイント)   Date: 2009/10/31(土) 01:08   No:41163     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
いまさらですが・・・遊ばさせていただきましたw
内容は言うまでもなく(すばらしい)ですが、
社会人というなかでの制作でここまでやるのがとても素晴らしいなと思います^^
自分はなんだかんだで、「やりたいこと」をなぜか「やらなく」なってしまってますw
大規模な事をやろうとしていたので、根負けもどきです^^;

お仕事・制作お疲れ様です!

そしてレス100踏みます(この掲示板に来て初めてかもしれない・・・)


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

Name: Tatu  ..上級者(16,406ポイント)   Date: 2009/10/31(土) 18:57   No:41195     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
HARD doubleは裏桜華-桜樺-を除いてフルコンボできました。
この曲の途中の二個同時が連続ででてくるところができません。
ネイティブフェイスは操作の正確さが要求されるものの
二個同時は二回しかないので、マウスだと楽な方でした。

>>音が一致していない部分
時々妙にコンボがつながりにくいと思ったらそういうことでしたか。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,079,676ポイント)   Date: 2009/10/31(土) 20:40   No:41200     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
ゲームシステム部はほぼ完成。
今日はデータの暗号化部、ソート表示切り替え部を作りました。
後は譜面データ作りと、イラスト関係、紹介HP作成です。
来週の金曜日までに出来るのかな〜><;

>>kazuoniさん

遊んで頂きありがとうございます〜^^
おっしゃる通り、社会人ゆえ、時間がなかなかとれないんですよね〜(T_T
でもなんとか完成させます〜w

そしてキリバンおめでとうございますw
そもそも3桁行ったことありましたっけ・・?

>>Taruさん

あ〜すみません、前回のがノーマルで、今回のがdoubleだったんですね^^;
ver3の画面に見慣れてしまって以前の画面を忘れていました・・。

・・ってdoubleでフルコンボなんて一体どうやって・・・、と思ってしまいます^^;
作った本人ながら真似が出来ませんw

後、譜面データ作成ツールはまともに作ってないんですよ・・。
ゲームシステム部を作る時間を確保したくて、見えない部分は投げやりな仕様・・。
今度このツール公開したら誰もプレイしてくれなくなりそう^^;

時間を見つけてこの作成ツールのほうも充実させていきたいと思っているんですが、
ビーマニやDDRなら時間軸が上下にはっきりしてるから表示しやすいんですが、
エアロビートの場合いわば軸が3つ・・。
どうやって時間とその譜面を表示したらいいかわからず困ってます;

もし何か良い案などあれば頂けると幸いです〜^^;


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

Name: Tatu  ..上級者(16,668ポイント)   Date: 2009/11/01(日) 10:59   No:41230     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
>>Dixqさん

>>軸が三つ
時間、x座標、y座標で三つでしょうか?

上下は時間にして、
左右は位置と色で8*2列用意するか
位置を8列にして色はキーで切り換えるようにするか
のどちらかにするというのが考えられます。
また、実際のプレイ画面がどうなるか表示するとよいと思います。

あと、名前は入力ミスをしているのかと思ってましたが、
間違って覚えているようですね。
私の名前はTatu(タツ)です。タルではありません。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,082,019ポイント)   Date: 2009/11/05(木) 22:47   No:41488     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
う、危ない過去ログに落ちるところだった><;

すみません、見逃していました;

・・って、お名前間違って覚えていました、重ねてお詫びします><;
タルさんってFF11のやりすg・・(ry

上下が時間というとDDRのような感じですかね?
プレビューでは、譜面が上に上がって行って、固定位置と一致した時がベストタイミングと。

作成ツールを作るだけでも結構時間がかかりそうです^^;
うむむ・・。
今週間に合うかな・・。


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

Name: ひよこ  ..熟練のプログラマー(65,149ポイント)   Date: 2009/11/05(木) 23:06   No:41489     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
ボタン制御かマウス操作か選べるほうがいいと思います。
絵の説明で、録音、音と一緒にキーをたたいて時間を決めます。
この時間は、Marverasになる時間です。
あと、下にある的に色が付いているのは何色か?表示するのかを表しています。表示しない>>半透明です。
こんな感じがいいと思います。


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

Name: Tatu  ..上級者(17,501ポイント)   Date: 2009/11/06(金) 00:50   No:41492     
Title: Re:■カメラを使った新感覚音ゲー「Aerobeat」公開しました■    
>>DDRみたいにですか?

私は添付画像のようなものを想像していました。

画像と想像の説明

左にあるスクロールバー 譜面を動かす。
マウスホイールでも譜面を動かすことはできる。

真ん中の譜面 ここをマウスでクリックすると音符が配置される。
すでに配置された音符はドラッグにより、位置を調整することができる。
また、音符をダブルクリックすることにより、消去が可能。
消去は右ボタンを押したままカーソルを音符の上に置くことでもできる。

譜面の下のほうにある赤くて太い線 ここに音符が重なった時がベストタイミングになる。

譜面の中の細い茶色の線 小節の区切りをあらわす。

Colorの下にある四角 doubleの譜面を作るときに使用する。
この四角をクリックすることで色を変えることができる。

矢印 カーソル。マウスで動かすことができる。
色は今選んでいる色と同じ色になる。

右上の黒い画面 プレビュー画面
実際のゲーム画面ではどのようになるかを表示する。

00:25:25と書かれているところ 赤い太い線がいつ重なるかを表す。

160bpmと書かれているところ 曲のテンポを表示する。

3つの矢印ボタン それぞれ 巻き戻し 再生/停止 早送り を表す。

SETTINGボタン singleかdoubleかの設定、bpmの設定などを行う。

RECORDボタン 譜面配置用のプレイ画面にうつる。
通常より小さめのボックスが表示され、それをたたくことで、
プレイしながら音符の配置をすることができる。

SAVEボタン ファイルに出力する。

LOADボタン ファイルから読み込む。

TESTボタン 曲の最初から最後まで通してテストプレイをする。

ENDボタン 譜面の作成を終了する。


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



Name: やっくん  ..中級者(11,457ポイント)   Date: 2009/11/05(木) 19:49   No:41472       
Title: メモリの効率の良い使い方。    
お久しぶりです。
覚えていられる方が居たら幸いですが、
夏前にRPG作成で困ったとき質問させてもらっていた者です。

夏に入る時にパソコンが壊れてしまい、
ようやく新しいパソコンを購入できたのでまた再開しています。

前にここの方々に色々な本を読むと良いと進められたので、夏はデータ構造とアルゴリズム、C言語の実践的な使い方などが書いてある本を買って大学のパソコンで勉強していました。

そのせいか昔の自分のソースコードを見て、
無駄な部分が多くあるのを知り書き直してる最中です。

ここから質問です。
戦闘で戦う敵のデータを変数に読み込むとします。
画像や数値(ステータス)など。
それを読み込むタイミングはやはり戦う直前に読み込むのがベストでしょうか。
具体的に言うと戦闘を行う関数を呼び出す直前に。
マップ読み込みなども同じように次のマップが現れる直前がベストでしょうか。
そして使い終わったら開放する、と。
それとも確保はゲームの実効時に一括でやってしまうのが良いのでしょうか。


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


Name: Justy  ..伝説なるハッカー(457,307ポイント)   Date: 2009/11/05(木) 22:11   No:41484     
Title: Re:メモリの効率の良い使い方。    

> それを読み込むタイミングはやはり戦う直前に読み込むのがベストでしょうか

 環境とかデータ量に依ります。
 
・ ゲームの仕様
・ データ全体の規模
・ データが置かれている媒体からの読み込み速度
・ 使える総メモリ
・ 通常時、戦闘時の想定しているメモリ配分
・ 一度読み込んだデータをキャッシュとしてとっておくだけのメモリがあるかどうか、
 あるならその仕組みはどうなのか
・ 各データの使用傾向・頻度

などのバランスをとって決めるべきものなので、そのあたりの情報なしには
「どれがベスト」とは言うことは出来ません。

 まぁ、敵の数値くらいは起動時に読み込んでもいいとは思いますが。


 仮に少し古い PCをターゲットにしたゲームを作るとします。
 
 1匹の敵のデータが 1MBだったとして全部で 10体だった場合、
ゲーム起動時に読んでも 10MBですし起動時に諸諸の初期化の中に紛れるので
ロード時間もさほど気にならない&かからないはずです。
 しかし、1000体いた場合、それだけで 1GBものメモリを消費しますし、読み込む時間も
相当なものになるので現実的ではありません。

 マップ読み込み時にそのマップ上で使われる敵だけを読めばだいぶ軽くはなります。
 それが 10体 20体ならそれで全然問題ないでしょう。
 しかしそれがあるマップで 100体 200体いたらメモリの状況次第では厳しく
なってくるかもしれませんし、ロード時間も気になってくることでしょう
(その場合はマップ分割を検討することになりそうですが)。

 戦闘直前に読めば本当に必要なものしか読み込まないので、無駄はなくなります。
 しかし戦闘は相当回数繰り返すものなので 数秒程度の時間といえどもストレスに
なってしまうかもしれません(某RPGで戦闘毎に結構長いこと待たされたものがあったような)。


 と、このように状況によってどこで読むのがベストなのかは変わってくるので、
そのあたりを検討に入れながら決めればいいのではないでしょうか。


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

Name: softya  ..プログラマー(34,079ポイント)   Date: 2009/11/05(木) 22:25   No:41486     
Title: Re:メモリの効率の良い使い方。    
ゲーム機の場合はメモリが足らないので毎回読むのが当たり前ですが、パソコンの場合プレイする人がストレス無くプレイ出来てメモリに収まれば最初に全部読んでも構いません。
ただ、最初に全部読むと待たされる時間が長いのであれば必要に応じて読み込んでいって、メモリが足りる限り捨てる必要は無いと思います。長くプレイすればするほど快適になるって寸法です。
パラメータや小さなデータは最初に全部読み込んでおくのが良いと思います(あるいはプログラムに初期値データとして組み込んでおく)。

ゲーム機のゲームでも、スレッド等で常に読み込んでいてシームレスに戦闘に移れるゲームもありますので、ストレスの無いゲームのデータを読み込んでいるタイミングを調べてみるのも良いかもしれません。PS2あたりならシーク音などで読み込んでいることが分かりますよね。


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

Name: やっくん  ..中級者(11,408ポイント)   Date: 2009/11/05(木) 23:43   No:41490 解決!     
Title: Re:メモリの効率の良い使い方。    
Justyさん、softyaさん
レスポンスありがとうございます。

ゲーム機のロードの話で置き換えるとしっくりきました。
パターン認識をするために大量の画像処理をC言語を用い最近やることがあったため、今回の件も疑問に浮かんだのですが、すっきりしました。
3000枚の28×28ピクセルの白黒画像を読み込み、その値を処理し、他の画像と比較し、出力する。
というような内容なのですが、Justyさん、softyaさんから教わったことを利用すればこっちの方も効率を上げれそうです。


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



Name: min  ..ぴよぴよ(864ポイント)   Date: 2009/11/03(火) 23:34   No:41337       
Title: ウィンドウモードについて    
こんにちは、少々詰まっているので助力お願いします。

ゲームプログラムを組み、ウィンドウモードで起動すると想定通りに起動するのですが、

ChangeWindowMode(TRUE);をはずす、もしくは  FALSE に変更すると、画面が真っ暗になります。

その状態でメインループ内にある ClsDrawScreen(); をコメント化すると真っ暗状態が解消されます。
ただし、画像の軌跡が削除されません。

うまくフルスクリーンで起動する方法はありませんか?
そしてなぜこのような現象になるのでしょうか。


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


Name: Naohiro19  ..ぴよぴよ(637ポイント)   Date: 2009/11/04(水) 08:17   No:41350     
Title: Re:ウィンドウモードについて    
元のソースを示していただけませんでしょうか?

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

Name: min  ..ぴよぴよ(0ポイント)   Date: 2009/11/05(木) 22:28   No:41487     
Title: Re:ウィンドウモードについて    
長くなりますが、以下のようになります。


#include "spgame.h"

//構造体の使用宣言
struct CharData jikidata;
struct CharData jitama[JITAMA_MAX];
struct CharData tekidata[50];
//グローバル変数
int trigger=0;
int gstate=GAME_TITLE;
int gametitlejpg;
int back;
double idouryou[20];

//メイン関数スタート地点
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
ChangeWindowMode(TRUE);//ウィンドウモードで起動
if(DxLib_Init() == -1) return -1;//初期化と裏画面化
SetDrawScreen( DX_SCREEN_BACK ) ;

gametitlejpg=LoadGraph("img/title.jpg");//タイトル背景
back=LoadGraph("img/back.png");//メイン背景

JicharaLoad();
TekiLoad();
BossLoad();

SetFrameRate();

//メインループ
while(ProcessMessage()==0 && CheckHitKey(KEY_INPUT_ESCAPE)==0){
ClearDrawScreen();

switch(gstate){
case GAME_TITLE:
DrawGameTitle();
DairyMessage();
break;
case GAME_MAIN:
DrawGameMain();
break;
case GAME_OVER:
DrawGameOver();
break;
case GAME_CLEAR:
DrawGameClear();
break;
}

ScreenFlip();
}

DxLib_End() ; // DXライブラリ使用の終了処理

return 0 ; // ソフトの終了
}





void DrawGameTitle(){
DrawGraph(0,0,gametitlejpg,FALSE);
ScreenFlip();
DairyMessage();
gstate=GAME_MAIN;
JicharaInit();
TekiInit();
BossInit();
}

void DrawGameMain(){
DrawGraph(0,0,back,FALSE);
JicharaMove();
JitamaMove();
TekiMove();
BossMove();
if(AtariHantei()==1) jikidata.life--; //被弾したらhp-1
if(jikidata.life==0)gstate=GAME_OVER; //hpが0になったら終わり
}

void DrawGameOver(){
gstate=GAME_TITLE;
}

void DrawGameClear(){
}

void SetFrameRate(){ //fps用関数。今後nループ→idouryou[n]で対応
float frametime = 0;
unsigned int s = GetNowCount();
for(int i=0;i<30;i++){
ScreenFlip();
unsigned int e=GetNowCount();
frametime=frametime + e - s;
s=e;
}
frametime=frametime/30;
for(int i=1;i<20;i++){
idouryou[i]=i/16.67*frametime;
}
}




ChangeWindowMode(TRUE);があるとうまくいくのですが、
この一文をコメント文にする(フルスクリーンモードにする)と

case GAME_MAIN: 

に入った段階で真っ暗になってしまいます。


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



Name: 初心者です  ..ぴよぴよ(144ポイント)   Date: 2009/11/05(木) 19:22   No:41470       
Title: エラーがでます    
c:\users\touhou\desktop\ジャンケン\include\じゃんけん\じゃんけん\じゃんけん.cpp(1) : fatal error C1083: include ファイルを開けません。'include/じゃんけん': No such file or directory
 
どういうことでしょうか教えてください お願いします
すいません なんかこんなことで質問して 申し訳ないです


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


Name: やっくん  ..中級者(11,594ポイント)   Date: 2009/11/05(木) 20:14   No:41473     
Title: Re:エラーがでます    
No such file or directory

と出ているのでファイルへのパスが間違っているか、
または指定したファイルが存在しないかのどちらかだと思います。

正しくファイルのパスが設定されているか、
また指定したファイル名がちゃんと合っているor存在しているかを確認してもらえませんか?


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

Name: box  ..ハッカー(145,902ポイント)   Date: 2009/11/05(木) 22:07   No:41483     
Title: Re:エラーがでます    
>'include/じゃんけん': No such file or directory

このエラーメッセージは正確ですか?
じゃんけん.h ではないのですね?

ところで、
ファイル名に2バイト文字を使うのは、あまりよくないと思います。
今回の件の直接的な原因かどうかはわかりませんが…。


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



Name: 三郎  ..ぴよぴよ(214ポイント)   Date: 2009/11/04(水) 17:01   No:41394       
Title: 就職    
質問させて頂きます

私は現在26歳で、情報処理系の専門学校に行っています。来年、卒業です。
今、就職活動中です。学校ではC言語、JAVA、PHP、ハードウェア、ソフトウェア、ネットワーク技術などを勉強しました。資格は何もないです。ただ、来年の1月31日にC言語のサーティファイ認定資格を受けるつもりです。
この専門学校に入学する前は英語の専門学校に通っていました。と言っても、英語が話せるわけでもありません。その前は何もせずにアルバイトなどをしていました。
面接時に不利な点は承知しています。

今、パソコンで、プログラマに関する求人情報を探しています。
「未経験可 プログラマ」などと検索にかけて、探してはいるのですが、なかなか見つかりません。

こんな僕でも、就職できるいいサイトがあったら、教えてください。
また、こんな僕でも就職できるのでしょうか?


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


Name: Dixq (管理人) [URL]  ..ウィザード(1,081,906ポイント)   Date: 2009/11/04(水) 19:15   No:41408     
Title: Re:就職    
「未経験可 プログラマ」じゃなくて「就職活動」とかでぐぐってみてはどうでしょう?

私が就職活動した時は2年先の卒業の時点でした。
一般的な企業に入るには、再来年度になるのではないかと思います。
(まだ来年度用に募集している企業はあるかもしれませんが、かなり道は狭くなってしまうと思います)
早い企業はもうすでに募集が始まっているかもしれませんが、それは2011年卒業の人です。
(中小企業であれば一部随時募集の所もあると思います)

私が利用したサイトは以下のようなサイトです

日経就職ナビ
https://job.nikkei.co.jp/2011/top/?kid=ad_00008

マイナビ
http://job.mynavi.jp/2011/

就活ナビ
http://www.shukatsu.jp/

就職活動の時期はだいたい1月〜5月位じゃないかと思います。
一年就活浪人してもいいのであれば、もうすぐ始まりますので、2011年度募集にトライしてみてはいかがでしょうか?いや、すぐに就職したいということでしたら、就活ナビの2010をみてみてはいかがでしょう。

私の場合は、1月に最初の企業にエントリーを出しました。最後に出したのは5月でしょうか。
5月に出したのはほとんど募集終わってたので、まぁ無理でした。
後、最初に第一志望は避けた方がいいです。
いくつ受けるかはわかりませんが、第四希望位の企業を最初に持ってきて、練習のつもりで挑んだ方がいいかと思います。
経験を積んでから第一志望の面接に挑めばよいかと思います。

最終面接後の合格発表後、企業によっては少し待ってくれます。
この間1〜2週間位でほとんどの面接が終わるように予定を組むとよいかと思います。

資格について話されていますが、就活やってみて、持っている資格はほとんど関係ないと感じました。
よほどすごい資格じゃないと「ふ〜ん」位で終わってしまうと思います。
まぁそれよりもどれ位自分を売り込んでコミュニケーション能力を見せるかだと思います。
持っている資格をアピールするんじゃなくて、持っている資格から話を盛り上げる材料にするものだと思います。
たとえば「Cプログラミング1級持っています。この資格を取るためにはこうこうこういう勉強をして、学生時代こんなことをやって・・。」みたいな感じでしょうか。

それから、面接ってぶっつけ本番はまず無理なので、練習が必要です。
私の場合、友達に面接官になってもらって練習しました。
心の中で言いたいことを思い描けるのと、それを口で伝えられるのは違いますから。

後、プログラマって案外未経験募集している所が多いです。
というかむしろ企業は最初の段階での知識を求めていないところがほとんどだと思います。

グラフで言えば
y = 0.5x + 1
は要らない
y = 2x
が欲しいんだといったところでしょうか。
最初のスキルより、どれだけ吸収して伸びていけるかの方が大事だと思います。

ところで、私も新入社員です。同じくプログラマとして入社しました。まだ入社半年の青二才です。
プログラマとして配属されますが、同期の半分以上はほとんどC言語の経験がないか、大学でちょこっとやった人でした。
バリバリにやってる人は40人中5〜6人だったんじゃないかと思います。
ですので、未経験であるかどうかは問題じゃないと思いますよ。

よい就活が行えることお祈りしています。


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

Name: バグ  ..ハッカー(173,850ポイント)   Date: 2009/11/04(水) 21:21   No:41421     
Title: Re:就職    
大抵の会社は新入社員が即戦力になるなんて考えてません。じっくり育てるつもりで採用する訳ですから、ほとんどの面接官は入社時のスキルよりも、人間性を重んじる人ばかりではないかと思います。

ちなみに、私は高校こそ情報関係の科でしたが、今の会社に拾ってもらうまでは営業職でした(^_^;)


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

Name: sizuma [URL]  ..上級者(17,135ポイント)   Date: 2009/11/04(水) 22:12   No:41424     
Title: Re:就職    
現在就職活動中でリクナビ使ってます。
見やすいんでいいですよ^^

就活は早く始めればそれだけいいですが、今出来るのは、今から始めることですよね。
新卒で活動できるのは、今年度いっぱいです。
地方では有効求人倍率が5割を割って、既卒には非常に厳しい時代だと思います。
今年度中に決める気持ちで就職活動しましょう。
学校に通ってるなら、まずは就職担当の先生に相談すべきだと思います。

また、うちの学校では、資格よりも面接!って言いますし、僕もそのとおりだと思います。
もちろん持っているに越したことはないでしょうけど。
資格持ってないから、、、って自信なしで受けるよりも、自分のいいところをアピールするべきだと思います。
逆にたくさん資格を持ってるから、「俺ってすげーできるんだぜ」ってされると、図に乗ってるな、って感じると思います。

なんにせよ、今できることをがんばるべきですよね。
まだ就職活動始めたばっかりの人の話なんで、あてにはならないかも知れませんが。

がんばってください!


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

Name: たかぎ [URL]  ..ハッカー(115,511ポイント)   Date: 2009/11/04(水) 22:23   No:41426     
Title: Re:就職    
ここで相談するより、今通っている学校の就職担当にでも相談するほうがよいと思います。
今は、SEやプログラマの仕事は本当にありません。10年以上経験を積んだベテランでも仕事がなくて困っている状況ですので、未経験の場合は池に落ちたコンタクトレンズを探すぐらいの覚悟がいります。

仕事がない件については、私も深く関わっている↓のサイトが参考になります。
http://ameblo.jp/orenimo/
これから就職する方には直接当てはまりませんが、知っておいて損はないでしょう。
夢も希望も打ち砕かれるかもしれませんが...


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

Name: array [URL]  ..熟練のプログラマー(60,404ポイント)   Date: 2009/11/04(水) 22:49   No:41428     
Title: Re:就職    
そうですよね。たかぎさんの話は私の会社と同じような状況ですね。
なんか悲しいです。

私も今年、就職しプログラマーになったのですが、仕事がないです。

今は会社も大変で、プログラムもまったく関係ないアルバイト的な
作業をやってます。

そんな状況の会社もあるので、覚悟してこの業界を目差した方が良いですよ。

私は、会社に入って自分の技術力をもっと高めたいという気持ち
があったので、今の状況は少し辛いです。

また、帰宅後に趣味でプログラムを組む日々に戻ってしました。


余談ですが、プログラマーの寿命は短いと言われています。
検索すればこの業界の暗黒面が嫌というほどでてきます。

なので、私も今のうちに下地をしっかり作り、将来の布石を作ろう
とおもっているのですが・・・・今の状況だと難しそうです。


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

Name: たかぎ [URL]  ..ハッカー(115,694ポイント)   Date: 2009/11/04(水) 22:57   No:41429     
Title: Re:就職    
> 私は、会社に入って自分の技術力をもっと高めたいという気持ち
> があったので、今の状況は少し辛いです。

会社はよいときもあれば悪いときもあるので、一時的には辛い思いをしても、長い目で見れば良い経験になります。
大切なのは、不安にかられて辞めないことですね。
解雇されたり、会社が倒産した場合は仕方がありませんが、嫌で辞めた場合はまず良い方向には向かいませんので。

私の場合はというと、もともとマイペースなので、景気がよくても儲からない代わりに、景気が悪くてもそんなに落ち込まないという感じです。
とりあえず今のところは(来週ぐらいになると状況が変わっていたりして)。


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

Name: たいちう  ..プログラマー(36,446ポイント)   Date: 2009/11/05(木) 01:09   No:41431     
Title: Re:就職    
あなたの人間性だけを見て採用してくれるところもあるかもしれません。
ですが、掲示板では把握できないことですので、凡庸な印象しか
与えないものと仮定させてもらいます。
すごく失礼だけど、話が早い方がいいでしょ。


26歳というのは少しネックだと思います。
22歳の大卒と比べて、自分をどのようにアピールできますか?
専門学校であなたが学んだことを、採用担当者にしっかりアピールできるでしょうか?

専門学校に何年行ってたのか分かりませんが、資格を何も持っていないということは、
危機感を抱いたのはつい最近ということでしょう。
私は個人的に、専門学校出身の優秀な人は何人か知っていますが、
使い物にならない人をそれ以上に知っています。
採用担当者も同じように思っているのではないでしょうか。


どのようにアピールしましょうか?

1つ目は、自分が高い技術を持っているというアピールです。
CとかJavaとかPHPとか学んだそうですが、それは仕事に使えるレベルでしょうか?
単位を取るのが精一杯だったのでしょうか?
必要ならば技術に磨きをかけて、魅せるプログラムを用意しておくことです。
募集要項にプログラム提出と書いていなくても、
是非見て下さいと頼めば、見てくれるところは多いでしょう。
凡庸だとしても、何らかのアピールができる内容でなければいけません。


2つ目は、プログラミング以外にもこんなことができます、というアピールです。
プログラマはプログラムを作れて当たり前、
私はその他にこれが得意ですということです。

簿記なんかは手ごろでしょう。日商簿記の3級かできれば2級があれば、
(私になら)そこそこ高く評価されます。
但し、日商簿記2級程度なら、商業高校在学生でもざらにいますので、
アピール1つ目の高い技術を持っていることが前提です。


最後に、
年齢的に26歳がネックと書きましたが、私がプロのプログラマに転職したのは
31歳の時です。転職斡旋を仕事にしている友人に相談したところ、
30歳過ぎたら無理、と一蹴されましたが、上述の2つのアピール意識して
転職することができました。

年齢的には三郎さんはよっぽど有利です。
是非アピールの方法を工夫してください。





> 今は会社も大変で、プログラムもまったく関係ないアルバイト的な
> 作業をやってます。

それはとても気の毒な状況ですが、

> 私は、会社に入って自分の技術力をもっと高めたいという気持ち
> があったので、今の状況は少し辛いです。

これは甘かったと思った方が良いのでは。
よほど運が良くないと、会社で言われた仕事を一生懸命していれば、
自分のスキルもぐんぐん伸びる、とかいうのはないものと思う。

自分の学習にとって最適なプロジェクトに順番に放り込まれるわけではありません。
自分の力を付けるのはプライベートの時間、発揮するのが勤務時間、
この位の覚悟があった方が良いのではないかな。


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

Name: 三郎  ..ぴよぴよ(254ポイント)   Date: 2009/11/05(木) 19:47   No:41471     
Title: Re:就職    
皆様、本当にアドバイス有り難うございました。
とても、嬉しかったです。

来週の月曜日、面接が決まりました。
頑張りたいと思います。


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



Name: ひよこ  ..熟練のプログラマー(64,992ポイント)   Date: 2009/11/05(木) 14:52   No:41460       
Title: 描く処理で    
前から気になっていたのですが、
今作っているリスト化シューティングの弾の絵がなぜか汚く見えるのですが、
龍神録の素材のまま使っているのですが、どこが悪いと思いますか。
描く処理は同じだと思うのですが。


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


Name: ひよこ  ..熟練のプログラマー(65,015ポイント)   Date: 2009/11/05(木) 14:54   No:41462     
Title: Re:描く処理で    
わかりやすく言わせてもらうと、なぜ、ギザギザで表示されているのでしょうか?

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

Name: Dixq (管理人)  ..ウィザード(1,081,961ポイント)   Date: 2009/11/05(木) 15:12   No:41464     
Title: Re:描く処理で    
ニアレストで描画してるんだと思います。バイリニアにしてみて下さい。携帯なので詳しくかけませんがバイリニアについては館の多分59章の一番下に書いていたと思います。

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

Name: ひよこ  ..熟練のプログラマー(65,072ポイント)   Date: 2009/11/05(木) 15:39   No:41467 解決!     
Title: Re:描く処理で    
バイリニア?って聞いて、弾の描くところを見たら線形描画(バイリニア)が入ってました。
いれたら直りました。Dixqさんありがとうございました。


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



Name: クロカ  ..ぴよぴよ(171ポイント)   Date: 2009/11/04(水) 13:29   No:41381       
Title: オイラーの公式を使う解法    
★ 大学生ですが質問させてください! NEW / クロカ 引用
f'(x)=3f(x)+1 これの求め方は

「f(0)=2であれば、f'(0)3×2+1であるから、オイラー法によって、f(Δx)=2+7×Δx と求まっていく。 f(2Δx)は求まった f(Δx)を使えばよい。」

と書いてありますが、
さっぱり意味がわかりません。
それで、解く必要のある問題は

「実際にこのもんだいをオイラー法を用いて解き、f(3)を求めなさい。また、解析解と比較せよ。」

です。
それで、友人がつくった答えが

#include <stdio.h>
#include <math.h>
main()
{
int i, n;
double f,f0,x,dx,sum;
dx=0.0000001;
n=3.0/dx;
f0=2.0;
sum=0.0;
for(i=0;i<n+1;i++){
sum=sum+(7.0*exp(3.0*i*dx))*dx;
}
f=f0+sum;
printf("%f %f\n",f,(-1.0/3.0)+(7.0/3.0)*exp(9.0));

return(0);
}

なんですが、あっているかはともかく
この文自体が理解できません。
この文の意味をだれか教えてくださいませんか? よろしくおねがいします


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


Name: non  ..熟練のプログラマー(65,057ポイント)   Date: 2009/11/04(水) 15:46   No:41389     
Title: Re:オイラーの公式を使う解法    
>なんですが、あっているかはともかく

あっていないと思います。
>sum=sum+(7.0*exp(3.0*i*dx))*dx;
ってことは、微分方程式を解いてますよね。
解いてしまったら、オイラー法の意味がありません。

オイラー法というのは、ある値xのときのf(x)がわかるなら、
f(x+dx)=f(x)+f'(x)*dx で、dxだけ大きくなった時の値がわかるでしょって考え方です。
で、最初の初期値としてf(0)=2がわかっているなら、次々にわかるよねって考え方。


>この文自体が理解できません。

あってないんだから、理解しなくていいんじゃないの?


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

Name: クロカ  ..ぴよぴよ(261ポイント)   Date: 2009/11/04(水) 17:04   No:41395     
Title: Re:オイラーの公式を使う解法    
返信ありがとうございます。
そうですよね指摘されて気付きましたが
既にオイラーを使わずに解いてしまっていいるんですよね。
ただ、最後に比較しているらしいのですが、そこがよく分からなかったもので・・・

ありがとうございました


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

Name: non  ..熟練のプログラマー(65,245ポイント)   Date: 2009/11/04(水) 17:15   No:41396     
Title: Re:オイラーの公式を使う解法    
暇が出来たので、作ってみました。

#include <stdio.h>
#include <math.h>
int main(void)
{
int i, n;
double f,dx;
dx=0.0000001;
n=3.0/dx;
f=2.0;
for(i=0;i<=n;i++){
f=f+(3*f+1)*dx;
}
printf("%f %f\n",f,(-1.0/3.0)+(7.0/3.0)*exp(9.0));
return(0);
}



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

Name: クロカ  ..ぴよぴよ(325ポイント)   Date: 2009/11/05(木) 14:54   No:41461 解決!     
Title: Re:オイラーの公式を使う解法    
わざわざご親切に回答ありがとうございます。
まだあまり理解できていませんが、時間をかけてでも
がんばってモノにできたらとおもいます


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



Name: YS  ..ぴよぴよ(255ポイント)   Date: 2009/11/02(月) 10:13   No:41276       
Title: キーについて    
項目を選択してZを押したらその項目の色が変わるようにしたいのですがどうすればいいのでしょうか。

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


Name: Mist  ..熟練のプログラマー(69,739ポイント)   Date: 2009/11/02(月) 10:28   No:41277     
Title: Re:キーについて    
質問があいまいです。

色を変えるための分岐がわからないのか、色の変え方がわからないのかどちらでしょうか?
あと、全ての回答者が前回のYSさんの質問を見ているわけではないで、より有効な回答がほしいのであれば
開発環境は毎回必ず書きましょう。(違う人だったらごめんなさい)

分岐についてのみ回答します。
やるべきことは前の質問と同じですけど、選択されたかどうかを記憶する変数を作って表示するときに
その変数で分岐させるだけです。


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

Name: YS  ..ぴよぴよ(284ポイント)   Date: 2009/11/02(月) 11:03   No:41279     
Title: Re:キーについて    
すいません。。

環境は XP

言語はc

ライブラリは Dx

色を変えるための分岐がわからないのです。。。


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

Name: Mist  ..熟練のプログラマー(69,739ポイント)   Date: 2009/11/02(月) 11:12   No:41280     
Title: Re:キーについて    
> 色を変えるための分岐がわからないのです。。。

私にはYSさんが何がわからないのか判りません。
先にも書きましたが選択されたことが判れば項目を表示するときに分岐させるだけなんですが。
やるべきとこは前回の質問と9割以上同じなんですが、何がわからないのか具体的にしてもらえませんか?
わからない、わからないでは何も情報がありませんので回答できません。


Name: Mist  ..熟練のプログラマー(69,773ポイント)   Date: 2009/11/02(月) 11:16   No:41281     
Title: Re:キーについて    
前回の質問が未解決で放置されていますが、前回の質問はクリアされましたか?

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

Name: YS  ..ぴよぴよ(294ポイント)   Date: 2009/11/02(月) 11:19   No:41282     
Title: Re:キーについて    
解決をつけるのをわすれてました。。

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

Name: conio [URL]  ..熟練のプログラマー(69,932ポイント)   Date: 2009/11/02(月) 11:41   No:41284     
Title: Re:キーについて    
こんな感じで良いと思うのですが。
単純なif文ですよ。
-----------------------------
if(Zキーが押されていたら){
赤色で表示
}else{
青色で表示
}
-----------------------------

まぁ、Zキーを押すといっても色んな解釈が考えられるので何とも言えないのですが。
-----------------------------------------------------------------------------------------
【1】Zキーが押されている間 色を変える  (Zキーから指を離すと、色は元に戻る)
【2】Zキーを押した後は、色は変わったまま (Zキーから指を離しても、色は変更されたまま)
【3】Zキーを押し続けると、数秒間隔で色が変わったり元の色に戻ったりする。
【4】Zキーを一回押す毎に、色が青⇒赤⇒青という風に変わる。 (一回、Zキーから指を離さないと色は変わらない)
-----------------------------------------------------------------------------------------

>>解決をつけるのをわすれてました。。
本当に解決しましたか?
プログラムはどのようになりましたか?
以前 問題が解決した時点でのプログラムを提示してみてください。

というかプログラムを提示したほうが分かりやすいと思います。
「項目の選択して」の部分から良く分からないと感じる方も居るでしょうし。
(カーソルを合わせてクリックするのか?エンターキーを押すのか?項目とはそもそも何なのか?など)


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

Name: YS  ..かけだし(2,197ポイント)   Date: 2009/11/04(水) 11:05   No:41361     
Title: Re:キーについて    
前の質問のものは違うものに変更しました。

それで過去にあったプログラムを参考に練習をしてるのですが、

項目を矢印で選択し、Zで決定するもので決定した部分の色が変わるというものにしたいのですが。

#include "test.h"
int Key[256];
void SetColor();
void Exit();
void Select();
void Change();
int a[ 6 ] ;
int b[ 6 ] ;
int c[ 6 ] ;
int y ;

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

enum Option{
OPTION_EXIT,
OPTION_SELECT,

};

Option state = OPTION_SELECT;

enum ColorId{
COLOR_RED,
COLOR_BLUE,
COLOR_YELLOW,
COLOR_GREEN,
COLOR_CYAN,
COLOR_BLACK,
COLOR_WHITE,
COLOR_MAX
};

int Color[COLOR_MAX];

typedef struct{
const int R;
const int G;
const int B;
}COLOR;

COLOR ColorList[COLOR_MAX] = {
{ 255, 0, 0},
{ 0, 0, 255},
{ 255, 255, 0},
{ 0, 255, 0},
{ 100, 255, 255},
{ 0, 0, 0},
{ 255, 255, 255}};

typedef struct{
int Pt_X;
int Pt_Y;
char* str;
ColorId c;
const Option next;
}CHOICES;

CHOICES choices[] = { {60 , 60, "・1", COLOR_WHITE, OPTION_SELECT},
{60 , 90, "・2", COLOR_WHITE, OPTION_SELECT},
{60 , 120, "・3", COLOR_WHITE, OPTION_SELECT},
{750 , 560, "EXIT", COLOR_WHITE, OPTION_EXIT}};

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE );
SetGraphMode( 800 , 600 , 32 ) ;

if(DxLib_Init() == -1 )
{
return -1;
}

SetDrawScreen( DX_SCREEN_BACK );
SetColor();
typedef void(*Func)();
Func fc[] = {Exit, Select};
// BMP画像のメモリへの分割読み込み
LoadDivGraph( "ball.bmp" , 6 , 6 , 1 , 100 , 100 , a ) ;
LoadDivGraph( "ball2.bmp" , 6 , 6 , 1 , 100 , 100 , b ) ;
LoadDivGraph( "ball3.bmp" , 6 , 6 , 1 , 100 , 100 , c ) ;

y = 0 ;
while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0 ){
// アニメーションパターンナンバーを変更
y ++ ;
if( y == 6 ) y = 0 ;

// 一定時間待つ(『WaitTimer』使用)
WaitTimer( 100 ) ;

fc[state]();

ScreenFlip();
}
DxLib_End();
return 0;
}
void Exit(void)
{
DxLib_End();
}

void Select(void)
{
static int NowPt = 0;
static const int ChoiceNum = sizeof(choices)/sizeof(choices[0]);
DrawBox( 30, 50, 300, 200, Color[COLOR_WHITE], FALSE );// 四角形を描画(左上x座標,左上y座標,右下x座標,右下y座標)
DrawBox( 720, 50, 410, 400, Color[COLOR_WHITE], FALSE );// 四角形を描画(左上x座標,左上y座標,右下x座標,右下y座標)

DrawString( 45 , 50 - 32 , "WEAPON" , Color[COLOR_WHITE] );
DrawString( 430 , 50 - 32 , "SAMPLE" , Color[COLOR_WHITE] );
if(Key[KEY_INPUT_DOWN] == 1 || (Key[KEY_INPUT_DOWN] > 10 && Key[KEY_INPUT_DOWN] % 10 == 0)){
choices[NowPt].c = COLOR_WHITE;
NowPt = (NowPt + 1) % ChoiceNum;
}else if(Key[KEY_INPUT_UP] == 1 || (Key[KEY_INPUT_UP] > 10 && Key[KEY_INPUT_UP] % 10 == 0)){
choices[NowPt].c = COLOR_WHITE;
NowPt = (NowPt + ChoiceNum - 1) % ChoiceNum;
}

for(int i = 0; i < ChoiceNum; i++){
if(i == NowPt)
choices[i].c = COLOR_WHITE;
DrawString( choices[i].Pt_X , choices[i].Pt_Y , choices[i].str , Color[choices[i].c]);
}
DrawString( choices[NowPt].Pt_X - 20, choices[NowPt].Pt_Y , ">>" , Color[COLOR_BLUE]);
switch(NowPt)
{
// グラフィックの描画(『DrawGraph』使用)
case 0: DrawGraph( 410 , 50 , a[ y ] , FALSE ) ; break;
case 1: DrawGraph( 410 , 50 , b[ y ] , FALSE ) ; break;
case 2: DrawGraph( 410 , 50 , c[ y ] , FALSE ) ; break;
}
for(int i = 0; i < ChoiceNum; i++){
if(Key[KEY_INPUT_Z]==0){
state = choices[NowPt].next;
choices[NowPt].c = COLOR_RED;
DrawString( choices[i].Pt_X , choices[i].Pt_Y , choices[i].str , Color[choices[i].c]);
}
}
}
void SetColor(void)
{
for(int i = 0, count = sizeof(ColorList) / sizeof(ColorList[0]); i < count; i++)
Color[i] = GetColor(ColorList[i].R, ColorList[i].G, ColorList[i].B);
}


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

Name: conio [URL]  ..比類無きプログラマー(71,699ポイント)   Date: 2009/11/04(水) 15:31   No:41388     
Title: Re:キーについて    

「選択した項目の色を変える」だけなら、これで充分でしょう。

--------------------------------------------------------------------------------
#include "DxLib.h"

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

typedef struct{
int x;
int y;
char* str;
}SELECT;

SELECT Select[] = { {100,100,"Menu 1"},
{100,120,"Menu 2"},
{100,140,"Menu 3"}};

void DrawSelect(void){
int white = GetColor( 255, 255, 255);
int Red = GetColor( 255, 0, 0);
static int count = sizeof(Select) / sizeof(Select[0]);
static int NowPt = 0;

if(Key[KEY_INPUT_UP] == 1){
NowPt = (NowPt + count - 1) % count;
}else if(Key[KEY_INPUT_DOWN] == 1){
NowPt = (NowPt + 1) % count;
}

for(int i = 0; i < count; i++){
if(Key[KEY_INPUT_Z] != 0 && i == NowPt ){
DrawString( Select[i].x, Select[i].y, Select[i].str, Red);
}else{
DrawString( Select[i].x, Select[i].y, Select[i].str, white);
}
}
DrawString( Select[NowPt].x - 40, Select[NowPt].y, "⇒", white);
}


int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE );

if(DxLib_Init() == -1 ) return -1;
SetDrawScreen( DX_SCREEN_BACK );

while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0 ){
DrawSelect();
ScreenFlip();
}
DxLib_End();
return 0;
}
--------------------------------------------------------------------------------

あと、YSさんが提示したプログラムで上手くいかない原因は、
Zキーを押した時点でstateの値が変更され、Select関数が呼ばれない(選択肢を表示する処理が行われない)
からです。



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

Name: YS  ..かけだし(2,277ポイント)   Date: 2009/11/05(木) 11:04   No:41448     
Title: Re:キーについて    
Zを押したときに色が変わりますが、はなすと元に戻ってしまいます。

Zを押したら赤なら赤になり、次の選択してZを押すまで最初に選択した

部分がそのままになるようにしたいのですが。。。

いまいち言ってることがわかりにくくてすいません。。


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

Name: Mist  ..比類無きプログラマー(70,300ポイント)   Date: 2009/11/05(木) 11:18   No:41450     
Title: Re:キーについて    
conioさんが提示してくれたプログラムでどうやって色を変えているかは理解されましたか?
理解できていれば離した後も元の戻らないようにするのは難しくありません。
自分の思い通りに動く完璧な答えを待ているだけでは成長しませんよ。
ヒントはNo:41277にあります。


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

Name: YS  ..かけだし(2,312ポイント)   Date: 2009/11/05(木) 12:09   No:41452     
Title: Re:キーについて    
完璧なものはもとめてはいません。。

記憶させるためのフラグの変数はint型でいいのですか?


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

Name: Mist  ..比類無きプログラマー(70,576ポイント)   Date: 2009/11/05(木) 12:56   No:41458     
Title: Re:キーについて    
変数型にはchar,short,long,int,float,double,boolというようにたくさんありますが、とりうる値の範囲や用途は異なります。
こういうのはネットで調べればすぐ出てきますので、今回の場合にどればふさわしいかは自分で考えてみてトライしてみてください。
趣味でやっているプログラムなんだから、挑戦→失敗→原因を考える→調べる→再挑戦を積極的に行ってほしいです。
何が正しいのかを答えることは簡単ですが、それがどうして正しいのかをYSさんが理解せずに言われたままに作っているだけでは、次に新しいことをしようとしても誰かに答えを聞かないと何もできなくなってしまいますよ。



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

Name: conio  ..比類無きプログラマー(73,468ポイント)   Date: 2009/11/05(木) 14:32   No:41459     
Title: Re:キーについて    
>>Zを押したときに色が変わりますが、はなすと元に戻ってしまいます。
>>Zを押したら赤なら赤になり、次の選択してZを押すまで最初に選択した
>>部分がそのままになるようにしたいのですが。。。
初めからそう述べて欲しいです。
自分は「Zキーを押したら色が変わる」という条件しか聞いていません。

それと、「一度押したらずっと色が変わり続ける」というやり方は以前のトピックで説明しました。
http://www.play21.jp/board/formz.cgi?action=res&resno=40959&page=30&lognum=&id=dixq&rln=41283

で、更に今回は排他的なので、
-----------------------------------------------------------------------------------
・何番目の項目が選択されたのかのフラグを作っておく
・ループで項目を表示する際に、添え字の変数i と フラグの値が一致すれば赤色で表示
-----------------------------------------------------------------------------------
こんな感じでいいと思います。


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



Name: 初心者  ..プログラマー(37,861ポイント)   Date: 2009/11/05(木) 03:51   No:41434       
Title: 無題    
DXライブラリで音楽をフェードアウトさせる方法が分からないのですが
どうしたらいいかご存じの方がいましたら教えてください。


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


Name: Dixq (管理人) [URL]  ..ウィザード(1,081,914ポイント)   Date: 2009/11/05(木) 08:07   No:41435     
Title: Re:無題    
私なら


typedef struct{
int Flag;
float Vol;
}Fadeout_t;
Fadeout_t Fadeout;

このような構造体を用意して、フェードアウトさせたい瞬間フラグを立て、徐々に減らしていきます。
フラグを立てる瞬間は

Fadeout.Flag = 1;
Fadeout.Vol = 255;

こう。で、計算部分では

if( Fadeout.Flag==1 ){
Fadeout.Vol -= ○○;
○○に音量を変更;
if(Fadeout.Vol<0){
Fadeout.Flag=0;
}
}

このように、○○分減らしながらその音量に設定し、0を下回るとフラグを戻すといった感じです。
特にこれといった決まった方法があるわけではないと思いますが、私はこうやってます。


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

Name: 初心者  ..プログラマー(37,920ポイント)   Date: 2009/11/05(木) 09:23   No:41440     
Title: Re:無題    
返答ありがとうございます。ただ、
龍神録で"音量"に当たる部分の関数が見当たらないのですが(SEでないほう)
どういった関数を使えばいいのでしょうか?


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

Name: Dixq (管理人)  ..ウィザード(1,081,878ポイント)   Date: 2009/11/05(木) 12:37   No:41457     
Title: Re:無題    
龍神録では、特に作っていません。
なので、適当に関数を作ればよいかと思いますよ。

void SetMusicVol(){
}

とでもかいて、メイン計算部から呼べばいいと思います。
この関数の中ですべき処理については前述の通りです。


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



Name: ひよこ  ..熟練のプログラマー(64,677ポイント)   Date: 2009/11/05(木) 08:30   No:41436       
Title: 敵データの読み込みについて    
敵データを読み込もうとしたら、一回目は成功なんですが、2回目のデータが違くなってしまます。
おそらく2回目のアドレス関係でだめだと思うのですが、どこが悪いのでしょうか?

void load_enemy_data(){
int num,i,fp;
char fname[32]={"../dat/csv/story.csv"};
int input[64];
char inputc[64];

// 実態を作る。
enter_enemy_t *new_enter_enemy;
enter_enemy_t *now_enter_enemy;

fp = FileRead_open(fname);//ファイル読み込み
if(fp == NULL){
printfDx("read error\n");
return;
}
for(i=0;i<2;i++)//最初の2行読み飛ばす
while(FileRead_getc(fp)!='\n');

num=0;

new_enter_enemy = new enter_enemy_t;
new_enter_enemy->next=NULL;

// 最初の処理なら。
if( head_enter_enemy==NULL ) {
// 最初の敵データ
head_enter_enemy = new_enter_enemy;
}
else
{
// リストの最後を探す。
now_enter_enemy = head_enter_enemy;
while( now_enter_enemy->next!=NULL ) {
now_enter_enemy = now_enter_enemy->next;
}
// リストの最後に接続する。
now_enter_enemy->next = new_enter_enemy;
//now_enter_enemy=NULL;
}
while(1){
for(i=0;i<64;i++){
inputc[i]=input[i]=FileRead_getc(fp);//1文字取得する
if(inputc[i]=='/'){//スラッシュがあれば
while(FileRead_getc(fp)!='\n');//改行までループ
i=-1;//カウンタを最初に戻して
continue;
}
if(input[i]==',' || input[i]=='\n'){//カンマか改行なら
inputc[i]='\0';//そこまでを文字列とし
break;
}
if(input[i]==EOF){//ファイルの終わりなら
goto EXFILE;//終了
}
}
switch(num){
case 0: new_enter_enemy->count =atoi(inputc);break;
case 1: new_enter_enemy->pattern =atoi(inputc);break;
case 2: new_enter_enemy->knd =atoi(inputc);break;
case 3: new_enter_enemy->x =atof(inputc);break;
case 4: new_enter_enemy->y =atof(inputc);break;
case 5: new_enter_enemy->spd =atof(inputc);break;
case 6: new_enter_enemy->wait =atoi(inputc);break;
}
num++;
if(num==7){
num=0;
//new_enter_enemy =NULL;
new_enter_enemy = new enter_enemy_t;
new_enter_enemy->next=NULL;
// 最初の処理なら。
if( head_enter_enemy==NULL ) {
// 最初の敵データ
head_enter_enemy = new_enter_enemy;
}
else
{
// リストの最後を探す。
now_enter_enemy = head_enter_enemy;
while( now_enter_enemy->next!=NULL ) {
now_enter_enemy = now_enter_enemy->next;
}
// リストの最後に接続する。
now_enter_enemy->next = new_enter_enemy;
//now_enter_enemy=NULL;
}
}
}
EXFILE:
FileRead_close(fp);
}


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


Name: non  ..熟練のプログラマー(65,778ポイント)   Date: 2009/11/05(木) 09:22   No:41439     
Title: Re:敵データの読み込みについて    
>敵データを読み込もうとしたら、一回目は成功なんですが、2回目のデータが違くなってしまます。
どういう意味でしょうか?
1個目のデータはリストに追加されるが、2個目からのデータは繋がらないということですか?
仮にそのとき、どうやってデータを確認しましたか?
それとも、load_enemy_dataを2回呼び出したときという意味でしょうか?


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

Name: ひよこ  ..熟練のプログラマー(64,723ポイント)   Date: 2009/11/05(木) 09:45   No:41442     
Title: Re:敵データの読み込みについて    
呼び出したときに、csvの1行目のところはうまくいっているのですが、2行目がうまく代入できません。

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

Name: non  ..熟練のプログラマー(65,880ポイント)   Date: 2009/11/05(木) 10:02   No:41443     
Title: Re:敵データの読み込みについて    
リストのつなげ方のみ見れば、間違いは見あたりませんでした。
ただ、whileの前で1個のノードを作成するわけですが、load_enemy_dataを1度しか呼び出さない
のなら、「最初の処理なら」の部分だけでいいはず。また、whileでデータを格納後に2個目以降の
ノードを作成しているけど、これだと、必ず最後に空のノードができることになると思うけど
それでいいのでしょうか?



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

Name: ひよこ  ..熟練のプログラマー(64,725ポイント)   Date: 2009/11/05(木) 10:05   No:41444     
Title: Re:敵データの読み込みについて    
連結リストなんで、つないでNULLを探します。

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

Name: non  ..熟練のプログラマー(65,954ポイント)   Date: 2009/11/05(木) 10:37   No:41445     
Title: Re:敵データの読み込みについて    
>連結リストなんで、つないでNULLを探します。
そんなことは、尋ねていません。
とにかく、添付されたプログラムには無駄があるけど、間違っていないと言ってます。
間違いは、添付された部分以外にあります。



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

Name: ひよこ  ..熟練のプログラマー(64,752ポイント)   Date: 2009/11/05(木) 11:00   No:41447     
Title: Re:敵データの読み込みについて    
必ず最後に空のノードができる
>>先がないもの(nextにNULL)ができるってことじゃないのですか?
必ず最後に空のノードができることになると思うけど
>>これが3つめのデータですか?

無駄があったんですか・・・・
間違いはあると思ったのです。
csvが下のようになっているのですが、
/カウンタ,移動パターン,敵の種類,x座標,y座標,スピード,待機時間
/cnt,pattern,knd,x,y,spd,wait
60,0,0,200,-20,0,800,
60,0,0,200,-20,0,80,
実際のデータ 2つしか読んでないのに3つあります。
head_enter_enemy = 0x022c13b8 {
x = 200.00000000000000、y = -20.000000000000000、next = 0x022f1430、}
head_enter_enemy=>next {x=0.00000000000000000 y=200.00000000000000 next 0x022f14a8}
(head_enter_enemy)->next {x = -6.2774385622041925e+066 y = -6.2774385622041925e+066 next = 0x00000000}


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

Name: non  ..熟練のプログラマー(66,244ポイント)   Date: 2009/11/05(木) 11:17   No:41449     
Title: Re:敵データの読み込みについて    
> 必ず最後に空のノードができる
> >>先がないもの(nextにNULL)ができるってことじゃないのですか?

未使用の(データを格納していない)ノードです。
もちろん中身はゴミですから。nextだけはNULLが格納されていますけど。


> 必ず最後に空のノードができることになると思うけど
> >>これが3つめのデータですか?

恐らくそうでしょう。


>
> 無駄があったんですか・・・・
> 間違いはあると思ったのです。
> csvが下のようになっているのですが、
> /カウンタ,移動パターン,敵の種類,x座標,y座標,スピード,待機時間
> /cnt,pattern,knd,x,y,spd,wait
> 60,0,0,200,-20,0,800,
> 60,0,0,200,-20,0,80,
> 実際のデータ 2つしか読んでないのに3つあります。
> head_enter_enemy = 0x022c13b8 {
> x = 200.00000000000000、y = -20.000000000000000、next = 0x022f1430、}
> head_enter_enemy=>next {x=0.00000000000000000 y=200.00000000000000 next 0x022f14a8}
> (head_enter_enemy)->next {x = -6.2774385622041925e+066 y = -6.2774385622041925e+066 next = 0x00000000}

2つめのデータ x=0.00000000000000000 y=200.00000000000000 と一つずつずれているのが気になります。
ああ。。。csvデータの最後の,が原因か。




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

Name: ひよこ  ..熟練のプログラマー(64,802ポイント)   Date: 2009/11/05(木) 11:26   No:41451     
Title: Re:敵データの読み込みについて    
enter_enemy_t *nextだからNULL(中身の入っていないデータ)ができるのですか。
やっぱり連結リストだからですよね?
csvデータの最後の,が原因か。
>>なぜですか?


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

Name: サイト愛用者  ..ぴよぴよ(294ポイント)   Date: 2009/11/05(木) 12:14   No:41453     
Title: Re:敵データの読み込みについて    
while分の中のif( head_enter_enemy==NULL )はアルゴリズム上有り得ないので不要です。
従って対応するelseの記述も削除します。

更にnonさんの仰るように次のレコードの有無に関わらずノードを作成しているので最後のノードは必ずゴミの入ったノードになります。よってこのことを前提に処理を行う必要があります。
あるいはswitchのcase0の部分で新規ノードを作成するなど未然に解決します。
いずれにしてもメモリをアロケートしたときには全メンバを安全な値で初期化するべきです。

>>なぜですか?
行末の「,」までで1レコード分読み込みが終了しますが、ロジック上その直後にある「\n」によって次のレコードの先頭(countメンバ)に値が0のデータが挿入されるからです。

このようなデータに対応出来るようする為には、改行によってレコード分けされていることから
「,」=「項目の区切り」、「\n」=「レコードの区切り」と異なる意味を持つことを自覚します。
例えば改行コードを認識したらnext_recレコードフラグをセットしてif(num==7)の条件式をif(next_rec)などとし、そのifブロック内部でnext_recフラグをクリアするようにします。

余談ですが、new_enter_enemyとnow_enter_enemyという変数名は非常に紛らわしく不安定要素に感じました。


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

Name: ひよこ  ..熟練のプログラマー(64,900ポイント)   Date: 2009/11/05(木) 12:35   No:41456 解決!     
Title: Re:敵データの読み込みについて    
サイト愛用者さんいろいろ提案ありがとうございます。
おっしゃる通りにしたら無駄なものがなくなりました。
次のレコードの先頭(countメンバ)に\0がはいってしまったってことですね。
わかりました。nonさん、サイト愛用者さんありがとうございました。


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



Name: high_lows  ..ぴよぴよ(115ポイント)   Date: 2009/11/05(木) 08:59   No:41438       
Title: RPGサンプル    
サンプルプログラミングの館にある、RPGのサンプルについて質問です。
キャラクターの素材の、バックが白なのですが、
プログラムを実行して描画されているのを見ると、
周りの白が消えて、キャラクターの部分だけがきれいに表示されています。
別のもので、バックが緑っぽい色でも通用しているのを見たこともあります。
黒じゃなくてもいけるのは、どういうわけでしょうか。


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


Name: Mist  ..比類無きプログラマー(70,197ポイント)   Date: 2009/11/05(木) 09:40   No:41441     
Title: Re:RPGサンプル    
DXライブラリのリファレンスを読みましょう。
透過色はSetTransColorという関数で変更できます。
透過色はデフォルトで黒ですが、画像で黒を使用したい場合には違う色に変更します。


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

Name: Dixq (管理人)  ..ウィザード(1,081,825ポイント)   Date: 2009/11/05(木) 12:26   No:41454     
Title: Re:RPGサンプル    
補足をすると、あの画像はPNGの透化を使ってたと思います。
ペイントでは無理ですが、ある程度機能のある画像編集ソフトで開けばその意味がわかると思います。
PNGは色情報の他に、どれくらい透明かという情報も持たせられるのです。


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



Name: 荒丸  ..かけだし(2,246ポイント)   Date: 2009/11/04(水) 12:01   No:41369       
Title: 管理人さんのお名前の呼び方    
あの・・ずっと前から気になっていたことがあるのですが
また、C言語とまったく関係ないことなんですが、
Dixq さんの呼び方ってなんていうのでしょうか?
ディーアイエクスキューさんでよろしいのでしょうか?


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


Name: たかぎ [URL]  ..ハッカー(114,790ポイント)   Date: 2009/11/04(水) 12:03   No:41371     
Title: Re:管理人さんのお名前の呼び方    
キューちゃんらしいです。


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

Name: 荒丸  ..かけだし(2,251ポイント)   Date: 2009/11/04(水) 12:05   No:41372     
Title: Re:管理人さんのお名前の呼び方    
え?それ本当ですか?

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

Name: たかぎ [URL]  ..ハッカー(114,970ポイント)   Date: 2009/11/04(水) 12:21   No:41374     
Title: Re:管理人さんのお名前の呼び方    
> え?それ本当ですか?

本当です。通称「キューちゃん」です。
http://dixq.net/profile.html


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

Name: kazuoni [URL]  ..ハッカー(111,680ポイント)   Date: 2009/11/04(水) 16:56   No:41392     
Title: Re:基底クラスで子クラス参照    
読み方は「ディクスキュー」だったたような^^;
でもキューちゃんと呼んでいるのは
ほとんどいないですよねww
(ちょっと前にバグさんが呼んでたような曖昧な記憶が。。)
(いろいろ違っていたらすみません。)


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,080,714ポイント)   Date: 2009/11/04(水) 18:46   No:41403     
Title: Re:基底クラスで子クラス参照    
た、・・たかぎさんからキューちゃんというお言葉が聞けるとは思っていませんでした^^;

私のハンドルネームはDixqで読み方はディクスキュー、読みにくいので通称キューです。
で、キューさんと呼んでくれる人と、キューちゃんと呼んでくれる人がいます。

まぁ掲示板とかでキューちゃんと言う人はほとんどいませんが、メッセンジャーやmixiなどではよく言われます^^;


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

Name: たかぎ [URL]  ..ハッカー(115,335ポイント)   Date: 2009/11/04(水) 20:48   No:41418     
Title: Re:基底クラスで子クラス参照    
この掲示板では、「ディクスキューさん」とか「Dixqさん」と読んでいる人もほとんどいませんね。
むしろ、「キューちゃん」のほうが多く見ます。


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

Name: 荒丸  ..かけだし(2,291ポイント)   Date: 2009/11/05(木) 01:15   No:41432 解決!     
Title: Re:基底クラスで子クラス参照    
キューちゃんというのですか^^
分かりました。皆さま返答ありがとうございました。


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



Name: sisi  ..ぴよぴよ(433ポイント)   Date: 2009/11/02(月) 05:01   No:41270       
Title: ゼルダのようなアクションゲームについて    
ものすごい基本的なことかもしれないのですが
ゼルダのようなゲームで一画面内を主人公キャラを八方向に移動できるようにし
Zを押すと火の玉を飛ばせるようにしその火の玉を当てて画面内のランダムで動き回っている敵を倒す
といったゲームを作成しようとしているのですが
現在出来た範囲は八方向移動ができてZを押すと玉を飛ばせるようになったのですが今回質問したいのは
Zを押して出だしは出したい方向に出せるのですがその後歩く方向を変えるとその方向に途中で玉が曲がってしまいます。

右を向いている時にZを押して出した玉をその後左に向いても方向が変わらず
そのまま右に飛んでいく玉にするにはどう記述すればいいのでしょうか?


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


Name: ちゃお  ..かけだし(2,119ポイント)   Date: 2009/11/02(月) 07:58   No:41272     
Title: Re:ゼルダのようなアクションゲームについて    
バグですね。
1フレームごとに弾移動のコードが処理されていると思いますが、主人公キャラーが移動し後の位置情報が、なぜか弾移動の処理で反映されているのだと思います。

まずは、弾の移動を処理する部分のプログラムを見直したほうが良いのではないでしょうか?
考えてみてください。


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

Name: conio [URL]  ..熟練のプログラマー(69,476ポイント)   Date: 2009/11/02(月) 09:18   No:41274     
Title: Re:ゼルダのようなアクションゲームについて    

恐らく、こんな感じになっているのではないのでしょうか?
-------------------------------------------
switch(主人公の向き){
case DIRECT_RIGHT: x++;break;
case DIRECT_LEFT: x--;break;
case DIRECT_UP: y--;break;
case DIRECT_DOWN: y++;break;
default:break;
}
-------------------------------------------

現在の主人公の向きで判断しているので、主人公の向きが変わった時に弾の方向も変わります。

なので弾の方に「発射した瞬間の主人公の向き」を何らかの変数に入れておき
その変数の値で、どの方向に飛ぶかを判断させれば良いのではないでしょうか。


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

Name: sisi  ..ぴよぴよ(465ポイント)   Date: 2009/11/04(水) 21:50   No:41422 解決!     
Title: Re:ゼルダのようなアクションゲームについて    
おかげでちゃんと動きました!どうもありがとうございました


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



Name: イネ  ..ぴよぴよ(51ポイント)   Date: 2009/11/04(水) 11:10   No:41364       
Title: 変換方法について    
CString型からstd::string型に変換するにはどうしたらよいでしょうか?
調べてみたところ、LPCTSTRにキャストする方法がありましたが、試してみたところ、vs2008ではコンパイルが通りませんでした。
よろしくお願い致します。

CString cStr;
std::string str((LPCTSTR)str);


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


Name: イネ  ..ぴよぴよ(5ポイント)   Date: 2009/11/04(水) 11:12   No:41365     
Title: Re:変換方法について    
すみません、プログラム2行目の変数名を間違えていました。
こちらが正しいです。

CString cStr;
std::string str((LPCTSTR)cStr); // CStringからstd::stringへ変換


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

Name: バグ  ..ハッカー(173,766ポイント)   Date: 2009/11/04(水) 11:23   No:41366     
Title: Re:変換方法について    
CStringとは、MFCのCStringクラスでしょうか?
もしそうであれば、GetBufferというメンバ関数を利用すればいいですよ。


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

Name: たかぎ [URL]  ..ハッカー(114,770ポイント)   Date: 2009/11/04(水) 12:02   No:41370     
Title: Re:変換方法について    
CStringがMFCのものだとすると、Unicode版でコンパイルしていませんか?
Unicodeの場合、LPCTSTRはconst wchar_t*になるので、単純にはいきません。
もし、ASCIIの範囲しか使ってないのであれば...

CString cStr;
std::string str((LPCTSTR)str, (LPCTSTR)str + str.Length());

とでもすればどうにかなると思います。


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

Name: softya  ..プログラマー(33,671ポイント)   Date: 2009/11/04(水) 12:32   No:41376     
Title: Re:変換方法について    
マルチバイト専用のCStringならCStringAがありますが代用可能でしょうか?
つまり、今CStringのところをCStringAに置き換えるって事ですが。この場合は、TEXT("")とか_T("")とか書いている部分を全部はずす必要が出てくるので面倒ですが、CStringとCStringAを使い分けできるのが便利です。
ただ、コンパイラの文字セットをマルチバイト文字に切り替えるほうがはるかに簡単ですけどね。


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

Name: イネ  ..ぴよぴよ(213ポイント)   Date: 2009/11/04(水) 20:57   No:41419 解決!     
Title: Re:変換方法について    
バグさん
>MFCのCStringクラスです。
たかぎさん、softyaさん
>Unicode版でコンパイルしていました。(VisualStudioのオプションをデフォルトのまま使用してましたので)
>おっしゃるとおり、_T();マクロをプログラム内で多用してましたので、文字セットを変えることで対応しました。


結果的には
文字セットをマルチバイト文字に切り替え、
CString cStr = "";
std::string str(cStr.GetBuffer());

で解決しました。
お答えくださった皆様、ありがとうございました。
文字コードの辺り、まだまだ理解が足りないなと痛感しました。


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



Name: トゥル太郎  ..ぴよぴよ(760ポイント)   Date: 2009/11/04(水) 17:22   No:41397       
Title: 音楽を停止した位置から再生するには・・・?    
お世話になっております。
現在、東方っぽいゲームを制作しております。
一時停止で困ったことがおこってしまいました。

一時停止すると音楽を停止し、一時停止解除時に、停止した位置から再生したいと思っています。
今行っている方法は
一時停止すると、
流れている音楽をStopSoundMem(area.bgm.handle);を行って停止します。
一時停止を解除すると
PlaySoundMem(area.bgm.handle,DX_PLAYTYPE_LOOP);を行って、
音楽を再生してみたのですが、最初から再生されてしまいました。

一時停止を解除すると、音楽が停止した位置から、再生されるという風にするにはどうすればいいのでしょうか。

DXライブラリのリファレンスを見ましたが、途中位置を取得するという関数が無かったので
ヘッダファイルを覗いてみると、それらしきものがありましたが、これらを使用するのでしょうか。

extern int SetSoundCurrentPosition( int Byte, int SoundHandle ) ;
// サウンドハンドルの再生位置をバイト単位で変更する(再生が止まっている時のみ有効)

extern int GetSoundCurrentPosition( int SoundHandle ) ;
// サウンドハンドルの再生位置をバイト単位で取得する

extern int SetSoundCurrentTime( int Time, int SoundHandle ) ;
// サウンドハンドルの再生位置をミリ秒単位で設定する(圧縮形式の場合は正しく設定されない場合がある)

extern int GetSoundCurrentTime( int SoundHandle ) ;
// サウンドハンドルの再生位置をミリ秒単位で取得する(圧縮形式の場合は正しい値が返ってこない場合がある)


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


Name: Dixq (管理人) [URL]  ..ウィザード(1,080,769ポイント)   Date: 2009/11/04(水) 18:49   No:41404     
Title: Re:音楽を停止した位置から再生するには・・・?    
仰る通りです。
私の知る限りDXライブラリには一時停止なる機能が無いので、必要ならば仰る関数で自作するしかないと思います。
おわかりになるとはおもいますが、停止する時に今の再生位置を記憶し、
再開するときはそこにあわせて再生すればいいわけですね。


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

Name: チルチル  ..比類無きプログラマー(73,696ポイント)   Date: 2009/11/04(水) 18:57   No:41405     
Title: Re:音楽を停止した位置から再生するには・・・?    
ん?勘違いだったらすみませんが

PlaySoundMem( BGM , DX_PLAYTYPE_LOOP , FALSE );

で止めた所から再生できると思うのですが・・


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

Name: トゥル太郎  ..ぴよぴよ(830ポイント)   Date: 2009/11/04(水) 19:07   No:41407 解決!     
Title: Re:音楽を停止した位置から再生するには・・・?    
Dixq様、チルチル様
お二人とも早速のご意見ありがとうございます。
チルチル様のPlaySoundMemを使用すると途中から再生することができました。
本当にありがとうございます。
完成しましたら、この掲示板で公開させて頂きたいと思います。


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

Name: Dixq (管理人) [URL]  ..ウィザード(1,081,937ポイント)   Date: 2009/11/04(水) 19:22   No:41410     
Title: Re:音楽を停止した位置から再生するには・・・?    
な・・に・・!

そんなところに隠れたフラグが。
どうもすみませんでした(_ _|||)

今までずっと自作してましたorz


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

Name: トゥル太郎  ..ぴよぴよ(863ポイント)   Date: 2009/11/04(水) 19:46   No:41414 解決!     
Title: Re:音楽を停止した位置から再生するには・・・?    
おぉ…自作とは恐れ入ります。
非公開関数を扱える技術が自分もほしいところです。


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



Name: 電気屋  ..かけだし(1,302ポイント)   Date: 2009/11/04(水) 15:15   No:41386       
Title: 会話シーン    
いつもお世話になっている電気屋です。
前回、ポインタを使った文字の表示(配列を使った文字の表示を使いました。)を教えてもらい。プログラムに組み込んでみたのですが、少し、困ったことになりました。それは最初の文字表示はよいのですが、ClearDrawScreen()の処理をするとキャラクタやマップまで消えてしまいました。どうしたらよいですか?
書き下手ですいません。
要点をまとめると

・RPGみたいなプログラムで、一定の場所に行くと会話(文字の表示)をする。
・会話の時、背景に今の状態(マップ、キャラクタの位置などをそのまま)を描画しておく。
・ClearDrawScreen()をしても、背景は変わらない。
・会話(文字の表示)が終わり次第、いつもの状態に戻る。


みたいな感じです。

プログラムは、もう一度見直してみてだめだった場合『会話シーン2』としてもう一度質問させてもらいます。


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


Name: ひよこ  ..熟練のプログラマー(63,673ポイント)   Date: 2009/11/04(水) 15:26   No:41387     
Title: Re:会話シーン    
キャラクタやマップまで消えてしまいました.
キャラクタやマップを描く処理をしましょう。ClearDrawScreen()は画面の絵をすべて消します。
会話(文字の表示)が終わり次第、いつもの状態に戻る。
switch文はどうですか?
普通:
会話時:
みたいな。


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

Name: kazuoni [URL]  ..ハッカー(111,591ポイント)   Date: 2009/11/04(水) 16:51   No:41391     
Title: Re:基底クラスで子クラス参照    
>キャラクタやマップまで消えてしまいました。どうしたらよいですか?

現在どのような環境で、(DXライブラリ?)
どのように描写を管理しているのかが不明なので、
何とも言えないです。。^^;
コードをUPするなりすれば、
より良い解答が得られるかと思いますよ。


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



Name: cdj  ..ぴよぴよ(16ポイント)   Date: 2009/10/30(金) 00:04   No:41109       
Title: マウスのクリック    
すいません。わからないことがあるので質問します。
マウスをクリックしたときに敵とマウスカーソルが合ってると敵が消えて、スコアが上がるようにしたいのですが、実際コンパイルしてみると、クリックしたときに敵が消えるのまでは良いのですが、スコアの上がり方がおかしいんです。(ずっとスコアが上がったりとか)
それで、今現在マウスをクリックしてる間はずっとクリックしたことになってるのですが、それを一回クリックしたら、クリックし続けてる間でも反応?しないようにしたいんです。
なんかうまく書けないのですが、、つまり連射?をしないようにしたいのですがよくわかりません。
どうすれば良いですか?
できるだけ簡単なやり方で教えてもらえればうれしいです。

↓関数内

{

if( (GetMouseInput() & MOUSE_INPUT_LEFT)!=0)
{

mouse->q_flag = true;
for(int i = 0;i < ENEMY_MAX;i++)
if((enemy[i].x - mouse->x) * (enemy[i].x - mouse->x)
+ (enemy[i].y - mouse->y) * (enemy[i].y - mouse->y)
<= (enemy[i].r + mouse->r) * (enemy[i].r + mouse->r))
{

enemy[i].flag = false;
mouse->q_flag = false;
score +=5;
break;

}
    if((GetMouseInput() & MOUSE_INPUT_LEFT) == 0){
mouse->q_flag = false;
} 
}
}


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


Name: ドラ  ..かけだし(2,304ポイント)   Date: 2009/10/30(金) 01:12   No:41111     
Title: Re:マウスのクリック    
こんな感じでどうでしょう。

if (現在マウスの左ボタンを押している && 1フレーム前にマウスの左ボタンを押していなかった)
{
  敵との当たり判定
}


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

Name: Justy  ..伝説なるハッカー(452,566ポイント)   Date: 2009/10/30(金) 01:12   No:41112     
Title: Re:マウスのクリック    

>今現在マウスをクリックしてる間はずっとクリックしたことになってるのですが

 クリックですか?
 掲載されたプログラム的にはプレスしている間、のように読めます。
 
 ちなみにクリックとは、ターゲットにカーソルを合わせてマウスを押し(プレス)、
ターゲットからカーソルが外れることなくすぐに離した(リリース)状態を言うのですが、
仕様的にプレスではなく、クリックしたら敵が消えるでいいのですか?

 一応両方書いておくと
 
・ クリックした瞬間だけに反応したい場合
 前のフレームの GetMouseInput()の情報を覚えておき、前のフレームでは押されていたけど
今のフレームでは押されていないを条件にする

・ プレスした瞬間だけに反応したい場合
 前のフレームの GetMouseInput()の情報を覚えておき、前のフレームでは押されていなかったけど
今のフレームでは押されているを条件にする

で、判定すれば多分望み通りの挙動になると思います。


 尚、プレスした瞬間のほうで良ければ

C言語〜ゲームプログラミングの館〜
ttp://dixq.net/g/#40b

に書かれている GetHitMouseStateAll_2関数を使って、カウンタが 1であるかどうか
を調べることで押された瞬間かどうかを判別することができます。


 ちなみに内側の ifブロックの中で (GetMouseInput() & MOUSE_INPUT_LEFT) が 0であるかを
判定している if文がありますが、この if文はそもそも外側の if文で
(GetMouseInput() & MOUSE_INPUT_LEFT) が 0ではないから実行されているので、
内側の if文の条件を満たすことはまずあり得ない(理論的にはあり得るがそれは異常な状態)ので、
書く必要はありません。


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

Name: cdj  ..ぴよぴよ(121ポイント)   Date: 2009/10/30(金) 23:12   No:41160     
Title: Re:マウスのクリック    
>Justyさん
ありがとうございます。
自分がしたいのはプレスしたときのことです。たぶん・・

GetHitMouseStateAll_2関数のとこを見てみたのですが、どのように自分の関数に組み込むのかさっぱりわからないです。

どうやってプログラムを書けばよいかわかりません。


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

Name: Justy  ..伝説なるハッカー(454,496ポイント)   Date: 2009/10/30(金) 23:34   No:41161     
Title: Re:マウスのクリック    

>どのように自分の関数に組み込むのかさっぱりわからないです

 そのサンプルは動かしてみましたか?
 画面にはメンバ Button[n]の値が表示されているので、
マウスを押したときなど、値がどう変化するか観察して仕組みを理解してください。

 そうしたらあとは、自分のソースの適当なところに Mouse_t型のオブジェクトを
生成しておいて、毎フレーム GetHitMouseStateAll_2関数を呼び出し、
あとはメンバ変数の Button[0]が 1であるかどうかを調べることで
プレスした瞬間かどうかを調べることができます。

 つまり、Mouse_t型のオブジェクトの変数名が Mouseなら

    if(Mouse.Button[0] == 1)

で判定することができます。


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

Name: cdj  ..ぴよぴよ(124ポイント)   Date: 2009/11/02(月) 22:28   No:41297     
Title: Re:マウスのクリック    

関数がどんな風に動いているのかはわかったのですが、毎フレーム呼び出す、
というのがよくわかりません。

それと、自分がやりたいのは左クリックを押したままだと連射してしまうので、
それを防止したいのですが、「プレスしたとき」の方法でだいじょうぶですか?


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

Name: Justy  ..伝説なるハッカー(456,703ポイント)   Date: 2009/11/03(火) 01:06   No:41304     
Title: Re:マウスのクリック    

>毎フレーム呼び出す、というのがよくわかりません

 その 40bのサンプルでいうと、WinMain関数内の whileループで、
ループが行われる度に GetHitMouseStateAll_2が毎回呼ばれていますよね?

 これは GetHitMouseStateAll_2関数が毎フレーム呼び出され実行されるので
引数として与えた変数 Mouseの中身が更新され、そのあと Mouseの中身が
参照したときには値が変わっている、というわけです。



>「プレスしたとき」の方法でだいじょうぶですか?

 OKです。
 試しに、サンプルの方で「プレスした瞬間」に何か(例えば別の文字を出すとか
文字の色を変えるとか)して、テストしてみるとコツがつかめるかもしれません。



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

Name: cdj  ..ぴよぴよ(78ポイント)   Date: 2009/11/04(水) 16:51   No:41390     
Title: Re:マウスのクリック    
>Justyさん
教えてもらったやり方でちゃんとできました。

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


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



Name: Marin  ..ぴよぴよ(115ポイント)   Date: 2009/11/03(火) 23:01   No:41334       
Title: キャラクターが地面を歩くようなプログラムを作りたい    
こんにちわ。
私もこのサイトでゲームプログラミングについて勉強しているのですが、
どうしてもわからないところがあるので質問させて頂きます><

タイトルでも書きましたが、2Dでキャラクターが歩くようなプログラムを作りたいのですが、
とりあえず出来たプログラムがこれです↓

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

#include "DxLib.h"

typedef struct{
int x,y,img,muki,walking_flag;
}ch_t;





int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){

int image[16];
char Key[256];
ch_t ch;

if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //ウィンドウ化と初期化処理

ch.x =288;
ch.y =448;
ch.muki=0;

SetDrawScreen( DX_SCREEN_BACK ) ; //描画先を裏画面に設定
LoadDivGraph( "char.png" , 16 , 4 , 4 , 32 , 32 , image ) ;//画像を分割してimage配列に保存

while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){
//↑メッセージ処理 ↑画面をクリア ↑キーボード入力状態取得 ↑ESCが押されると終了



if( Key[ KEY_INPUT_LEFT ] == 1 ) //左ボタンが押されたら
ch.x=ch.x-4,ch.muki=1;
else if( Key[ KEY_INPUT_RIGHT] == 1 ) //右ボタンが押されたら
ch.x=ch.x+4,ch.muki=3;
else
ch.muki=0;

ch.img=image[ch.muki*4]; //画像をセット

DrawGraph( ch.x , ch.y , ch.img , TRUE ) ;//画像を描画

ScreenFlip();//裏画面を表画面に反映
}

DxLib_End();
return 0;
}

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

(説明文はメチャクチャですが><)

if( Key[ KEY_INPUT_LEFT ] == 1 ) //左ボタンが押されたら
ch.x=ch.x-4,ch.muki=1;
else if( Key[ KEY_INPUT_RIGHT] == 1 ) //右ボタンが押されたら
ch.x=ch.x+4,ch.muki=3;
else
ch.muki=0;

この部分は、右を入力するとmuki=1、つまり左向きに、そしてch.xの座標を減らし、
右を入力するとmuki=3、つまり右向きに、そしてch.xの座標を増やし、
何も入力されていなければ上向きにする、というプログラムです。

右、左のキーを入力している間は歩いているように、つまり
ch.img=image[ch.muki*4];
[ch.muki*4]に1ずつ加え、3になったら0に戻すようなプログラム(アニメーションですね)を作りたいのと、
(このプログラムだとただキャラの向きが変わり、歩くというより滑ってます;)

キャラクターが画面外に出ないようにするプログラムを作りたいです><
(このプログラムだとキャラは外に出ていってしまいます;;)


えっと、モデルは「東方靈異伝」というゲームの操作キャラクターと同じような操作が出来るようにしたいです;

回答、お願いします;


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


Name: ひよこ  ..熟練のプログラマー(61,671ポイント)   Date: 2009/11/03(火) 23:34   No:41336     
Title: Re:キャラクターが地面を歩くようなプログラムを作りたい    
image[ch.muki*4]に1ずつ加え、3になったら0に戻すようなプログラム
int cnt=0;
そのまま、image[ch.muki+cnt%4]4のあまりで0〜3をだす、
cnt++;でいいですか?
画面外は
if(ch.x<画面左側)ch.x=画面左側;//画面左側より左(小さくなったら)で、画面左側を代入し外へ行かせないようにしてます。


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

Name: Marin  ..ぴよぴよ(313ポイント)   Date: 2009/11/04(水) 01:45   No:41344     
Title: Re:キャラクターが地面を歩くようなプログラムを作りたい    
おお!なるほど!
そういうやり方があったんですね!ありがとうございます!

えっと…
cntなんですけど、
2つよくわかなない所があるんですけど…
cntを1ずつ増やして行って、4で割ったその余りでcntを求める訳ですよね?
しかし、それだとcntの値がどんどん大きくなって、
結果的に重くなってしまうような気がするのですが…
それは問題無いのでしょうか?
if(cnt=3)
cnt=0;
みたいに、値を0に戻すことは出来ないのでしょうか…><
(ちなみに上のプログラムも上手くいきません;;)
もう1つは、ループの方法なんですが、
for(i=0;i=1;i=i){
cnt=cnt++;
}
のようにしているのですが、無限ループで重くなってしまっているのか、
画像が表示されません;

正しいループの方法があれば、教えて頂けないでしょうか><

知らないことばかりですみません;


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

Name: ひよこ  ..熟練のプログラマー(61,706ポイント)   Date: 2009/11/04(水) 06:58   No:41348     
Title: Re:キャラクターが地面を歩くようなプログラムを作りたい    
ちょっとサンプルをかいていいですか?ちょっと追加と変更させていただきます。

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

Name: ひよこ  ..熟練のプログラマー(61,942ポイント)   Date: 2009/11/04(水) 07:46   No:41349     
Title: Re:キャラクターが地面を歩くようなプログラムを作りたい    
cntなんですけど、
2つよくわかなない所があるんですけど…
cntを1ずつ増やして行って、4で割ったその余りでcntを求める訳ですよね?
しかし、それだとcntの値がどんどん大きくなって、
結果的に重くなってしまうような気がするのですが…
それは問題無いのでしょうか?
>>重くはならないと思います。おそらく、int型に収まっていれば、intのサイズ分だけしかメモリは
>>いらないと思います。
if(cnt==3)
cnt=0;
でもできますが、ソースの見やすさで・・・しました。
for(i=0;i=1;i=i){
cnt=cnt++;
}
>>これは見るからに無限ループですね。
意味を説明しますと、
まず、iに0を代入し、iが1になるまでループでi=i;だったらずっと0のままなので
無限ループとなります。

正しいループの方法があれば、教えて頂けないでしょうか><
>>いいですよ、サンプルから勉強しましょう。


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

Name: ひよこ  ..熟練のプログラマー(63,071ポイント)   Date: 2009/11/04(水) 09:13   No:41354     
Title: Re:キャラクターが地面を歩くようなプログラムを作りたい    
サンプルを作ってみました。
for文を使わない理由
int cnt=0
for(i=0;i<3;i++)cnt++;
を実行するとcntが3になります。cntが0〜3にはなりません。
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Ke[KEY_INPUT_ESCAPE])
でループしているのでこの中で値を増やせばうまくいきます。
詳しくはソースで。

#include "DxLib.h"

typedef struct{
int x,y,img,muki,walking_flag;
}ch_t;

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //ウィンドウ化と初期化処理
SetDrawScreen( DX_SCREEN_BACK ) ; //描画先を裏画面に設定

int image[16]; //キャラクタの分割され画像

char Key[256]; //キー入力

ch_t ch;

ch.x =288;

ch.y =448;

ch.muki=0; //最初の向き

LoadDivGraph( "char.png" , 16 , 4 , 4 , 32 , 32 , image ) ;//画像を分割してimage配列に保存

int cnt=0;//カウンタ

while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){
//↑メッセージ処理 ↑画面をクリア ↑キーボード入力状態取得 ↑ESCが押されると終了

if( Key[ KEY_INPUT_LEFT ] == 1 ) //左ボタンが押されたら
ch.x=ch.x-4,ch.muki=1;

else
if( Key[ KEY_INPUT_RIGHT] == 1 ) //右ボタンが押されたら
ch.x=ch.x+4,ch.muki=3;
else
if( Key[ KEY_INPUT_UP] == 1 ) //上ボタンが押されたら
ch.y=ch.y-4,ch.muki=0;
else
if( Key[ KEY_INPUT_DOWN] == 1 ) //上ボタンが押されたら
ch.y=ch.y+4,ch.muki=2;

//みやすいアニメーション
//cntを10で割って4の余りを出さないとアニメーションが高速でみにくい
ch.img=image[ch.muki*4+(cnt/10)%4]; //画像をセット

//画面外に行かない処理
if(ch.x<0)
ch.x=0;
if(ch.x>608)//キャラクターの幅32を引いて画面の外に出ないようにする。
ch.x=608;
if(ch.y<0)
ch.y=0;
if(ch.y>448)//キャラクタの縦をを引いて画面の外に出ないようにする。
ch.y=448;
//ch.x,ch.yを基準に表示するので上の式になる。
//画面は横640、縦480です。
DrawGraph( ch.x , ch.y , ch.img , TRUE ) ;//画像を描画

cnt++;//カウンタを増やす

ScreenFlip();//裏画面を表画面に反映

}
DxLib_End();
return 0;
}


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

Name: バグ  ..ハッカー(173,825ポイント)   Date: 2009/11/04(水) 10:13   No:41356     
Title: Re:キャラクターが地面を歩くようなプログラムを作りたい    
0〜3の間でループさせたいのであれば…

cnt = (cnt + 1) & 3;

でいけますよ。
詳しく知りたい場合は論理演算について調べてみてください。


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

Name: ひよこ  ..熟練のプログラマー(63,184ポイント)   Date: 2009/11/04(水) 10:38   No:41358     
Title: Re:キャラクターが地面を歩くようなプログラムを作りたい    
あれ、バグさん、なんで(cnt + 1)なんですか?
自分的には下のようになると思ったのですが、
cnt=0; cnt=1; cnt=2; cnt=3; cnt=4;?
00 01 10 11 110
11 11 11 11 11
00 01 10 11 010
0  1   2  3 2?


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

Name: softya  ..プログラマー(33,409ポイント)   Date: 2009/11/04(水) 10:52   No:41359     
Title: Re:キャラクターが地面を歩くようなプログラムを作りたい    
横から失礼。
(1)cnt = (cnt + 1) & 3;
でも
(2)cnt = (cnt + 1) % 3;
でも良いんですが、高速性なら(1)ですね。
今時のパソコンでは気にするほどの差は無いですが(PSPとかで作っている人は別)。

考え方は、cnt=0(2進=000)だった場合、cnt+1で1(2進=001)ですよね。それを3(2進=011)でAND演算しますから下位2bitだけ残ります。それをcntに代入します。で結果はcnt=1(2進=001)ですね。
問題なのはcnt=3(2進=011)の場合ですが、cnt+1で4(2進=100)ですよね。それを3(2進=011)でAND演算しますから下位2bitだけ残ります。つまり、0(2進=000)です。それをcntに代入します。で結果はcnt=0ですね。
ってことで0から3までのカウンタが完成します。


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

Name: ひよこ  ..熟練のプログラマー(63,234ポイント)   Date: 2009/11/04(水) 11:06   No:41362     
Title: Re:キャラクターが地面を歩くようなプログラムを作りたい    
&は高速なんですか、わかりました。
最初の計算で1になるので投稿しましたが、
2回目からは
ちゃんと0〜3のカウンタになりますね。


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

Name: Marin  ..かけだし(1,381ポイント)   Date: 2009/11/04(水) 12:30   No:41375     
Title: Re:キャラクターが地面を歩くようなプログラムを作りたい    
返答、本当にありがとうございます><
cnt = (cnt + 1) & 3;
というやり方で、無事にアニメーションにすることができましたが・・・
歩くと言うにはアニメーションが早すぎるような気がします;
スピードが2分の1くらいがちょうど良いと思うのですが…
ch.img=image[ch.muki*4+(cnt/10)%4];
と入力しても、画像が上手く表示されません;



それと、静止している時、すなわち上を向いている時には
アニメーションは動かさないようにしたいのですが、


#include "DxLib.h"

typedef struct{
int x,y,img,muki,aruki;
}ch_t;





int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){

int image[16];
char Key[256];
ch_t ch;

if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //ウィンドウ化と初期化処理

ch.x =288;
ch.y =448;
ch.muki=0;
ch.aruki=0;

SetDrawScreen( DX_SCREEN_BACK ) ; //描画先を裏画面に設定
LoadDivGraph( "char.png" , 16 , 4 , 4 , 32 , 32 , image ) ;//画像を分割してimage配列に保存

while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){
//↑メッセージ処理 ↑画面をクリア ↑キーボード入力状態取得 ↑ESCが押されると終了



if( Key[ KEY_INPUT_LEFT ] == 1 ) //左ボタンが押されたら
ch.x=ch.x-4,ch.muki=1,ch.aruki=1;
else if( Key[ KEY_INPUT_RIGHT] == 1 ) //右ボタンが押されたら
ch.x=ch.x+4,ch.muki=3,ch.aruki=1;
else
ch.muki=0,ch.aruki=0;
if(ch.x<(-6)) //もし、キャラのX座標が-6以下になった場合
ch.x=(-6); //ch.xは0にする。
if(ch.x>614) //もし、キャラのX座標が614以上になった場合
ch.x=614; //ch.xは608にする


if( Key[ KEY_INPUT_UP ] == 1 )
ch.x=320;

int cnt;

if(ch.aruki=1){
cnt = (cnt + 1) & 3;
}
else if(ch.aruki=0){
cnt=0;
}
ch.img=image[ch.muki*4+(10/cnt)%4]; //画像をセット
DrawGraph( ch.x , ch.y , ch.img , TRUE ) ;//画像を描画

ScreenFlip();//裏画面を表画面に反映
}

DxLib_End();
return 0;
}
-----------------------------------------------------------------------------

if( Key[ KEY_INPUT_LEFT ] == 1 ) //左ボタンが押されたら
ch.x=ch.x-4,ch.muki=1,ch.aruki=1;
else if( Key[ KEY_INPUT_RIGHT] == 1 ) //右ボタンが押されたら
ch.x=ch.x+4,ch.muki=3,ch.aruki=1;
else
ch.muki=0,ch.aruki=0;

このプログラムで、左右が入力されている場合はch.aruki=1に、
何も入力されてない場合はch.aruki=0として、

if(ch.aruki=1){
cnt = (cnt + 1) & 3;
}
else if(ch.aruki=0){
cnt=0;
}

で、ch.aruki=0の時はcntを0にしてアニメーションを動かさないようにしたいんですが・・・
なぜか上を向いている時でも画像は動いたままです;

どうすればいいのでしょうか><


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

Name: softya  ..プログラマー(33,764ポイント)   Date: 2009/11/04(水) 12:36   No:41377     
Title: Re:キャラクターが地面を歩くようなプログラムを作りたい    
アニメ速度を1/2にしたいなら、次の形でどうでしょうか。
cnt = (cnt+1)&0x07; //倍の0から7のカウント。
で、イメージの選択は
ch.img=image[ch.muki*4+(cnt/2)]; //cntを1/2に。
これで1/2速度でアニメします。


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

Name: ひよこ  ..熟練のプログラマー(63,629ポイント)   Date: 2009/11/04(水) 14:01   No:41385     
Title: Re:キャラクターが地面を歩くようなプログラムを作りたい    
上のソースが失敗する理由はわかりませんが、自分のサンプルを改造したらできました。
こういうことですかね。

#include "DxLib.h"

typedef struct{
int x,y,img,muki;
int aruki;
}ch_t;

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //ウィンドウ化と初期化処理
SetDrawScreen( DX_SCREEN_BACK ) ; //描画先を裏画面に設定

int image[16]; //キャラクタの分割され画像

char Key[256]; //キー入力

ch_t ch;

ch.x =288;

ch.y =448;

ch.muki=0; //最初の向き

ch.aruki=0;
LoadDivGraph( "char.png" , 16 , 4 , 4 , 32 , 32 , image ) ;//画像を分割してimage配列に保存

int cnt=0;//カウンタ

while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){
//↑メッセージ処理 ↑画面をクリア ↑キーボード入力状態取得 ↑ESCが押されると終了

if( Key[ KEY_INPUT_LEFT ] == 1 ) //左ボタンが押されたら
ch.x=ch.x-2,ch.muki=1,ch.aruki=1;

else
if( Key[ KEY_INPUT_RIGHT] == 1 ) //右ボタンが押されたら
ch.x=ch.x+2,ch.muki=3,ch.aruki=1;
else
if( Key[ KEY_INPUT_UP] == 1 ) //上ボタンが押されたら
ch.y=ch.y-2,ch.muki=0,ch.aruki=1;
else
if( Key[ KEY_INPUT_DOWN] == 1 ) //上ボタンが押されたら
ch.y=ch.y+2,ch.muki=2,ch.aruki=1;
else
ch.aruki=0;
//みやすいアニメーション
//cntを10で割って4の余りを出さないとアニメーションが高速でみにくい
if(ch.aruki==1)
ch.img=image[ch.muki*4+(cnt/30)%4]; //画像をセット
else
ch.img=image[ch.muki*4];
//画面外に行かない処理
if(ch.x<0)
ch.x=0;
if(ch.x>608)//キャラクターの幅32を引いて画面の外に出ないようにする。
ch.x=608;
if(ch.y<0)
ch.y=0;
if(ch.y>448)//キャラクタの縦をを引いて画面の外に出ないようにする。
ch.y=448;
//ch.x,ch.yを基準に表示するので上の式になる。
//画面は横640、縦480です。
DrawGraph( ch.x , ch.y , ch.img , TRUE ) ;//画像を描画
cnt++;//カウンタを増やす

ScreenFlip();//裏画面を表画面に反映

}
DxLib_End();
return 0;
}




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



Name: array [URL]  ..熟練のプログラマー(59,313ポイント)   Date: 2009/11/04(水) 02:37   No:41345       
Title: ファイルポインタで内容を書き換える    
いつもお世話になっております。

自分のやりたいことが、上手く伝えることが出来ないのですが

ファイルを1行ずつ読み込んでいく場合、ファイルポインタを利用して
変数内に格納できますが

ファイルポインタから読み込まれるデータをあらかじめ書き換えること
はできないでしょうか

fopen()に「+」オプションを付けるのではなく、実際にファイルの内容は
書き換えず、fgets()を使用したときに、実際読み込まれるデータを変えたい
と思っています。


/* 読み込みテキスト*/
----- test.txt -----
aaaaa ← 読み込まれるデータ
bbbbb

/* プログラム */
#include <stdio.h>

int main(void)
{
FILE *fp; /* ファイルポインタ */
char str[256];

fp = fopen( "test.txt", "r" );
if( fp == NULL )
{
return 1;
}

/* ここに内容を変える処理を */

// 一行読み込む
fgets( str, 256, fp );

fclose( fp );

// 表示
printf( "%s", str ); // 「aaaaa」を「ccccc」など表示されるようにしたい

return 0;
}



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


Name: toyo  ..熟練のプログラマー(43,336ポイント)   Date: 2009/11/04(水) 08:19   No:41352     
Title: Re:ファイルポインタで内容を書き換える    
読み込んだ値が不要ならそもそも読み込む必要はないのでは
またcccccという値はどこから得たらいいのでしょうか
aaaaをccccではなくて実際にやりたいことを具体的に書いてもらったほうがわかりやすいですが


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

Name: non  ..熟練のプログラマー(64,760ポイント)   Date: 2009/11/04(水) 08:47   No:41353     
Title: Re:ファイルポインタで内容を書き換える    
目的はわかりませんが、入力バッファの値を書き換えたいということみたいですね。
不可能ではないと思いますが、機種に依存するし、私にはわかりません。
目的によっては、他の方法があるのでは?





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

Name: array [URL]  ..熟練のプログラマー(59,907ポイント)   Date: 2009/11/04(水) 13:11   No:41378     
Title: Re:ファイルポインタで内容を書き換える    
nonさんの言うように、入力バッファの値を書き換えたいと言うことだと思います。

ccccという値は、プログラム上で指定できれば良いと考えています。


目的を説明したら、ややこしくなるかと思いあえて省かせてもらいましたが用途は
PHPのテンプレートエンジンにつかいます。

{IF 名前}
ブロック処理
{IFEND 名前}


{IFEND 名前}、この行は、どこまでがブロックなのか示すものなので、読み込む必要は
あるのですが、見つけた後は不要になるので読み込ませないようにしたいと考えています。


そのためには、ファイルの内容は書き換えず。ファイルから読み込む時の値が変る処理が
必要だと考えています。


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

Name: Mist  ..比類無きプログラマー(70,268ポイント)   Date: 2009/11/04(水) 13:18   No:41379     
Title: Re:ファイルポインタで内容を書き換える    
難しく考えないで読み捨て(読んでも何もしない)ればいいだけだと思いますけど。
読み捨てだとまずい理由がありますか?


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

Name: array [URL]  ..熟練のプログラマー(59,966ポイント)   Date: 2009/11/04(水) 13:26   No:41380     
Title: Re:ファイルポインタで内容を書き換える    
nonさん。有難うございます

入力バッファについて調べていたら、メモリ上に展開したファイル内容を行単位で処理できる
みたいです。

まだ試していませんが、大丈夫だと思います♪


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

Name: array [URL]  ..熟練のプログラマー(59,981ポイント)   Date: 2009/11/04(水) 13:36   No:41382     
Title: Re:ファイルポインタで内容を書き換える    
Mistさん

投稿が重なってしまいましたorz

一応、IFの条件の真偽が

偽の場合、これはファイルポインタを{IFEND 名前}まで進めて読み捨てで大丈夫です。

真の場合、IFが入れ子になっていると不便です。

動作が処理がややこしくなります。

というのも、{IF 名前}を保持していて、{IFEND 名前}が
見つかった時に、読み捨てを行う処理だと、入れ子になっている場合、{IFEND 名前}が
見つかるまで、{IF 名前}の保持数が増え続けます。
さらには、{IFEND 名前}と一致するか比較する回数も増えて、効率も落ちてしまいます。

あまりイメージできないかもしれませんが、読み捨て処理は最終手段と考えています。


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

Name: non  ..熟練のプログラマー(64,811ポイント)   Date: 2009/11/04(水) 13:47   No:41383     
Title: Re:ファイルポインタで内容を書き換える    
うまく行く方法が見つかったなら良かったですね。
うまくいったら、どうやったか載せてください。

私も、入力バッファを強制的に空にする方法とか知りたいと思いますし。


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

Name: array [URL]  ..熟練のプログラマー(60,045ポイント)   Date: 2009/11/04(水) 13:57   No:41384     
Title: Re:ファイルポインタで内容を書き換える    
難航していますが外出しないといけないので帰宅後
再度ためしてみます。


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



Name: ぺん  ..ぴよぴよ(124ポイント)   Date: 2009/11/04(水) 10:25   No:41357       
Title: ポインタ配列の初期化    

1はOKなのに、2,3がエラーなのはどうして?

1.これはOK
char *table[] = {
"aaa",
"bbbb",
"cc",
};

2.これはエラー
char *table[] = {
{ 'a', 'b', 'c', '\x0', },
{ 'd', 'e', '\x0', },
{ 'g', 'h', 'i', 'j', '\x0', },
};

3.これはエラー
int *table[] = {
{ 1, 2, 3, },
{ 4, 5, },
{ 6, 7, 8, 9, },
};



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


Name: softya  ..プログラマー(33,501ポイント)   Date: 2009/11/04(水) 11:00   No:41360     
Title: Re:ポインタ配列の初期化    
簡単に言うと"aaa"はポインタ値だけど、{ 'a', 'b', 'c', '\x0', }や{ 1, 2, 3, },はポインタじゃないから。
char *table[]と書くとポインタ値でしか初期化できません。
"aaa"はaaaという文字列リテラルのポインタ値だから問題ないのです。


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

Name: Naohiro19  ..ぴよぴよ(706ポイント)   Date: 2009/11/04(水) 11:10   No:41363     
Title: Re:ポインタ配列の初期化    
error C2440: '初期化中' : 'int' から 'int *' に変換できません。
整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。


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

Name: ぺん  ..ぴよぴよ(335ポイント)   Date: 2009/11/04(水) 12:01   No:41368 解決!     
Title: Re:ポインタ配列の初期化    
ざっくりとした質問に回答していただいて、有難うございます。

なんとなく"aaa"等の文字リテラル(char配列)からポインタ値を生成して初期化が出来るのあれば、
同様に{ 'a', 'b', 'c', '\x0', }や{ 1, 2, 3, }等のchar/intリテラル(char/int配列)の
ポインタ値を生成して初期化できると考えたのですが、コンパイラは後者の場合は対応できないのですね。

当然ですが以下の様にすれば、コンパイルできました。


int tb_a[] = { 1,2,3, };
int tb_b[] = { 4,5, };
int tb_c[] = { 6,7,8,9, };

int *table[] = {
tb_a,
tb_b,
tb_c,
};


個人的には余計な配列を宣言しないで、初期化できると気分的にスッキリするのですが。
-----
ご回答いただいた皆様に、重ねてお礼を申し上げます。


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



Name: 把握太郎  ..ぴよぴよ(39ポイント)   Date: 2009/10/28(水) 01:51   No:41035       
Title: 本家の弾幕を再現するコツ…    
みなさんはどうやって東方本家の弾幕をそっくりそのまま真似ているのでしょうか?
自分は50章まで進んで自作のゲーム制作も進んでいるのですが、
ボスの弾幕で行き詰まり本家そっくりの弾幕を再現できず、挫折の連続です。
雑魚ショットのパターンのような簡単なものはほとんど作れるのですが…

何かコツのようなものがあるのでしょうか?


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


Name: Justy  ..伝説なるハッカー(453,308ポイント)   Date: 2009/10/28(水) 22:07   No:41067     
Title: Re:本家の弾幕を再現するコツ…    
 弾幕なんて作ったことのない私が言うのも変な話なので、話半分で。


 弾幕を創るのではなく、コピーするだけなら要は逆スペック力・観察力の問題でしょう。

1 録画してスローモーションで観る。

2 何種類の弾幕で構成されているのかなどの構成要素表(種類分け)と
それぞれの弾幕がいつ始まっていつ終わったのか等のタイムテーブルを
最初はおおざっぱでいいので書き出します。

3 同種の一連の弾幕は、まず弾の1つに注目して動きを捕らえ、
軌跡は直線なのか曲線なのか、速度や加減速・回転・スケーリングなどの状態、
使用する弾のテクスチャ、発生するエフェクトの種類・動きも含めて
動きを細かく分解します。

4 その動きが判ったら同種の弾幕の別の弾との違いに着目します。
 大抵時間差、角度、速度、色などの違いがあるので、そのあたりどう違うのかを調べます。

5 3、4の課程で2で作った構成要素表とタイムテーブルに対し随時追加・修正を施し
コード化に必要な要素を書き込みます。

6 上記を全て把握したら、その通りにプログラムする。
 移動などの計算式に詰まるようなら、Flashなどのような簡易に動きをテストできるツールを使うか作り、
そちらでテストをすればトライ&エラーの効率も良くなるかと。


 基本はこんなところじゃないかと思いますが、経験者なら私には想像もつかない
もっといい手を知っているかもしれませんね。


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

Name: Dixq (管理人)  ..ウィザード(1,078,963ポイント)   Date: 2009/10/29(木) 08:52   No:41075     
Title: Re:本家の弾幕を再現するコツ…    
携帯しか無いので、あまり詳しく書けませんが‥。

一番しっかりした完全な方法はJustyさんがおっしゃる方法でしょう。難しい複雑な弾幕はそうしないとわからないものもあり、館で紹介してる深弾幕結界なんかは何度も角度を測ったりしました。
しかし、もっと簡単な方法があります。


1 勘で計算式を考える

2 結果を見ながら勘で調整する


嘘みたいな作り方で、すぐには出来ないような作り方のように聞こえますが、私はほとんどがこれです。
案外、弾幕作りをされてる方は、共感して頂けるんじゃないかと思います。

この作り方は、出来れば物凄く作業効率が上がります。
で、「勘で計算式が思い浮かぶなんて遠い将来じゃ‥」と思うかもしれませんが、
案外弾幕の計算式って簡単で
「どの方向に、いつ、いくらうって、その後どう変化するか」
だけなので、それぞれの基本がわかれば、組み合わせ方も難しくないです。

東方にある弾幕のほとんどはビックリする位単純な計算式に置き換えられる場合が、ほとんどです。
もちろん、調整する為に、複雑に計算されている場合はあるかもしれませんが、
たいていの場合骨格は簡単な計算式に置き換えられる場合がほとんどです。

館で紹介している、模倣弾幕もコードは長くないですよね。
と、いうことで、基本的な弾幕をいくつか作った後は、自分なりの弾幕を沢山作ってみて、
力がついてきたら、自分が好きな、真似出来そうな弾幕を端から作ってみてください。
これが終わった頃には完全に解決されてると思いますよ。


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

Name: Tatu  ..上級者(16,906ポイント)   Date: 2009/11/01(日) 11:14   No:41231     
Title: Re:本家の弾幕を再現するコツ…    
私は元の弾幕を見ながら紙に図を描くことにしています。
図はコードにしているときにも書きかえられるので、
完璧な図である必要はありません。

最初にボスを表す印をかきます。
ボスのビットや自機などを考える必要があるならばそれを表す印を描きます。
発射される弾の軌跡や弾の発射位置・角度の移り変わりなどを矢印で表現します。
図だけでは分かりにくいところを言葉で書きます。(弾がワープするなど)
必要な数値や式を書き加えたり、計算したりします。
コードにするときどのような書き方をするのかも簡単に書きます。
一つの図ではかけないならば、さらに図を増やします。
図を書き終わったらそれをもとにコードにします。
テストプレイをして調整します。
調整のしかたは弾幕を作っていけばなんとなくわかると思います。
だいたい満足できたら完成です。


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

Name: そうは問屋の最終兵器  ..かけだし(1,517ポイント)   Date: 2009/11/01(日) 20:20   No:41256     
Title: Re:本家の弾幕を再現するコツ…    
弾幕を見て、基盤について考えるのも結構いい手だと思います。
複雑な弾幕の中にはよく見ると幾何図形が隠れている(画像だと☆)ことがあるので、
その幾何図形の頂点座標を求める式を考え、それを骨組みに弾幕の作成を進めると割といい感じに仕上がることが多いです。
隠れた図形を発見できると「秘密を暴いた!」みたいな感じで楽しいですしね。
ただ、幾何図形の隠れている弾幕の数はそれほど多くないので、どちらかと言えばオリジナルの弾幕作成に向いた方法かもしれません。


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

Name: 把握太郎  ..ぴよぴよ(242ポイント)   Date: 2009/11/04(水) 09:44   No:41355 解決!     
Title: Re:本家の弾幕を再現するコツ…    
返信が遅くなりまして大変申し訳ありません。
まさかこんなにご意見を頂けるとは思っておりませんでした。

みなさんのご意見を参考にさせて頂いて、
図に書きだしたり、弾幕の種類、直線か曲線かなど、弾幕をじっくり観察して
しっかり向き合ってみました。
こんな自分でも2つの弾幕の計算式が出来上がりました。

Justy様、Dixq様、Tatu様、そうは問屋の最終兵器様
きれいな弾幕なども見せて頂いたりと本当に何から何までありがとうございます。
自分でどんどん作っていけそうです。
また、ゲームが完成致しましたら、
こちらの掲示板で公開させて頂きたいと思っております。
その時もどうかよろしくお願いいたします。


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



Name:  ..上級者(17,558ポイント)   Date: 2009/11/02(月) 08:23   No:41273       
Title: ボスをアニメーションさせる    
50章をいじって遊ばさせて貰ってます。
キャラはアニメーションしてあるのでいいのですが
ボスのアニメーション方法が分からなくて困ってます。
一応、キャラと同じように240×180で
止まってるとき、右に移動してるとき、左に移動してるときの
画像は用意してあるのですが、
キャラと違って右や左に移動したら切り替わる処理が分かりません。
どうすればいいか、分かる方いたら教えてください・・・


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


Name: ひよこ  ..熟練のプログラマー(61,271ポイント)   Date: 2009/11/02(月) 15:54   No:41288     
Title: Re:ボスをアニメーションさせる    
敵の画像みたいにmukiとcntを使って描くのはどうですか?

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

Name:  ..上級者(17,605ポイント)   Date: 2009/11/02(月) 18:25   No:41290     
Title: Re:ボスをアニメーションさせる    
ボスが右に移動していたら、

左に移動していたら

という条件が分からないのですが、ありますでしょうか?


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

Name: softya  ..プログラマー(32,840ポイント)   Date: 2009/11/02(月) 19:18   No:41292     
Title: Re:ボスをアニメーションさせる    
>ボスが右に移動していたら、左に移動していたらという条件が分からないのですが、ありますでしょうか
ひよこさんの言われるとおり、雑魚敵の処理を参考にされてはどうでしょうか?
どちらにしてもボスも動かす処理も必要で、その処理もまだ組まれてませんよね?


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

Name:  ..上級者(17,540ポイント)   Date: 2009/11/02(月) 19:37   No:41293     
Title: Re:ボスをアニメーションさせる    
いえ、ボスを動かす処理は
boss_shotH.cpp内に腐るほど書いて、ボスの弾幕を100近く作り
一つ一つ向きの処理なんかやってたら猛烈に大変だと思ったので・・
何か一気にボスのアニメーションを制御できる良い方法はないでしょうか?
一番てっとり早いと思ったのがやはり先ほどの条件さえあればいいのですが
if(条件){
   boss.img+=4*2; //画像を左向きに
}
else if(条件){
   boss.img+=4*1; //画像を右向きに
}


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

Name: softya  ..プログラマー(32,867ポイント)   Date: 2009/11/02(月) 20:18   No:41294     
Title: Re:ボスをアニメーションさせる    
それでしたら前回のX座標を覚えておいて、今のX座標が前のX座標より右か左かを判定してはいかがでしょうか?

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

Name:  ..上級者(17,548ポイント)   Date: 2009/11/02(月) 20:25   No:41295     
Title: Re:ボスをアニメーションさせる    
というと、それはどうすれば・・?

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

Name: softya  ..プログラマー(32,730ポイント)   Date: 2009/11/02(月) 20:45   No:41296     
Title: Re:ボスをアニメーションさせる    
まず、座標を覚える変数を用意して
int workX;
ボスを移動させる前に今の座標を覚えます。
workX = boss.x;
でボスの移動を行った後で、
// X座標が増えているので右に移動したとみなす。
if( workX < boss.x ) {
// 右へ
boss.img+=4*1; //画像を右向きに
} else {
// 左へ
boss.img+=4*2; //画像を左向きに
}
って事です。


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

Name:  ..上級者(17,585ポイント)   Date: 2009/11/02(月) 23:16   No:41300     
Title: Re:ボスをアニメーションさせる    
"ボスの移動を行った後"というのは
boss_shot.cpp内のどこを指しているのでしょうか?


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

Name: softya  ..プログラマー(32,779ポイント)   Date: 2009/11/03(火) 13:36   No:41314     
Title: Re:ボスをアニメーションさせる    
boss_shot_main()の頭と最後で良いと思います。
[訂正]
boss.xでは無くboss.dxで良いと思うのですが、試してみてください。


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

Name:  ..上級者(17,530ポイント)   Date: 2009/11/04(水) 03:02   No:41346     
Title: Re:ボスをアニメーションさせる    
softyaさんありがとうございます。
左右に移動するときのアニメーション無事できたのですが、
今度は止まってる場合のアニメーションをしなくなってしまったのですが・・どうしたらいいのでしょうか?


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

Name:  ..上級者(17,551ポイント)   Date: 2009/11/04(水) 03:07   No:41347 解決!     
Title: Re:ボスをアニメーションさせる    
すみません。自己解決しました。
softyaさんありがとうございました。


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

Name: z   Date: 2009/12/10(木) 22:55   No:412731260453319     
Title: Re:ボスをアニメーションさせる    
> 50章をいじって遊ばさせて貰ってます。
> キャラはアニメーションしてあるのでいいのですが
> ボスのアニメーション方法が分からなくて困ってます。
> 一応、キャラと同じように240×180で
> 止まってるとき、右に移動してるとき、左に移動してるときの
> 画像は用意してあるのですが、
> キャラと違って右や左に移動したら切り替わる処理が分かりません。
> どうすればいいか、分かる方いたら教えてください・・・
>

a




Name: 光翼型近接支援残酷超初心者  ..ぴよぴよ(518ポイント)   Date: 2009/10/31(土) 11:40   No:41173       
Title: pixiaというフリーソフトを使って絵を描いて表示させて見たのですが……    
こんにちは

すこし前に友達から教えてもらった『Pixia』というフリーお絵かきソフトを使って、スキャナーで読み込んだ線画に色つけて、更に背景を真っ黒にして、『藤 -Resizer-』というPSPの壁紙を作るときに使う画像サイズ変換ソフトで、小さくした画像をコンパイラでTRUE表示させて見ました。

そしたら、画像に変な小さな黒点(ブツブツ?)が一緒表示されてました(表現へたですみません)


変だなーと思いググっていると、透明化処理というのにたどり着いたのですが、先ほどやってみて(書き直してコンパイルして)も背景が水色に表示されただけで背景は透明にはなりませんでした。
(龍神録の素材の背景も水色でしたからいけると思ったんですけどねえ)


ここで質問なんですが、

背景を黒にしてうまく表示する方法か、

透明化処理をして正しく表示させる方法、または方法が載っているサイト様(お名前でいいので)

を教えて頂けないでしょうか?


画像はPNGで、保存する際の「透明色情報を保存する」の項目にもチェックをいれて保存しました。

コンパイラは『Microsoft Visual C++ 2008 Express Edition』というヤツです。


稚拙な文章ですみません。ですがよろしくお願いします。


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


Name: Justy  ..伝説なるハッカー(454,587ポイント)   Date: 2009/10/31(土) 13:12   No:41180     
Title: Re:pixiaというフリーソフトを使って絵を描いて表示させて見たのですが……    

>背景を黒にしてうまく表示する方法か

 もう少し情報が必要です。
 現状 Windowsであることはわかりますが、どういう手段(DirectXだとか
WindowsAPIだとか)で表示しようとしているのかわからないので、
サイトの紹介もままなりません

 ただ1点。
 透明情報を付加するフラグを立てて保存したとのことですが、
元の画像にαチャンネルによる透過情報があったとしても、
"藤 -Resizer"を経由したときに無くなってしまっている可能性があります。

 藤 -Resizerを経由した画像に透過情報が残っているかどうか確認してみてください。

 その画像に問題がなければ、あとはコードに問題がある可能性が高いです。



>TRUE表示

 初めて聞く用語なのですが、TRUE表示って何でしょう??


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

Name: ひよこ  ..熟練のプログラマー(60,185ポイント)   Date: 2009/10/31(土) 13:43   No:41181     
Title: Re:pixiaというフリーソフトを使って絵を描いて表示させて見たのですが……    
DXライブラリの透過表示のTRUEじゃないですか?例えば、DrawGraphとかです。

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

Name: Mikan [URL]  ..中級者(10,631ポイント)   Date: 2009/10/31(土) 21:48   No:41207     
Title: Re:pixiaというフリーソフトを使って絵を描いて表示させて見たのですが……    
>そしたら、画像に変な小さな黒点(ブツブツ?)が一緒表示されてました(表現へたですみません)
Pixiaと藤 -Resizer-を使ったことがないので、的確な回答はできないのですが、
ブツブツっていうのはエイリアスをかけた時に出来るものではないでしょうか?

エイリアスって機能があると、画像の周りを滑らかにしてくれて綺麗に仕上がるのですが
透過表示をしたときに、ブツブツが残ってしまうことがよくあります。

両ソフトのエイリアス機能について調べみることをオススメします


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

Name: 光翼型近接支援残酷超初心者  ..ぴよぴよ(764ポイント)   Date: 2009/10/31(土) 22:08   No:41208     
Title: Re:pixiaというフリーソフトを使って絵を描いて表示させて見たのですが……    
>どういう手段(DirectXだとかWindowsAPIだとか)で表示しようとしているのかわからないので

多分DirectXだと思います。
windowsAPIというのは聞いたことありませんし。東方やってるので多分そうかと…………

単によく分かってないだけですけど。


>TRUE表示
脱字です。「TRUEで表示」です。
ひよこさんがおっしゃってる通り、DrawGraphで表示させてますので。

LoadGraphScreen( 0 , 0 , "XXXXX(←画像名).png" , TRUE ) ;
で表示させてます。


>"藤 -Resizer"を経由したときに無くなってしまっている可能性があります

どうもそうではないようです。
pixiaで作った等倍(作ったのそのまま)の画像を表示させても透明にはなりませんでした。


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

Name: Justy  ..伝説なるハッカー(454,970ポイント)   Date: 2009/11/01(日) 01:07   No:41220     
Title: Re:pixiaというフリーソフトを使って絵を描いて表示させて見たのですが……    

>多分DirectXだと思います
>LoadGraphScreen

 DirectXというより DXライブラリですね。



>pixiaで作った等倍(作ったのそのまま)の画像を表示させても透明にはなりませんでした

 能性として作ったのそのままの画像に透過情報が存在しない
可能性があります。

 その画像を添付するかアップローダにアップすることは可能ですか?


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

Name: 光翼型近接支援残酷超初心者  ..ぴよぴよ(802ポイント)   Date: 2009/11/01(日) 23:47   No:41262     
Title: Re:pixiaというフリーソフトを使って絵を描いて表示させて見たのですが……    
返事が盛大に遅れてしまってすみません。


>両ソフトのエイリアス機能について調べみることをオススメします

エイリアス自体よくわかってないのですが、
藤 -Resizerはないようです。
が、Pixiaにはアンチエイリアスという機能はあるようです。



>DirectXというより DXライブラリですね。

ああ、やっぱり同じものだったんですね。



>その画像を添付するかアップローダにアップすることは可能ですか?

アプロダ使ったこと無いので不安ですが。やってみました。
圧縮フォルダの中の、『はじめに説明.txt』を読んでみてください。


そして鼻で笑って下さい。

ttp://tikuwa.net/file/27963.zip.html
DLパス:『c555』


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

Name: softya  ..プログラマー(32,610ポイント)   Date: 2009/11/02(月) 00:22   No:41263     
Title: Re:pixiaというフリーソフトを使って絵を描いて表示させて見たのですが……    
>ああ、やっぱり同じものだったんですね。
DXライブラリは、DirectXの面倒なところを隠蔽して使いやすくしたライブラリです。
厳密に言うと同じものではありませんよ。
プログラム→DXライブラリ→DirectX
と言った感じで最終的にはDirectXを使いますが直接使っているわけではありません。
プログラム→DirectX
といった風に直接使っているならDirectXを使っていると言えますね。

あと画像をGIMPで見てみましたが、αチャンネルはありましたがマスク抜きされていないので透過はできませんね。



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

Name: Justy  ..伝説なるハッカー(455,954ポイント)   Date: 2009/11/02(月) 00:49   No:41264     
Title: Re:pixiaというフリーソフトを使って絵を描いて表示させて見たのですが……    
 早速拝見させていただきました。

 見たところ、どの PNG画像(縮小前・縮小後)にも透過している部分は
ありませんでした(縮小後の方は透過情報そのものがなかったです)。

 しかし、透過したいと思われるところが1色に塗られていました。
 DXライブラリは特定の色を透過色として扱う機能もありますので、

    SetTransColor(0x7d, 0x7d, 0x7d);
    LoadGraphScreen(0, 100, "img012NG_tome_test3[1].png", TRUE);

    SetTransColor(0xeb, 0xf3, 0xff);
    LoadGraphScreen(200, 100, "img012NGlv1_tome1p[1].png", TRUE);

    SetTransColor(0x00, 0x00, 0x00);
    LoadGraphScreen(400, 100, "imgNGlv1p2[1]p.png", TRUE);

のようにすれば一応透過します。


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

Name: Justy  ..伝説なるハッカー(456,255ポイント)   Date: 2009/11/02(月) 01:05   No:41265     
Title: Re:pixiaというフリーソフトを使って絵を描いて表示させて見たのですが……    
 添付した画像はこちらで透過部分と思われるところを透明にしてみたものです。

 試しに表示してみるとわかりますが、こういう PNGにすることができれば、
画像の中に透明にするべきところが指定されているので先のように透過色指定も要らず、
加えて透明度に段階を持たせて透過させることができます。


 残念ながら Pixiaでどうすればいいのかというのは私にはわかりませんが、
こちらのページが参考になりそうです。

CMGI FAQDB: pixiaでの画像透過方法(半透過についても軽く触れています)
ttp://faq.comicmaker.info/archives/2006/06/pixia.html

takapyon's blog.: Pixiaで透過PNGを作る
ttp://takapyon.blog.ocn.ne.jp/note/2005/03/pixiapng.html

透過PNGをPIXIAで作る
ttp://www.geocities.jp/massano1/png/index.html


 あと、藤 -Resizer-ですが、透過情報をもった PNGを入れると、
透過なしの PNGとして出力されるようなので、DXライブラリで使うときは
あまり使わない方がいいのかもしれません。


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

Name: 光翼型(略)。携帯より  ..ぴよぴよ(66ポイント)   Date: 2009/11/02(月) 23:46   No:41301     
Title: Re:pixiaというフリーソフトを使って絵を描いて表示させて見たのですが……    
すみません。パソコンに触れる時間が取れなかったので今夜は返事が出来そうにありません。


明日、色々試した上でお返事させて頂きます。


携帯より失礼しました。


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

Name: 光翼型近接支援残酷超初心者  ..ぴよぴよ(893ポイント)   Date: 2009/11/04(水) 00:16   No:41341 解決!     
Title: Re:pixiaというフリーソフトを使って絵を描いて表示させて見たのですが……    
この度はJustyさんに紹介して頂いたURLでようやく解決できました。


Justyさん、何度もお返事を頂きありがとうございます。透過ものの見本まで作っていただいて感謝の極みです。
他の皆さんもわざわざありがとうございました。


長々と居座ってましたが、これにて失礼させて頂きます。また出現するかもしれませんけどね(^^;

それでは


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



Name:  ..ぴよぴよ(60ポイント)   Date: 2009/11/02(月) 02:56   No:41269       
Title: どなたか教えてください。    
標準入力からの入力に対して、アルファベットを全て空白文字に変更して出力するプログラムを作成せよ。

という問題の配列がわかりません。どなたか力添えおねがいします。


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


Name: Mist  ..熟練のプログラマー(69,721ポイント)   Date: 2009/11/02(月) 09:38   No:41275     
Title: Re:どなたか教えてください。    
> 標準入力からの入力に対して、アルファベットを全て空白文字に変更して出力するプログラムを作成せよ。
>
> という問題の配列がわかりません。どなたか力添えおねがいします。

質問が抽象的すぎてなにがわからないのかわかりません。
何がわかって何がわからないのかをもう少し具体的にしてください。


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

Name: hack  ..ぴよぴよ(103ポイント)   Date: 2009/11/02(月) 23:01   No:41298     
Title: Re:どなたか教えてください。    
十分わかりますよ理解力というよりもっとちゃんと読んであげてください。
とりあえずプログラムは

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

int main(void)
{
char moji[100];
int i;

printf("文字列を入力してください。\n");
scanf("%s",moji);
for(i=0;moji[i]!='\0';i++){
if(isalpha(moji[i])!=0)
moji[i]=' ';
}
printf("%s\n",moji);

return 0;
}

です。
疑問点があればいってください。


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

Name: sizuma  ..上級者(16,041ポイント)   Date: 2009/11/02(月) 23:15   No:41299     
Title: Re:どなたか教えてください。    
>hackさん
あなたは規約を読んであげてください。

宿題まるなげは規約違反です。
質問者がどこまでわかって、何が分からないのか、僕には質問文から読み取ることはできないです。


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

Name: box  ..ハッカー(145,699ポイント)   Date: 2009/11/02(月) 23:49   No:41302     
Title: Re:どなたか教えてください。    
もとの投稿でわからないのは、

> という問題の配列がわかりません。

問題の配列、という語句の意味です。


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

Name: conio  ..比類無きプログラマー(70,079ポイント)   Date: 2009/11/03(火) 00:18   No:41303     
Title: Re:どなたか教えてください。    
>>hackさん
「アルファベットを全て空白文字に変更して出力する」の部分は分かりますが、
「配列が分かりません」の部分は意味が不明です。

そもそも、この課題(?)を実装する際に配列を使っているのか、
また配列を使っているのならば、どのように配列を使おうとしているのかが不明だからです。


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

Name: hack  ..ぴよぴよ(306ポイント)   Date: 2009/11/03(火) 13:24   No:41313     
Title: Re:どなたか教えてください。    
という問題の配列の部分は
上のプログラムの配列と言い換えることができると思います。
普通の日本人ならこの文を見ると配列の使い方などがわからないのかなと思うと思います。

おそらくそのわからなかった配列の部分は
配列の大きさやfor文の中での使い方がわからなかったと思います。

おそらく配列の大きさだと思いますが。。。

確かに軽率だったかもしれません。
すみませんでした。
でもプログラム全体を見たほうが勉強になると思ったので投稿しました。

その中で質問者が上達するかは質問者さん次第だと思われます。
その機会を与えるか与えないかだと与えるほうが良いと判断しました。


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

Name: lbfuvab  ..上級者(23,106ポイント)   Date: 2009/11/03(火) 16:21   No:41321     
Title: Re:どなたか教えてください。    
「普通の日本人」という言い方は良くないです。
後、conioさんはその質問の書き方は良くないよという事をおっしゃってるのでしょう。


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

Name: box  ..ハッカー(145,831ポイント)   Date: 2009/11/03(火) 16:40   No:41322     
Title: Re:どなたか教えてください。    
ここのような技術系の掲示板では、変に行間を読んだり
質問者の意図を勝手に推し量ったりするのはしない方がいいと思っています。

とにかく、質問者の投稿「だけ」が頼りです。
それが抽象的であれば、具体的な記述を求めます。
使っている言葉の意味がわからなければ、その意味を問います。
というのは、どうせ回答するなら、正確で具体的なものにしたいからです。


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

Name: conio  ..比類無きプログラマー(70,556ポイント)   Date: 2009/11/03(火) 18:25   No:41324     
Title: Re:どなたか教えてください。    
>>普通の日本人ならこの文を見ると配列の使い方などがわからないのかなと思うと思います。

>>おそらくそのわからなかった配列の部分は
>>配列の大きさやfor文の中での使い方がわからなかったと思います。
>>おそらく配列の大きさだと思いますが。。。

質問に関しては、
そのように「多分●●かな?」と 推測や予測が入ってはいけないのです。

推測した内容が、質問者の意図とは異なる事は充分にありえますし、
何らかの解釈の食い違いを産む可能性もあります。

「恐らく●●かな?」で答えたものが、
質問者の求めた回答と必ずしも一致するという保証はないので、
推測や憶測の余地が無い 明確な質問をして欲しいという事です。
(プログラムが無く、日本語のみの質問では特に)


「配列が分からない」という文章を見ても、
---------------------------------------
・配列の定義の仕方が分からない
・配列に値を入れる方法が分からない
・配列をどのように使えばいいか分からない
・配列の概念自体が分からない
---------------------------------------
と、具体的にどの部分が理解できておらず、どこまで理解できているかまでは
把握しようがありません。

「質問がやや曖昧」「抽象的で具体的には分からない」というのはそういう事です。


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

Name: hack  ..ぴよぴよ(500ポイント)   Date: 2009/11/03(火) 23:17   No:41335     
Title: Re:どなたか教えてください。    
本当に申し訳ないです。

でも効率から言うとしばらく考えてわからないのなら
プログラムを見せて質問させたほうが早いですよね

それが質問者のためになるかは本人次第ですけど
ほとんどの場合はプラスになると思います。

プラスにならなくてもそれは本人のせいですからこっちにしてはどうでもいいんです。

でもやっぱり皆さんの言う通りこんなとこでプログラムは見せないほうが良いですね。
このレベルなら問題無いですけど
アルゴリズムとか公開してるのと一緒ですもんね。

質問者もお礼とか無しですし
あんまりコードは公開しないようにします。

たくさんのご指摘ありがとうございました。


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

Name: conio  ..比類無きプログラマー(70,838ポイント)   Date: 2009/11/04(水) 00:12   No:41340     
Title: Re:どなたか教えてください。    
>>でもやっぱり皆さんの言う通りこんなとこでプログラムは見せないほうが良いですね。
んー
「プログラムを見せるな」ではなく、
「質問の意味が分からなかった」という主張だと思いますが?


hackさんが「質問者の言いたいことは充分 分かる。もっとよく読んであげましょう」
という旨のコメントをしたので、
「残念ながら 自分には質問者の具体的な質問の意図は分かりません」という旨のレスが付いただけかと。


-----------------------------------------------------------------
「プログラムを記述すると、質問者の方にとってプラスになるのか?」
「効率が良いのか?」
「プログラムを記述するべきなのか?」
-----------------------------------------------------------------
といった事は別に指摘されてない(問題にされていない)と思います。


>>でも効率から言うとしばらく考えてわからないのなら
>>プログラムを見せて質問させたほうが早いですよね
プログラムを途中まで組んで、エラーが出てどうしても分からないという場合は、
修正するなり、エラーの原因を示したり、自分の方からプログラムを提示したりしても良いとは思いますよ。

ただ、それをするのは
「質問者が自分でプログラムを考えて、完成させようとしているのか?」が確認できてからです。
もしただの丸投げであれば「便利な宿題解決マシーン」として使われて終わりです。


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



Name: さいら  ..ぴよぴよ(99ポイント)   Date: 2009/11/03(火) 20:41   No:41326       
Title: 4章 キャラを描写してみようの質問です。    
4章 キャラを描写してみようの質問です。

ページ中ほどにあるgraph.cpp変更の

void graph_ch(){
DrawRotaGraphF(ch.x,ch.y,1.0f,0.0f,img_ch[0][ch.img],TRUE);
}

の[ch.img]が一体どういう意味なのかが分かりません。
DXライブラリ置き場で調べてみましたらGrHandle  : 描画するグラフィックの識別番号 と書いてありました。

回答宜しくお願い致します。


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


Name: ひよこ  ..熟練のプログラマー(61,421ポイント)   Date: 2009/11/03(火) 21:42   No:41329     
Title: Re:4章 キャラを描写してみようの質問です。    
まず、img_ch[0][ch.img]について考えましょう。
GLOBAL int img_ch[2][12]; //キャラクタ画像12枚分 X2(変身用)
と宣言されており、img_ch[0][ch.img]のch.imgで画像を決めています。
char.cppでch.img=(ch.cnt%24)/6;//現在の画像決定と画像を決めています。
ch.imgは配列に入った画像を選ぶ変数です。


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

Name: softya  ..プログラマー(33,320ポイント)   Date: 2009/11/03(火) 22:04   No:41331     
Title: Re:4章 キャラを描写してみようの質問です。    
ひよこさんに補足させてもらいます。
まず大事なのは、
LoadDivGraph( "../dat/img/char/0.png" , 12 , 4 , 3 , 73 , 73 , img_ch[0] ) ;
で2次元配列
GLOBAL int img_ch[2][12];
に画像がどう読み込まれているか理解する事です。

こちらを一読してもらうと良いのですが、
http://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_graph.html#R3N3
画像が縦横分割した形で、連続した配列に読み込む関数です。
この読み込まれた画像を配列から取り出すための変数がch.imgであり、0から11までの値をとります。


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

Name: さいら  ..ぴよぴよ(128ポイント)   Date: 2009/11/03(火) 23:38   No:41338 解決!     
Title: Re:4章 キャラを描写してみようの質問です。    
なるほど!

お二方共、迅速な回答ありがとうございましたmm


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



Name:  ..ぴよぴよ(89ポイント)   Date: 2009/11/03(火) 19:57   No:41325       
Title: 第5章 宣言の仕方を工夫しよう    
「main.cpp」「graph.cpp」「load.cpp」にある変数の宣言部と、extern宣言
とありますが、宣言部ってどこのことですか?
extern宣言はexternで始まる文章だと思うのですが、それでいいですか?


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


Name: トゥル太郎  ..ぴよぴよ(179ポイント)   Date: 2009/11/03(火) 21:28   No:41328     
Title: Re:第5章 宣言の仕方を工夫しよう    
例えばload.cpp内の
extern int img_ch[2][12];
がextern宣言部です。
裕さんので大丈夫です。


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



Name: ケロッドスネイク  ..ぴよぴよ(2ポイント)   Date: 2009/11/03(火) 12:19   No:41311       
Title: 無題    
VisualStdioが無い人はどうやってやればいいのですか?

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


Name: バグ  ..ハッカー(173,776ポイント)   Date: 2009/11/03(火) 12:31   No:41312     
Title: Re:無題    
ダウンロードできるネット環境がないという意味ですか?

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

Name: 銘茶ハリガネ  ..ぴよぴよ(261ポイント)   Date: 2009/11/03(火) 14:08   No:41315     
Title: Re:無題    

ここに書き込んでる以上、
ネット環境はあるはずだぜ。
もしかしたら携帯電話かもしれないが


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

Name: とおりすがり  ..ぴよぴよ(268ポイント)   Date: 2009/11/03(火) 14:29   No:41316     
Title: Re:無題    
丁寧な言葉使いをしましょう、というのがここの規約です。

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

Name: softya  ..プログラマー(32,879ポイント)   Date: 2009/11/03(火) 15:07   No:41317     
Title: Re:無題    
無料で利用できるVisualC++2008ExpressEdtionの入手方法としては、
1.自分でダウンロードする。
http://www.microsoft.com/japan/msdn/vstudio/Express/
2.他の人にダウンロードしてもらって、DVDに焼いてもらう。
http://www.microsoft.com/japan/msdn/vstudio/2008/product/express/offline.aspx
3.書籍を購入する(付属のDVDに入っています)。
http://www.amazon.co.jp/dp/4891005823
などがあります。


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

Name: たかぎ [URL]  ..ハッカー(113,915ポイント)   Date: 2009/11/03(火) 17:39   No:41323     
Title: Re:無題    
> VisualStdioが無い人はどうやってやればいいのですか?

何をやるのかにもよりますが、VisualStudioが手に入れば解決するのであれば、お金を出して購入しましょう。
ちなみに、Express EditionもマイクロソフトのサイトではVisual Studioと表記されていますが、実際にはVisual C++とかVisual C#のような個別の開発言語のツールだけなので、ちょっと期待していることとは違うかもしれません。


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



Name: ずんだもち  ..ぴよぴよ(689ポイント)   Date: 2009/11/03(火) 15:41   No:41318       
Title: スタックを用いて整数配列の順序を入れ替えるプログラム    
C言語プログラミングの超初心者です。

「スタックを用いて0〜9の10個の整数配列を5個ずつ並び替えるプログラムをつくる」
(0123456789→4321098765)
という課題に取り組んでいます。
お恥ずかしいのですが私はC言語の基礎(繰り返しや関数の定義)を習った程度のレベルで、
スタック・プッシュ・ポップの関係は何とか理解しましたが、どのようにプログラミングを組めばよいのかわかりません…!

上記の課題の前提として、「0〜100までの整数の並び順を逆にする」(0 1 2…100→100 99 98…0)が与えられていました。途中で分からなかった部分もあり、
致命的な間違いもしているかもしれないのですが、記述させていただきます。こちらのプログラムが参考になるようであれば、使っていただければ幸いです。
#include<stdio.h>
#include<stlib.h>
#define STACKLENGTH 100
#define LENGTH 10
int stack[STACKLENGTH];
int stack_p = 0;
void print(void);
void Print(char*,int*a,int);
int main(int arg,char** argv){
int a[LENGTH];
int ii;
for (ii=0; ii<LENGTH, ii++){
a[ii]= rand()%101;
}
Print("入れ替え前",a,LENGTH);
for(ii=0; ii<LENGTH; ii++){
push(a[ii]);
}
for (ii=0; ii){
a[ii]=Pop();
}
Print("入れ替え後",a,LENGTH );
}
void Puch(int a)
{ ここが分かりませんでした
}
int Pop()
{ ここがわかりませんでした
}
void Print(char* title,int* a, int n)
{
int ii;
printf("%s", title);
for (ii=0, ii<n; ii++){
printf("%d" , a[ii]);
}
printf("\n");
}


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


Name: softya  ..プログラマー(33,137ポイント)   Date: 2009/11/03(火) 16:02   No:41319     
Title: Re:スタックを用いて整数配列の順序を入れ替えるプログラム    
えーと、ほぼ同じ問題ですか?
http://www.play21.jp/board/formz.cgi?action=res&resno=41307&page=&id=dixq&rln=41308
分からないところも同じみたいですので、問題文そのままって事ですかね?

規約としては、
>課題の丸投げ(問題文だけ書く事)は禁止です。
>自分でどこまでやったのか、今どこが解らないのかを明確にして下さい。
>さっぱり解らず、手も足も出ない時は、その事を明記の上、
>勉強方法からアドバイスを受けましょう。
となっていますので、アドバイスをさせていただきます。

1.プッシュは、スタックに積んでいく事。
(1)stackのstack_pの指す場所に値を格納する。
(2)stack_pを加算する。

2.ポップは、スタックから取り出すこと。
(1)stack_pを減算する。
(2)stackのstack_pの指す場所の値を取り出す。

以上です。


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

Name: ずんだもち  ..ぴよぴよ(784ポイント)   Date: 2009/11/03(火) 16:09   No:41320     
Title: Re:スタックを用いて整数配列の順序を入れ替えるプログラム    
softyaさん、早速のご回答ありがとうございました。

利用規約についてご指摘をありがとうございました。
申し訳ありません、手も足も出ない状態でした。
いただいたアドバイスを参考に、
自分でできるところまで作成し直したいと思います。


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



Name: 組木紙織  ..比類無きプログラマー(74,146ポイント)   Date: 2009/11/01(日) 14:33   No:41236       
Title: [雑談]自分自身を出力するプログラム    
Haskellで自分自身を出力するプログラムを書いてみようをいう記事
ttp://www.ipsj.or.jp/07editj/promenade/4703.pdf
をみつけたので、
C++自分自身を出力するプログラムを書いてみました。
なかなか難しくて、ごてごでした力ずくで書いた感じのコードになってしまいました。

ほかの人の書いたコードをみてみたいと思い投稿しました。

条件はC/C++で、コンパイラのエラーがでない程度のコード。
最低限インクルードを入れてください。

色々な方法で作ったコードを待ってます。

#include <iostream>
char*a="\n";char*b="\0";char*c="\\";char*d="\"";char*e="\\0";char*ch="#include <iostream>\0char*a=\0n\0;char*b=\0 0\0;char*c=\0;char*d=\0;char*e=\0;char*ch=\0;int main(){std::cout<<ch<<a<<&ch[20]<<d<<c<<&ch[28]<<d<<&ch[30]<<d<<c<<&ch[40]<<d<<&ch[42]<<d<<c<<c<<d<<&ch[51]<<d<<c<<d<<d<<&ch[60]<<d<<c<<c<<&ch[40]<<d<<&ch[69]<<d<<ch<<e<<&ch[20]<<e<<&ch[28]<<e<<&ch[30]<<e<<&ch[39]<<e<<&ch[42]<<e<<&ch[51]<<e<<&ch[60]<<e<<&ch[69]<<e<<&ch[79]<<d<<&ch[79]<<std::endl;return 0;}";int main(){std::cout<<ch<<a<<&ch[20]<<d<<c<<&ch[28]<<d<<&ch[30]<<d<<c<<&ch[40]<<d<<&ch[42]<<d<<c<<c<<d<<&ch[51]<<d<<c<<d<<d<<&ch[60]<<d<<c<<c<<&ch[40]<<d<<&ch[69]<<d<<ch<<e<<&ch[20]<<e<<&ch[28]<<e<<&ch[30]<<e<<&ch[39]<<e<<&ch[42]<<e<<&ch[51]<<e<<&ch[60]<<e<<&ch[69]<<e<<&ch[79]<<d<<&ch[79]<<std::endl;return 0;}


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


Name: Naohiro19  ..ぴよぴよ(638ポイント)   Date: 2009/11/01(日) 14:39   No:41237     
Title: Re:[雑談]自分自身を出力するプログラム    
Line 19: error: iostream: No such file or directory
In function 'main':
Line 2: error: expected expression before ':' token


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

Name: 組木紙織  ..比類無きプログラマー(74,185ポイント)   Date: 2009/11/01(日) 14:59   No:41238     
Title: Re:[雑談]自分自身を出力するプログラム    
Naohiro19さん

c言語でコンパイルしていませんか?
c++でコンパイルしてみてください。


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

Name: 御津凪 [URL]  ..ハッカー(120,019ポイント)   Date: 2009/11/01(日) 17:01   No:41243     
Title: Re:[雑談]自分自身を出力するプログラム    
興味があったのでCでやってみました。

#include <stdio.h>
char* q = "#include <stdio.h>\nchar* q = %;\nint p = 1;\nvoid wq( void ){\n\tchar* r = q;\n\twhile(*r != 0){\n\t\tif(*r == 9) printf('%ct', 92);\n\t\telse if(*r == 10) printf('%cn', 92);\n\t\telse putchar(*r);\n\t\t++r;\n\t}\n\tp = 0;\n}\nint main( void ){\n\tchar* r = q;\n\twhile(*r != 0){\n\t\tif(*r == 37){ if(p){ putchar(34); wq(); putchar(34); } else putchar(*r); }\n\t\telse if(*r == 39) putchar(34);\n\t\telse putchar(*r);\n\t\t++r;\n\t}\n\treturn 0;\n}\n";
int p = 1;
void wq( void ){
char* r = q;
while(*r != 0){
if(*r == 9) printf("%ct", 92);
else if(*r == 10) printf("%cn", 92);
else putchar(*r);
++r;
}
p = 0;
}
int main( void ){
char* r = q;
while(*r != 0){
if(*r == 37){ if(p){ putchar(34); wq(); putchar(34); } else putchar(*r); }
else if(*r == 39) putchar(34);
else putchar(*r);
++r;
}
return 0;
}


ふと思いついた方法は提示されていた記事内で書かれていたものだったので、
while 関数を使って文字列の置き換えをしたり関数を使ってたりしてます。

こうやって見ると結構頭を使いますね。


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

Name: Eeel  ..初心者(6,410ポイント)   Date: 2009/11/01(日) 17:29   No:41247     
Title: Re:[雑談]自分自身を出力するプログラム    
力技です。
タブと改行を含めて表示し、横に長い文字列を使わない事を目標にしたら
こんな事になってしまいました。


#include <stdio.h>

char d = 0x22;
char n = 0x0A;
char t = 0x09;

int main()
{
char *str[7] = {"#include <stdio.h>","char d = 0x22;","char n = 0x0A;","char t = 0x09;","int main()","{","char *str[7] = {"};
char *str2[5] = {"%s%c%c%s%c%s%c%s%c%c%s%c%s%c%c%s",
"%c%s%c,%c%s%c,%c%s%c,%c%s%c,%c%s%c,%c%s%c,%c%s%c};%c",
"%cchar *str2[5] = {%c%s%c,%c%c%c%c%c%c%c%s%c,%c%c%c%c%c%c%c%s%c,%c%c%c%c%c%c%c%s%c,%c%c%c%c%c%c%c%s%c};%c",
"%cchar *str3[5] = {%c%s%c,%c%c%c%c%c%c%c%s%c,%c%c%c%c%c%c%c%s%c,%c%c%c%c%c%c%c%s%c,%c%c%c%c%c%c%c%s%c};%c%c",
"%cprintf(%c%s%c,%s);%c%cprintf(%c%s%c,%s);%c%cprintf(%c%s%c,%c%c%c%s);%c%cprintf(%c%s%c,%c%c%c%s);%c%cprintf(%c%s%c,%c%c%c%s);%c}"};
char *str3[5] = {"str[0],n,n,str[1],n,str[2],n,str[3],n,n,str[4],n,str[5],n,t,str[6]",
"d,str[0],d,d,str[1],d,d,str[2],d,d,str[3],d,d,str[4],d,d,str[5],d,d,str[6],d,n",
"t,d,str2[0],d,n,t,t,t,t,t,d,str2[1],d,n,t,t,t,t,t,d,str2[2],d,n,t,t,t,t,t,d,str2[3],d,n,t,t,t,t,t,d,str2[4],d,n",
"t,d,str3[0],d,n,t,t,t,t,t,d,str3[1],d,n,t,t,t,t,t,d,str3[2],d,n,t,t,t,t,t,d,str3[3],d,n,t,t,t,t,t,d,str3[4],d,n,n",
"t,d,str2[0],d,str3[0],n,t,d,str2[1],d,str3[1],n,t,d,str2[2],d,n,t,t,str3[2],n,t,d,str2[3],d,n,t,t,str3[3],n,t,d,str2[4],d,n,t,t,str3[4],n"};

printf("%s%c%c%s%c%s%c%s%c%c%s%c%s%c%c%s",str[0],n,n,str[1],n,str[2],n,str[3],n,n,str[4],n,str[5],n,t,str[6]);
printf("%c%s%c,%c%s%c,%c%s%c,%c%s%c,%c%s%c,%c%s%c,%c%s%c};%c",d,str[0],d,d,str[1],d,d,str[2],d,d,str[3],d,d,str[4],d,d,str[5],d,d,str[6],d,n);
printf("%cchar *str2[5] = {%c%s%c,%c%c%c%c%c%c%c%s%c,%c%c%c%c%c%c%c%s%c,%c%c%c%c%c%c%c%s%c,%c%c%c%c%c%c%c%s%c};%c",
t,d,str2[0],d,n,t,t,t,t,t,d,str2[1],d,n,t,t,t,t,t,d,str2[2],d,n,t,t,t,t,t,d,str2[3],d,n,t,t,t,t,t,d,str2[4],d,n);
printf("%cchar *str3[5] = {%c%s%c,%c%c%c%c%c%c%c%s%c,%c%c%c%c%c%c%c%s%c,%c%c%c%c%c%c%c%s%c,%c%c%c%c%c%c%c%s%c};%c%c",
t,d,str3[0],d,n,t,t,t,t,t,d,str3[1],d,n,t,t,t,t,t,d,str3[2],d,n,t,t,t,t,t,d,str3[3],d,n,t,t,t,t,t,d,str3[4],d,n,n);
printf("%cprintf(%c%s%c,%s);%c%cprintf(%c%s%c,%s);%c%cprintf(%c%s%c,%c%c%c%s);%c%cprintf(%c%s%c,%c%c%c%s);%c%cprintf(%c%s%c,%c%c%c%s);%c}",
t,d,str2[0],d,str3[0],n,t,d,str2[1],d,str3[1],n,t,d,str2[2],d,n,t,t,str3[2],n,t,d,str2[3],d,n,t,t,str3[3],n,t,d,str2[4],d,n,t,t,str3[4],n);
}


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

Name: hoge  ..入門者(3,118ポイント)   Date: 2009/11/01(日) 17:50   No:41249     
Title: Re:[雑談]自分自身を出力するプログラム    
HD内に昔作ったものがありました。


#include <stdio.h>
#define A(X) B(X)
#define B(X) #X
#define C int main(){puts(D A(D)"\nC");return 0;}
#define D "#include <stdio.h>\n#define A(X) B(X)\n#define B(X) #X\n#define C int main(){puts(D A(D)\"\\nC\");return 0;}\n#define D "
C


(注)VC6以前だとコンパイラのバグのためコンパイルできません。


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

Name: たかぎ [URL]  ..ハッカー(113,690ポイント)   Date: 2009/11/01(日) 19:02   No:41252     
Title: Re:[雑談]自分自身を出力するプログラム    
まるっきりのネタですが...

#include <iostream>
#include <fstream>

int main()
{
std::ifstream ifs(__FILE__);
std::cout << ifs.rdbuf();
}

こんなのはどうでしょう?


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

Name: 組木紙織  ..比類無きプログラマー(74,372ポイント)   Date: 2009/11/01(日) 19:39   No:41254     
Title: Re:[雑談]自分自身を出力するプログラム    
>御津凪さん
ふむふむなるほどっといった感じのコードですね。
char型は一応文字型であるが数値型としても使えるというc言語の特徴を生かしたコードですね。

>Eeelさん
私と似たような力づくのコード。
力づくのコードは同じ出力にするための微調節が大変ですよね。

>hogeさん
Cマクロにはこんな使い方があるとは知りませんでした。
こんな使い方はトリッキーになるのかな。
ちょっと使い方覚えてみたくなりました。

>たかぎさん
それはネタというより地雷です。
隠れ条件としてそのような方法はだめと決めてました。
(引っかかってくれてなんか嬉しい)

リンク先の記事を読んだら最初のほうにちゃんと書いてあります。





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

Name: たかぎ [URL]  ..ハッカー(113,757ポイント)   Date: 2009/11/01(日) 20:02   No:41255     
Title: Re:[雑談]自分自身を出力するプログラム    
> リンク先の記事を読んだら最初のほうにちゃんと書いてあります。

本当ですね。
最近はちゃんとしたリンク以外読まないので...
面倒なのもありますが、ちゃんとリンクを貼れないのは何か後ろめたい理由があるのではとかんぐってしまいます。


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

Name: 組木紙織  ..比類無きプログラマー(74,492ポイント)   Date: 2009/11/01(日) 20:21   No:41257     
Title: Re:[雑談]自分自身を出力するプログラム    
>面倒なのもありますが、ちゃんとリンクを貼れないのは何か後ろめたい理由があるのではとかんぐってしまいます。

ちゃんとリンクを貼ってなかったのはそのように考えられてしまいましたか。すみません。
今回のリンク先はpdfなので、何気なく開くと時間がかかるんですよね。
何気なく開いて、開くまでの時間にイライラしてもらうよりは、気合い(?)を入れて開いてもらったほうがよいかと。



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

Name: Naohiro19  ..ぴよぴよ(655ポイント)   Date: 2009/11/03(火) 09:09   No:41306     
Title: Re:[雑談]自分自身を出力するプログラム    

/*test.c*/
#include <stdio.h>

int main()
{
FILE* fp = fopen("test.c", "rb");
char ch;
while(!feof(fp)){
ch = fread(ch, sizeof(char), 1, fp);
printf("%c", ch);
}
fclose(fp);
return 0;
}


標準関数のみで作ってみました


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

Name: 組木紙織  ..比類無きプログラマー(74,522ポイント)   Date: 2009/11/03(火) 09:59   No:41309     
Title: Re:[雑談]自分自身を出力するプログラム    
>Naohiro19さん
だからそれは地雷なんですって。
それは別にいいですけど、もう少しひねって欲しかったです。
無意味に複雑な処理を入れるとか、よみにくくするとか。。。


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

Name: たいちう  ..プログラマー(36,086ポイント)   Date: 2009/11/03(火) 10:41   No:41310     
Title: Re:[雑談]自分自身を出力するプログラム    
昔見かけた記憶があったので探してみた。

http://www.kouno.jp/home/c_faq/c20.html#0
後半の"20.34"の部分に書かれている。


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



Name: アクエリアス  ..ぴよぴよ(384ポイント)   Date: 2009/11/03(火) 09:38   No:41307       
Title: スタックによる並び替えのプログラム    
スタックを用いて10 個の整数配列を5 個ずつ順序を入れ替えるプログラムを作りなさ
つまり
01234 56789

43210 98765
と並び替えるプログラムをスタックを用いて作りなさい。
よろしくお願いします。




#include <stdlib.h>
#define STACKLENGTH 100 // スタックの長さ
#define LENGTH 10 // 整数型配列の長さ(ここでは10)
int stack[STACKLENGTH]; // スタック用の配列
int stack_p = 0; // スタックポインタ
void Push(int a);
int Pop(void);
void Print(char*, int* a, int);
/* ---------------------------
* スタックを用いて整数配列を逆転する
------------------------------*/
int main(int argc, char** argv)
{
int a[LENGTH];
int ii;
/* 0 から100 までのランダム整数が入った配列をLENGTH 個、作成する*/
for (ii=0; ii<LENGTH; ii++){
a[ii] = rand()%101; // %101 は101 で割ったときに余りを表す(0-100)
}
/* 発生した乱数を表示*/
Print("入れ替え前", a, LENGTH);
/* スタックにプッシュ*/
for (ii=0; ii<LENGTH; ii++){
40
Push(a[ii]);
}
/* スタックからpop */
for (ii=0; ii<LENGTH; ii++){
a[ii] = Pop();
}
/* 入れ替えて表示*/
Print("入れ替え後", a, LENGTH);
}/
* ---------------------------
* a をスタック頂上にpush する
* input int a
--*----------------------------*/
void Push(int a)
{
// ここを作る
}/
* ---------------------------
* スタックから値を取り出す
* ouput int a;
--*----------------------------*/
int Pop()
{
// ここを作る
}/
* ---------------------------
* 整数配列をコメント付で表示する
**
input char* title; 表示コメント
* input int* a; 表示する整数配列
* input int n; 配列の長さ
------------------------------*/
void Print(char* title, int* a, int n)
{
int ii;
/* 整数配列を標準出力*/
printf("%s ", title);
for (ii=0; ii<n; ii++){
printf("%d ", a[ii]);
}
printf("\n");
}


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


Name: 組木紙織  ..比類無きプログラマー(74,516ポイント)   Date: 2009/11/03(火) 09:51   No:41308     
Title: Re:スタックによる並び替えのプログラム    
コードを載せるときは規約を読んでください。

何が問題なんでしょうか?


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



Name:  ..上級者(24,177ポイント)   Date: 2009/11/01(日) 05:50   No:41221       
Title: 地霊殿の交信強度を実装する方法    
こんにちは。
また龍神録の改造についてです。
東方の地霊殿で実装されていた、
「敵弾にグレイズしたら数値が上昇して、一定以上になったら画面にあるアイテムを全て自機に吸収。
ただし、その数値はグレイズしないと、じょじょに減っていく。
また、ボーダーラインより上に自機がいたら数値が一定以上になり、画面にあるアイテムを全て自機に吸収。」
というシステムを実装してみたいのですが、
細かすぎて作り方が分からなくなり困ってます。
作り方と段取りを教えてほしいのですが、アドバイスをお願いします><


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


Name: ひよこ  ..熟練のプログラマー(61,176ポイント)   Date: 2009/11/01(日) 06:53   No:41222     
Title: Re:地霊殿の交信強度を実装する方法    
簡単な方法で、グレイズしてなくて、1以上なら、減らす、
グレイズすると増やす、画面上のアイテムをすべて吸収するには、
calc.cppのcalc_item_indrawを参考にitem[i].state=1;を利用しましょう。


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

Name:  ..上級者(24,194ポイント)   Date: 2009/11/03(火) 05:55   No:41305 解決!     
Title: Re:地霊殿の交信強度を実装する方法    
アドバイスのおかげで無事実装出来ました。ありがとうございます。

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



Name: 天魔  ..かけだし(1,060ポイント)   Date: 2009/11/02(月) 14:53   No:41285       
Title: クリア画面表示    
ステージ1の2回目のボスを倒した後、クリア画面に移行するようにしたいのですが、
クリア画面の記述がわかりません。

どのように書いていけばいいのでしょうか?もしよければお手本を添えていただけると助かります。


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


Name: softya  ..プログラマー(32,641ポイント)   Date: 2009/11/02(月) 15:30   No:41286     
Title: Re:クリア画面表示    
前に確かタイトル画面で質問されてましたよね?
それが出来ているなら同じような処理をするだけなんですが。


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

Name: ひよこ  ..熟練のプログラマー(61,255ポイント)   Date: 2009/11/02(月) 15:44   No:41287     
Title: Re:クリア画面表示    
func_stateを100から(クリア画面を表示するところ)に変化させる。
ただ、いきなりやったらびっくりするので、輝度を変更しながら暗くして明るくしながら、クリア画面を
表示する場所へ行けばいいだけです。


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

Name: softya  ..プログラマー(32,733ポイント)   Date: 2009/11/02(月) 19:01   No:41291     
Title: Re:クリア画面表示    
まず状態遷移という考え方を理解されたほうが良いかと。
http://www.mb.ccnw.ne.jp/garger-studio/vbgame/try0003.html
言語はCではありませんが、考えかたの参考になると思います。
分からなかったら質問して下さい。


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



Name: Aru  ..ぴよぴよ(442ポイント)   Date: 2009/11/01(日) 17:14   No:41245       
Title: C++ 再帰関数    
こんにちは。
学校の課題で再帰関数の問題が出たのですがちょっとわからないところがあって困っています。

課題の内容は入力された複数のデータ(値)の合計を求める再帰関数を作ることです。
そして入力されたデータを中央で分けて、前半と後半をそれぞれの再帰関数を呼びだすというもの。

Sum(data,0,5) + Sum(data,6,11);

みたいな感じでです。


そして途中までは作ったのですが下のソースでいう「計算のやりかたを入れる」の場所がいまいちわかりません。
まずこの場合は11個データを入れるので真ん中の6個目で区切るためのものが必要なんですが
その作り方もいまいちわかりません;

どなたかわかる方いましたら教えてください<(_ _)>



#include<stdio.h>


int Sum(int Data[x], int StartID; int EndID);
{
ここに計算のやりかたを入れる

}


int main(void)
{
int x;
int Data[11];

for(x = 0; x <11; x++)
{
printf("%d番目の数字を入力してください:",x);
scanf("%d",&Data[11]);
}

}


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


Name: Eeel  ..初心者(6,953ポイント)   Date: 2009/11/01(日) 18:23   No:41250     
Title: Re:C++ 再帰関数    

#include<stdio.h>

int Sum(int Data[], int StartID, int EndID)
{
    if(StartID != EndID)
        return Sum(Data, StartID, (StartID+EndID)/2)+Sum(Data, (StartID+EndID)/2+1, EndID);

    return Data[StartID];
}


int main(void)
{
    int x;
    int Data[11];

    for(x = 0; x <11; x++)
    {
        printf("%d番目の数字を入力してください:", x+1);
        scanf("%d",&Data[x]);
    }
    printf("合計は%d\n",Sum(Data, 0, 10));

    return 0;
}


例えば、このようなプログラムで配列Data内の全ての要素の合計を求める事ができます。
しかし、宿題として求められているのは違うものではないでしょうか?
上記のプログラムには再起処理をする意味も理由も全くありません。
配列の要素の合計を求めるだけならば、


int Sum(int Data[], int StartID, int EndID)
{
    int sum = 0;

    for( int i = StartID; i <= EndID; i++)
        sum += Data[i];

    return sum;
}


というように、再起処理を行わずにもっと簡単にできてしまうからです。
問題が悪いだけ、という可能性ももちろんありますが
Aruさんが題意を取り違えていないか、もう一度確認した方が良さそうです。
また、関数定義の部分や、scanfでの配列・アドレスの扱い方にもミスがあるので
そこも確認し直してみてください。


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

Name: Aru  ..ぴよぴよ(646ポイント)   Date: 2009/11/01(日) 19:27   No:41253 解決!     
Title: Re:C++ 再帰関数    
レスありがとうございます<(_ _)>

この課題で初めて再帰関数を使ったので
再帰関数を使う練習も兼ねてるんだと思います。
そしてこの計算を再帰関数を使ってやる利点は
前半と後半の計算は独立しているので高速化されると書いてあります。


RE>関数定義の部分や、scanfでの配列・アドレスの扱い方にもミスがあるので
そこも確認し直してみてください。

確認しました><;
いろいろとミスってましたね。。。

Eeelさんが教えてくださったミスを修正し、自分なりにこれに再帰関数を取り入れてまたちょっと作ってみます!

またわからなくなったらここに書きこむかもですが
お時間あればまたお願いします<(_ _)>

いろいろと丁寧に教えてくださりありがとでした!

では作ってきますε=(ノ゜д゜)ノ

(。-ω-。)----------キリトリ線----------(。-ω-。)


スイマセン。勘違いしてましたね><;
気づくのにかなり時間がかかりましたが
再帰関数使ってありましたね スイマセン('A

ありがとうございました<(_ _)>



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

Name: たいちう  ..プログラマー(36,049ポイント)   Date: 2009/11/02(月) 17:40   No:41289     
Title: Re:C++ 再帰関数    
> そしてこの計算を再帰関数を使ってやる利点は
> 前半と後半の計算は独立しているので高速化されると書いてあります。

もし本当にそんな事が書いてあるなら捨てちゃいましょう。
前半と後半の計算は独立してますが、片方ずつ実行されますので
高速化はされません。

CPUが複数あるとき、独立した計算を別のスレッドで実行することで、
高速化することも可能ですが、このプログラムはそのようなことは
行っていないです。

再帰の呼び出しのたびにスレッドを作るというのもナンセンス。
スレッド作成のオーバーヘッドが大きすぎます。


> というように、再起処理を行わずにもっと簡単にできてしまうからです。
> 問題が悪いだけ、という可能性ももちろんありますが

再帰関数の良い問題というのが難しいのでしょう。
・再帰を使う必要性がある
・初心者にも理解しやすい

「ハノイの塔」なんかが良い問題の題材になりうると思うのですが。


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



Name: YS  ..ぴよぴよ(115ポイント)   Date: 2009/10/26(月) 14:50   No:40959       
Title: 無題    
ただいま項目を選択して画像を表示するプログラムを作っております。

そこでいまつまずいているところが、選択した項目の画像を表示させたままのこして

複数画像を表示するということをしたいのですが形は頭で想像できてもプログラムが

どうかけばいいのかは頭にうかんでこないのです。。


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


Name: s-rush  ..熟練のプログラマー(57,423ポイント)   Date: 2009/10/26(月) 14:55   No:40960     
Title: Re:無題    
まず、YSさんの開発環境が明記されていないので、回答のしようがないです。

言語はなんですか?
外部ライブラリは使用していますか?
OSはなんですか?

最低限、これくらいは書いてほしいです><


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

Name: YS  ..ぴよぴよ(158ポイント)   Date: 2009/10/27(火) 11:03   No:41002     
Title: Re:無題    
もうしわけございません。。。

OSは XP VISTA
ライブラリは DX
言語は C   これでしょうか


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

Name: Mist  ..熟練のプログラマー(69,371ポイント)   Date: 2009/10/27(火) 11:23   No:41003     
Title: Re:無題    
画像ごとに表示するかしないかのフラグを用意する。
選択されたらフラグを立てる。
フラグが立っている画像は全て表示する。

でいいと思いますが。
一度表示したものを画面に残しておこう、という考えはDXライブラリには向きません。



bool ViewFlg[画像の枚数] = { false };

while (省略) {
if (選択された) {
ViewFlg[x] = true;
}

for (省略) {
if (ViewFlg[x] == true) {
DrawGraph(省略);
}
}

ScreenFlip();
}


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

Name: YS  ..ぴよぴよ(274ポイント)   Date: 2009/10/29(木) 09:51   No:41077     
Title: Re:無題    
そうですか。。。ありがとうございました。

もうひとつ、選択した項目の画像を画面に表示したままにしたいのですが、if(Key[KEY_INPUT_Z]のなかに
条件を入れると押してるときには出るのですがキーをはなすと消えてしまうのですがどうしてでしょうか。


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

Name: conio  ..熟練のプログラマー(68,340ポイント)   Date: 2009/10/29(木) 10:24   No:41078     
Title: Re:無題    
-----------------------
if(Key[KEY_INPUT_Z]){ //'Z'が押されているなら
画像を表示
}
-----------------------

Zを押したときにif文の中を実行するようになっているので、
Zが押されていなければ、if文の中は実行されなくなり、画像を表示する処理は行われません。
なので、画像は消えます。


↓あと、こういう流れで描画しているという事はわかりますよね?
--------------------------------------------
裏画面のデータを削除
画像A表示
画像B表示
画像C表示
裏画面データを表画面へ反映

裏画面のデータを削除
画像A表示
画像B表示
画像C表示
裏画面データを表画面へ反映

裏画面のデータを削除
画像A表示
画像B表示
画像C表示
裏画面データを表画面へ反映
    :
(以下繰り返し)
--------------------------------------------
描画した画像は毎回クリアされて、また画像を初めから順に描画してます。
よって描画処理を止めれば、全てクリアされた状態でウィンドウに表示されます。

「一度描画処理をすれば、しばらく残り続ける」という様なイメージがあるのかもしれませんが、それは違います。
毎回消されて、また表示、という事の繰り返しなので、描画処理を止めた瞬間 画像は消えます。


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

Name: YS  ..ぴよぴよ(27ポイント)   Date: 2009/10/29(木) 20:28   No:41098     
Title: Re:無題    
えと描画処理をしなければいいということでしょうか?

もしくはどのようにすればいいのでしょうか。。。。


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

Name: conio  ..熟練のプログラマー(69,186ポイント)   Date: 2009/10/29(木) 20:45   No:41101     
Title: Re:無題    

>>えと描画処理をしなければいいということでしょうか?
>>もしくはどのようにすればいいのでしょうか。。。。

前回のコメントは「画像が消える理由は何ですか?」という質問に対して
理由を説明しただけのものです。


「画像をずっと表示させたい」という要望については、画像を表示させる処理を毎回行えば良いと思います。
↓この条件文(if文)を消せば画像はずっと表示されると思います。
-----------------------
if(Key[KEY_INPUT_Z]){
画像を表示
}
-----------------------

また、「Zを押した後ずっと表示させたい」というのであれば、
フラグか何かを用意してやればいいと思います。
-----------------------
if(Key[KEY_INPUT_Z]){
flag = true;
}

if(flag){
画像を表示
}
-----------------------


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

Name: YS  ..ぴよぴよ(314ポイント)   Date: 2009/11/02(月) 11:20   No:41283 解決!     
Title: Re:無題    
ありがとうございました

ためになりました。


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



Name: アスタリスク  ..ぴよぴよ(30ポイント)   Date: 2009/10/29(木) 11:09   No:41080       
Title: 番兵と検索関連の質問    
問題の意味すらわかりません援護射撃よろしくお願いします

0 から100 までの範囲で整数の乱数を1000 個発生させ、ターゲット整数を検索し、何番目の数
字でターゲット整数が見つかるか、番兵を使わない関数NonSentinel と、番兵を使う関数Sentinel の2つで求
める下のプログラムを完成させなさい。このプログラムをbanpai.c として実行ファイルをbanpei.exe とする場
合、
>banpei 50
> 番兵なし54, 番兵あり54
>banpei 200
> 番兵なし-1, 番兵あり1001
のように動作する。
#include <stdio.h>
#include <stdlib.h>
#define LENGTH 1001 // データの長さ+ 番兵
#define MAX 101 // データの範囲
/*----------------------------------------------
関数プロトタイプ
-----------------------------------------------*/
void GenerateNumbers(int* m, int n);
int Sentinel(int target, int* m, int n);
int NoSentinel(int taget, int* m, int n);
/*----------------------------------------------
**
番兵をつかった線形検索問題
* m[] の中からtarget を探し、配列の中の行番号を求める。
*-----------------------------------------------*/
int main(int argc, char** argv)
{
int m[LENGTH]; // ランダムに発生させる数
int target; // 検索する数
GenerateNumbers(m, LENGTH-1); // ゼロから100 までの乱数を発生させてm に代入
target = strtol(argv[1], NULL, 0); // ターゲットは二番目の引数
printf("番兵なし%d, 番兵あり%d\n",
NoSentinel(target, m, LENGTH-1), // 番兵を使わずに検索
Sentinel(target, m, LENGTH) // 番兵を使って検索
);
}/
*----------------------------------------------
線形検索
input int target: 検索する数
int m[]; 検索対象の配列
int n; 配列の次数
戻り値: 何番目に見つかったか、もしなければ-1 を返す
33
-----------------------------------------------*/
int NoSentinel(int target, int* m, int n)
{}/
*----------------------------------------------
番兵を使った線形検索
input int target: 検索する数
int m[]; 検索対象の配列
int n; 配列の次数
戻り値: 何番目に見つかったか、もしなければ番兵を返す
-----------------------------------------------*/
int Sentinel(int target, int* m, int n)
{}/
*----------------------------------------------
**
Random number generator
* Generate n random numbers ranging from 0 to 100
* and stored in m[].
* 2008.9.12
* input/output int m[];
* input int n;
*-----------------------------------------------*/
void GenerateNumbers(int* m, int n)
{
int ii;
for (ii=0; ii<n; ii++){
m[ii] = rand()%MAX;
}
}


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


Name: conio [URL]  ..熟練のプログラマー(68,856ポイント)   Date: 2009/10/29(木) 12:14   No:41082     
Title: Re:番兵と検索関連の質問    
では問題の意味から。

まず、要素が10の配列vがあるとします。
この中から、100という値が入っている場所を探すものとします。
-------------------
┃v[0] = 20
┃v[1] = 30
┃v[2] = 40
┃v[3] = 50
┃v[4] = 60
┃v[5] = 70
┃v[6] = 80
┃v[7] = 90
┃v[8] = 10
▼v[9] = 0
-------------------

この時の終了条件は、
-------------------------------
・添え字が0〜9までの間で終了
・検索した値が100であれば終了
-------------------------------
上記の2つになります。
これが非番兵法です。


で、今度は一番最後に検索したい値を入れておくとします。
(要素が一つ分増えます。 v[10] ⇒ v[11])
-------------------
┃v[0] = 20
┃v[1] = 30
┃v[2] = 40
┃v[3] = 50
┃v[4] = 60
┃v[5] = 70
┃v[6] = 80
┃v[7] = 90
┃v[8] = 10
┃v[9] = 0
v[10] = 100
-------------------

こうしておくと、必ず検索したい値が見つかることになります。
なので、終了条件は
--------------------------------
・検索した値が100であれば終了
(番兵v[10]であれば失敗、それ以外であれば成功と判断)
--------------------------------
の一つだけで良いことになります。

これが番兵法です。


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

Name: asd  ..上級者(17,672ポイント)   Date: 2009/10/29(木) 13:23   No:41083     
Title: Re:番兵と検索関連の質問    
既にconio氏が番兵法については解説してありますが、
配列の一番最後に置かれた検索する値のことを番兵と呼びます。
配列にアクセスする際には配列の範囲外アクセスしないようにしながら検索をしなければなりませんが、
番兵を用意することで範囲外アクセスする前に番兵が止めてくれます。

番兵法が何かが分かってもどうやってプログラムを書けばよいのか分からない場合には
以下の点を教えてもらえると詳しい回答ができると思います。

・アスタリスクさんがどのくらいプログラムができるのか
 →配列の中から指定された値を探すプログラムが書ける、
  配列の要素にアクセスできる
  文字列比較ができる
  などなど
・自分で作ってみたソースがあるならば<pre></pre>で囲んで貼り付けると
 よいでしょう(上では全角の<>で囲んでいますが実際に書き込むときには半角の不等号で囲んでください)


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

Name: asd  ..上級者(19,836ポイント)   Date: 2009/10/29(木) 13:28   No:41084     
Title: Re:番兵と検索関連の質問    
折角ですので質問者さんが貼り付けたソースを整形しておきます。


#include <stdio.h>
#include <stdlib.h>
#define LENGTH 1001 // データの長さ+ 番兵
#define MAX 101 // データの範囲
/*----------------------------------------------
関数プロトタイプ
-----------------------------------------------*/
void GenerateNumbers(int* m, int n);
int Sentinel(int target, int* m, int n);
int NoSentinel(int taget, int* m, int n);
/*----------------------------------------------
**
番兵をつかった線形検索問題
* m[] の中からtarget を探し、配列の中の行番号を求める。
*-----------------------------------------------*/
int main(int argc, char** argv)
{
int m[LENGTH]; // ランダムに発生させる数
int target; // 検索する数
GenerateNumbers(m, LENGTH-1); // ゼロから100 までの乱数を発生させてm に代入
target = strtol(argv[1], NULL, 0); // ターゲットは二番目の引数
printf("番兵なし%d, 番兵あり%d\n",
NoSentinel(target, m, LENGTH-1), // 番兵を使わずに検索
Sentinel(target, m, LENGTH) // 番兵を使って検索
);
return 0;
}
/*----------------------------------------------
線形検索
input int target: 検索する数
int m[]; 検索対象の配列
int n; 配列の次数
戻り値: 何番目に見つかったか、もしなければ-1 を返す
-----------------------------------------------*/
int NoSentinel(int target, int* m, int n)
{
/*n個の要素を持つ配列mからtargetを検索します*/
}

/*----------------------------------------------
番兵を使った線形検索
input int target: 検索する数
int m[]; 検索対象の配列
int n; 配列の次数
戻り値: 何番目に見つかったか、もしなければ番兵を返す
-----------------------------------------------*/
int Sentinel(int target, int* m, int n)
{
/*n個の要素を持つ配列mからtargetを検索します*/
}
/*----------------------------------------------
**
Random number generator
* Generate n random numbers ranging from 0 to 100
* and stored in m[].
* 2008.9.12
* input/output int m[];
* input int n;
*-----------------------------------------------*/
void GenerateNumbers(int* m, int n)
{
int ii;
for (ii=0; ii<n; ii++){
m[ii] = rand()%MAX;
}
}


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

Name: アスタリスク  ..ぴよぴよ(177ポイント)   Date: 2009/10/29(木) 20:46   No:41102     
Title: Re:番兵と検索関連の質問    
conio様asd様ありがとうございます。番兵の意味もおぼろげながらわかってきました。
ところでasdさんが最後に書いてくださったソースプログラムをemacsに貼り付け
ターミナルで実行するとbus errorとか表示されます。何がいけないのでしょうか?
このプログラムでは「秒」が二つ(番兵有りと無し)出力されるんですよね?


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

Name: ドラ  ..かけだし(2,225ポイント)   Date: 2009/10/29(木) 21:28   No:41105     
Title: Re:番兵と検索関連の質問    
>target = strtol(argv[1], NULL, 0);
コマンドライン引数で探索する数値を渡さないとここでバグりそうですね。

>このプログラムでは「秒」が二つ(番兵有りと無し)出力されるんですよね?
なぜ「秒」なのでしょうか?
コメントに嘘が書かれている可能性もありますが
とりあえず、↓のようにコメントされています。

>/*----------------------------------------------
>**
>番兵をつかった線形検索問題
>* m[] の中からtarget を探し、配列の中の行番号を求める。
>*-----------------------------------------------*/


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

Name: box  ..ハッカー(145,149ポイント)   Date: 2009/10/29(木) 21:47   No:41106     
Title: Re:番兵と検索関連の質問    
> ところでasdさんが最後に書いてくださったソースプログラム

これって、質問者さんが最初に投稿されたソースを整形しただけですよね。
検索する関数の中身が何もないですから、正しく動かないのは当然かと。


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

Name: アスタリスク  ..ぴよぴよ(149ポイント)   Date: 2009/10/30(金) 01:17   No:41113     
Title: Re:番兵と検索関連の質問    
int NoSentinel(int target, int* m, int n)
{ int i=-1;while(n) if(m[(n--)-1]==target) i=n; return i; }

int Sentinel(int target, int* m, int n)
{ for(m[n]=target,n=0;m[n]!=target;n++); return n; }

なかみというのはこれでいいでしょうか?
  
  あ秒じゃなくて「番目」で出力されるだけですね すみませんでした


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

Name: non  ..熟練のプログラマー(64,610ポイント)   Date: 2009/10/30(金) 08:48   No:41115     
Title: Re:番兵と検索関連の質問    
> NoSentinel(target, m, LENGTH-1), // 番兵を使わずに検索
> Sentinel(target, m, LENGTH) // 番兵を使って検索
最後の引数が、両方とも配列の次数と書いてあるのに、違うのはわかりにくいのではないか。

NoSentinelの関数では、後ろから探索しているため、探索回数がn回になる。見つかったら
探索をやめた方が探索回数が少なくてすむので、前から探索すべきではないのか。



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

Name: ドラ  ..かけだし(2,323ポイント)   Date: 2009/10/30(金) 20:19   No:41153     
Title: Re:番兵と検索関連の質問    
Sentinel関数のfor文の最初の「 m[n]=target 」の部分で
配列の領域外に書き込んでいます。


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

Name: アスタリスク  ..ぴよぴよ(236ポイント)   Date: 2009/11/02(月) 10:42   No:41278 解決!     
Title: Re:番兵と検索関連の質問    
B評価きましたc狙いだったのでとても満足しています
・[41082] conio
・[41084] asd
・[41105] ドラ
・[41106] box
・[41115] non
様ありがとうございました



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



Name: C言語初心者です。  ..ぴよぴよ(23ポイント)   Date: 2009/10/31(土) 22:51   No:41211       
Title: 困っています知恵を貸して下さい。おねがいします    
/*
プログラム1-4(Prog1-4.cpp)
行列の演算と関数への引き渡し
*/
#include <stdio.h>
#include <stdlib.h>

#define ROWS 3 /* 行数 */
#define COLUMS 3 /* 列数 */

void add_matrix(const double (*)[COLUMS],
const double (*)[COLUMS],double (*)[COLUMS]);
void mlt_matrix(const double (*)[COLUMS],
const double (*)[COLUMS],double (*)[COLUMS]);
void dsp_matrix(const double (*)[COLUMS]);

int main(void)
{
double A[][COLUMS]={{1,2,3},{4,5,6},{7,8,9}};
double B[][COLUMS]={{9,8,7},{6,5,4},{3,2,1}};
double add[ROWS][COLUMS],mlt[ROWS][COLUMS];
int i,j;

for(i=0;i<ROWS;++i) /* 配列初期化 */
for(j=0;j<COLUMS;++j)
add[i][j]=mlt[i][j]=0;
add_matrix(A,B,add);
mlt_matrix(A,B,mlt);
puts("和A+B =");
dsp_matrix(add);
puts("積AB =");
dsp_matrix(mlt);
mlt_matrix(B,A,mlt);
puts("積BA ="); /* 一般に AB と BA は異なる */
dsp_matrix(mlt);
return EXIT_SUCCESS;
}

/* 3×3 型行列の和 */
void add_matrix(const double (*a)[COLUMS],
const double (*b)[COLUMS],double (*c)[COLUMS])
{
int i,j;

for(i=0;i<ROWS;++i)
for(j=0;j<COLUMS;++j)
c[i][j]=a[i][j]+b[i][j];
}

/* 3×3 型行列の積 */
void mlt_matrix(const double (*a)[COLUMS],
const double (*b)[COLUMS],double (*c)[COLUMS])
{
int i,j,k;

for(i=0;i<ROWS;++i)
for(j=0;j<COLUMS;++j)
for(k=0;k<COLUMS;++k)
c[i][j]+=a[i][k]*b[k][j];
}

/* 3×3 型行列の表示 */
void dsp_matrix(const double (*a)[COLUMS])
{
int i,j;
char ch;

for(i=0;i<ROWS;++i)
for(j=0;j<COLUMS;++j){
ch=((j+1)%COLUMS)?'\t':'\n';
printf("%10.6f%c",a[i][j],ch);
}
}
/* EOF */


行列


A三カッコ1 2 3 カッコ

     4 5 6


B三カッコ9  8 カッコ
     6  5
     3  2


を使って2ABを算出するプログラムを作りたいですが、C言語初心者で全く手がつけられません・・・・。
すごく困っています。
教えて下さいお願いします。皆さんの知恵をかしてください。


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


Name: C言語初心者  ..ぴよぴよ(292ポイント)   Date: 2009/10/31(土) 22:53   No:41212     
Title: Re:困っています知恵を貸して下さい。おねがいします    
 書き忘れましたが、自分はC言語初心者で、全く手が出なかったんです。。。
ご迷惑をおかけしますが、知恵をかしてください。分かるから、どうかよろしくお願いいたします。


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

Name: C言語初心者  ..ぴよぴよ(339ポイント)   Date: 2009/10/31(土) 22:54   No:41213     
Title: Re:困っています知恵を貸して下さい。おねがいします    
分かるから、ではなく、 分かるかた の入力ミスです。


すいませんが宜しくお願いします。



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

Name: ちゃお  ..かけだし(2,258ポイント)   Date: 2009/10/31(土) 23:53   No:41214     
Title: Re:困っています知恵を貸して下さい。おねがいします    
/*
プログラム1-4(Prog1-4.cpp)
行列の演算と関数への引き渡し
*/
#include <stdio.h>
#include <stdlib.h>

#define ROWS 2 /* 行数 */ //変更しました
#define COLUMS 3 /* 列数 */
#define COLUMS2 2 //追加しました


void mlt_matrix(const double (*a)[COLUMS], const double (*b)[COLUMS2],double (*c)[COLUMS2]) ;//変更しました
void dsp_matrix(const double (*a)[COLUMS2]) ;//変更しました

int main(void)
{
double A[][COLUMS]={{1,2,3},{4,5,6}}; //変更しました
double B[][COLUMS2]={{9,8},{6,5},{3,2}}; //変更しました
double add[ROWS][COLUMS2],mlt[ROWS][COLUMS2]; //変更しました
int i,j;

for(i=0;i<ROWS;++i) /* 配列初期化 */
for(j=0;j<COLUMS2;++j) //変更しました
add[i][j]=mlt[i][j]=0;

mlt_matrix(A, B, mlt);
puts("積2AB ="); //変更しました
dsp_matrix(mlt);

return EXIT_SUCCESS;
}


/* 3×3 型行列の積 */
void mlt_matrix(const double (*a)[COLUMS], const double (*b)[COLUMS2],double (*c)[COLUMS2]) //変更しました
{
int i,j,k;

for(i=0;i<ROWS;++i)
for(j=0;j<COLUMS2;++j) //変更しました
for(k=0;k<COLUMS;++k)
c[i][j]+=a[i][k]*b[k][j];
}

/* 3×3 型行列の表示 */
void dsp_matrix(const double (*a)[COLUMS2]) //変更しました
{
int i,j;
char ch;

for(i=0;i<ROWS;++i)
for(j=0;j<COLUMS2;++j)
{
ch=((j+1)%COLUMS2)?'\t':'\n';
printf("%10.6f%c",2*a[i][j], ch); //変更しました ここでAB行列に2を掛け算してます
}
}
/* EOF */

で、どうでしょうか。


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

Name: しっぽ  ..中級者(11,121ポイント)   Date: 2009/11/01(日) 00:51   No:41219     
Title: Re:困っています知恵を貸して下さい。おねがいします    
main で mlt_matrix関数を実行する前に、mltの要素を表示してみてください。期待とは違うものが表示されることでしょう。
mlt_matrix関数内で c[i][j] = 0.0; と行列の要素を初期化した方が安全かと思います。



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

Name: スレ主  ..ぴよぴよ(131ポイント)   Date: 2009/11/01(日) 17:44   No:41248     
Title: Re:困っています知恵を貸して下さい。おねがいします    
 チャオさん、しっぽさん、ありがとうございます。感謝します。本当にありがとうございます!!
しっぽさんのコメント、どこをどう直したら安全なのか、もう少し丁寧に教えて頂けませんでしょうか。初心者なので、理解に苦しんでいます・・・・・


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

Name: しっぽ  ..中級者(11,408ポイント)   Date: 2009/11/01(日) 21:22   No:41259     
Title: Re:困っています知恵を貸して下さい。おねがいします    
安全と言ったのは、人(自分)が犯すかもしれない過ちを予想して防ぐ手段を取れば、過ちを防止できるからです。

mlt_matrix 関数はそのままでは mlt_matrix(B,A,mlt); を実行する前にmlt に初期値を与えことが必要条件になっていますが、人は忘れてしまいやすい。そして実際、Date: 2009/10/31(土) 22:51 No:41211 のコードでは、この条件が忘却されており、期待した結果は得られません。なにが忘れられてかというと mlt_matrix(B,A,mlt); を実行する前に mlt に初期値を与えていないということです。

mlt_matrix は行列の演算で多数出くる可能性が十分ある関数なので、mlt_matrix 内で mlt の初期値を設定すれば自動的にそのようなバグを防止できるということです。add_matrix ついても同様です。


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

Name: ちゃお  ..かけだし(2,037ポイント)   Date: 2009/11/02(月) 07:47   No:41271     
Title: Re:困っています知恵を貸して下さい。おねがいします    
main関数で配列の中身を初期化せずに、関数内で配列の初期化をするようにしておけば、関数を他のプログラムでも再利用することができます。




プログラムを組むときは、他人があなたのコードを利用することも意識して、プログラミングすることに慣れておくとプログラミングが上達します。

様々なプログラムをたくさん組む練習をしていけば、追々意識できるようになるかと思います。
まずは、今回のプログラムが、どのような処理の仕方で、行列の掛け算が実現できているのか理解できるようになると良いと思います。

同じ処理をするプログラムでも、人によってプログラムの書き方は違います。
今回のプログラムを自分の考え方で組めるようにしておくと良いと思います。


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



Name: kai  ..初心者(7,391ポイント)   Date: 2009/11/02(月) 01:29   No:41266       
Title: 50章でバグっぽいもの    
前の残像処理の件、
皆さまのアドバイスのおかげで無事解決できました。
ありがとうございます。

話変わりまして、50章をいじっていたところ
shiftキーを押しっぱなしの状態で
左上、左下、右下を押すと正常に動くのでいいのですが
"右上"を押すと上または右にしか進まず、片方しか動かないバグがあるのですが
これは何が原因で、どうしたら右上に動くようになるのでしょうか?
誰か分かる方がいましたら教えてください




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


Name: Justy  ..伝説なるハッカー(456,452ポイント)   Date: 2009/11/02(月) 01:43   No:41267     
Title: Re:50章でバグっぽいもの    
 キーボードがその組み合わせに対する同時押しに対応して
いないんじゃないでしょうか。

キーボード (コンピュータ) - Wikipediaの「3.10 同時押し・ロールオーバー 」参照。

 他のゲームとかアプリでどうなのか調べれば判るかと思います。


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

Name: kai  ..初心者(7,489ポイント)   Date: 2009/11/02(月) 01:58   No:41268 解決!     
Title: Re:50章でバグっぽいもの    
実際に他のゲームで試してみたら同じ現象が起こりました。
なるほど、こんなこともあるんですね。知らなかったです。
とても良い勉強になりました。そして、バグじゃないことが分かってよかったです。
Justyさんありがとうございました。


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



Name: 万次郎  ..かけだし(1,169ポイント)   Date: 2009/11/01(日) 20:29   No:41258       
Title: 左右2方向の歩きが上手くいきません    
こんばんは。ゲームプログラミングの館を参考に勉強させてもらっているのですが、
どうしても2方向のキャラの歩きが上手くいかなくて質問させて頂きました。

640*248のサイズで、16分割、 x軸8 y軸2 キャラのドットのサイズは、80*124です。

右方向のみの歩きは上手くいったのですが、左方向に歩かせようとすると、32ピクセル歩いた時点でキャラが右を向いてしまいます。左方向へ歩きながら32ピクセル歩く度に右を向くのです。

#include "DxLib.h"

typedef struct{
int x, y , img,muki,walking_flag;
}ch_t;

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){

int image[16];
char Key[256];
ch_t ch;

if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //ウィンドウ化と初期化処理

ch.x =320;
ch.y =160;
ch.walking_flag=0;
ch.muki=1;

SetDrawScreen( DX_SCREEN_BACK ) ; //描画先を裏画面に設定
LoadDivGraph( "char.bmp" , 16 , 8 , 2 , 80 , 124 , image ) ;//画像を分割してimage配列に保存

while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){
//↑メッセージ処理 ↑画面をクリア ↑キーボード入力状態取得 ↑ESCが押されると終了

if(ch.x%32==0){ //座標が32で割り切れたら入力可能
ch.walking_flag=1; //歩くフラグを立てる。
if ( Key[ KEY_INPUT_RIGHT ] == 1 ) //右ボタンが押されたら
ch.muki=0; //右向きフラグを立てる
else if( Key[ KEY_INPUT_LEFT ] == 1 ) //左ボタンが押されたら
ch.muki=1; //左向きフラグを立てる

else //何のボタンも押されてなかったら
ch.walking_flag=0; //歩かないフラグを立てる
}

if(ch.walking_flag==1){ //歩くフラグが立っていたら
if (ch.muki==0) //右向きならch.x座標をふやす
ch.x++;
else if(ch.muki==1) //左向きならch.x座標を減らす
ch.x--;
}

ch.img=image[(ch.x%32)/4 + ch.muki*2]; //画像をセット

DrawGraph( ch.x , ch.y , ch.img , TRUE ) ;//画像を描画

ScreenFlip();//裏画面を表画面に反映
}

DxLib_End();
return 0;
}

ご教授いただければ幸いです。よろしくお願い致します。。


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


Name: softya  ..プログラマー(32,432ポイント)   Date: 2009/11/01(日) 21:42   No:41260     
Title: Re:左右2方向の歩きが上手くいきません    
ここの式があやしいです。
ch.img=image[(ch.x%32)/4 + ch.muki*2]; //画像をセット
横に8パターンあるなら、ch.muki*8じゃないとまずいですよ。


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

Name: 万次郎  ..かけだし(1,214ポイント)   Date: 2009/11/01(日) 22:21   No:41261 解決!     
Title: Re:左右2方向の歩きが上手くいきません    
おおおおおおおお!! ありがとうございます、ご指摘された箇所を直したら上手く表示されました!!


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



Name: yskey  ..入門者(3,729ポイント)   Date: 2009/11/01(日) 00:12   No:41215       
Title: DxLibでロード画面を作るには?    
こんばんは、お世話になっています。yskeyです。

DxLibに限らない話だと思うんですが、
そもそも、ロード画面とはどのような仕組みなんですか?
DxLibで作るにはどうするんでしょうか?


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


Name: ちゃお  ..かけだし(2,328ポイント)   Date: 2009/11/01(日) 00:17   No:41216     
Title: Re:DxLibでロード画面を作るには?    
確か過去ログにあったよ。その話。
ロード画面の仕組みについても簡単な説明で答えてくださっている方がいたと思います。
しかも管理人さんが、わざわざロード用画面のプログラムも作って、公開していました。

過去ログを調べてみてください。


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

Name: ちゃお  ..かけだし(2,355ポイント)   Date: 2009/11/01(日) 00:28   No:41218     
Title: Re:DxLibでロード画面を作るには?    
以下のトピックタイトルで2つありました。
Now Loading
ロード中のアニメーション表示


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

Name: yskey  ..入門者(3,765ポイント)   Date: 2009/11/01(日) 12:32   No:41233 解決!     
Title: Re:DxLibでロード画面を作るには?    
>>ちゃおさん、ご返信ありがとうございます。
過去ログも検索してみましたが
「ロード 画面」じゃ出てきませんでした(´・ω・`)アマカッタ


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

Name: Justy  ..伝説なるハッカー(455,514ポイント)   Date: 2009/11/01(日) 12:55   No:41234     
Title: Re:DxLibでロード画面を作るには?    
 めぼしいところだと、こんなところが引っかかりました。


Now Loading の表示方法を教えてください
http://www.play21.jp/board/formz.cgi?action=res&resno=18305&page=&lognum=58&id=dixq&rln=18325

ロード画面
http://www.play21.jp/board/formz.cgi?action=res&resno=35816&page=&lognum=109&id=dixq&rln=35832

ゲーム起動時の画像の表示
http://www.play21.jp/board/formz.cgi?action=res&resno=28831&page=&lognum=90&id=dixq&rln=28864

ロード中のアニメーション表示
http://www.play21.jp/board/formz.cgi?action=res&resno=39564&page=&lognum=121&id=dixq&rln=39656


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

Name: yskey  ..入門者(3,802ポイント)   Date: 2009/11/01(日) 18:51   No:41251 解決!     
Title: Re:DxLibでロード画面を作るには?    
>>Justyさん
ご返信ありがとうございます。
参考になります。


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



Name: くりあ  ..入門者(3,761ポイント)   Date: 2009/10/30(金) 18:03   No:41137       
Title: DXライブラリでのファイルの扱い    
DXライブラリを使っているのですが、ファイルの扱い方がよく分かりません。
ファイルの名前を拡張し付きで指定して、読み込まれるのですが、
ファイルの場所を移動してしまったりすると読み込まれません。
exeファイルの入っているフォルダ内にそのファイルがある事が条件のようなのですが、
これを、移動しても読み込まれるようにしたいのです。そして、下記のように書いてみたのですが、
エラーが出てしまいました。この書き方ではだめなのでしょうか?どうしたら、exeファイルとは、
別のフォルダ内にあるファイルを読み込ませる事が出来るのでしょうか。
初心者で申し訳ありません。

LoadGraph("\テスト\画像\テスト.jpg")

これでエラーが出てしまいます。
初歩的な質問で申し訳ありませんが、お願いします。


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


Name: softya  ..プログラマー(30,595ポイント)   Date: 2009/10/30(金) 18:52   No:41143     
Title: Re:DXライブラリでのファイルの扱い    
ファイルのパス指定ですね。
ルールがありますので、覚えてください。

..\で、1つ上のフォルダを指します。
.\で、今の(カレント)フォルダを指します。今のフォルダはexeをダブルクリックだとexeファイルのある場所、VC++からの起動だとソースのある場所です。
\だけだとルートを指します。実行ファイルのあるドライブのルートを指すわけです。C:\とかD:\と同等です。
なので、"\テスト\画像\テスト.jpg"と書くと"c:\テスト\画像\テスト.jpg"や"d:\テスト\画像\テスト.jpg"と書いたのと同じ事になります。
どう書くと正しいかは実行環境に依存しますので、実行環境を教えてください。



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

Name: くりあ  ..入門者(3,939ポイント)   Date: 2009/10/30(金) 19:33   No:41148     
Title: Re:DXライブラリでのファイルの扱い    
softyaさん、回答ありがとうございました。
ですが、もっと根本的なエラーだったようで…
warning C4129: '' :
こんなエラーが出てくるのですが、よく意味が分からず…
なんだか、ファイルのパスに使ってる¥がエスケープシーケンスだと思われているのでしょうか?
DXライブラリでこの方法でいいのですかね?よく分かりません。

実行環境というのはVC++からの起動です…と答えればいいのでしょうか…

ファイル指定ですが、exeファイルと同じフォルダ内にあるフォルダの中のaaa.jpg
というファイルを指定する場合、
.\aaa.jpgが入ってるフォルダ名\aaa.jpg

と、書けばいいのでしょうか?
それと、先ほどのエラーの意味を教えて下さると助かります。
申し訳ありません。


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

Name: softya  ..プログラマー(31,186ポイント)   Date: 2009/10/30(金) 21:01   No:41157     
Title: Re:DXライブラリでのファイルの扱い    
VC++だと、\マークひとつではエスケープシーケンスだとコンパイラは解釈します。
なので、\\と書いてください。

>ファイル指定ですが、exeファイルと同じフォルダ内にあるフォルダの中のaaa.jpg
というファイルを指定する場合、.\aaa.jpgが入ってるフォルダ名\aaa.jpg

VC++の場合は、ソースコードのあるフォルダがデフォルトだったはずですので、そこからの相対でファイルのあるパスを指定する必要があります。
"..\\Debug\\aaa.jpg"
が正解だと思います。
ただ、これだと他の人にプログラムを配布する時困りますので、プロジェクトの構成プロパティでデバッグの作業フォルダを変更してしまってプログラム内では、
"aaa.jpg"
で動く様にしたほうが良いとは思います。


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

Name: くりあ  ..入門者(4,257ポイント)   Date: 2009/10/31(土) 01:11   No:41164     
Title: Re:DXライブラリでのファイルの扱い    
softyaさん、ありがとうございます。
返事が遅くなってしまいました。すいません。
ですが、やっぱり読み込んでくれません。
どう間違っているのかよく分かりません。
何となく頭でこんがらがってしまって、
どこがどう分からないのかもよく分かりません。
フォルダをソースファイルの場所に移動しました。
変更してしまってすいません。
読み込みたいファイルは、

ソースのあるフォルダ→フォルダ1→フォルダ2→ファイル

となっているように変更しました。
読み込みたいファイルが複数あるのですが、そのファイルが、
フォルダ1の中に複数フォルダがあり、そのフォルダの中にそれぞれファイルが入っているようになっているのですが…
いろいろ試してみたのですがどれも読み込んでもらえず…
エラーはなくなったのですが…

>これだと他の人にプログラムを配布する時困りますので、プロジェクトの構成プロパティでデバッグの作業フォルダを変更してしまってプログラム内では、
"aaa.jpg"
で動く様にしたほうが良いとは思います。

ここの意味がよく分からないのですが、これはどこをどのように変えればよいのでしょう?
違うフォルダ内にある複数のファイルでも意味があるのですか?

理解できなくて申し訳ありません。


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

Name: 羽流布  ..中級者(12,622ポイント)   Date: 2009/10/31(土) 07:07   No:41168     
Title: Re:DXライブラリでのファイルの扱い    
たしかVC++ですと、、、
プロジェクトファイル(拡張子「.sln」「.dsw」等)のあるフォルダがカレントだったはずです。

あと、プログラム中では多分バックスラッシュ2個「\\」でなくてもスラッシュ「/」でいいと思われます。

「フォルダ1/フォルダ2/ファイル」

こんな感じで動きませんか?


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

Name: softya  ..プログラマー(31,259ポイント)   Date: 2009/10/31(土) 10:06   No:41172     
Title: Re:DXライブラリでのファイルの扱い    
あれ?カレントディレクトリが違ってましたか。申し訳ない。

(1)まず、カレントディレクトリを確認してください。
{
TCHAR dir[512];
GetCurrentDirectory(512,dir);
OutputDebugString(dir);
OutputDebugString(TEXT("\n"));
}
これでVisualStudioの出力ウィンドウにカレントのディレクトリが表示されます。

>これだと他の人にプログラムを配布する時困りますので、プロジェクトの構成プロパティでデバッグの作業フォルダを変更してしまってプログラム内では、"aaa.jpg"で動く様にしたほうが良いとは思います

ごめんなさい分かり辛かったですね。
これは起動時のカレントディレクトを強制的に変更する方法です。
(2)VisualStudioのメニューで、[プロジェクト]→[xxxのプロジェクト]→[構成プロパティ]→[デバッグ]→[作業ディレクトリ]で起動時のディレクトリを指定します。

とりあえず(1)の方法で、カレントディレクトリを確認して、相対パスでファイルを開けるようにしてください。(2)に関しては、こんな方法もあるって事で今回は混乱するので忘れてください。申し訳ない。


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

Name: くりあ  ..入門者(4,588ポイント)   Date: 2009/10/31(土) 14:19   No:41184     
Title: Re:DXライブラリでのファイルの扱い    
羽流布さんsoftyaさん解答ありがとうございます。
ですが何度やって成功しません。
最初にやっていた画像をフォルダに入れないで(カレントフォルダよりも、下層のフォルダに入れないという意味)置いて使っていた時は、
読み込んでくれたので、そこがカレントフォルダ?という認識でいいのでしょうか?
なので、そこから1階層下のフォルダ(フォルダ1)、に入れて、
ソースもその部分を書き換えて実行すると、読み込まれました。
「/」でも動きました。
ですが、さらに1階層下げたフォルダに入れて、
パスを書き換えて実行すると読み込んでくれません。
なぜなのでしょうか?

>ごめんなさい分かり辛かったですね。

いえいえ、こちらの理解力が足りなくて申し訳ありません。
丁寧な説明ありがとうございます。



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

Name: softya  ..プログラマー(31,318ポイント)   Date: 2009/10/31(土) 22:23   No:41209     
Title: Re:DXライブラリでのファイルの扱い    
"./フォルダ1/aaa.jpg"
が問題なく読み込める場合にフォルダ1の中にフォルダ2を作って更にフォルダ2にaaa.jpgファイルを入れたとしたら、
"./フォルダ1/フォルダ2/aaa.jpg"
で読み込めるはずです。
それとも違うパス指定でしょか?


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

Name: くりあ  ..入門者(4,844ポイント)   Date: 2009/11/01(日) 00:26   No:41217     
Title: Re:DXライブラリでのファイルの扱い    
フォルダ1までなら、
"./フォルダ1/aaa.jpg"
と書いて普通に読み込まれました。
(最初の./がなくても読み込まれました。最初に./とかをつかずに読み込まれたのはなぜでしょう?
DXアーカイブファイルの説明を試してみたのですが…)
そして、この次にフォルダ1の中のフォルダ2の中にaaa.jpgを入れて、パスを
"./フォルダ1/フォルダ2/aaa.jpg"
としたら読み込まれなくなってしまいました。
理由がよく分かりません。DXライブラリは、1下層より下のフォルダに対応していない?
そんなはずないと思うのですが…

softyaさん。何度も何度も回答ありがとうございます。


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

Name: softya  ..プログラマー(31,840ポイント)   Date: 2009/11/01(日) 09:24   No:41227     
Title: Re:DXライブラリでのファイルの扱い    
>(最初の./がなくても読み込まれました。最初に./とかをつかずに読み込まれたのはなぜでしょう?
DXアーカイブファイルの説明を試してみたのですが…)
省略したらカレントです。私のは念のため書いているだけですね。Linux系ではこの書き方をしないと問題が出るので、仕事で関わったときに身についたクセといっても良いかもしれません(^^ゞ

>そして、この次にフォルダ1の中のフォルダ2の中にaaa.jpgを入れて、パスを
"./フォルダ1/フォルダ2/aaa.jpg"
>としたら読み込まれなくなってしまいました。
うーん。とりあえず私の示した方法でカレントディレクトリを確認してみてください。
本当にカレントディレクトリは狙った場所にあるか疑問です。
あとフォルダ名も単純な英字だけにしてみて試してくださいね。

>理由がよく分かりません。DXライブラリは、1下層より下のフォルダに対応していない?
龍神録はもっと複雑なパス指定をしてますので、そんなはずは無いのですが。


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

Name: くりあ  ..入門者(4,733ポイント)   Date: 2009/11/01(日) 16:45   No:41241 解決!     
Title: Re:DXライブラリでのファイルの扱い    
成功しました!!
本当にありがとうございました。
ファイル名に漢字を使っていたのが原因だったようです。
softyaさん、羽流布さん
本当にありがとうございました。
そして、しょうもないミスでご迷惑をおかけしてすいませんでした。


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

Name: softya  ..プログラマー(32,389ポイント)   Date: 2009/11/01(日) 16:50   No:41242     
Title: Re:DXライブラリでのファイルの扱い    
>ファイル名に漢字を使っていたのが原因だったようです。
なるほど漢字ですか。
コンパイラの文字コードがUNICODE時はOKですがマルチバイト文字(SJIS)では問題の出る漢字がありますので、漢字は使わないほうが無難です。"態"とか色々と。


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

Name: くりあ  ..入門者(4,756ポイント)   Date: 2009/11/01(日) 17:22   No:41246     
Title: Re:DXライブラリでのファイルの扱い    
はい、分かりました。
本当にありがとうございました。


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



Name: まりも  ..初心者(5,353ポイント)   Date: 2009/11/01(日) 13:59   No:41235       
Title: C言語のコンパイラ    
こんにちわ。
まったく情報処理もかじった事のない初心者ですが、
C言語入門書を開いてから丁度1か月経ちました。

用語や色んな概念でつっかえながらやってきて、
ひととおり一冊読み終えたのですが、まだまだ理解が足らないので
もう一冊「猫でも分かるC言語プログラミング」という本で最初から
トライします。

そこで、質問。

初回の参考書では、『gcc』というコンパイラ(すでにインストール済)
エディタは 『メモ帳(notepad) 』を使用していました。

「猫でも分かるC言語〜」では開発環境として
 Microsoft Visual C++ 2008 Express Edition を推奨しています。

 これからインストールしようかと思っているのですが、
 2つのコンパイラがあっても問題ないでしょうか?
 参考意見などあったらお願いします。

 ■使用しているOS■
Windows Vista Home Basic
Intel(R) Core(TM) 2duo CPU E7200 @ 2.53GHz
2.00GB RAM 32ビット オペレーティングシステム


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


Name: softya  ..プログラマー(31,877ポイント)   Date: 2009/11/01(日) 15:01   No:41239     
Title: Re:C言語のコンパイラ    
全然問題ないです。
私のPCでは、マイコン用も含めてCコンパイラだけで4種類ぐらいインストールされてます。


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

Name: softya  ..プログラマー(32,185ポイント)   Date: 2009/11/01(日) 15:20   No:41240     
Title: Re:C言語のコンパイラ    
ついでに、C言語の入門サイトも紹介しておきます。
http://homepage3.nifty.com/mmgames/c_guide/
http://www5c.biglobe.ne.jp/~ecb/c/c00.html
http://www.geocities.jp/ky_webid/c/index.html
特に苦Cがお勧めです。

あと、アルゴリズムやデータ構造の勉強も平行にされてはどうでしょうか?
http://www5c.biglobe.ne.jp/~ecb/algorithm/algorithm00.html
http://www.codereading.com/algo_and_ds/
http://www.geocities.jp/ky_webid/algorithm/index.html

ついでに、このサイトはプログラムを書くという意味でお勉強になります。
http://www.pro.or.jp/~fuji/mybooks/cdiag/index.html
こういう本もお勧めです。
http://gihyo.jp/book/2008/978-4-7741-3362-1


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

Name: まりも  ..初心者(5,500ポイント)   Date: 2009/11/01(日) 17:08   No:41244 解決!     
Title: Re:C言語のコンパイラ    
 softyaさん

 たくさんの参考URLをありがとうございます。
 アルゴリズムも詳しく知りたいと思っていた矢先だったので、
 すごい感謝です!

 苦Cは途中自分がつまづいた所の説明が各項目ごとに載っていて感動!

 こちらに質問で投稿する回数が大分減りそうですw

 コンパイラの件も複数あっても問題無いとの事で安心してインストールできます。

 目標にしているプログラムが書けるようになるまでにはまだまだかかりそうですが、
 知らなかった発見がたくさんあって、楽しんでやってます。
 
 お返事、ありがとうございました。


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



Name: 59221  ..かけだし(1,401ポイント)   Date: 2009/10/31(土) 09:59   No:41171       
Title: タイトルでBGMが鳴らない現象が…お手上げです…    
いつもお世話になっております。
48章でBGMを鳴らそうと取り組んでおります。
ゲームのステージでは鳴るのですが、
タイトル画面だとなぜか音がなりません…。
タイトル画面をstage=10;としています。
stage変数が10でload_bgm(int flag)関数のフラグが0だと鳴るようにしています。

main.cppはこのような構成です。
mainが長すぎるので…メインループの構成だけにしました。


while(ProcessLoop()==0){//メインループ

if(game==0){//タイトル処理
stage=10; //sprintf(str,"bgm/%d_%d.ogg",stage,flag);タイトルは10ステージとして扱っています。
何らかの処理{
game=1;
}
}
if(game==1){//ゲーム処理
music_ini();
switch(func_state){
//龍神録のswitchの構成と同じです。
}
}
bgm_main();//ここにbgm_main()を置いて、変数gameの値に関係なくbgmを制御しています。

if(CheckStateKey(KEY_INPUT_ESCAPE)==1)break;//エスケープが入力されたらブレイク
ScreenFlip();//裏画面反映

}


わかりづらくてすみません…。
何度も試みましたがもうお手上げ状態です…。


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


Name: ひよこ  ..熟練のプログラマー(60,153ポイント)   Date: 2009/10/31(土) 11:52   No:41175     
Title: Re:タイトルでBGMが鳴らない現象が…お手上げです…    
bgm_mainでif(stage_count==60){//はじまって60カウント後に再生と書いてありますが、
これではないのでしょうか?


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

Name: 59221  ..ぴよぴよ(20ポイント)   Date: 2009/11/01(日) 11:18   No:41232 解決!     
Title: Re:タイトルでBGMが鳴らない現象が…お手上げです…    
ひよこ様
無事鳴らすことができました!
本当にありがとうございます!


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




 
[ 1 , ... ]
 
 
管理者画面   RSS   + Powered By 21style +