|
Name: ムンバ ..初心者(7,318ポイント)
Date: 2008/11/05(水) 00:25
No:23484
|
|
Title: 雑談として、お願いします。
|
|
こんばんは。お世話になります。<(_ _)>
今、参考書を参考にC言語の勉強をしています。(初心者の参考書と思われる本の2冊目です。)
以前にインクルードのご解説を頂いた時に、管理人さんからご紹介頂いたページ
http://homepage3.nifty.com/mmgames/c_guide/s_license.html
↑このページ、面白いですね〜♪ハマってます!
仕事の合間に覗いてます。すごく勉強になってます。
ご紹介ありがとう御座いました。(謝
また長くなっちゃうといけないので、本題です。^^;
今、参考書を勉強してる項目は「式と演算子」です。
参考書では、C言語の開発環境(コンパイラ、リンカ、デバッカなど。となってまして)
Visual C++ 2008 Express Edition を使って、C言語を学ぶ初心者向けの参考書です。
お聞きしたいのは、「補数演算子」の所なのですが
(初めてpreタグ使います。タグが、うまく使えます様にっ!^^;)
#include <stdio.h>
int main()
{
int a = 10;
printf("a = %08X\n~a = %08X\n", a, -a);
return 0;
}
10進数を、16進数とか2進数で表す。とか10は32ビットで表すと〜。とか・・・
(この辺は、改めて勉強させて頂きますので)
まだ良く解って無いのですが、このソースを(VC++ 2008で)コンパイルして実行した結果
a = 0000000A
~a = FFFFFFF6
となったのですが、参考書の実行結果を見ると
a = 0000000A
~a = FFFFFFF5
と、なってました。
これは、いかんっ!と思い
1冊目の参考書のコンパイラが、「gcc」というコンパイラを使っての勉強だったので
gccで、このソースをコンパイルした所、結果は
a = 0000000A
~a = FFFFFFF6
こちらにお邪魔する前まで、コンパイラの意味も良く解らない時に使っていた
BCC Developer 1221 でコンパイラした所、結果は
a = 0000000A
~a = FFFFFFF6
でした。ん〜む〜?
そこで、2冊目の参考書を発刊されている方のページがありましたので(クレームとかでは無いですよ。)
そのページを見た所、VC++ 2006 で、ご解説がされていました。
今、勉強している参考書は、2008年9月3日 第2版 第3刷 発行
となってます。
上記のソースの実行結果(~a = FFFFFFF6)が
VC++ 2006 と VC++ 2008とでは違っているのでしょうか?
細かい事かもしれませんが、悩んでます。
VC++ 2006 でコンパイルして実行すると
a = 0000000A
~a = FFFFFFF5
となるのでしょうか?
パソコンのスペックとかの違いでも、この結果が異なるのでしょうか?^^;
VC++ 2006 をお使いの方がいらっしゃいましたら
お時間ある時にでも、実行された結果を頂けたらと思います。
何とぞ、宜しくお願い致します。
838ポイント を手に入れた。
|
|
|
|
Name: 焼き魚定食 ..ぴよぴよ(75ポイント)
Date: 2008/11/05(水) 01:07
No:23486
|
|
Title: Re:雑談として、お願いします。
|
|
こんばんは。はじめまして。
VC++ 2005ですが参考になればと書き込みました。
書かれていたソースをそのままコンパイルしてみたら
a = 0000000A
~a = FFFFFFF6
が出力されました。
多分コンパイラとか、環境は関係ないと思います。
補数演算子というものをはじめて知ったのですが、補数演算子は-ではなく~ だそうです。だから
printf("a = %08X\n~a = %08X\n", a, -a);
ではなく
printf("a = %08X\n~a = %08X\n", a, ~a);
としたら
a = 0000000A
~a = FFFFFFF5
と出力されましたよ。
75ポイント を手に入れた。
|
|
|
|
|
Name: 究極の初心者 ..中級者(10,453ポイント)
Date: 2008/11/05(水) 01:22
No:23487
|
|
Title: Re:雑談として、お願いします。
|
|
焼き魚定食さんも言ってますが、
printf("a = %08X\n~a = %08X\n", a, -a);
//↑ここの部分。
の箇所で「~a」を「ーa」に打ち間違えたか、あるいは、そのコードが本当に参考書に書いてあるならば、参考書の誤りですね。
「~」の演算子は「補数」というらしいです。
私も初めて知りました^^;
おそらく、使用コンパイルで二進数の値などが変わるということはないです。
アドレスなどは、使用状況によって変わりますが・・・・。
参考書が間違えていることも、あまり珍しいことではないですので、確かめてみてください^^;
238ポイント を手に入れた。
|
|
|
|
|
Name: ムンバ ..初心者(7,438ポイント)
Date: 2008/11/05(水) 01:44
No:23488
|
|
Title: Re:雑談として、お願いします。
|
|
もう本当に、自分が嫌です。すみませんでした。(涙
printf("a = %08X\n~a = %08X\n", a, -a);
の
-a が ~a の間違いだったのですね。
焼き魚定食さん、ご解説ありがとう御座いました。
何度もソースを確認してから、こちらの掲示板に質問させて頂いたつもりだったのですが・・・^^;
~a と修正したら
a = 0000000A
~a = FFFFFFF5
と実行結果が出ました。
まだまだ勉強不足です。
と言いますか、確認不足だったのですね。<(_ _)>
どうもありがとう御座いました。
120ポイント を手に入れた。
|
|
|
|
|
Name: ムンバ ..初心者(7,747ポイント)
Date: 2008/11/05(水) 02:10
No:23489
|
|
Title: Re:雑談として、お願いします。
|
|
>printf("a = %08X\n~a = %08X\n", a, -a);
//↑ここの部分。
究極の初心者さん、ご解説ありがとう御座います。
焼き魚定食さんへの、ご返信を打ち込んでる間にかぶってしまいました。申し訳御座いません。
老眼鏡が、そろそろ必要になってるのかもしれません。(汗
勉強させて頂いている参考書を、もう一度見直してみたら
~a
と、なっていました。この辺、ちゃんと確認しないといけないですね。すみませんでした。
私の見間違いでした。(泣
>「~」の演算子は「補数」というらしいです。
補数演算子と参考書になってましたので、補数演算子と使わせて頂きました。
今まで聞いた事が無い様な言葉もたくさん出てきて、困惑しているのですが^^;
勉強させて頂きます。
ありがとうございました。
309ポイント を手に入れた。
|
|
|
|
|
Name: ムンバ ..初心者(7,791ポイント)
Date: 2008/11/05(水) 02:19
No:23490
| 解決!
|
Title: Re:雑談として、お願いします。
|
|
↑解決マーク忘れてました。すみません。
ご解説、どうもありがとう御座いました。(謝
44ポイント を手に入れた。
|
|
|
|
|
Name: ムンバ ..初心者(7,872ポイント)
Date: 2008/11/05(水) 10:48
No:23498
| 解決!
|
Title: Re:雑談として、お願いします。
|
|
おはようございます。
たかぎさん、いつもご解説ありがとうございます。
少し慣れてきたと思ってても、まだまだですね。
しかも、写し違いだったなんて・・・。^^;
お騒がせしました。
今後とも宜しくお願い致します。
ありがとう御座いました。
81ポイント を手に入れた。
|
|
|
|
Name: kaito ..ぴよぴよ(31ポイント)
Date: 2008/11/02(日) 14:19
No:23344
|
|
Title: 横方向にショットを打つには
|
|
龍神録のソースをもとに、横方向にもショットを打たせてみたいのですが、
どのような形で処理をすればいいのでしょうか?
31ポイント を手に入れた。
|
|
|
|
Name: kaito ..ぴよぴよ(71ポイント)
Date: 2008/11/04(火) 23:14
No:23470
| 解決!
|
Title: Re:横方向にショットを打つには
|
|
弧度法ということを忘れていました。
おかげで解決できました。ありがとうございました。
40ポイント を手に入れた。
|
|
|
|
Name: レッド ..ぴよぴよ(170ポイント)
Date: 2008/11/03(月) 09:50
No:23359
|
|
Title: Cのプログラムについて
|
|
こんにちは。今、私は個人的に勉強しているのですが始めたばかりでよくわかりません。
下記の問題を友達にもらったのですが、解答もなく自分でもプログラムがわからなくて困っています。
下記の問題のプログラムを教えてください。よろしくお願いします。
・プログラム説明
文字列をキーボードより入力し、小文字なれば大文字に、大文字ならば小文字に変換して出力する。
・補足
aをAに変換するには
1.16進数の□を加える。(コード表をよく見る)
2.’A’-’a’の結果を加える。
3.関数 toupper を使用する。(ctype h を #include する)
・出力例
入力 ? abCDefGHijKLMnopQrStU
出力 ABcdEFghIJklmNOPqRsTu
です。補足の1,2,3、のどれを使ってもOKです。
プログラムを教えてください。よろしくお願いします。
170ポイント を手に入れた。
|
|
|
|
Name: たかぎ [URL] ..熟練のプログラマー(67,453ポイント)
Date: 2008/11/03(月) 10:14
No:23360
|
|
Title: Re:Cのプログラムについて
|
|
処理系が不明です。(標準入力ではなく)キーボードからの入力内容を取得する一般的な方法はありません。
対象となる文字に制限がありませんが...
> 小文字なれば大文字に
例えば 'ß' が入力された場合、対応する大文字がないのですが、どうすればよいのでしょうか?
> 1.16進数の□を加える。(コード表をよく見る)
> 2.’A’-’a’の結果を加える。
処理系およびロケールを特定しない限り、1および2の方法は使えません。
> 3.関数 toupper を使用する。(ctype h を #include する)
特定ロケールで扱える文字集合だけを対象にすればよいのでしょうか?
その場合も処理系に関する情報が必須です。
133ポイント を手に入れた。
|
|
|
|
|
Name: レッド ..ぴよぴよ(211ポイント)
Date: 2008/11/03(月) 10:16
No:23361
|
|
Title: Re:Cのプログラムについて
|
|
始めたばかりなのでよくわからないです。
初心者なので単純にβとかの文字は使わないです。
41ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..熟練のプログラマー(67,608ポイント)
Date: 2008/11/03(月) 10:25
No:23362
|
|
Title: Re:Cのプログラムについて
|
|
> 始めたばかりなのでよくわからないです。
とりあえず、規約を熟読してください。
一度読んで分からなければ、分かるまで(大きな声で)音読してください。
> 初心者なので単純にβとかの文字は使わないです。
'ß' であって、'β' ではありません。
また、(C言語の)初心者かどうかは関係なく、ドイツ語を扱うなら考慮すべき文字です。
問題の内容に関する質問は、出題した友達にふった方がよいかもしれませんね。
155ポイント を手に入れた。
|
|
|
|
|
Name: レッド ..ぴよぴよ(286ポイント)
Date: 2008/11/03(月) 10:31
No:23363
|
|
Title: Re:Cのプログラムについて
|
|
よくわからないので・・・
プログラムを教えてもらえませんか。
特定とかって言ってもわからないのでお願いします。勝手に特定してもらっても大丈夫です。
75ポイント を手に入れた。
|
|
|
|
|
Name: キャンパス ..ぴよぴよ(43ポイント)
Date: 2008/11/03(月) 11:41
No:23366
|
|
Title: Re:Cのプログラムについて
|
|
>たかぎ氏
そろそろ、「上から目線」の姿勢を改める方がよい。
だれからも指摘がないのをいいことに、
自分の技術力を誇示するためだけであるかのような
「回答してやるぜ。どうせ内容はわからんだろうけどな」
と受け取れる姿勢はいかがなものか。
43ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..熟練のプログラマー(68,017ポイント)
Date: 2008/11/03(月) 12:24
No:23367
|
|
Title: Re:Cのプログラムについて
|
|
> 「回答してやるぜ。どうせ内容はわからんだろうけど」
規約中の
> 「どこがわからないのか」
> 「自分はどこまでやったのか」
> 「結局何が行いたいのか」
> 「自分のC言語の知識はどの程度なのか」
> を明確にしてください。
を守っていない相手に対して、どうやったら「どうせ内容はわからんだろうけど」という判断ができるのか、まったく分かりません。
特に、「自分のC言語の知識はどの程度なのか」も明確ではないのですから、私よりずっと経験を積んだ方かもしれませんよね。
一応、規約では、
> ここではごくごく入門者の人を対象にしています。
> 専門家の方やマスターやドクターの人の質問等は対象としておりません。
とありますが、そもそも規約を読まない、守らない人が、これに従っているとは考えにくいですね。
58ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(873,229ポイント)
Date: 2008/11/03(月) 14:50
No:23371
|
|
Title: Re:Cのプログラムについて
|
|
レッドさん、質問文を消すのは規約違反行為です。
質問した事を先生に怒られたとか、
質問した内容から大学名がわかりそうだとか、
特別な理由がある時はその旨を示してください。
投稿された時点で投稿されたデータは自動的にバックアップがとられますので、
こちらに質問文は保存されています。
数時間以内に理由の提示がなければこちらで質問文を元に戻します。
また、私も常に掲示板をみているわけではないので、
せめて24時間は待ってもらえるとありがたいです。
プログラムは少しずつ考えたら必ずわかります。
皆さんのアドバイスをもとに一緒に少しずつ考えてみましょう。
154ポイント を手に入れた。
|
|
|
|
|
Name: tkmakwins15 ..比類無きプログラマー(91,031ポイント)
Date: 2008/11/04(火) 00:06
No:23406
|
|
Title: Re:Cのプログラムについて
|
|
もし単純にアルファベット(a〜z)だけでいいのならば、小文字から大文字への変換関数はこんな感じになります。
#include<string.h>
char ToUpper(char ch)
{
const char Lower[]="abcdefghijklmnopqrstuvwxyz";
const char Upper[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char *p=0;
if(p=strchr(Lower,ch)){
return 0;
}
return Upper[(int)(p-Lower)];
}
これを適当に文字変換させたいところに入れるだけです。
217ポイント を手に入れた。
|
|
|
|
|
Name: tkmakwins15 ..比類無きプログラマー(91,221ポイント)
Date: 2008/11/04(火) 00:08
No:23407
|
|
Title: Re:Cのプログラムについて
|
|
おっと、これは間違ってますね。正しくは、
#include<string.h>
char ToUpper(char ch)
{
const char Lower[]="abcdefghijklmnopqrstuvwxyz";
const char Upper[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char *p=0;
if(!(p=strchr(Lower,ch))){
return 0;
}
return Upper[(int)(p-Lower)];
}
190ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..熟練のプログラマー(68,285ポイント)
Date: 2008/11/04(火) 00:51
No:23409
|
|
Title: Re:Cのプログラムについて
|
|
元の質問は、大文字を小文字に、小文字を大文字に変換するといった内容だったと思います(細部は忘れました)。
とりあえず、
> 勝手に特定してもらっても大丈夫です。
とのことなので、勝手に特定すると...
#include <conio.h>
#include <ctype.h>
int main(void)
{
for (;;)
{
while (!_kbhit());
int c = _getch();
if (isalpha(c)) c ^= 0x20;
_putch(c);
if (c == '\r')
break;
}
return 0;
}
といったところでしょうか?
処理系はMinGWです。キーボードからの入力は、実行環境を用意する手間が省ける理由から、コンソールからの入力と解釈しています。
124ポイント を手に入れた。
|
|
|
|
|
Name: やそ ..比類無きプログラマー(84,740ポイント)
Date: 2008/11/04(火) 09:55
No:23419
|
|
Title: Re:Cのプログラムについて
|
|
>レッドさん、キャンパスさん
たかぎさんの回答が「上から目線」ということですが、
キャンパスさんの発言(口調)も命令口調で「上から目線」に見られます。
どなたかの発言に対して意見を提示するときこそ、丁寧な口調を心掛けたほうが良いと思いますよ。
たかぎさんの回答はプログラムを勉強し始めた初心者さんにはなじみのない言葉がありますので
難しく感じるかもしれません。(処理系やロケールなど)
だけど、C言語の特徴を考えるとこのような指摘が出るのは至極真っ当なことです。
私は、このたかぎさんの回答に対するトピ主さんの捉え方(反応の仕方)で今後がある程度見える気がしてます。
今回のお題については出題者の「ともだち」(20世紀少年?)
にもう少し前提条件を絞ってもらったほうが良いと思います。
・変換するのはアルファベット(AtoZ)だけでいいのよね?
・C言語の入力って標準入力とか言わなかったっけ?キーボード入力限定って出来るの?
・記号とか数字やロシア語、ドイツ語とかの入力があったときどうすればいいの?そのまま変換せずに表示?エラー?
とかですかね。
まあ、推測ですが、出題者とレッドさんのC言語の環境がほぼ同じとかで、初心者にはあえて処理系などの細かい前提条件を伏せていたのではないでしょうか?(性善説すぎか?)
306ポイント を落としてしまった。
|
|
|
|
|
Name: たかぎ [URL] ..熟練のプログラマー(68,611ポイント)
Date: 2008/11/04(火) 10:10
No:23420
|
|
Title: Re:Cのプログラムについて
|
|
> たかぎさんの回答はプログラムを勉強し始めた初心者さんにはなじみのない言葉がありますので
> 難しく感じるかもしれません。(処理系やロケールなど)
これについては意図的にそうしています。
もし仮に、初心者にも分かりやすいようにと思って噛み砕いた表現にしてしまうと、自分で検索することができなくなってしまいます。
自分の手でウェブ検索できるようにするためには、そのものずばりのキーワードを使った方がよいのです。
自分で検索して、それでも分からなければ、改めて質問すればよいことですから。
> ・変換するのはアルファベット(AtoZ)だけでいいのよね?
> ・C言語の入力って標準入力とか言わなかったっけ?キーボード入力限定って出来るの?
> ・記号とか数字やロシア語、ドイツ語とかの入力があったときどうすればいいの?そのまま変換せずに表示?エラー?
これらについても、かなり高い確率で、A〜Zの26文字とその小文字だけ、キーボード入力というのは実は標準入力、英字以外はそのまま、という解釈でよいと思います。けれども、そう決め付けるわけにはいきませんよね。
「お前らの質問はどうせこの程度だろう」と決め付けるのは、あまりにも相手をみくびっています。
252ポイント を手に入れた。
|
|
|
|
|
Name: やそ ..比類無きプログラマー(85,105ポイント)
Date: 2008/11/04(火) 10:54
No:23422
|
|
Title: Re:Cのプログラムについて
|
|
ここの掲示板を頻繁に閲覧する常連の方々などはたかぎさんの回答の裏にある意図は汲んでおられると思います。
>かなり高い確率で、A〜Zの26文字とその小文字だけ、キーボード入力というのは実は標準入力、英字以外はそのまま、という解釈でよいと思います。けれども、そう決め付けるわけにはいきませんよね。
そうなんですよね。だけどこの辺の前提条件の提示をおろそかにしてしまう質問がポコポコ見られるので回答する方が逆に気を使うことが多くなって大変です(笑)
なんとも世知辛い世の中ですなぁ^^;
>いきなりプログラム教えてくださいと言われてもケンカを売っているようにしか
うけとめられません
これも、最近は多くなってきましたな。
質問者は急いで回答を欲しいということのあせりがそうさせるのでしょうが、
規約を読んで、マナーを守り、見る相手を気持ちよくさせる質問をひとつでも多く見たいものです。
365ポイント を手に入れた。
|
|
|
|
|
Name: non ..かけだし(2,186ポイント)
Date: 2008/11/04(火) 12:54
No:23424
|
|
Title: Re:Cのプログラムについて
|
|
レッド さんへ
まず、アスキーコード表をインターネットなどで検索して、半角アルファベットのコードを調べます。
すると、Aは0x41(16進数)でaは0x61なのが分かります。また、他のアルファベットも常に同じ数だけ
ずれているのに気づくはずです。
この差は、0x61-0x41=0x20です。
>1.16進数の□を加える。(コード表をよく見る)
の答えがこれになります。(小文字を大文字なら0x20を引くことになります)
また、この計算を
'a'-'A' とすれば、やはり、0x20です。
>2.’A’-’a’の結果を加える。
さらに
> 3.関数 toupper を使用する。(ctype h を #include する)
は、小文字を大文字に変換してくれる組み込み関数です。この場合は、小文字でなければ、変換しませんので
小文字かどうかをチェックしなくていいです。
なにが、どうわからないのかを伝えていただければ、もっと適切なアドバイスができますので、どうぞ
ご質問ください。
248ポイント を手に入れた。
|
|
|
|
|
Name: Haru ..上級者(19,429ポイント)
Date: 2008/11/04(火) 13:40
No:23425
|
|
Title: Re:Cのプログラムについて
|
|
>だれからも指摘がないのをいいことに、
誰からも指摘がないと言う事はここの掲示板に来ている方は皆たかぎさんのアドバイスが正しい事であると、
感じているからではないでしょうか?
>自分の技術力を誇示するためだけであるかのような
>「回答してやるぜ。どうせ内容はわからんだろうけどな」
>と受け取れる姿勢はいかがなものか。
私はそのようにはとらえませんでしたが、後半はともかくとして、
一理あるのではないでしょうか?何故なら、自分の技術力を誇示してくれる方がいなかったら
質問形式の掲示板というものは成り立たなくなってしまいますよね?
(たかぎさん、他の回答者さん気を悪くなされたらすみません)
>そろそろ、「上から目線」の姿勢を改める方がよい。
たかぎさんに限らず回答者全てに当てはまることですが、
教えてもらってる立場と、教えてる立場、つまり、先生と生徒という図式になる訳ですよね?
私は教わっている側なので、物を教えていただいている相手に対して上から目線だなどと感じたことがありません。
全ての回答者さんにおいて当人がどう思っているかは別として、
上から目線に見えることに対して問題があるとは感じません。
108ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..熟練のプログラマー(68,556ポイント)
Date: 2008/11/04(火) 18:46
No:23447
|
|
Title: Re:Cのプログラムについて
|
|
「上から目線」といった一過性の流行語にいちいち反応する気はないのですが...
私は、相手が初心者であるとか、未熟であるとかの理由で見下すことはありません。
ただ、相手が子供ならともかく、一端の口を聞く大人であれば、常に教えてもらうだけ、やってもらうだけの立場に終始する人は軽蔑します。相手が子供である場合には、そんな大人にならないように諭すのは年長者としての義務です。
例えば、プログラミングに関しては経験が浅いためにこの掲示板ではいつも質問者であったとしても、経理のことなら得意だというのであれば、他の掲示板やメーリングリストで、簿記などについて回答者になっているというのであればそれでよいのです。掲示板でなくても、他の方法で還元できているのならそれでもよいでしょう。
常に誰かから何かをもらうことしか考えていない者のことを「餓鬼」または「貧乏人」といいます。
255ポイント を落としてしまった。
|
|
|
|
|
Name: dic ..入門者(4,451ポイント)
Date: 2008/11/04(火) 19:52
No:23456
|
|
Title: 関係なくてすいません
|
|
<わからない七大理由>
1.読まない ・・・説明書などを読まない。読む気などさらさらない。
2.調べない ・・・過去スレ、ググるなど最低限の内容も自分で調べようとしない。
3.試さない ・・・めんどくさいなどの理由で実行しない。する気もない。
4.理解力が足りない ・・・理解力以前の問題で理解しようとしない。
5.人を利用することしか頭にない ・・・甘え根性でその場を乗り切ろうとする。
6.感謝しない・・・教えてもらって当たり前。事がすんだらさようなら。
7.逆切れする・・・自分の思うようにならないと逆切れする。
262ポイント を手に入れた。
|
|
|
|
|
Name: キャンパス ..ぴよぴよ(146ポイント)
Date: 2008/11/04(火) 20:48
No:23458
|
|
Title: Re:Cのプログラムについて
|
|
このトピをごらんのみなさま、キャンパスです。
このたびは、私の暴言のせいでたいへんご迷惑をおかけしてしまい、
申し訳ありません。
特にたかぎさんには不愉快な思いをさせてしまいました。
重ねておわび申し上げます。
103ポイント を手に入れた。
|
|
|
|
Name: 究極の初心者 ..中級者(9,927ポイント)
Date: 2008/11/03(月) 18:11
No:23375
|
|
Title: ../lib/DxLib.hって何を指してるんですか?
|
|
ようやく、C言語の入門が終わり、そろそろゲームを作りながら学ぼうとしているんですが、
まず、初めにゲームプログラムの館を学んでます。
そこでは、まず #include "DxLib.h" を宣言してますよね。
しかし、管理人様のサンプルゲーム、リンゴ落ちゲーとかでは
#include "../lib/DxLib.h" から始まっています。
前者と後者を比べると ../lib/ が多いですよね?
この"../lib"は何を指しているんですか?
調べたところ、/libはアセンブリ参照場所の指定っという意味らしいのですが、よくわかりません^^;
こういう意味だよっと、解説できる方、ご教授の方、お願致しますm(_ _)m
247ポイント を手に入れた。
|
|
|
|
Name: kazuoni ..プログラマー(36,393ポイント)
Date: 2008/11/03(月) 18:35
No:23378
|
|
Title: Re:../lib/DxLib.hって何を指してるんですか?
|
|
main.cppがある場所が中心となるんで、
#include "DxLib.h"
となっている場合はmain.cppとDxLib.hは同じ場所にあります。
#include "../lib/DxLib.h"
の場合はmain.cppのあるフォルダの外にでて、(ひとつ前に戻ると表現するのかな?)
そこにあるフォルダ名libの中にあるDxLib.hをさしています。
うまく説明できないですけど^^;
126ポイント を手に入れた。
|
|
|
|
|
Name: 究極の初心者 ..中級者(10,179ポイント)
Date: 2008/11/04(火) 01:02
No:23413
|
|
Title: Re:../lib/DxLib.hって何を指してるんですか?
|
|
>> kazuoniさん
返事がおくれましたが、ご回答ありがとうございました。
なんとなくですが、わかりました^^
確かに、別のフォルダにlibという名前のフォルダがあり、そこにDxlibがありました。
そこを参照にしているというわけですね。
しかし・・・・"/lib"の前の".."とは何を意味しているのでしょうか??
2倍のポイントを手に入れた! 252ポイント を手に入れた。
|
|
|
|
|
Name: 究極の初心者 ..中級者(10,215ポイント)
Date: 2008/11/04(火) 19:31
No:23452
| 解決!
|
Title: Re:../lib/DxLib.hって何を指してるんですか?
|
|
>>管理人さん
なるほど、わかりました。
ご回答ありがとうございました^^
36ポイント を手に入れた。
|
|
|
|
Name: やまた ..ぴよぴよ(53ポイント)
Date: 2008/11/02(日) 12:42
No:23340
|
|
Title: 文字列中に文字がいくつ含まれているか
|
|
はじめまして、ここの掲示板をはじめて利用させていただきます。
(実行画面例)
Input string --->letter
Input charcter ->a
'a' is nothing.
--------------------------
Input string --->letter
Input charcter ->t
't' is 2.
このような実行が行われる処理をしたいです。
やりかたとしてはmain()で入力を行わせて、文字型配列の先頭アドレスと文字を
関数にわたして、そちらでInput charcterで入力した文字の個数を調べさせる処理を行わせ、表示したいです。
よろしくおねがいします。
53ポイント を手に入れた。
|
|
|
|
Name: たかぎ [URL] ..熟練のプログラマー(67,320ポイント)
Date: 2008/11/02(日) 13:13
No:23341
|
|
Title: Re:文字列中に文字がいくつ含まれているか
|
|
処理系も不明ですし、どこから入力してどこに表示するのかも分かりません。
一応、勝手に解釈して作ってみました。
#include <iostream>
#include <string>
#include <algorithm>
int main()
{
std::cin.tie(&std::cout);
std::cout << "Input string --->";
std::string str;
std::cin >> str;
std::cout << "Input charcter ->";
char c;
std::cin >> c;
if (int n = std::count(str.begin(), str.end(), c))
{
std::cout << '\'' << c << "\' is " << n << '.' << std::endl;
}
else
{
std::cout << '\'' << c << "\' is nothing." << std::endl;
}
return 0;
}
C++ですが、処理系には依存していないはずです(自立処理系を除く)。
315ポイント を手に入れた。
|
|
|
|
|
Name: lbfuvab ..初心者(6,917ポイント)
Date: 2008/11/02(日) 13:30
No:23342
|
|
Title: Re:文字列中に文字がいくつ含まれているか
|
|
解釈としては"letter"という文字列中に入力された文字がいくつあるかを表示するプログラムで正しいですか?
48ポイント を手に入れた。
|
|
|
|
|
Name: lbfuvab ..初心者(6,951ポイント)
Date: 2008/11/02(日) 13:48
No:23343
|
|
Title: Re:文字列中に文字がいくつ含まれているか
|
|
連レスすいません。
何個あるか検索する関数を
int search(char *str,char ch)とすると、
1.カウンタ用変数cntを宣言し0で初期化する
2.*strが0ならcntを返して終了
3.*strがchと同じならcntを1増やす
4.strをインクリメントし2に戻る
で良いんじゃないですか?
34ポイント を手に入れた。
|
|
|
|
|
Name: やまた ..ぴよぴよ(217ポイント)
Date: 2008/11/02(日) 17:18
No:23348
|
|
Title: Re:文字列中に文字がいくつ含まれているか
|
|
みなさんありがとうございます。
すいません、説明不足過ぎましたね。
えーと、C言語でlbfuvabの仰る通りです。
#include<stdio.h>
#define MAX_LENGTH 256
int search_ch(char *,char);
int main(void)
{
char str[MAX_LENGTH];
char ch;
printf("\n");
printf("Inpt string : ");
scanf("%s",&str[0]);
printf("Input charcter : ");
scanf("%c",&ch);
int search_ch(&str[0],ch);
return 0;
}
int search_ch(
こんな感じでやろうかと思っています。(ちょっと細かいミスだらけですが
この先どんな風にやればいいでしょう?
164ポイント を手に入れた。
|
|
|
|
|
Name: non ..かけだし(1,691ポイント)
Date: 2008/11/02(日) 17:50
No:23349
|
|
Title: Re:文字列中に文字がいくつ含まれているか
|
|
main関数の
>int search_ch(&str[0],ch);
ですが、値を返す関数ですから、何か変数で受けるようにします。
また&str[0]は通常strとしますので
例えば
int n;
n=search_ch(str,ch); のように変数nに代入します。
関数ではlbfuvabさんの説明にあるように、
先頭から *str!='\0' の間繰り返し、
*str==ch なら カウントすればいいです。
101ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..熟練のプログラマー(67,959ポイント)
Date: 2008/11/03(月) 11:38
No:23365
|
|
Title: Re:文字列中に文字がいくつ含まれているか
|
|
素直に書いてしまうと問題があるでしょうから、少しひねって書いてみます。
#include<stdio.h>
#define MAX_LENGTH 255
#define STR(x) VAL(x)
#define VAL(x) #x
int search_ch(str, ch)
char *str;
int ch;
{
int cnt = 0;
for (int c = *str; c != '\0'; c = *++str)
cnt += (c == ch);
return cnt;
}
int main(void)
{
printf("\n");
printf("Input string --->");
char str[MAX_LENGTH+1];
scanf("%" STR(MAX_LENGTH) "[^\n]",str); scanf("%*[^\n]%*c");
printf("Input charcter ->");
char ch;
scanf(" %c",&ch);
int cnt = search_ch(str, ch);
if (cnt > 0)
{
printf("'%c' is %d.\n", ch, cnt);
}
else
{
printf("'%c' is nothing.\n", ch);
}
return 0;
}
いまいちですが、まあいいでしょう。
330ポイント を手に入れた。
|
|
|
|
|
Name: lbfuvab ..初心者(7,607ポイント)
Date: 2008/11/03(月) 21:12
No:23392
|
|
Title: Re:文字列中に文字がいくつ含まれているか
|
|
意地の悪い事しますねぇ・・・
じゃ、私は素直に
#include<stdio.h>
#define MAX_BUF 512
void mygets(char *buf,int Length);
int Search(char *str,char ch);
int main(){
char str[MAX_BUF],ch;
int cnt;
printf("Input string --->");
mygets(str,MAX_BUF);
printf("Input charcter ->");
ch=getchar();
cnt=Search(str,ch);
if(cnt)
printf("\'%c\' is nothing.\n",ch);
else
printf("\'%c\' is %d.\n",cnt);
return 0;
}
void mygets(char *buf,int Length){
int ch;
while(1){
if((ch=getchar())=='\n' || ch==EOF)
break;
if(--Length>0)
*buf++=ch;
}
*buf='\0';
}
int Search(char *str,char ch){
int cnt=0;
while(*str)
if(*str++==ch)
cnt++;
return cnt;
}
2倍のポイントを手に入れた! 646ポイント を手に入れた。
|
|
|
|
|
Name: やまた ..ぴよぴよ(432ポイント)
Date: 2008/11/03(月) 21:45
No:23395
|
|
Title: Re:文字列中に文字がいくつ含まれているか
|
|
たくさんの返信ありがとうございます。
みなさん色々なご回答大変嬉しく、参考にさせていただき、とても感謝しています。
しかし、私がまだ力不足で皆さんの回答を合わせて見れば見るほど
どれが正しいのか?どうしたらいいのか?判断がつかず、いっぱいいっぱです。
なにより私自身の実力不足故、
”ポインタ”という分野の理解不足という問題点が浮かびあがってきました。
回答いただいた皆さんありがとうございました。
本当にこんな簡単な質問に付き合っていただきとても嬉しいです。
215ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..熟練のプログラマー(68,134ポイント)
Date: 2008/11/03(月) 21:48
No:23396
|
|
Title: Re:文字列中に文字がいくつ含まれているか
|
|
> しかし、私がまだ力不足で皆さんの回答を合わせて見れば見るほど
> どれが正しいのか?どうしたらいいのか?判断がつかず、いっぱいいっぱです。
その思考過程を書いてみてください。
そうすれば、あなたがどこまで理解できて、どこにひっかかっているのかが把握できます。
結果として、力不足を多少なりとも解消できるようになると思います。
52ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..熟練のプログラマー(68,311ポイント)
Date: 2008/11/03(月) 21:59
No:23397
|
|
Title: Re:文字列中に文字がいくつ含まれているか
|
|
lbfuvabさん
> 意地の悪い事しますねぇ・・・
そうですか?
ひねってみたのは、search_ch を分離形式で書いたことと、cnt += (c == ch); の部分ぐらいです。
まあ、この辺はちょっと考えれば書き直せますよね。
ところで、lbfuvabさんのコードは期待通りに動きません。
if(cnt)
printf("\'%c\' is nothing.\n",ch);
else
printf("\'%c\' is %d.\n",cnt);
ですが、ifの条件式の論理が逆です。また、else側のprintfで、%cに対応する実引数が抜けています。
177ポイント を手に入れた。
|
|
|
|
|
Name: non ..かけだし(1,938ポイント)
Date: 2008/11/04(火) 12:36
No:23423
|
|
Title: Re:文字列中に文字がいくつ含まれているか
|
|
やまたさんへ
ポインタは初心者が最初に迎える難関ですよね。がんばってください。
とりあえず、ポインタの前に配列をよく理解しましょう。
lbfuvabさんの、int Search(char *str,char ch) の関数ですが、これをポインタを使わずに配列の表記で
書くと、
int Search(char str[],char ch){
int cnt=0;
int i=0;
while(str[i]!='\0'){
if(str[i]==ch)
cnt++;
i++;
}
return cnt;
}
に、なります。これは理解出来ますでしょうか?
次に、lbfuvabさんが使われている、void mygets(char *buf,int Length) の関数ですが、普通にscanfで
OKです。これは、予定した文字数をオーバーしたときの処理やスペースの入力がscanfではできないので、
安全策だと思われますが、オーバーした文字数や、スペースは入力しないなどの条件を理解した上で使う
という前提です。
247ポイント を手に入れた。
|
|
|
|
|
Name: やまた ..ぴよぴよ(770ポイント)
Date: 2008/11/04(火) 15:43
No:23432
|
|
Title: Re:文字列中に文字がいくつ含まれているか
|
|
たかぎさん
はい、なにがわからないのか、どこが引っかかっているのか
参考書をゆっくり読み返してみます。
本当にありがとうございます。
nonさん
ポインタで思いっきりつまずきました凹
紙に書くなどして考えていてやっとわかりました。
int Search(char str[],char ch){
int cnt=0;
int i=0;
while(str[i]!='\0'){
if(str[i]==ch)
cnt++;
i++;
}
return cnt;
}
というのもわかりました、ありがとうございます。
ひとつひとつ復習していこうとおもいます。
皆様
たくさんのアドバイス、指摘、例文をあげてくださるなど
非常に助かりました。
また、心強いお言葉をいただき、がんばろうと意欲がわきました。
ほんとうにありがとうございました。
338ポイント を手に入れた。
|
|
|
|
|
Name: non ..かけだし(2,329ポイント)
Date: 2008/11/04(火) 15:54
No:23434
|
|
Title: Re:文字列中に文字がいくつ含まれているか
|
|
やまたさんへ
配列が分かったなら、次にこれはわかりますか?
int Search(char *str,char ch){
int cnt=0;
int i=0;
while(*(str+i)!='\0'){
if(*(str+i)==ch)
cnt++;
i++;
}
return cnt;
}
すなわち、*(str+i) と str[i] は同じと言うことですね。
この場合strは配列の先頭アドレスをあらわします。
143ポイント を手に入れた。
|
|
|
|
|
Name: lbfuvab ..初心者(7,664ポイント)
Date: 2008/11/04(火) 17:21
No:23443
|
|
Title: Re:文字列中に文字がいくつ含まれているか
|
|
かえって混乱させたみたいですいません。
適宜間違ってる箇所直して下さい。
たかぎさん、指摘ありがとうございました。
57ポイント を手に入れた。
|
|
|
|
Name: 匿名 ..入門者(3,645ポイント)
Date: 2008/11/04(火) 16:45
No:23440
|
|
Title: 関数ポインタの二元配列
|
|
関数ポインタを二次元配列にしようと思い
void (*Shot[][])(int)
と書いたら「中身が未知あるいはゼロ」と出るんです。
どこが間違っているんでしょうか?
6ポイント を手に入れた。
|
|
|
|
Name: たかぎ [URL] ..熟練のプログラマー(68,811ポイント)
Date: 2008/11/04(火) 16:50
No:23441
|
|
Title: Re:関数ポインタの二元配列
|
|
関数へのポインタに限りませんが、多次元配列にする場合には、二次元目以降(右側)の要素数は必ず指定しなければなりません。
例えば、
int array[][10];
とはできても、
int array[][];
とすることはできないのです。
72ポイント を手に入れた。
|
|
|
|
|
Name: 匿名 ..入門者(3,653ポイント)
Date: 2008/11/04(火) 16:56
No:23442
| 解決!
|
Title: Re:関数ポインタの二元配列
|
|
ええっ!!そうなんですか
今までサンプルをそのままコピーしていたので
void (*Shot[])(int)
とか書いていましたが
void (*Shot[2][5])(int)
とかでも問題なかったんですね・・・
どうもありがとうございました。
8ポイント を手に入れた。
|
|
|
|
Name: ポリ [URL] ..ぴよぴよ(103ポイント)
Date: 2008/11/04(火) 00:47
No:23408
| 解決!
|
Title: 配列
|
|
int a[10]={10,20,30,40,50,60,70,80,90,10};
int b[10]={100,200,300,400,500,600,700,800,900,1000};
int c[10]
配列aと配列bを加算してcに格納すると言う問題が解けなくて困っています!!
103ポイント を手に入れた。
|
|
|
|
Name: kazuoni ..プログラマー(36,462ポイント)
Date: 2008/11/04(火) 00:55
No:23411
|
|
Title: Re:配列
|
|
あ、解決は・・・^^;
文の書き方は分かりますか?
加算の仕方は分かりますか?
for文の使い方は分かりますか?
配列の扱い方は知っていますか?
どこがわからないのか具体的にお願いします。
69ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(873,326ポイント)
Date: 2008/11/04(火) 04:37
No:23417
|
|
Title: Re:配列
|
|
aもbもcも配列要素が10個ずつあるので、
c[0] = a[0] + b[0];
c[1] = a[1] + b[1];
c[2] = a[2] + b[2];
まぁこんな感じですかね。もしそうだと仮定すると
c[0] = a[0] + b[0];
c[1] = a[1] + b[1];
c[2] = a[2] + b[2];
c[3] = a[3] + b[3];
c[4] = a[4] + b[4];
c[5] = a[5] + b[5];
c[6] = a[6] + b[6];
c[7] = a[7] + b[7];
c[8] = a[8] + b[8];
c[9] = a[9] + b[9];
とかけば加算した結果をcに入れることが出来ますよね?
ではこれをfor文を使って書き表すにはどうしたらいいでしょうか?
今どの辺まで理解していらっしゃいますか?
規約に質問の書き方があるので参考にして下さい。
55ポイント を手に入れた。
|
|
|
|
Name: 烏 ..ぴよぴよ(513ポイント)
Date: 2008/11/03(月) 23:20
No:23401
|
|
Title: ファイルへの書き込みについて
|
|
このサイトを見させてもらってゲームが作成したくなり、まずはテトリス等の簡単なものからがいいと
どこかで見た気がしたのでテトリスを作っています。
テトリスのメインは完成したのですが、スコア記録機能もほしくなり、作っていたところ
Debag Assertion Failed!
というエラーが発生してしまいます。
ビルドまではエラーが出ず、デバック時にエラーが出てどこがいけないのかわからず苦戦しています。
下記のコードを追加するまではエラーが出ずに動作していたので、ここが原因だと思います。
FILE *fp;
if((fp=fopen("DAT.dat","rb"))==NULL){
if((fp=fopen("DAT,dat","wb+"))==NULL){
state=10000;
return;
}
else{
for(i=0;i<10;++i){
fwrite(0,sizeof(int),1,fp);
}
fwrite(0,sizeof(char),1,fp);
fseek(fp,0,SEEK_SET);
}
}
for(i=0;i<10;++i){
fread(&score_rank[i],sizeof(int),1,fp);
}
fread(&mode,sizeof(char),1,fp);
fclose(fp);
もしよろしければ、問題点のご指摘とヒントをください。
あと、問題点以外でも、こうしたほうがいいと思ったところがあれば指摘してくださるとありがたいです。
文章などに不快な点があったり、読みずらかったりしたらすいません。(できれば文章の指摘もお願いします)
513ポイント を手に入れた。
|
|
|
|
Name: 烏 ..ぴよぴよ(669ポイント)
Date: 2008/11/03(月) 23:31
No:23402
|
|
Title: Re:ファイルへの書き込みについて
|
|
すいません、追記です。
ここは起動時の初期設定の部分で、DAT.datのファイルがあればそれぞれの変数へ読み込み
ファイルがなければ初期値で作成するものにしたいと思っています。
それぞれの変数は
state :intで宣言しています。main関数で動作分岐の行き先を保持する変数。10000で終了させます。
score_rank:intで宣言しています。スコアを入れる変数です(一応10個用意しています)
mode :charで宣言していますゲームの難易度用の変数です
追記失礼しました。
156ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..熟練のプログラマー(68,161ポイント)
Date: 2008/11/03(月) 23:41
No:23404
|
|
Title: Re:ファイルへの書き込みについて
|
|
処理系が不明ですし、これだけでは断定できないのですが...
> Debag Assertion Failed!
Debugの間違い?
このエラーはどういう出方をしたのでしょうか? そもそも環境ないしは処理系は何でしょうか?
if((fp=fopen("DAT,dat","wb+"))==NULL){
"DAT,dat"であっていますか?
"DAT.dat"の間違いでは?
for(i=0;i<10;++i){
fwrite(0,sizeof(int),1,fp);
}
fwrite(0,sizeof(char),1,fp);
fwriteの第1実引数には、なぜ空ポインタを指定しているのですか?
150ポイント を落としてしまった。
|
|
|
|
|
Name: 烏 ..かけだし(1,413ポイント)
Date: 2008/11/04(火) 00:00
No:23405
| 解決!
|
Title: Re:ファイルへの書き込みについて
|
|
こんなに早くの返信ありがとうございます。
何度も確認したつもりでしたが、環境を書き忘れていますね・・・申し訳ないです。
環境はVisual C++ 2008 Express Editionです。
>"DAT,dat"であっていますか?
>"DAT.dat"の間違いでは?
すいません、完全に打ち間違えていました。
>fwriteの第1実引数には、なぜ空ポインタを指定しているのですか?
0を書き込みたかったので、単純にこう書いていました。
今変数で宣言してそのアドレスを入れたら無事作成されました。
int x=0;
char z=0;
for(i=0;i<10;++i){
fwrite(&x,sizeof(int),1,fp);
}
fwrite(&z,sizeof(char),1,fp);
fwrite等は初めて使ったので、理解できていなかったようです・・・
おかげで解決することができました。
たかぎさんありがとうございました。
このテトリスが完成したら龍神録プログラミングの館をを読ませていただき、作成していきたいので
今後質問させていただいた時もご指摘いただけるとうれしいです。
※解決を付け忘れていたのと、最後の行の部分を完全に違う意味に見えるように書いていてしまっていたので編集させていただきました。すいません 烏
2倍のポイントを手に入れた! 744ポイント を手に入れた。
|
|
|
|
|
Name: 烏 ..かけだし(1,575ポイント)
Date: 2008/11/04(火) 01:43
No:23415
|
|
Title: Re:ファイルへの書き込みについて
|
|
無事完成させることができました。
エラーに苦戦していた時は今日中に完成できると思っていなかったので、本当によかったですw
これで龍神録プログラミングの館を読み始めることができます。
龍神録プログラミングの館のほうでどうしても無理だと思ったら質問させていただくかもしれません。
その時はまたご指摘下さるとうれしいです。
たかぎさん、本当にありがとうございました。
162ポイント を手に入れた。
|
|
|
|
Name: ビギナーン ..ぴよぴよ(218ポイント)
Date: 2008/11/02(日) 14:52
No:23346
|
|
Title: 弾の色を追加したいのですが…。
|
|
初めまして。さっそくですが質問があります…。
b6の画像の弾の色を増やしたいのですが、イマイチ増やし方が分からなくて困っています…。
画像をペイントで開いて弾を増やして保存し、実行してみても弾の周りに白い部分が出てしまいます。
しかし白い部分を透過して保存すると弾の中の白い部分まで透過されてしまい、消えてしまいます…。
どうすれば外の白い部分だけを表示せずに弾を表示できるのでしょうか?
質問の意味が分かりにくくてすみません…^^;
218ポイント を手に入れた。
|
|
|
|
Name: Justy ..ハッカー(253,232ポイント)
Date: 2008/11/03(月) 12:47
No:23368
|
|
Title: Re:弾の色を追加したいのですが…。
|
|
>b6の画像の弾の色を増やしたいのですが
b6の画像というのがなんのことかわからなかったのですが、
龍神録プログラミングの館のプロジェクト添付の弾画像のことかと、
ふと思い当たりました。
それで合っているので有れば、Windows付属のペイントで透明を
扱うのは少々厄介です。
このペイントには透明をきちんと扱うための機能が不足しています。
(厳密には出来なくはないですが・・・)
>しかし白い部分を透過して保存すると弾の中の白い部分まで透過されてしまい、消えてしまいます…。
Adobe Photoshopや PictBear、GIMPなどのグラフィックソフトで
b6.pngを開くとわかるのですが、この弾の絵の周囲は透明情報が入っています。
この透明はペイントの透明とは異なり、ペイントではこの透明情報を扱えないので
消えてしまいます。
>どうすれば外の白い部分だけを表示せずに弾を表示できるのでしょうか?
なのでこの場合は
・ 前述のソフトを使って透明部分を指定する
・ ファイル名に "_a"をつけて透明部分を指定する(DXライブラリ関数リファレンス LoadGraph()参照)
のうちどちらかである必要があります。
464ポイント を手に入れた。
|
|
|
|
|
Name: 藍 ..初心者(7,132ポイント)
Date: 2008/11/03(月) 13:42
No:23369
|
|
Title: Re:弾の色を追加したいのですが…。
|
|
周りの白い部分だけを透過したい場合、私がやっている一番簡単な方法としては、弾の真ん中の白い部分に少しだけ色をつけてやるやり方です。
白だとR255 G255 B255 なのはわかりますかね?
これでは透過されてしまうので、RGBどれかひとつだけ245とかにすると、見た目は白ですが厳密には白で無いので透過処理はされません。
これが私がいつもやっている透過処理回避の方法です。ほかにもキャラなどで白色を使いたい場合もこれを使えばうまくいくと思います。
132ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(873,075ポイント)
Date: 2008/11/03(月) 14:31
No:23370
|
|
Title: Re:弾の色を追加したいのですが…。
|
|
既に解決策は提示して頂いているので他の方法も少し紹介します。
弾画像は白さえあればどんな色にでも出来ます
(画像全体が一色になりますが)
描画の輝度設定でRGBが指定出来ますよね。
そこで例えば(255,0,0)として白い画像を描画すればRの値だけ残した赤の画像として描画されます。
同じ画像で多くの色を表現するときや、レインボー弾みたいなものを作りたい時はこの方法を使ってもいいかもしれません。
後、ここの掲示板は
・ゲームプログラミングの館の質問
・シューティングゲームの館の質問
・龍神録プログラミングの館の質問
・サンプルプログラミングの館の質問
・C言語一般の質問
などの為にあるものなので、何の質問か次から具体的に書いていただけると助かります。
(例えば今回の場合、龍神録プログラミングの館の画像についての質問で、b6とはdat\\bulletフォルダの画像であるなどの補足を)
275ポイント を手に入れた。
|
|
|
|
|
Name: ビギナーン ..ぴよぴよ(265ポイント)
Date: 2008/11/03(月) 23:17
No:23400
| 解決!
|
Title: Re:弾の色を追加したいのですが…。
|
|
なるほど…勉強になりました。
Justyさん、藍さん、管理人さん
皆様丁寧な解説ありがとうございました!
> 後、ここの掲示板は
> ・ゲームプログラミングの館の質問
> ・シューティングゲームの館の質問
> ・龍神録プログラミングの館の質問
> ・サンプルプログラミングの館の質問
> ・C言語一般の質問
> などの為にあるものなので、何の質問か次から具体的に書いていただけると助かります。
> (例えば今回の場合、龍神録プログラミングの館の画像についての質問で、b6とはdat\\bulletフォルダの画像であるなどの補足を)
すみません…。以後気をつけます…m__m
47ポイント を手に入れた。
|
|
|
|
Name: ね〜す ..初心者(5,283ポイント)
Date: 2008/11/03(月) 17:26
No:23373
|
|
Title: 五目並べが、強制終了してしまいます。
|
|
相談させていただきます。
五目並べの五、四などの役を判定する関数を作っていたのですが、
一部を変更すると強制終了(エラー報告を送信する等のボタンが表示されるダイアログ)
を起こしてしまい、理由がわからず困っております。
ファイルを添付してみました。
DxLibは、ファイルサイズの都合で入りませんでした、ごめんなさい><
hantei関数の仕組みを大雑把に言うと、
・碁盤に置いている石の配置を右、下、右下、左下方向に調べ、
調べた方向を行とする二次元配列をそれぞれ作る
・行に含まれる石の並びを簡略化(0無し、1黒石、2白石)
ex)0,0,0,1,1,1,2,2,2,0,0,0・・・
簡略→3,13,23,3・・・といった感じに。
99はカベです。それ以降を調べないように。
・簡略化した数値を元に、三や五などの役を調べる。
という感じです。
ただ、stone_mainといった、黒手、白手にとっての「自分の石」というものを使っているので
少しややこしくなってしまいました><
変更前(正常動作だけど失敗)と変更後(強制終了)のソースを一部掲示してみます。
hantei関数、前半の部分にあります。構造体の初期化(?)を行う部分です。
変更前
for (i=0;i<15;i++) {
mode1.low_start[i][0] = i; // x
mode1.low_start[i][1] = 0; // y
mode2.low_start[i][0] = 0;
mode2.low_start[i][1] = i;
for (j=0;j<10;j++) {
if (i==0) {
mode3.low_start[j][0] = 10-j;
mode3.low_start[j][1] = 0;
mode4.low_start[j][0] = j+5;
mode4.low_start[j][1] = 0;
} else if ( (i>0) && (i<10) ) { // 二重に代入するのを防止
mode3.low_start[10+j][0] = 0;
mode3.low_start[10+j][1] = j;
mode4.low_start[j][0] = 15;
mode4.low_start[j][1] = j+5;
}
}
}
変更後
for (i=0;i<15;i++) {
mode1.low_start[i][0] = i; // x
mode1.low_start[i][1] = 0; // y
mode2.low_start[i][0] = 0;
mode2.low_start[i][1] = i;
}
for (i=0;i<11;i++) {
mode3.low_start[i][0] = 10-i;
mode3.low_start[i][1] = 0;
mode4.low_start[i][0] = i+5;
mode4.low_start[i][1] = 0;
}
for (i=0;i<10;i++) {
mode3.low_start[i+11][0] = 0;
mode3.low_start[i+11][1] = i;
mode4.low_start[i+11][0] = 14;
mode4.low_start[i+11][1] = i+5;
}
いずれも細かい調整が出来ていませんが、><
そもそも強制終了してしまうのでは機能動作チェックが出来ないので困っております。
強制終了が解決できればよいのですが、
正常に機能動作するためにも、アドバイスがあれば是非お願いします。
1,105ポイント を手に入れた。
|
|
|
|
Name: 紅葉 ..かけだし(1,895ポイント)
Date: 2008/11/03(月) 18:04
No:23374
|
|
Title: Re:五目並べが、強制終了してしまいます。
|
|
配列のサイズがわからないので何とも言えませんが
変更後の
for (i=0;i<11;i++) {
mode3.low_start[i][0] = 10-i;
mode3.low_start[i][1] = 0;
mode4.low_start[i][0] = i+5;
mode4.low_start[i][1] = 0;
}
は
for (i=0;i<11;i++)でなくfor (i=0;i<10;i++)でないでしょうか?
133ポイント を手に入れた。
|
|
|
|
|
Name: ね〜す ..初心者(5,562ポイント)
Date: 2008/11/03(月) 21:15
No:23393
|
|
Title: Re:五目並べが、強制終了してしまいます。
|
|
はい、それなんですが、
low_startは行の開始位置を示しています。
mode3(右下方向)に限って考えると、
IHGFEDCBA@◎┬┬┬┐
J
K
L
M
N
O
P
Q
R
S
├
├
├
└
ここで、横をx、縦をy として、
x=0 のとき yを0〜10とり、
y=0 のとき xを1〜10とります。
だから、先に11コ取って、残りの10コ、計21コを取っています。
15x15マスの碁盤で、残りの4マスを残す理由は、
角の方では、右下方向に並べても、三や四にならず、三三等にも影響しないので無視しています。
あれ、もしかして私はfor文を完全に勘違いしているんでしょうか。
279ポイント を手に入れた。
|
|
|
|
Name: dic ..入門者(3,116ポイント)
Date: 2008/11/03(月) 19:54
No:23379
|
|
Title: 無題
|
|
たびたび質問すいません
今下のコードを書いているのですが コンパイルエラーがでてリンクできません
どうすればいいのでしょうか?
#include <stdio.h>
class CNode;
typedef (CNode::*FUNC)(void);
class CNode {
double x;
void hoge() { }
public:
CNode();
FUNC func;
};
CNode::CNode() {
x = 0.0;
func = &CNode::hoge; // ここでエラー
func = this->hoge; // これもエラー
}
void main()
{
}
//ここでエラーのところにメンバ関数へのポインタを代入したいのですが
うまくいきません
コンパイラはVC++6.0です
296ポイント を手に入れた。
|
|
|
|
Name: dic ..入門者(3,540ポイント)
Date: 2008/11/03(月) 20:18
No:23383
|
|
Title: またつまづいたので質問します
|
|
解決ボタン押したのですが
またつまづいたので質問します
また、下の // ここでエラー
というところでコンパイルエラーになってしまいます
どうすればいいのでしょうか?
メンバ関数アクセスはprivateですが
そこは無視してください(ってこのレベル答えれるのなら分かるかな
#include <stdio.h>
class CNode;
typedef void (CNode::*FUNC)(void);
typedef void (CNode::*FUNCTION)( CNode *node );
class CNode {
double x;
void hoge() { printf( "CNode::hoge called.\n" ); }
void show( CNode *node ) { printf( "%f\n", node->x ); }
public:
CNode();
FUNC func;
FUNCTION function;
};
CNode::CNode() {
x = 0.0;
func = CNode::hoge;
function = CNode::show;
}
void main()
{
CNode node;
node.func(); // ここでエラー
}
402ポイント を手に入れた。
|
|
|
|
|
Name: dic ..入門者(3,654ポイント)
Date: 2008/11/03(月) 20:37
No:23385
|
|
Title: Re:またつまづいたので質問します
|
|
>たかぎさん
お返事ありがとうございます
教えられた通りコンパイルしてみましたがエラーがでました
node.*func(); // ここでエラー
error C2065: 'func' : 定義されていない識別子です。
error C2297: '.*' : 不正な右オペランドです。
とでます
114ポイント を手に入れた。
|
|
|
|
|
Name: dic ..入門者(3,764ポイント)
Date: 2008/11/03(月) 21:06
No:23391
| 解決!
|
Title: Re:またつまづいたので質問します
|
|
>Justyさん たかぎさん
お返事ありがとうございます
お二人方どちらの方法でもいけました
ありがとうございました
2倍のポイントを手に入れた! 110ポイント を手に入れた。
|
|
|
|
Name: ナミ ..ぴよぴよ(64ポイント)
Date: 2008/10/31(金) 03:13
No:23270
|
|
Title: 初心者です
|
|
13章での質問なのですが、
shot.cppファイルには具体的に何を書けば良いのでしょうか?
書いてあるソースをコピーしたのですが、エラーになってしまいます。
ご助力お願いします。
64ポイント を手に入れた。
|
|
|
|
Name: ナミ ..ぴよぴよ(81ポイント)
Date: 2008/11/03(月) 21:00
No:23387
| 解決!
|
Title: Re:初心者です
|
|
解決しました。
ご丁寧に有難う御座いました。
17ポイント を手に入れた。
|
|
|
|
Name: ..かけだし(1,073ポイント)
Date: 2008/10/28(火) 02:13
No:23156
|
|
Title: スペルミス?
|
|
ゲームプログラミングの館の、5. 色を指定して線・円・四角形を表示する
これの四角形の項目の塗りつぶさないの部分にFLASEって書いてあるんですがこれFALSEのスペルミスですよね?
どこにミス報告するか調べるの面倒だったんでここにしちゃいました
あんま過去ログとか見て無いので既出だったらすみません
133ポイント を手に入れた。
|
|
|
|
Name: 初心者 ..初心者(8,489ポイント)
Date: 2008/11/02(日) 21:48
No:23353
|
|
Title: Re:スペルミス?
|
|
はじめまして
とても充実したコンテンツで大変お世話になっております
気になった点があったのでご報告させていただきます
http://dixq.net/g/#p
こちらのテクテク歩くサンプルプログラムですが
count%60/20+6 の部分をこのまま使うと向きが←←↓になってしまいます
count%60/15+12 だとテクテク歩いていました
サンプルの絵が変わったようですので、その影響かと思うのですが
間違っていたらすみません
同類の内容なのでスレお借りしました
167ポイント を手に入れた。
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(869,843ポイント)
Date: 2008/10/31(金) 02:33
No:23269
|
|
Title: HPの名前改名します (名前募集)
|
|
皆様、いつもC言語何でも質問サイトにおこし下さりありがとうございますm(_ _)m
皆様のお力添えでここまで運営してこれたこと、感謝いたしております。
さて、このたび「C言語何でも質問サイト」というHPの名前を改名することにしました。
(決定ではありません)
・・というのも、
時々うちのサイトのリンクを張っていただいているのをみかけるのですが、
ほとんどその紹介記事がゲームプログラムに関する記述であるにもかかわらず、
「C言語何でも質問サイトさんを参照して下さい」のように書いてあり、
ふと聞いただけではなかなかうちのサイトの内容がわからない名前になってしまっているためです。
ここのサイトに来る人のほとんどはアンケート結果やアクセス数によって
ゲームプログラミングを目的としていることが予測され、
またサイトの内容もほとんどがゲームプログラミングに関する物になっています。
最初はCの質問・回答をする事を主体としたサイトでしたが、内容が変わってきたので、
ゲームプログラミングの解説などを主体としている事が
聞いただけで解るような名前にしたいなと思っています。
「C言語」と「ゲームプログラミング」というキーワードを入れたいなと思ったのですが、
単純にくっつけただけでは他に既に存在しているので、差別化できません。
「ゲームプログラミングの館」は既にあるので、使えませんし、
ゲーム〜の館、龍神録〜の館、サンプル〜の館から成っている事を考えると何かその上に位置するような名前でもいいなと思ったりしています。
ただここの掲示板の方針は変わりませんが(どんな質問でもOK。宿題とかも歓迎しますというスタイル)、
HPの名前がゲームプログラミング主体であるものに変更されると質問が
そちら限定になってしまうのではないかという懸念もあります。
(元々C言語何でも質問サイトという名前にしたのは、初回訪問者が質問しやすい環境にしたかった為です)
ですので、否定・賛成意見も含め、皆様にご意見頂ければと思いトピを立てさせていただきました。
※参考情報※
1日のアクセス数(多い順)
・ゲームプログラミングの館 2000
・龍神録の館 1200
・シューティングの館 1000
・掲示板 1000
・四聖龍神録Plus 800
・トップページ 700
・サンプルプログラミングの館 300
79ポイント を手に入れた。
|
|
|
|
Name: conio ..かけだし(1,560ポイント)
Date: 2008/10/31(金) 08:20
No:23273
|
|
Title: Re:HPの名前改名します (名前募集)
|
|
「〜の館」に統一した方が分かりやすいかもしれないですね。
ただ、「C言語」「ゲームプログラミング」というキーワードを入れようとすると、どうしても長くなりすぎると思います。
むしろ、"ゲーム以外"のC言語に関する質問も受け付けているので、
「ゲームプログラミング」のキーワードは入れなくてもいいかなと自分では思います。
と言うわけで、自分は下記の名前を考えてみました。
【名前改名案】
「Cプログラム疑問解決の館」
113ポイント を手に入れた。
|
|
|
|
|
Name: 翡翠 ..入門者(4,338ポイント)
Date: 2008/10/31(金) 13:07
No:23281
|
|
Title: Re:HPの名前改名します (名前募集)
|
|
conioさんの仰るように、私も「〜の館」とするのがいいと思います
全部「〜の館」で統一した方が、『サイト内で一纏まりになっている』って感じがしますので
名前に『C言語』は入れるとして、『ゲームプログラミング』はやっぱり長いですよね……
かといって、私にいい案が思いつくわけでもありませんが……
他の方の案にお任せします
156ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(870,055ポイント)
Date: 2008/10/31(金) 13:15
No:23282
|
|
Title: Re:HPの名前改名します (名前募集)
|
|
ご意見ありがとうございます。休憩が後1分しか時間が無いので簡単にだけしかかけませんごめんなさい^^;
うちのHPは
C言語何でも質問サイト
+ ゲームプログラミングの館
+ シューティングゲームの館
+ 龍神録プログラミングの館
+ サンプルプログラミングの館
+ 四聖龍神録Plus
+ C言語何でも質問掲示板
という構造で出来ていますよね。
C言語何でも質問サイトというのはいろんな館が集まった総称といいますか、
このHP自体の名前になっています。
ですので、フォルダで言えば館がサブフォルダで、HPの名前がメインフォルダとでもいいますか。
なので、館の上に存在しているような名前にした方がいいかな?と思っています。
136ポイント を手に入れた。
|
|
|
|
|
Name: 御津凪 [URL] ..プログラマー(29,206ポイント)
Date: 2008/10/31(金) 13:28
No:23284
|
|
Title: Re:HPの名前改名します (名前募集)
|
|
では、私からもいくつか。
キーワードは"C"と"館"にしてみました。
・C言語の館 (広い意味でC言語を扱っているサイトという意味)
・C言語資料館β (Google を真似る。発展途上という意味)
・C言語質問相談所(掲示板名?)
・C館 (短すぎ?)
・C言語の館 〜 C language castle
(東方の命名っぽく)
・館「C言語の徒然なる総称」
(東方の命名っぽく)
最後の方、ふざけすぎたかも^^;
230ポイント を手に入れた。
|
|
|
|
|
Name: kazuoni ..プログラマー(36,267ポイント)
Date: 2008/10/31(金) 13:49
No:23285
|
|
Title: Re:HPの名前改名します (名前募集)
|
|
C館いいですねww
ただ、これだと周り(ゲームプログラミングの館等々)
が長く感じちゃいますかね。
そうすると
RPG館
STG館
龍神録館
サンプルC館
C質問館
ですか^^;
60ポイント を手に入れた。
|
|
|
|
|
Name: conio ..かけだし(1,766ポイント)
Date: 2008/10/31(金) 14:08
No:23287
|
|
Title: Re:HPの名前改名します (名前募集)
|
|
>>ですので、フォルダで言えば館がサブフォルダで、HPの名前がメインフォルダとでもいいますか。
>>なので、館の上に存在しているような名前にした方がいいかな?と思っています。
要するに、次のような包含関係になっていたほうが良い訳ですね。
「館 ⊂ "●"」
"土地"、"屋敷"、"王国"、"島"、"楽園"などですかねー。
・C言語王国
・C言語の楽園
・C言語屋敷
・C言語広場
・C言語何でも質問広場
なかなか考えるのは難しいですotz
206ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) ..伝説なるハッカー(870,402ポイント)
Date: 2008/10/31(金) 14:14
No:23288
|
|
Title: Re:HPの名前改名します (名前募集)
|
|
皆さん、ありがとうございます。
>Mistさん
>・C言語でSTG作成の館
>・C言語ゲーム作成の館
やっぱ館で統一したほうがいいですかね?
HPの名前は館が集結しているものの名前なんですが、
A館、B館、C館ってあったときその総称ってなんなんですかね(^^;
>御津凪さん
>・C言語の館
そうですね〜無難なとこですね。ただこれだとゲームプログラム解説の内容が主だから改名するという本々の目的をちと満たさないかもしれませんが‥、この方がスマートかもしれませんね。
>・C言語資料館β
ふむふむ。
>・C言語質問相談所
以前とあまり変えないということですね。
>・C館
短ッ!
覚えるのは楽かもしれないですねw
>・C言語の館 〜 C language castle
サブタイトルで内容表現するのは名案ですね!
>・館「C言語の徒然なる総称」
(笑)
堅苦しく名付ける必要は全くないので覚えやすく、HP内容が伝わるものならむしろありだと思います!
猫でもわかるC言語
みたいに、個性的で、かつユーモアがあり、そしてHPの内容がうまく伝わる名前が理想ですねぇ。
>kazuoniさん
あ〜なるほど、他の館を一緒に改名するってことですね。
「ゲームプログラミング」って言葉自体長すぎるんですよねf^_^;
なんか漢字2文字とかで表せたらいいのにw
347ポイント を手に入れた。
|
|
|
|
|
Name: Dixq(管理人) ..ぴよぴよ(203ポイント)
Date: 2008/10/31(金) 14:24
No:23289
|
|
Title: Re:HPの名前改名します (名前募集)
|
|
>conioさん
>「館 ⊂ "●"」
そうですね。
>"土地"、"屋敷"、"王国"、"島"、"楽園"などですかねー。
お〜なるほど。大地や島、楽園‥。もっと大きく見ればよかったわけですね。
屋敷はなんとやく館を包括している感じしますね。いいかもしれません。
「ゲームプログラムの解説が主体ではあるが、それとは関係なく質問できる掲示板もある」って表現はなかなかタイトルだけじゃ伝えられないですねf^_^;
こうなったら変に何かに偏った名前付けるより思い切って全く無関係な固有名詞考えるとか‥w
ん〜f^_^;
203ポイント を手に入れた。
|
|
|
|
|
Name: lbfuvab ..初心者(6,832ポイント)
Date: 2008/10/31(金) 16:04
No:23292
|
|
Title: Re:HPの名前改名します (名前募集)
|
|
「Dixqのゲーム開発城(C,C++)」とかどうでしょう?
但し、無料ゲーの配布所と誤解されそうな気もしますが・・・
54ポイント を手に入れた。
|
|
|
|
|
Name: JEX ..かけだし(1,172ポイント)
Date: 2008/10/31(金) 16:12
No:23294
|
|
Title: Re:HPの名前改名します (名前募集)
|
|
ゲームに特化してしまうと大学生の課題の投稿などがしにくくなるかも
しれないので私としては今のままでもいいかな〜と思っていたりします。
・DXプログラムフォーラム
・ゲーム開発フォーラム
・C言語開発フォーラム
・C言語ワールド
・プログラム何でも掲示板
・ゲ製作質問掲示板
・DixQuestions
・ゲーム製作質問ちゃんねる
・ゲーム作りたい人の為の掲示板
・ゲーム製作者掲示板
とりあえず簡単に思いついたものを・・。
193ポイント を手に入れた。
|
|
|
|
|
Name: Haru ..上級者(19,321ポイント)
Date: 2008/10/31(金) 17:27
No:23295
|
|
Title: Re:HPの名前改名します (名前募集)
|
|
>ゲームに特化してしまうと大学生の課題の投稿などがしにくくなるかも
>しれないので私としては今のままでもいいかな〜と思っていたりします。
私も同意見ですね!!
もし、変えるなら...
猫よりわかる!C言語!
...怒られるかな?笑
111ポイント を手に入れた。
|
|
|
|
|
Name: J ..中級者(11,572ポイント)
Date: 2008/10/31(金) 17:55
No:23297
|
|
Title: Re:HPの名前改名します (名前募集)
|
|
お久しぶりです
「C言語プログラミング総合の館」
ではどうでしょうか?なんか今ひとつですね・・・
個人的には
「総合」「本館」いうようなキーワードが入っているといい感じかと思います。いかにも総本山って感じがするからです。
そして「プログラミング」は必須ですよね。具体性に富んでます。
私もJEXさんに賛同ですので「ゲーム」は含めない方がいいかと思います。
何かにあやかるのも面白いかもしれませんね。
うーん・・・
26ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(870,822ポイント)
Date: 2008/10/31(金) 20:58
No:23299
|
|
Title: Re:HPの名前改名します (名前募集)
|
|
>lbfuvabさん
>Haruさん
ハンドルネーム入れると個性的になっていいですねw
確かに無料ゲーの配布所っぽいですね。う〜ん。
>猫よりわかる!C言語!
>「明解 ゲームプログラミング」とかですかwww
おもしろいですね〜w ただ、
ただでさえ龍神録でパクリ魔とか称号付きそうなのに、
これで完全に定着しそうですw
>JEXさん
沢山案を出してくださりありがとうございます。
そうですね〜、はやりゲーム主体であるような名前にすると
質問が偏りそうですね・・・。
>Jさん
あ〜なるほど、本館ですね。
それなら館が中に沢山あっても自然ですね。
そしてゲームというキーワードは含めない方がよさそうですね。
-----------------------------------------
皆様ご意見ありがとうございます。
せっかく皆さんに沢山の案を頂いたのですが、
どうもサイトの名前は変えないほうが言いという流れのようですね;
元々変えたい理由は、ゲームプログラム主体なのに、ここの名前に
そのキーワードが入ってないからだという事なので、
ゲームというキーワードを入れないなら変える必要がないんですよね^^;
う〜ん、変に名前弄ったりしない方がいいですかね〜;
380ポイント を手に入れた。
|
|
|
|
|
Name: ムンバ ..初心者(6,480ポイント)
Date: 2008/10/31(金) 22:16
No:23300
|
|
Title: Re:HPの名前改名します (名前募集)
|
|
こんばんは。
間に合わなかったみたいですね。(笑
今日は超暇だったので、勝手にタイトル名を考えて適当にメモってました。
一応、添付させて頂きます。自分の趣味みたいなものです。無視して下さいっ!
何故かテキストファイルが大好きな自分です。(爆
いや。本当に考えるの楽しかったですよ〜♪w
こちらにお邪魔して、まだ日が浅いのでうまく伝わらないと申し訳無いのですが
現在のタイトル「C言語何でも質問サイト 〜疑問・宿題解決します〜」
ずばり、好きですっ!
もし、タイトルを変更されるのでしたら
新しいタイトル (メインタイトル)
C言語何でも質問サイト 〜疑問・宿題解決します〜 (サブタイトル)
の様な形ででも、残して頂けないかな〜?と、メモ帳をつまみ食いしながら考えてました。
こちらのタイトルが思いで深いと思われてる方々も、たぶんいらっしゃると思うんです。
TOPページに行けば、「ゲームプログラミングの館」という
「ゲーム」の文字が入った立派なサブタイトルがあるではないですか〜?
などとも考えてました。^^
何か日記や作文みたいになっちゃって、すみません。^^;
では、今日もゲームプログラミングの館で遊ばせて(勉強させて)頂きますっ!
PS:書き捨てごめん(なさい^^)っ!お邪魔しました〜♪ε=ε=┏( ∩_∩)┛
335ポイント を手に入れた。
|
|
|
|
|
Name: 雷 ..プログラマー(35,273ポイント)
Date: 2008/10/31(金) 23:13
No:23302
|
|
Title: Re:HPの名前改名します (名前募集)
|
|
乗り遅れた・・・orz
今の名前がいいと思います。
特に「何でも」のところが・・・・・・・w
問題となってるのが
>時々うちのサイトのリンクを張っていただいているのをみかけるのですが、
>・・・(略
のようなので、HNみたいなのや、略した物を作ってみるというのはどうでしょうか?
「これならgoogle様でここしか引っかからないよw」
とか、そんな感じのが広まればいいんじゃないかな〜とか思っていますwww
>本館、総合の館…etc
など、良いのがいっぱいあるように思うのでwww
試しに「C本館」でググると、完全ヒットは少ないようなので・・・w
ttp://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=C%E6%9C%AC%E9%A4%A8&num=50
どうでしょうか?
↓自分の考えです
CQBD総本山:C言語質問掲示板管理人様HN)
CQD本館にしたかったんですが、「CQD」が検索で引っかかるのでwww
286ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(871,595ポイント)
Date: 2008/11/01(土) 02:08
No:23309
|
|
Title: Re:HPの名前改名します (名前募集)
|
|
>ムンバさん
おぉ、沢山の名前の案ご提供くださりありがとうございます。
DixQ & Aとかw
ハンドルネームをもじって内容とかけたわせた題名にするのもよいですね。
しかし
「SE(システムエンジニア)を目指す方へ!CCNA/MCP/JAVA/LPIC等の資格取得コースが充実:ナガセITスクール」
とか長いですね〜^^; ぐぐってみましたが、googleに全部題名が表示されていませんでしたw
「酒と女とC言語」とかかなり不順的なイメージがw
ありがとうございます。改名の際は是非参考にさせていただきます。
>雷さん
>特に「何でも」のところが・・・・w
「何でも質問OK!」とよく書くのでそういう名前にしてみました。
ま〜C以外の話題でもなんでもありって書いてありますが、
あまりCにあきらかに関係ない話題は投稿しにくいですよね^^;
まぁC言語に関することなら何でもOK!って意味に捉えてもらっても充分いいと思いますが。
>ココしか引っかからない
それはいいですよね。または複数ひっかかっても1位にくるような名前にしたいですね。
龍神録の時もそういう意味で検索にひっかからない名前を考えました。
今知ったんですが、グーグルでもヤフーでも「ゲームプログラミング」で検索したら
ゲームプログラミングの館が1位にくるんですね。
やはり題名とほぼ完全に一致するのは強いんですかね。
重要な単語は題名にするのがいいかもしれませんね。
>CQBD総本山
CQBDって何の略です?
416ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..熟練のプログラマー(67,005ポイント)
Date: 2008/11/01(土) 09:33
No:23316
|
|
Title: Re:HPの名前改名します (名前募集)
|
|
> >ココしか引っかからない
> それはいいですよね。または複数ひっかかっても1位にくるような名前にしたいですね。
サイト名を付けるときはそれが必須条件ですね。
# うちの変な会社名も、そうした狙いがかなりありますので。
ざっと調べた感じでは、「C言語erの街」とかだと、数日中に間違いなく1位にあがります。
「Cげんがー」や「Cゲンガー」は他でも使っていますが、「C言語er」をタイトルに使っているところはないので確実でしょう。それに覚えやすいですし。
> やはり題名とほぼ完全に一致するのは強いんですかね。
これはその通りです。
SEOの観点からすれば、<title>タグが一番重要です。
117ポイント を手に入れた。
|
|
|
|
|
Name: 究極の初心者 ..中級者(9,680ポイント)
Date: 2008/11/01(土) 19:59
No:23327
|
|
Title: Re:HPの名前改名します (名前募集)
|
|
遅くなりつつも・・・・
「@ホームC言語」
ってのはどうです?
ここの掲示板の一番の強みは、暖かく答えてくれるアットホームな感じが一番だと思います。
ホームといえど、家だけではなく、本家や本拠地という意味合いもありますし、一番上に持ってきても大丈夫かと。
宿題もホームワークといいますし、家の中にはゲームもあるし(ここは無理があるw)
館ということを変えるのに抵抗がなければ、「ゲームプログラミングの部屋」などにすると、また統一感がでますが。
アットホームC言語より、@ホームC言語のほうが洒落てるかな?っと思い、@にしてみました。
参考までにどうぞ^^;
155ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(872,567ポイント)
Date: 2008/11/02(日) 10:14
No:23337
|
|
Title: Re:HPの名前改名します (名前募集)
|
|
ありがとうございます。
おぉ、いいですね〜♪なんだか暖かい感じしますね。
それにここの方針も伝わる良い名前ですね。
ゲームという言葉を入れないのなら、既に何となく知ってくれている人の為にも、
改名はしない方がいいと思いましたが、
この名前なら目的が違っても改名もしたい気持ちになりました。
それに「@ホームC言語」位の長さならサブタイトルで
ゲームプログラムの解説から疑問・宿題解決する掲示板まであるということ詳細説明しても
全然OKな感じですね。
・・また悩み始めてしまったw
|
|
|
|
Name: fumi ..ぴよぴよ(884ポイント)
Date: 2008/11/01(土) 21:19
No:23331
|
|
Title: マルチスレッドでのリンクエラー
|
|
お世話になります。
今回、_beginthreadex関数でマルチスレッドを作って処理をするプログラムを書いたのですが、
リンクエラー:LNK2019が出てしまいます。
おそらくランタイムライブラリの設定がおかしいのだろうと思い、マルチスレッドデバッグ(/MTd)
に設定(Debugモードの場合)したのですが、それでも同じエラーが出てしまいます。
マルチスレッドで処理する際に考えられるリンクエラーには他にどのようなものが考えられるのでしょうか?
環境は、XP、VC 2005 EE です。
どうか御教授お願いします。
254ポイント を手に入れた。
|
|
|
|
Name: fumi ..ぴよぴよ(568ポイント)
Date: 2008/11/01(土) 23:56
No:23334
| 解決!
|
Title: Re:マルチスレッドでのリンクエラー
|
|
YuOさん、回答ありがとうございます。
そうですね、ちょっと説明が足りなかったと反省しております。
エラーは以下の通りです。
error LNK2019: 未解決の外部シンボル "unsigned int __stdcall MyThread(void *)"
(?MyThread@@YGIPAX@Z) が関数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
…とここまで書いたのですが、YuOさんのおっしゃる通り単なるスペルミスでした。
ほんとに申し訳ないです。
このミスに気がつくまで5時間ほど格闘しておりました。
ミスに気がつけたのは、YuOさんの御指摘のおかげです!
ありがとうございました!
316ポイント を落としてしまった。
|
|
|
|
Name: array [URL] ..プログラマー(37,154ポイント)
Date: 2008/11/01(土) 01:46
No:23303
|
|
Title: 【龍神録】弾幕-コ-を真似てみた【館】
|
|
【弾幕】-コ-【龍神録】
弾幕名がよく分からないけど、龍神録の弾幕を真似てみました。制作時間1時間くらいです。
思うがままプログラムを考えたので、そっくりではないです。
【左:本物】【右:偽物】
になります。 動きは似てるはずですw
ちなみに1か月ほど前からPC動作が重い・・・動画キャプチャするとFPSが20以下に・・・orz
深弾幕結界をキャプチャした時はFPS50付近キープしてたはずなのに・・・
なので動画を2倍速に変換してからさらにエンコードしてるので画質悪いです。
高画質にできればニコニコにUPしたいと思ってたのですがw
306ポイント を手に入れた。
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(871,042ポイント)
Date: 2008/11/01(土) 01:55
No:23307
|
|
Title: Re:【龍神録】弾幕-コ-を真似てみた【館】
|
|
おぉ素晴らしい!
そっくりですね^^
変な形に見えるこの弾幕。
実はVの字発射が3つくっついてるんですよねw
まわりの交差弾は、段々angleを変えていけばいいだけという簡単仕様。
小さな違いながら最も違うのは弾のが180度違うことでしょうかw
(本物は弾の左側が白いのに対して、右は弾の右が白い)
後、何故かキャプチャが重くなる現象時々私もあります。
再起動したら直るんですが。
キャプチャソフトはDxtory?DxRec?
134ポイント を手に入れた。
|
|
|
|
|
Name: 御津凪 [URL] ..プログラマー(29,342ポイント)
Date: 2008/11/01(土) 02:11
No:23310
|
|
Title: Re:【龍神録】弾幕-コ-を真似てみた【館】
|
|
> 後、何故かキャプチャが重くなる現象時々私もあります。
環境によってまちまちですが、
起動したままで色々していると、だんだん遅くなるようです。
原因は私もはっきりとわからないですが、
メモリ領域の断片化や、ソフト同士の干渉などがあるようです。
(これらは再起動すると直る)
ハードディスクをデフラグした上でキャプチャすれば、
キャプチャする動画の断片化防止とそれによる速度向上が図れるはずです。
136ポイント を手に入れた。
|
|
|
|
|
Name: array ..プログラマー(37,406ポイント)
Date: 2008/11/01(土) 02:34
No:23311
|
|
Title: Re:【龍神録】弾幕-コ-を真似てみた【館】
|
|
実はこれ、初めて体験した弾幕なんですよね。だから思い出深いような気がします。
いきなり3Dっぽいインパクトある弾幕で、個人的にかなり評価高い弾幕です。
他にも龍神録の弾幕で、「どうなってんだ!」ってのが沢山あるので、また挑戦してみたいです^^
> 小さな違いながら最も違うのは弾のが180度違うことでしょうかw
本当だw 今更ながら気づきました。 どんだけ確認してないんだよ!(かつ適当なんだよ!)って感じですね。
> 実はVの字発射が3つくっついてるんですよねw
なるほど、つなぎ目を確認した時に、自分のとは違うのは感じてましたがV3つだとは思いませんでした。ちなみにV2つで作ってます。
あとなんで180度違うんだろ・・・w 私は意図して逆にしたつもりないので、管理人さんが意図したんですかね。
> キャプチャソフトはDxtory?DxRec?
色々探して、DxCaptureというの使ってます。最初は正常に動いてたのに、最近は音源デバイスも読み込まなくなって・・・キャプチャも重くなって・・・ウィルスにでも感染してるのかなorz
252ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(871,811ポイント)
Date: 2008/11/01(土) 04:31
No:23314
|
|
Title: Re:【龍神録】弾幕-コ-を真似てみた【館】
|
|
あ〜擬似3D弾幕はこれが元になってたんですかw
>「どうなってんだ!」ってのが沢山あるので、また挑戦してみたいです^^
館で紹介するものが無くなったらイメージコンバートエンジンの話でもしますかねw
思いっきり名前負けしているシステムですがw
後、Dxtory結構軽いですよ。
一番低画質で撮れば少々スペック低くても撮れそうです。
ただ2行広告が入るのがちょっと嫌ですが、無料で無制限録画できるんだし、
それくらい我慢ですかねw
115ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(872,050ポイント)
Date: 2008/11/01(土) 17:19
No:23318
|
|
Title: Re:【龍神録】弾幕-コ-を真似てみた【館】
|
|
差し支えなければPCのスペック聞いてもいいですか?
しかしVistaは重いですよね〜・・。
私もビスタを昔いれたんですが、またXPに戻しました。
周りの友達もみんなXP使ってます。
私の勝手な想像ですが、ビスタを特に使う理由の無い人はまだ皆XPを使ってる気がします。
色んなベンチマークやってもビスタの方が悪くなりますし、
ビスタの方が処理が早くなる事はなかなか無いような気がします。
でもビスタにしかない機能が使いたかったり、ビスタでテストプレイしたりしたいので、
デュアルブートしています。
もし前に使ってたXPがまだあればデュアルブートしてみてはどうでしょう?
両方使えるので便利ですよ♪
224ポイント を手に入れた。
|
|
|
|
|
Name: array [URL] ..プログラマー(37,622ポイント)
Date: 2008/11/01(土) 17:54
No:23320
|
|
Title: Re:【龍神録】弾幕-コ-を真似てみた【館】
|
|
OS:ビスタ ホームプレミアム
メモリ:1G
CPU:インテル Core 2 Duo プロセッサ-E6300(1.86GHz)
私もXPを入れなおしたいと思ってるのですが、来年4月には新OSが発売されるらしいので
XPを買うのは様子見にしておこうかと思ってます。
一応、前使ってたPCでプリインストールされたOSでXPがあるのですが、インストールCDはなく
なんとか今のPCにインストールできないか試してみたのですが、うまくできる方法があるのでしょうか?
169ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(872,360ポイント)
Date: 2008/11/01(土) 18:31
No:23322
|
|
Title: Re:【龍神録】弾幕-コ-を真似てみた【館】
|
|
windows7ってどうなんでしょうね?
どんなOSに成るのか詳しく知りませんが、ビスタを基本としているという記事を読んだことがあるので
あまり期待してません・・。
少なくとも乗り換えて軽くなるんじゃないと乗り換えたくないですよね。
あと新OSではフリーソフトが動かないというのがネックですよね。。。
しかしインテルの今度新しく出るCPUもCore7だし、何でみんな7付けたがるんでしょう^^;
----
PCのスペックは充分だと思うんですけどねぇ・・。
216ポイント を手に入れた。
|
|
|
|
|
Name: 御津凪 [URL] ..プログラマー(29,551ポイント)
Date: 2008/11/01(土) 19:29
No:23325
|
|
Title: Re:【龍神録】弾幕-コ-を真似てみた【館】
|
|
参考までに私からも。
私も Vista で array さんとほぼ同じスペック(CPU は AMD Turion(tm) 64 X2 TL-60 2.00GHz)ですが、
やはり動画キャプチャは乗り換え前のXP(シングルコアの 2.00GHz)より重くなりますね。
Vista の GDI が DirectX の機能を常に利用している状態なのが原因だと思います。
Aero 機能を切ると、若干改善はしますが、
やはり動画キャプチャは重いです。
> array さん
> 一応、前使ってたPCでプリインストールされたOSでXPがあるのですが、インストールCDはなく
> なんとか今のPCにインストールできないか試してみたのですが、うまくできる方法があるのでしょうか?
PC にプリインストールされたOSは、それ専用にセットアップされたOSであることが多いので、
普通は別のPCにインストールできないそうです。
# 私は何とかがんばって Vista を使います。
209ポイント を手に入れた。
|
|
|
|
Name: kokoro ..入門者(4,197ポイント)
Date: 2008/10/28(火) 23:33
No:23178
|
|
Title: 学校の課題が分かりません
|
|
問題文
★下記の仕様を満たすプログラムをC言語で作成しなさい
【仕様】 表計算ソフト簡易プログラム
▽ Excelのように2次元配列で10人分の3教科の素点表示する。
なお、素点は100点満点でランダムに作るものとする。
▽ その右の列に個人別の3教科の合計・平均・順位(合計点の高い学生から
順に)を表示する。なお平均は少数第1位までの表示とする。
▽ 10人分の得点データの下の行に、合計・平均・最高点・最低点の
行を作り、各行についてそれぞれ求めて表示する。
(表示例:空欄にはそれぞれ計算結果が入ることになる)
番号| 国語 数学 英語 |合計 |平均 |順位
1 | 75 35 40 | | |
2 | 69 75 82 | | |
(中 略)
10 | 57 48 36 | | |
---------------------------------------------------
合計 |
平均 |
最高 |
最低 |
順位の出し方が分かりません。
順位のプログラムはどうやって書けばいいですか?
教えてください。
とりあえず作ったプログラムは添付しておきます。
336ポイント を手に入れた。
|
|
|
|
Name: kz ..入門者(3,082ポイント)
Date: 2008/10/29(水) 00:50
No:23180
|
|
Title: Re:学校の課題が分かりません
|
|
ソース見させていただきました。
とりあえず見たところ一つ修正点があります。
rand()%100だと100からランダムな数値の割った剰余を求めるので0〜99までしかでませんね。
順位の出し方ですが、個人的に簡単な方法の例です。
0〜満点をループさせる。for(i=0;i<maxscore;i++)などで
その中で一人ずつ点数を見ていって、ループ中の点数と一致していれば順位を付ける、もしくは出力する。
それを繰り返せば良いと思いますよ。
167ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(867,578ポイント)
Date: 2008/10/29(水) 00:59
No:23182
|
|
Title: Re:学校の課題が分かりません
|
|
それは「ソート」というアルゴリズムを使って並び替えをすればいいと思います。
各変数は構造体で扱いたいところですが、習っていなければまぁ配列でも出来ます。
ソートのアルゴリズムには色んなものがあります。
単純ソート、
バブルソート、
基数ソート、
ヒープソート、
クイックソート、
マージソート、、、。
その中で単純ソートが最も簡単ですので、今回はこれを使ってみましょう。
興味があれば他のソートの方法も調べてみて下さい。
単純ソートの参考にこちらを見て下さい
http://lecture.ecc.u-tokyo.ac.jp/~cichiji/cp-03/cp-03-12-1.html
並び替えを行うと順番はぐちゃぐちゃになってしまうので、
順番の情報つまり、各情報にIDをつけてからソートすればいいと思います。
そこで
int score[10], id[10]
の2つを用意しました。
並び替えの途中、値を交換する時は、このID情報も交換しています。
下を見て下さい。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
/* 受け取った2つの値を交換する関数 */
void swap(int *a, int *b){
int t = *b;
*b = *a;
*a = t;
}
int main(void){
int i, j;
int score[10],id[10];
srand((unsigned)time(NULL));
printf("-- ソート前 --\n");
for(i=0; i<10; i++){
score[i] = rand()%100;//適当な値を入れる
id[i] = i;//最初の昇順番号をIDとして入れる
printf("[%2d] : %d\n", id[i], score[i]);
}
printf("--------------\n");
/* ソート開始 */
for(i=0; i<10-1; i++){
for(j=i+1; j<10; j++){
if (score[i] < score[j]) {
swap(&score[i] , &score[j]);//値の交換
swap(&id[i] , &id[j]);//値の交換
}
}
}
/* ソート終了 */
printf("-- ソート後 --\n");
for(i=0; i<10; i++){
printf("[%2d] : %d\n", id[i], score[i]);
}
printf("--------------\n");
return 0;
}
実行結果
-- ソート前 --
[ 0] : 28
[ 1] : 84
[ 2] : 78
[ 3] : 96
[ 4] : 14
[ 5] : 46
[ 6] : 27
[ 7] : 57
[ 8] : 97
[ 9] : 5
--------------
-- ソート後 --
[ 8] : 97
[ 3] : 96
[ 1] : 84
[ 2] : 78
[ 7] : 57
[ 5] : 46
[ 0] : 28
[ 6] : 27
[ 4] : 14
[ 9] : 5
--------------
ソート後に表示された左側がIDです。
ソート前の値と見比べてみて下さい。
IDに対するスコアの値の関係は同じです。
こうすることでIDと順位が計算できるのではないでしょうか。
456ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(868,387ポイント)
Date: 2008/10/29(水) 01:21
No:23183
|
|
Title: Re:学校の課題が分かりません
|
|
IDと順位の対応がわかりにくいかもしれませんので、
順位を発表する方法を追記します。
一番最後のソート後表示のところのみ変更しています。
ソートした通りに表示するのではなく、
最初の表示の横に順位を表示するようにしてあります。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
/* 受け取った2つの値を交換する関数 */
void swap(int *a, int *b){
int t = *b;
*b = *a;
*a = t;
}
int main(void){
int i, j;
int score[10],id[10];
srand((unsigned)time(NULL));
printf("-- ソート前 --\n");
for(i=0; i<10; i++){
score[i] = rand()%100;//適当な値を入れる
id[i] = i;//最初の昇順番号をIDとして入れる
printf("[%2d] : %2d\n", id[i], score[i]);
}
printf("--------------\n");
/* ソート開始 */
for(i=0; i<10-1; i++){
for(j=i+1; j<10; j++){
if (score[i] < score[j]) {
swap(&score[i] , &score[j]);//値の交換
swap(&id[i] , &id[j]);//値の交換
}
}
}
/* ソート終了 */
/*
printf("-- ソート後 --\n");
for(i=0; i<10; i++){
printf("[%2d] : %d\n", id[i], score[i]);
}
printf("--------------\n");
*/
printf("-- 順位発表! --\n");
for(i=0; i<10; i++){
for(j=0 ; j<10 ; j++){
if(i == id[j]){
printf("[%2d] : %2d -> %2d位\n", id[j], score[j], j+1);
break;
}
}
}
printf("----------------\n");
return 0;
}
実行結果
-- ソート前 --
[ 0] : 48
[ 1] : 20
[ 2] : 55
[ 3] : 35
[ 4] : 74
[ 5] : 63
[ 6] : 84
[ 7] : 75
[ 8] : 13
[ 9] : 93
--------------
-- 順位発表! --
[ 0] : 48 -> 7位
[ 1] : 20 -> 9位
[ 2] : 55 -> 6位
[ 3] : 35 -> 8位
[ 4] : 74 -> 4位
[ 5] : 63 -> 5位
[ 6] : 84 -> 2位
[ 7] : 75 -> 3位
[ 8] : 13 -> 10位
[ 9] : 93 -> 1位
----------------
これでどうでしょうか。
809ポイント を手に入れた。
|
|
|
|
|
Name: フリオ ..プログラマー(28,270ポイント)
Date: 2008/10/29(水) 04:21
No:23188
|
|
Title: Re:学校の課題が分かりません
|
|
順位付けだけです。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define RAND (101 * (rand() / (RAND_MAX + 1.0)))
void Init(int student[][2])
{
int i, j;
srand((unsigned)time(NULL));
for(i = 0; i < 10; i ++){
for(j = 0; j < 3; j ++) student[i][0] = RAND;
}
}
void Sort(int student[][2], int rank[])
{
int i, j;
for(i = 0; i < 9; i ++){
for(j = 9; j > i; j --){
if(student[rank[j]][0] > student[rank[j - 1]][0]){
int tmp = rank[j];
rank[j] = rank[j - 1];
rank[j - 1] = tmp;
}
}
}
}
void Rank(int student[][2])
{
int rank[10], i;
for(i = 0; i < 10; i ++) rank[i] = i;
Sort(student, rank);
student[rank[0]][1] = 1;
for(i = 1; i < 10; i ++){
if(student[rank[i]][0] == student[rank[i - 1]][0]){
student[rank[i]][1] = student[rank[i - 1]][1];
}
else student[rank[i]][1] = i + 1;
}
}
void Print(int student[][2])
{
int i;
for(i = 0; i < 10; i ++) printf("%3d %3d\n", student[i][0], student[i][1]);
}
int main(void)
{
int student[10][2];
Init(student);
Rank(student);
Print(student);
return 0;
}
431ポイント を手に入れた。
|
|
|
|
|
Name: non ..かけだし(1,511ポイント)
Date: 2008/10/29(水) 21:09
No:23237
|
|
Title: Re:学校の課題が分かりません
|
|
まず、順位に全部1を入れます。
次に、単純ソートと同じ方法で2重ループし、総当たりで点数を比較します。
点数が小さい方の順位を+1します。
並べ替えをしないので簡単です。
70ポイント を手に入れた。
|
|
|
|
|
Name: box ..ハッカー(128,393ポイント)
Date: 2008/10/30(木) 22:25
No:23264
|
|
Title: Re:学校の課題が分かりません
|
|
簡単のために、人数を4人とします。
各人の点数を、50点、30点、90点、70点とします。
まず、全員の順位を1位とします。
50点と30点を比べます。30点の方が小さいので、順位に1を加えます。
この時点では、50点:1位、30点:2位、90点:1位、70点:1位です。
50点と90点を比べます。50点の方が小さいので、順位に1を加えます。
この時点では、50点:2位、30点:2位、90点:1位、70点:1位です。
50点と70点を比べます。50点の方が小さいので、順位に1を加えます。
この時点では、50点:3位、30点:2位、90点:1位、70点:1位です。
30点と90点を比べます。30点の方が小さいので、順位に1を加えます。
この時点では、50点:3位、30点:3位、90点:1位、70点:1位です。
30点と70点を比べます。30点の方が小さいので、順位に1を加えます。
この時点では、50点:3位、30点:4位、90点:1位、70点:1位です。
90点と70点を比べます。70点の方が小さいので、順位に1を加えます。
この時点では、50点:3位、30点:4位、90点:1位、70点:2位です。
おしまい。
156ポイント を手に入れた。
|
|
|
|
|
Name: kokoro ..入門者(4,379ポイント)
Date: 2008/11/01(土) 19:01
No:23324
|
|
Title: Re:学校の課題が分かりません
|
|
分からないところがあります。
このプログラムを実行すると、国語の最低点が「1」がないのに
「1」と表示されてしまいます。(何回しても)
同じく英語の最高点が「256」のままになってしまいます。
国語の最低点と英語の最高点がうまく表示されません。
どうしてでしょうか?教えてください。
136ポイント を手に入れた。
|
|
|
|
|
Name: box ..ハッカー(128,673ポイント)
Date: 2008/11/01(土) 19:35
No:23326
|
|
Title: Re:学校の課題が分かりません
|
|
> total[MAX-1] += total[i];
> if(jp[i]>jpmax)
> if(math[i]>mathmax)
> if(en[i]>enmax)
> if(jp[i]<jpmin)
> if(math[i]<mathmin)
> if(en[i]<enmin)
足し込んだり、比較に使ったりする変数は、
事前にきちんと初期化しておきましょう。
2倍のポイントを手に入れた! 280ポイント を手に入れた。
|
|
|
|
Name: Dixq (管理人) ..ぴよぴよ(624ポイント)
Date: 2008/10/21(火) 19:15
No:22779
|
|
Title: ■ サンプルプログラミングの館作りました ■
|
|
掲示板の回答で時々サンプル書くことがありますが、
後日同じような質問があった時にリンクを貼り易いように、
新しく作った「サンプルプログラミングの館」にサンプルを公開しました。
http://l.huu.cc/sm/
私以外の制作のサンプルも多数紹介させて頂いています。
☆☆ サンプルを提供してくださる方へ ☆☆
ここで公開してもいいよ!ってサンプルはお持ちではないですか?
色んなサンプルが公開されている「知識の館」となればいいなと思っています。
もしサンプルを送ってくださる場合は、
・説明書き(プログラムの解説などをする場合はここに。ゲームの場合は操作方法など)
・サムネイル画像(任意)
・プログラムコード、またはプロジェクト。
・著作権についての記述
を一緒に送って下さい。送り方は何でも、メール(dixqhp@gmail.com)または、
アップローダ、コードだけならここででもOKです。
著作権については
「コピーも配布も引用も何でもOK」「参考にするのは自由だが、著作権は放棄しない」「その都度許可が必要」
等があると思います。
内容は何でもOK!言語自由、テーマ自由です。
すごく簡単なアルゴリズムでも、単なる宿題の回答例でも、自作ミニゲームでもなんでも構いません。
☆☆ ---------------------------- ☆☆
さっそくバグさんのぷよぷよモドキを掲載させてもらいました。
ソース置き場はこちらに移動しようと思います。
もし、公開の仕方、書式などよい意見があればお寄せ下さい^^
37ポイント を手に入れた。
|
|
|
|
Name: 御津凪 [URL] ..プログラマー(25,359ポイント)
Date: 2008/10/21(火) 19:35
No:22780
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
> 後日同じような質問があった時にリンクを貼り易いように、
> サンプルプログラミングの館にサンプルを公開しました。
そうしておくと、
「そういったやり方はここのサンプルを見ると分かりやすいよ」
と、楽に(といったら失礼ですが)回答することができますね。
でも逆に、
「ここのサンプルを参考にしているのですが、ここが分かりません」
と、サンプルについての質問が来そうですね。
余談ですが、サンプルに C++ は OK なのでしょうか?
101ポイント を手に入れた。
|
|
|
|
|
Name: 管理人 ..伝説なるハッカー(828,103ポイント)
Date: 2008/10/21(火) 19:39
No:22782
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
そうですね〜質問は多くなるかもしれませんが、
自分が協力できる範囲で質問に回答するのが私の使命(?)なので大丈夫ですw
C++ももちろんOKですし、JAVAや他の言語でもOKです☆
54ポイント を手に入れた。
|
|
|
|
|
Name: 御津凪 [URL] ..プログラマー(25,398ポイント)
Date: 2008/10/21(火) 19:59
No:22787
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
> 「関数」ってカテゴリ作ってもいいと思いますし、「ライブラリ」ってカテゴリ作ってもいいですし。
まさに「サンプルプログラミングの館」ですね。
沢山サンプルが集まりそうですが、
そうなったら(ソースを眺める意味で)博物館みたいな感じになりそう。
39ポイント を手に入れた。
|
|
|
|
|
Name: 究極の初心者 ..初心者(8,882ポイント)
Date: 2008/10/21(火) 20:26
No:22791
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
これいいですね!
まだ教える知識も何もないんで、協力はできませんが、こういうのって、ありがたいものだと思います。
こういうサイトって、なかなかないし・・・・。
61ポイント を手に入れた。
|
|
|
|
|
Name: 管理人 ..伝説なるハッカー(828,525ポイント)
Date: 2008/10/21(火) 22:48
No:22796
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
皆様サンプルの掲載はどうかお気軽にお申し付け下さい^^
なんかトップページのメニュー項目も最初は5つ位しか無かったのに随分多くなりましたね・・w
そろそろスクロールしないと全部見えなくなりそう^^; しかし
ゲームプログラミングの館
龍神録プログラミングの館
四聖龍神録公式HP
C言語何でも質問掲示板
などを大きな柱としているこのHP。
実はトップページhttp://l.huu.cc/のある本家が一番アクセス少ないんですよねw
しかも一番ごちゃごちゃしてて統一性もなく、誤字がメッチャ多い
ゲームプログラミングの館がダントツで一番アクセスが多いという^^;
う〜ん、新しい館をせっせと作るよりゲームの館をキレイに一新した方がいいかもしれない・・;
>御津凪さん
皆さんのサンプルが沢山集まって「知識の館」になるといいですね^^
>究極の初心者さん
ありがとうございます。
こんなプログラムでも誰かの参考になったらいいなと思っています^^;
よいプログラムを閃いたり公開してもいいなって思うものが出来たら気軽に教えて下さいね^^
374ポイント を手に入れた。
|
|
|
|
|
Name: 管理人 ..伝説なるハッカー(829,085ポイント)
Date: 2008/10/22(水) 02:49
No:22807
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
ありがとうございます。
tkさんも以前ツールを作っていらっしゃいましたよね。
----
ちょっとまた色々と追加してみました。
現在項目は11個です。
Justyさんのプロジェクト自動生成ツールもここで紹介させていただきました。
バグさんのゲームもかなり数掲載させていただきました。
もし削除した方がいい場合、説明書きやプログラムの解説、SSなど付け加えたい場合など
何かありましたらご連絡下さいm(_ _)m
212ポイント を手に入れた。
|
|
|
|
|
Name: 管理人 ..伝説なるハッカー(829,246ポイント)
Date: 2008/10/22(水) 04:47
No:22808
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
18項目アップしました(疲
過去の掲示板過去ログを端からみて行けばかなりの量ありそうですね。
何か昔作ったプログラムは無いかとパソコンの中あさってて色々と懐かしいもの見つけました。
HDDが500Gとかになると細々したファイルは消さなくなってくると思うんで、
かなり昔から触ってないフォルダとか多い人もいらっしゃるのでは無いかと思うのですがどうでしょう?
時々整理するとなんかアルバム整理してるみたいで懐かしくなっていいですねw
私のパソコンから出てきた懐かしい物というのは昔FFに嵌ってた時に作った自作攻略本のデータでした^^;
161ポイント を手に入れた。
|
|
|
|
|
Name: バグ ..ハッカー(117,866ポイント)
Date: 2008/10/22(水) 08:12
No:22809
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
カラードロップ1&2とか…(^_^;)
Cを勉強し始めた頃のソースとはいえ、今、改めて見ると恥ずかし過ぎるコードです…orz
作り直していいですか?(笑)
70ポイント を手に入れた。
|
|
|
|
|
Name: いけやん ..上級者(15,524ポイント)
Date: 2008/10/22(水) 10:36
No:22812
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
おはようございます。
管理人さん
拝見さして頂きました。
>素晴らしい企画だと思います。
私も同意見です。
いいですね〜。使いやすくて。
これなら、今からゲーム等のプラグラムするひとには、かなりいいと思いますね。
個人的には、「太鼓の達人」そのまま出してる!!!
と思ったら、「太鼓の鉄人」でしたwww
123ポイント を手に入れた。
|
|
|
|
|
Name: 管理人 ..伝説なるハッカー(829,477ポイント)
Date: 2008/10/22(水) 14:11
No:22817
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
>バグさん
>カラードロップ
「作者不明」って書いておきましょうかw
(プロのバグさんにはもうそんなことないでしょうけど)
私は恥を晒すことになるのはもう気にしない事にしてます^^;
削除した方がいい場合は、削除しますよ。
もし作り直しをされるのでしたら、それまでリンクはずしておきましょうか?
それとも「これはまだ入門当時のコードです」みたいなコメントかいておいて
たかぎさんの仰る通り閲覧者が改良していくという手も・・?
>いけやんさん
ありがとうございます^^
昔のコード公開とか恥さらしもいいとこなんですが、まぁ気にしないことにしています^^;
太鼓の達人は最初太鼓の名人にしようかと思ったんですが、そういう名前のサイトが実在するみたいなんで
太鼓の鉄人にしました・・が、名前が似すぎてそのまま使ってるように見えますね^^;
231ポイント を手に入れた。
|
|
|
|
|
Name: ouh ..かけだし(1,247ポイント)
Date: 2008/10/22(水) 14:17
No:22818
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
こんにちは
管理人さん、これ本当にとても面白い企画だと思います。
誰かしらの役には立つかもしれないな、少なくとも自分は
便利に使ってるし、という手持ちのコードを出させていた
だきたいという気持ちがある反面、自分のコードに自身が
なく、なんだか衆目に晒すのがとても恥ずかしいという気
持ちが勝ってしまっています。
これは大丈夫、責任持てる、というコードがあれば私めに
も参加させてください。
2倍のポイントを手に入れた! 64ポイント を手に入れた。
|
|
|
|
|
Name: Haru ..上級者(18,340ポイント)
Date: 2008/10/22(水) 14:30
No:22819
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
>管理人さん
早速拝見しました!!
私ももう少しまともなプログラムを作れるようになったら
出させてください!!(いつになるやら・・・。(^^;
個人的には荒らしコメ非表示プログラムの内容にツボりました。
ルイズ!ルイズ!ルイz(ry
90ポイント を手に入れた。
|
|
|
|
|
Name: 管理人 ..伝説なるハッカー(829,860ポイント)
Date: 2008/10/22(水) 14:34
No:22820
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
>ouhさん
ありがとうございます^^
どうぞお気軽にご参加下さい☆
皆さんのプログラムコードで賑わうと面白くなると思いますし。
私も自分のコードに自信は無いです^^;
まぁ今もですがこのHPを作った当時はとてもスキルは低く、
自分が書いてるサンプルや回答も間違ってた事も何度かありました。
でもきっと何年たっても数年後に見たら自分を恥ずかしく思うんでしょうし、
どっかで妥協しないといけないだろうし、
恥を恐れて黙っているより、間違っててもいいから公開して指摘を受けたりした方が成長するだろうし、
それなら最初からもう恥どうのこうのは思うのやめようと思いました^^;
サンプルとして公開するならそれなりに責任を持つ必要はあるかもしれませんが、
コードが今の自分がこれが一番だと思っているものならいいのではないかと勝手に思ってます。
機会があればお気軽にご参加くださいね☆
383ポイント を手に入れた。
|
|
|
|
|
Name: 管理人 ..伝説なるハッカー(830,085ポイント)
Date: 2008/10/22(水) 14:46
No:22821
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
>Haruさん
皆さん控えめ過ぎですって!
みんなで晒せば怖くn・・(ry
さり気ないただの宿題の回答も一覧にしたいんですよ、ホントは。
例えば「生年月日を入力したら現在までの日数を表示するプログラムを作れ」って宿題の質問があったら
何かサンプル投稿したりしますよね。
そういうのも全部集めたいんですが、何しろ量が多いので無理そう;
過去のサンプル探してくるより今後サンプルを書いたときに、自分でためておく方がよさそうです。
ですから、ホント些細なプログラムでも大歓迎なので、
大げさな話「俺流ハローワールド」的なプログラムでもいいので
お気軽にご参加下さい^^
ルイズって検索したら何かアニメのキャラなんですね^^;
同梱されているinput.txtみたらありますけど、正常な人間とは思えないほどの量投稿されています^^;
最初ツールでやってるのかと思ったんですが、
投稿間隔にむらがあるので、やっぱ手作業なのか・・と思ったり;
いや〜荒らしは怖いですねぇ。
225ポイント を手に入れた。
|
|
|
|
|
Name: 組木紙織 ..熟練のプログラマー(62,545ポイント)
Date: 2008/10/22(水) 15:47
No:22824
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
面白い企画ですね。
私も何か投稿したくなりました。
言語の指定は無いので、新しくマイナーな言語を覚えて作ってみようかとか、
ソートやデータ構造の練習用プログラム一式を作ってみようかとか、
思いました。
一つ気になったのがプログラミングの難易度のところです。
どんな基準で分けているんですか?
4ポイント を手に入れた。
|
|
|
|
|
Name: 管理人 ..伝説なるハッカー(830,546ポイント)
Date: 2008/10/22(水) 16:28
No:22829
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
ありがとうございます。
難易度は完全に独断と偏見です^^;
コンソールプログラムやWINAPI、DXライブラリを使ったプログラムなど共通して難易度を付ける事は無理だと思うので、意識していただかなくて大丈夫です。
他のサンプルと同じように「-」でいいと思います。
76ポイント を手に入れた。
|
|
|
|
|
Name: 匿名 ..かけだし(1,916ポイント)
Date: 2008/10/22(水) 19:16
No:22842
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
さすがです。前から作ったゲームを投稿するいい場所はないかと思っていたところだったんです。
といっても今まで作ったゲームは無駄が多すぎるので、こんどは無駄の無いゲームを作って投稿したいです。
やっぱり公開する場所があるとやる気が出てきますね。
71ポイント を手に入れた。
|
|
|
|
|
Name: 管理人 ..伝説なるハッカー(831,859ポイント)
Date: 2008/10/22(水) 20:53
No:22855
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
私も質問があるたびに過去ログを探してこちらを見て下さいっていうのが非効率だと思っていたので、
このような館を作りたいなと思っていました。
この際パソコンの中にあるあらゆるプログラム引っ張り出そうかなと思ってます^^;
過去ログにあるサンプルも全部引っ張り出したいんですがあの大量の過去ログを見ると
やる気が失せます(汗
112ポイント を手に入れた。
|
|
|
|
|
Name: 管理人 ..伝説なるハッカー(831,889ポイント)
Date: 2008/10/22(水) 21:40
No:22863
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
ありがとうございます。
あ、そうでしたね。もう一度頂けないでしょうか。
あのページはかなり寂しいので何かそえるコメントでもあればお願いします^^;
30ポイント を手に入れた。
|
|
|
|
|
Name: tkmakwins15 ..比類無きプログラマー(89,881ポイント)
Date: 2008/10/22(水) 22:31
No:22865
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
->管理人さん
>tkさんも以前ツールを作っていらっしゃいましたよね。
あ〜そういえば、あれ.NETで作り直したんですよ。少しは使いやすくなったんじゃないかなぁ、と思います。
僕のコードは基本的にオープンです。(だから載せるコードがないって…)
78ポイント を手に入れた。
|
|
|
|
|
Name: けんたろうちゃん ..ぴよぴよ(310ポイント)
Date: 2008/10/22(水) 23:01
No:22870
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
サンプルプログラムとても参考になりました
東方と魔界村の足し合わせのものは2Dアクションのコードが読みたかったのでうれしかったです
50ポイント を手に入れた。
|
|
|
|
|
Name: Justy ..ハッカー(246,411ポイント)
Date: 2008/10/22(水) 23:06
No:22871
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
>あ、そうでしたね。もう一度頂けないでしょうか。
>あのページはかなり寂しいので何かそえるコメントでもあればお願いします^^;
りょーかいです。
数日中にそちらにお送りします。
ついでに昔の何か漁ってみて、使えそうなのがあったら付けておきます。
127ポイント を手に入れた。
|
|
|
|
|
Name: 管理人 ..伝説なるハッカー(832,241ポイント)
Date: 2008/10/23(木) 01:04
No:22880
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
>けんたろうちゃんさん
あれ、東方と魔界村かけあわせたようなゲームは、ご存知でしたか?
いつか無意識のうちに見せたかな?^^;
「ボツ」カテゴリに「ゴミ」としてかいてあるように参考にしないで下さいw
アクションゲーはアクションゲーの作り方書いた本読んで勉強して下さい^^;
アクションゲーは自作支援ツール作るのが大変そうです;
>Justyさん
おぉ、ありがとうございます^^
あ、そういえばいつか送ってくださったあの奇妙で華麗な動きをする文字列のプログラムはどうでしょう??
あれはすごく好きでしたw
173ポイント を手に入れた。
|
|
|
|
|
Name: Justy ..ハッカー(246,781ポイント)
Date: 2008/10/23(木) 01:26
No:22884
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
>そういえばいつか送ってくださったあの奇妙で華麗な動きをする文字列のプログラムはどうでしょう??
あー、あれですか。そうですね。
あの動きを行うための計算式部分は、今では templateなクラスになっています。
一般向けの改良&ドキュメントの準備(サンプルも?)に少し時間がかかるかもしれませんが、
候補に入れておきます。
200ポイント を手に入れた。
|
|
|
|
|
Name: ま〜く ..初心者(7,559ポイント)
Date: 2008/10/23(木) 11:05
No:22901
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
いつのまにか、なんだか面白そうなことやってますね♪
ぼくもなにかアップしようかな・・・
45ポイント を手に入れた。
|
|
|
|
|
Name: 管理人 ..伝説なるハッカー(832,511ポイント)
Date: 2008/10/23(木) 11:36
No:22902
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
>Justyさん
よろしくお願いします^^
>ま〜くさん
普段ロムなま〜くさんが参加して下さっているw
是非是非ご参加下さい〜♪
ま〜くさんのサンプルはむしろ私が参考にしますw
60ポイント を落としてしまった。
|
|
|
|
|
Name: ま〜く ..初心者(7,608ポイント)
Date: 2008/10/23(木) 12:11
No:22905
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
管理人さん
いえいえ^^;大したもの作ってないので・・><
なにかできたら送りますね♪
49ポイント を手に入れた。
|
|
|
|
|
Name: 木霊 ..上級者(19,316ポイント)
Date: 2008/10/24(金) 00:37
No:22961
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
>時には正気と思えないようなプログラムを
>公開しています。
と言うことなんで、自分がC++やり始めた頃のクソゲー(約21M、内18Mが音)を投下しても構いませんか?
クラスの理解が十分でない為、コードがいい感じ(悪い意味で)にカオスになってます。
127ポイント を手に入れた。
|
|
|
|
|
Name: 木霊 ..上級者(19,364ポイント)
Date: 2008/10/24(金) 01:38
No:22968
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
さっきから添付して書き込んでるんですが、
Zip形式にして7.22Mになってるのに、添付できないみたいです。(最後でエラーが出る)
どうすれば、添付できるのでしょうか?
48ポイント を手に入れた。
|
|
|
|
|
Name: 木霊 ..上級者(19,477ポイント)
Date: 2008/10/24(金) 02:07
No:22970
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
じゃあ、管理人さんに直接お渡しして大丈夫ですか?
(Nameのクリックしてメッセージに添付)
こんな巨大なファイルを送るのは初めてなのでやり方がわかりません orz(DLはよくやってるのに)
忙しいところ何度もすみません。
最悪、音以外を3回ぐらいに分けて送ろうと思います。
113ポイント を手に入れた。
|
|
|
|
|
Name: 管理人 ..伝説なるハッカー(834,982ポイント)
Date: 2008/10/24(金) 02:30
No:22972
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
お使いになってるメールの機能にもよるかもしれませんが、10M位ならメールで送れるのではないでしょうか?
もしダメならアップローダを使えばいいと思います。
とりあえずメールで送っていただけるとありがたいです
dixqhp@gmail.com
84ポイント を手に入れた。
|
|
|
|
|
Name: 木霊 ..上級者(19,518ポイント)
Date: 2008/10/24(金) 02:58
No:22974
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
先ほどヤフーから送りましたがちゃんと届きましたでしょうか?
メールを送るのも初めてなので設定等きちんと出来ていたか心配です。
41ポイント を手に入れた。
|
|
|
|
|
Name: こめかみ ..プログラマー(28,944ポイント)
Date: 2008/10/24(金) 03:09
No:22975
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
ぬぬ?もしかして参加できそうな予感。
mattさんの助言をもとに、
たいちうさんと初級者さんのコードを組み込みつつ、
ここ数日でやっと出来た、再帰を用いずに組み合わせを解くプログラムがたったさっき出来たのですが、
そーいうのはアリなのですか?
完全自作じゃないので著作権なんてとても主張できませんが、
111ポイント を手に入れた。
|
|
|
|
|
Name: 管理人 ..伝説なるハッカー(835,104ポイント)
Date: 2008/10/24(金) 03:20
No:22976
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
>>木霊さん
届いていないようです;
私が使っているのはgmailなのですが、もしよければ使ってみてはどうでしょう?
かなり性能いいですよ。
>>こめかみさん
何でもOKですよ^^
そのアルゴリズムは再帰を用いるより計算スピードが速いとか効率がよいのでしょうか?
122ポイント を手に入れた。
|
|
|
|
|
Name: 木霊 ..上級者(19,615ポイント)
Date: 2008/10/24(金) 03:28
No:22977
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
あのー恥ずかしながら、メール関係の設定が全く分かりません・・・
gmailの使い方、インストールの仕方等詳しく教えていただけますか?
本当に申し訳ない・・・
自分はもう少しOutlook Expressと戦ってみますので、
管理人さんの都合の取れる時間にgmailに関する設定等、改めてご教授お願いします。
97ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) ..ぴよぴよ(587ポイント)
Date: 2008/10/24(金) 04:16
No:22979
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
いや、ウェブメールですから登録するだけですよ。
googleはご存知ですよね。googleが提供しているメールサービスがGmailです。
そこで、googleのホームページから
https://www.google.com/accounts/ManageAccount
「Gmail」を選択します。
「Gmail アカウント登録」
を選択すると色々入力する項目が出てくると思うので入力すればもう出来上がり。
使えるようになります。
メールのデータは全てウェブ上に保存されるので、家からでも学校からでもネットカフェからでも
同じメールボックスが見れます。
学校から家にデータ持って帰りたいときは自分宛にデータ送るなんてことも出来ます。
gmail同士なら同時にログインしていればチャットも出来ます。
このフィルタ機能はすごく高性能で迷惑メールはことごとく迷惑メールにきちんとわけてくれるので便利ですよ♪
何か解らない事があれば気軽に聞いて下さい。
44ポイント を手に入れた。
|
|
|
|
|
Name: 木霊 ..上級者(19,701ポイント)
Date: 2008/10/24(金) 20:05
No:23012
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
ありがとうございます。
もっと気軽に送れるものだと甘く見ていたようです。
あの後、MSNのサイトに行ってメールアドレスやアカウントを取得したのに、
「サービスが利用できない」的なエラーが出続けてくじけそうでした・・・
今から教えていただいた方法でgmailの方を使用できるようになりたいと思います。
・・・しかし、苦労した割りにヘボいゲームなのが申し訳ない・・・
86ポイント を手に入れた。
|
|
|
|
|
Name: 木霊 ..上級者(19,804ポイント)
Date: 2008/10/24(金) 20:44
No:23015
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
Gmailのアカウント登録の間にレスが・・・
Gmailの方だと拡張子が「.exe」のファイルはセキュリティの都合上送れないそうなので、
アップローダを使わせていただきます。
「1yon14539.zip」でDLKeyは「orzora」です
・・・使い方あってたんでしょうか?かなり不安です・・・
本当に申し訳ない・・・
103ポイント を手に入れた。
|
|
|
|
|
Name: 木霊 ..上級者(19,914ポイント)
Date: 2008/10/24(金) 22:23
No:23019
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
>MonsterAttack.bdpはBorlandのプロジェクトファイルですか?
はい、その通りです。
やっと送り出せたみたいで安心しました。
ここまで付き合ってくださってありがとうございます。
では、よろしくお願いします。
110ポイント を手に入れた。
|
|
|
|
|
Name: kazuoni ..プログラマー(34,766ポイント)
Date: 2008/10/24(金) 23:19
No:23020
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
あ・・・横からですが^^;
自分もすでにプレイさせていただきましたw
ボンバーマン風かと思いきや、壁をすり抜けてくる敵にびっくりw
敵を倒すよりうまくくぐりぬけてライフ総取り狙いのがタイム早いですかね^^;
やっぱり人のコードを見るのは勉強になります。
横から失礼しました。
102ポイント を手に入れた。
|
|
|
|
|
Name: 木霊 ..上級者(19,686ポイント)
Date: 2008/10/24(金) 23:46
No:23023
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
遊んでいただきありがとうございます。
壁をすり抜ける敵・・・自称魔道士っぽい奴かな?
グラフィックを最後の最後で置き換えたので、移動可能の判定に違和感があるんですよ。
それかもしれないですね。
ライフ総取りでクリアとかバランス崩れすぎ・・・orz
一応自己最高点は90万点です。
弾を撃たずにクリアすると・・・<反転
いつか(プログラムの方を)リベンジしようと思ってます。
コードの方をざっと見返してみたのですが、見てもらえそうな所は再帰関数とカメラ処理(?)ぐらいですかね?
228ポイント を落としてしまった。
|
|
|
|
|
Name: kazuoni ..プログラマー(35,006ポイント)
Date: 2008/10/25(土) 00:21
No:23024
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
フルライフ、ノーショットを続けていくのはしんどいですw
確かにちょっと壁と通路が狭い時、うまく通れないときがありますね。
慣れてしまえば何ともないのですが。
90万点ですか。。ちょっと頑張れば届きそうですが。。
なんだか懐かしい感じがとてもいいです。(OPの曲とか)
サブルーチンもそうなんですが、全体的な書き方もですね。
2倍のポイントを手に入れた! 240ポイント を手に入れた。
|
|
|
|
|
Name: Justy ..ハッカー(250,897ポイント)
Date: 2008/10/26(日) 19:40
No:23096
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
>そういえばいつか送ってくださったあの奇妙で華麗な動きをする文字列のプログラムはどうでしょう??
お待たせしました。
まずこちらが、更新されたプロジェクト生成ツールとなります。
CreateDxLibProject.zip
ttp://kissho1.xii.jp/7/src/7jyou16308.zip.html
pass:31415926
で、こちらが例のアレです。
graiai_lib.zip
ttp://kissho1.xii.jp/7/src/7jyou16309.zip.html
pass:31415926
今回は2つのクラスを用意しました。
_binディレクトリにサンプルの実行ファイルが入っています。
docディレクトリにドキュメントがあるので、そちらも参照して下さい。
(といっても驚くほどすごい適当にやっつけで作ったものなので、
これだけ見てもわからないかも・・・)
プロジェクトファイルは VisualStudio 2003で作ってありますので、
VisualStudio 2003-2008で開けると思います。
・ Graiai::SpringDumper<T>
バネのような動きをサポートします。
何かに吸い付くような動きだったり、ぽよよーーん(?)的な動きに
使えるのではないでしょうか。
<サンプル>
メニューサンプル
起動するとメニューっぽいものが表示されます。
キーボードの上下でカーソルが移動しますが、そのカーソルの移動と
カーソル幅の遷移に SpringDumperが使用されており、カーソルが
別のところを指すたびに滑らかに移動します。
マウス追従サンプル
メニューのサンプルでキーボードの Tabを押すとマウス追従のデモが始まります。
マウスカーソルを動かしてみて下さい。
それに合わせて、様々なオブジェクトが動きます。
再度 Tabを押すとメニューのサンプルに戻ります。
・ Graiai::SmoothingRandom
滑らかに推移するランダムをサポートします。
使い道としては、手ぶれカメラだったり、地震やダメージを
受けたときの揺れの表現に使えます。
<サンプル>
X軸に時間の経過、Y軸に得られたランダム値をライン(グラフ)で表示していきます。
スケール値とオクターブ値を変更すると、グラフが変化していきます。
上下でスケール値の操作を、左右でオクターブ値の操作をすることができます。
どっちも原理としてはたわいもないものですが、ゲームとかで
ピンポイントでうまく使うと効果的になると思います。
# 気が向いたらシリーズを増やしていくかもしれません。
1,085ポイント を手に入れた。
|
|
|
|
|
Name: 管理人 [URL] ..ぴよぴよ(469ポイント)
Date: 2008/10/26(日) 20:16
No:23099
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
おぉ、かっこよく進化している!
ありがとうございます^^
この華麗かつ歪な動き・・弾幕に使えs・・(ry
丁寧な解説まで同梱していただきありがとうございます!
ウェブ上の解説では「同梱されている説明書きを参考にして下さい」とかでいいですかね?
あと、紹介するツールの名前は何にしましょう?
上はDXライブラリのプロジェクト作成ツールとかでいいと思いますが。
184ポイント を手に入れた。
|
|
|
|
|
Name: Justy ..ハッカー(250,972ポイント)
Date: 2008/10/26(日) 20:21
No:23101
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
じゃぁ、「Graiaiライブラリ」でお願いします。
2倍のポイントを手に入れた! 36ポイント を手に入れた。
|
|
|
|
|
Name: 木霊 ..上級者(19,998ポイント)
Date: 2008/10/27(月) 04:15
No:23125
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
今、サンプルプログラミングの館を見てきました。
あんなふうに自分の作ったものが載っているとなんかムズムズしますねw
とはいえ、自分的には黒歴史に近いものなので、かけてしまった迷惑(メールが送れないという大失態)
とは釣り合いが取れないような気がしています。
実はここ数日、息抜きも兼ねてもう一本ゲームを作っていました。
よろしければこちらも掲載してもらって構わないでしょうか?
自分的にはこの二本目とあわせて、前回の失態と釣り合う位だと(勝手に)思っていますので。
208ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(866,733ポイント)
Date: 2008/10/27(月) 04:25
No:23126
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
ありがとうございます。
色んなサンプルで賑わえばいいなと思っています。
もしもっと多くなるようでしたら解りやすく分類する必要が出てきそうですね。
とりあえずゲームとそうでないものにわけようかな・・?
メールの件は全く迷惑だなんて思っていませんよ^^;
アップローダで受け取れてよかったです。
2つ目を掲載させていただけると言う事で楽しみにしています^^
8ポイント を手に入れた。
|
|
|
|
|
Name: 木霊 ..上級者(20,215ポイント)
Date: 2008/10/27(月) 14:17
No:23134
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
そういえばGmailでは「.exe」ファイル(アプリケーション)は送信できないんですね。
ですので、今回もアップローダの世話になることにしました。
容量は2.0Mと軽いので7Mの所にあげました。
時間は「08/10/27(Mon),14:13:16」
ファイルは「7jyou16332.zip」、DLKeyは前回と同じ「orzora」です。
実は、少し本命に行き詰ってて息抜きに(現実逃避とも言う)
作ったものです。
キャラが小さいのは広さから感じる不安を表現してたりします。
わずかですが、やりこみ要素があるので(コードを読めばすぐばれますが)
暇つぶしにはいい感じだと思います。
217ポイント を手に入れた。
|
|
|
|
|
Name: 木霊 ..上級者(20,313ポイント)
Date: 2008/10/27(月) 14:54
No:23136
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
>御津凪さん
そうか!ずっと拡張子非表示のままの環境なので思いつかなかった・・・
変更できるんですよね・・・そういえば・・・
もし次の機会があればその方法でいきます。
ありがとうございます。
98ポイント を手に入れた。
|
|
|
|
|
Name: けんたろうちゃん ..かけだし(1,812ポイント)
Date: 2008/10/28(火) 00:56
No:23154
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
自分はクラスについてまだまだ理解が浅いので、今回の更新分は非常に参考になりました
もっとC++活用できるようにがんばりたいです
57ポイント を落としてしまった。
|
|
|
|
|
Name: 木霊 ..上級者(20,614ポイント)
Date: 2008/10/28(火) 02:33
No:23158
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
>けんたろうちゃんさん
自分もまだまだ「テンプレート」とか分からないことだらけですw
一緒にがんばっていきましょう!
キャラや足場の種類を増やしたり、ステージ選択(乱数の種を変える)とか
改造をしてみると自然と身に付くことも多いですよ。
>管理人さん
また現実逃避した時(本命のゲームにくじけた時)はお願いしますw
>しかしあの重いボールは不可能ですw
オレンジの足場が出てくる様になった時に風が吹き始めるのですが、
重いボールはその風の影響を全く受けないようになっています。
実はそこまでいける人には一番使いやすいキャラ・・・のつもりでしたw
たぶん慣れたからなんでしょうね。
それに足場作成が卑怯すぎますし・・・
ちなみに軽いボールは風が吹き始めると無理ゲーキャラに変貌します。
(プレイヤーとしての)参考までに
ノーマルモード 1位 24529点 普通
2位 18875点 重い
論外 軽い
エキスパートモード 1位 7008点 普通
2位 6701点 重い
3位 6022点 軽い
301ポイント を手に入れた。
|
|
|
|
|
Name: 木霊 ..上級者(20,878ポイント)
Date: 2008/10/29(水) 00:37
No:23179
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
>管理人さん
すみません・・・がっつり寝て、ゲームしてましたw
一日たった現在
ノーマルモードの記録を更新して
重い 28426点です。
>私は使ったのは「軽い」のみで16000弱位でした。
むしろ「軽い」でその記録のほうがすごいですw
あの風をものともしないなんて・・・
2倍のポイントを手に入れた! 264ポイント を手に入れた。
|
|
|
|
|
Name: 木霊 ..上級者(21,268ポイント)
Date: 2008/10/29(水) 02:26
No:23186
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
>そういうのは考慮して足場配置されています?
いえ、乱数に任せてます。
Y方向に20ドット間隔で、X方向にはランダムで配置してます。
コツとしては画面中央付近を堂々と通って画面を切り替えることですかね。
足場は常に一定(乱数の種を同じ値で初期化)にしてるのである意味覚えゲーと割り切って
もらった方がいいかもしれません・・・
無制御だと不親切で嫌われる傾向にありますが、
ゲームのテーマが
「不安」・・・小さい足場
「恐怖」・・・(震えて)制御の難しい主人公
「無慈悲」・・必ず○○行き(EDが無い為)・「軽い」のキャラ説明(何故○○行き?)
なので、あえてそうしてます。
「無慈悲」はもっと説明が要るかもしれませんが若干宗教色を帯びてくるので割愛します。
ちなみに自分は無宗教ですよ。
お気に召さない方もいらっしゃるかもしれませんが、サンプルとして提供してますので
改造テーマに加えてもらうというのはどうでしょう?
あまりがっちり作ると改造しにくいですし・・・
昔はもっと理不尽なゲームが多かったのでそれに毒されてるのかもしれません。
「ドルアーガの塔」とか「スーパーマリオ」の無限ループとか・・・
・・・「たけしの挑戦状」とか・・・
と、色々言い訳してますが、ぶっちゃけた話をすると「これが自分の好みだった(理不尽さ含め)」と言うことです。
申し訳ない・・・
一応それぞれの特殊能力は
外枠I ○I外枠
I ○I
I○ I
のような状況での「積み」回避を想定したものです。
390ポイント を手に入れた。
|
|
|
|
|
Name: 木霊 ..上級者(21,295ポイント)
Date: 2008/10/29(水) 03:22
No:23187
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
風向きや風力など、基本的に全て乱数です。
制御しているのは、最初の方のステージでは簡単になるようにしているぐらいです。
横方向の広がり 30ステージ目で最大
風力 無制限
エキスパートモードのタイムリミット 15ステージ目で最大
足場の移動範囲 30ステージ目で最大
になります。
って、風力の限界設定忘れてたみたいです(今見直しました)・・・
2万点前後で「軽い」だとこれが原因ですね。
Game.cppの78行目の
if ( Stage >= 10 ) { Wind = ( rand () %( Stage >>1 )-( Stage >>2 ) )/10.0; }
の後に
if ( Wind >= 0.5 ) { Wind = 0.5; }
if ( Wind <= -0.5 ) { Wind = -0.5; }
を付け足してもらえると助かります・・・
・・・やっぱりもう一度送ったほうがいいですよね?
27ポイント を手に入れた。
|
|
|
|
|
Name: 木霊 ..上級者(21,345ポイント)
Date: 2008/10/29(水) 15:01
No:23215
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
もう一つ追記
「重い」の場合、画面中央から右(左)端まで届き、画面端でループするので
左回りでは届かなくても右回りなら届きます。(逆も)
各テーマについては「〜に立ち向かう」です・・・
50ポイント を手に入れた。
|
|
|
|
|
Name: 木霊 ..上級者(21,370ポイント)
Date: 2008/10/29(水) 15:07
No:23218
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
分かりました。
じゃあ、ちょっと修正してもう一度送りなおします。
お手数かけてすみません。
25ポイント を手に入れた。
|
|
|
|
|
Name: 木霊 ..上級者(21,416ポイント)
Date: 2008/10/29(水) 18:24
No:23232
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
サンプルの修正版を送りました。
今後は致命的なバグがない限り、修正しません。
意向にそぐわない場合、削除していただいても構いません。
判断は管理人さんにお任せします。
2倍のポイントを手に入れた! 46ポイント を手に入れた。
|
|
|
|
|
Name: kirbest ..かけだし(1,666ポイント)
Date: 2008/10/30(木) 18:19
No:23259
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
ボン○ーマンのソースが非常に興味があるのですが、
さすがにソースの公開はきびしいでしょうか?
自作ゲーム紹介にある「SPボムマン」ほど凝ったものではなく、
本当に基礎の部分だけで十分なのですが
(逆にややこしいとソースが読めないですorz)
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(869,764ポイント)
Date: 2008/10/30(木) 18:44
No:23261
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
ありがとうございます。
SPボムマンは著作権的な問題もあるのですが、
あんなコードを公開するわけに行かないというのが本音です^^;
ボンバーマンって移動制御が思いのほか難しいんですよね。
中途半端に壁の間にいるときはカーブするように移動しないといけなかったり
その実装に昔結構悩んだ思い出があります。
RPGのように1区間ずつ移動するのなら簡単なんですけどね。
時間があればそういうサンプルも追加してみたいなと思っていますが、
ごめんなさい今すぐに公開する予定はありません。
さしあたりすぐに実装出来そうなのはゲームプログラミングの館で紹介している
2D移動の移動速度を早くしたバージョン位ですかね。
1区間ずつの移動になってしまいますが。
SPボムマンのプログラムではなく、ゲームはキャラクタの絵をかえていつか公開したいなと思っています。
・・が、絵がかけないんで公開できないんですよねorz
275ポイント を手に入れた。
|
|
|
|
|
Name: けんたろうちゃん ..かけだし(1,848ポイント)
Date: 2008/10/30(木) 21:38
No:23262
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
僕は2Dアクションに興味があるので、Curse'sSoulの方も機会があったら読んでみたいです
36ポイント を手に入れた。
|
|
|
|
|
Name: 木霊 ..上級者(21,658ポイント)
Date: 2008/11/01(土) 01:53
No:23306
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
しばらくネットに繋げなかったのですが、自分の最後の書き込みを読み返してみると
あまりいい印象をもたれない文章になってます。
管理人様ならびに不愉快に思われた方、すいません。
「サンプル」として掲載させていただいたのに「ゲーム」としてのバージョンアップをするということを
してしまったので、今後はそのような勝手をしないという宣言であって、他意はありません。
ところで管理人様にお願いがあります。
前述の通り「ゲーム」としてバージョンアップしてしまったので、タイトル部分にバージョン情報を
付記していただけますでしょうか?
管理人様の意見を反映させて難易度を下げ、それに伴ってこまごまとした変更を行ってます。
無理なお願いをしてすみません。
242ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(871,179ポイント)
Date: 2008/11/01(土) 01:58
No:23308
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
>>けんたろうちゃんさん
Curse'sSoulのプログラムはサンプルプログラムの一番下にあるゴミサンプルと同じようなプログラムです^^;
アクションゲーはあまり作った経験が無いので、参考にしない方がいいかもしれません・・。
>>木霊さん
いえいえ、別に不快な思いなどはしていませんよ。
サンプルのご提供有り難く思っています。
ではまた新しいバージョンを渡してくださるという事でしょうか?
137ポイント を手に入れた。
|
|
|
|
|
Name: 木霊 ..上級者(21,665ポイント)
Date: 2008/11/01(土) 02:36
No:23312
|
|
Title: Re:■ サンプルプログラミングの館作りました ■
|
|
>管理人様
いえ、前回お送りさせていただいたものが現在最新の「Ver 1.01」になります。
変更点の詳細は同梱の「説明.txt」に記載しております。
テーマ云々については、改造を前提としてますので記載しておりません。
・・・もう少し、調整した方がよろしいでしょうか?
7ポイント を手に入れた。
|
|
|
|
Name: J ..中級者(12,070ポイント)
Date: 2008/10/31(金) 18:14
No:23298
|
|
Title: シューティングゲームの重要性
|
|
こんにちは。
今までC言語ではパズルゲームだけしか作っておらず、シューティングゲームはスルーしてきました。
しかし・・・
パズルゲームの製作を進めていくうちに、シューティングゲームの重要性に気がついてきました。
アニメーションをつけようとするとほぼ立ち塞がるのがsin、cos、tan。
中学生の頃習った記憶はあるのですが、すっかり忘れてしまいまして。。
アニメーションで必要不可欠な知識ですよね・・・
今まではその場しのぎでサイトのコピペしてこうすれば・・・と適当に流してきました(爆
理解したいんですけどやる気が・・・
シューティングゲームを作る気力が湧きません。どうにかして習得したいんですが。。
いまさらですが、どなたかアニメーションにすぐに転じられるsin,cos,tanの知識・使い方を教えてください。
お願いします。
2倍のポイントを手に入れた! 498ポイント を手に入れた。
|
|
|
|
Name: たかぎ [URL] ..熟練のプログラマー(66,888ポイント)
Date: 2008/10/31(金) 22:21
No:23301
|
|
Title: Re:シューティングゲームの重要性
|
|
> パズルゲームの製作を進めていくうちに、シューティングゲームの重要性に気がついてきました。
> アニメーションをつけようとするとほぼ立ち塞がるのがsin、cos、tan。
それはシューティングゲームとかではなく、三角関数の話ですよね。
高校生向けの参考書でも読めば習得できると思います。
ついでに、ベクトルや行列などの線形代数もやっておけば、3Dゲームでも大丈夫です。
50ポイント を手に入れた。
|
|
|
|
Name: cev05800 ..ぴよぴよ(188ポイント)
Date: 2008/10/31(金) 02:07
No:23267
|
|
Title: ヘッダー内にある定義文が判りません
|
|
始めまして。
C言語でコーディングされたプログラムを解読し、修正しなければならず、C言語を始めた初心者です。
インターネットや本を参考に理解しようとしておりますが、下記のコーディングの意味が判りません。
どなたか、初心者向けに易しくお教え下さい。
ヘッダーファイルに記入されていた物で、
void read_data(FILE*,FILE*,XXX*);
*PPPと先頭に*があればポインター宣言かと思いますが、*が後ろにある場合は、何を意味するのかが
不明です。
どうぞ、宜しくお願いいたします。
188ポイント を手に入れた。
|
|
|
|
Name: lbfuvab ..初心者(6,778ポイント)
Date: 2008/10/31(金) 02:11
No:23268
|
|
Title: Re:ヘッダー内にある定義文が判りません
|
|
宣言で変数名を省いた物かと思います。
例えばint hoge(int a,int *b,FILE *fp);は
int hoge(int,int*,FILE*);の様にも宣言できます。
37ポイント を落としてしまった。
|
|
|
|
|
Name: cev05800 ..ぴよぴよ(202ポイント)
Date: 2008/10/31(金) 12:45
No:23280
|
|
Title: Re:ヘッダー内にある定義文が判りません
|
|
> 宣言で変数名を省いた物かと思います。
> 例えばint hoge(int a,int *b,FILE *fp);は
> int hoge(int,int*,FILE*);の様にも宣言できます。
ご回答ありがとうございました。
14ポイント を手に入れた。
|
|
|
|
Name: 山崎 ..かけだし(1,713ポイント)
Date: 2008/10/31(金) 09:59
No:23274
|
|
Title: fscanfでカンマ区切りの文字列を読み出したい
|
|
何度もお世話になっております、山崎です。
今回は、fscanf(本当はDXライブラリのFileRead_scanfなのですが)について
皆様のお知恵を貸してほしいと思い参りました。
現在、マップの内容が記述されたテキストファイルを読み込み、
マップのために確保された構造体の配列にファイルの内容を格納する処理を作っております。
読み込むテキストファイルには、
130,1 130,1 140,2 150,3
130,2 140,2 100,4 200,4
...
...
このように、short intとunsigned charが
スペースとカンマに区切られてたくさん記述されております。
「130,1」でひとつの構造体の内容を表しております。
カンマの前の数値をshort intへ格納し、カンマの後ろの文字をunsigned charに格納したいと思っています。
このファイルを読み込んで最終的には構造体のメンバに次々内容を格納していきたいと思い
次のコードを試しに書いたのですが、ビルドは通るのですが実行時エラーとなります。
なお、下のコードはテストのため、ファイルの全てを読み込まず最初の一行だけ読み込んでいます。
//"testtext.txt"は読み込むファイル名
short int testBuf;
unsigned char testBuf2;
int testMapFileHandle=FileRead_open("testtext.txt");
FileRead_scanf(testMapFileHandle,"%d,%c ",testBuf,testBuf2);
printfDx("%d\n%c\n",testBuf,testBuf2);
FileRead_close(testMapFileHandle);
どうすればファイルのカンマとスペースで区切られた文字列を、
short intとunsigned charに読み出すことができるのでしょうか。
基本的な質問かもしれませんが、皆様のお知恵をお貸ししてほしいと思います。
531ポイント を手に入れた。
|
|
|
|
Name: toyo ..上級者(20,164ポイント)
Date: 2008/10/31(金) 10:44
No:23275
|
|
Title: Re:fscanfでカンマ区切りの文字列を読み出したい
|
|
FileRead_scanf(testMapFileHandle,"%d,%c ",testBuf,testBuf2);
は
FileRead_scanf(testMapFileHandle,"%d,%c ",&testBuf,&testBuf2);
では
46ポイント を手に入れた。
|
|
|
|
|
Name: toyo ..上級者(20,191ポイント)
Date: 2008/10/31(金) 10:56
No:23276
|
|
Title: Re:fscanfでカンマ区切りの文字列を読み出したい
|
|
それと%cだと'1'が49になりますがそれで良かったですか。
27ポイント を手に入れた。
|
|
|
|
|
Name: 山崎 ..かけだし(1,803ポイント)
Date: 2008/10/31(金) 11:01
No:23277
| 解決!
|
Title: Re:fscanfでカンマ区切りの文字列を読み出したい
|
|
toyoさん
ご返信、まことにありがとうございます。
本当に恥ずかしいです、こんな基本的なところでつまずきますとは・・・。
穴があったら入りたいです。
「&」をつけたところ、見事に動きました。
&をつけていろいろ試してはいたのですが、
ほかのバグに引っかかっていたようで「&がないのはバグの原因じゃないのか」と
思い込んでおりました・・・。
90ポイント を手に入れた。
|
|
|
|
|
Name: 山崎 ..かけだし(1,814ポイント)
Date: 2008/10/31(金) 11:02
No:23278
| 解決!
|
Title: Re:fscanfでカンマ区切りの文字列を読み出したい
|
|
toyoさん
あ、はい 気を遣って頂き本当にありがとうございます。
0〜255の値なら何でもいいので、その部分は問題ありません。
11ポイント を手に入れた。
|
|
|
|
Name: 柏 ..中級者(13,409ポイント)
Date: 2008/10/26(日) 01:35
No:23061
|
|
Title: コンソールアプリでの裏画面処理
|
|
現在コンソール上(コマンドプロンプト上?)で動くテトリスを作成しようと思っているのですが、
まず手始めに適当に描画をしてみようと思い無限ループのなかで、
clrscr()で画面消去
↓
描画
という流れでテストしてみたのですが、画面がチカチカとちらつきます。
こちらのゲームプログラミングの館をすでに拝見済みでしたのでとりあえず裏画面処理を
しないといけないのかなと思い、少し調べてみたのですが、どうにもWin32APIなどを学ば
ないといけないような、そういった解説が多かった気がします。
APIの事自体をあまりよく知らないので思い違いかもしれませんが。
そもそも裏画面処理というものも漠然とした理解しかないのですが。。。
以上のことから質問したいことは、コンソールアプリでの連続した描画を行うにはAPIの勉強をしなければ難しいでしょうか? ということです。
何かアドバイス頂ければ幸いです。
コンパイラ:BorlandC++ Compiler
開発環境:BCC Developer
OS:Windows XP
359ポイント を手に入れた。
|
|
|
|
Name: 柏 ..中級者(13,741ポイント)
Date: 2008/10/26(日) 01:43
No:23063
|
|
Title: Re:コンソールアプリでの裏画面処理
|
|
一応以下がテストに使用したソースです。
BorlandC++ Compiler以外(私が確認した限りではVisualC++2005)ではclrscr()関数が
使用できないみたいですね……。
※一応VisualC++で動くものを添付しておきました。多分動くと思います...
※使用している画面を消去する関数の内容は全く理解していません。
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#define _MAIN_
#define SQUARE "■"
#define SPACE " "
void fall();
int main(void){
fall();
return(0);
}
void fall(){
int a=0;
typedef struct{
int flag;
}BLOCK;
BLOCK block[20][8];
memset( &block, 0, sizeof(block) );
block[a][4].flag=1;
while(1){
clrscr();
char key=0;
if( kbhit() )
key = getch();
if(key =='r')
a++;
block[a-1][4].flag=0;
block[a][4].flag=1;
for(int i=0; i<20; i++){
for(int j=0; j<8; j++){
if(block[i][j].flag==0)
printf("0");
else if(block[i][j].flag==1)
printf("%s", SQUARE);
}
printf("\n");
}
Sleep(20);
}
}
332ポイント を手に入れた。
|
|
|
|
|
Name: バグ ..ハッカー(117,866ポイント)
Date: 2008/10/26(日) 09:51
No:23079
|
|
Title: Re:コンソールアプリでの裏画面処理
|
|
コンソールアプリの場合、裏画面という概念は無いと思った方がいいですね。
しかし、全て消して、書き直していたのではどうしても画面がちらつきます。
ですから、必要な部分だけを書き換えるようにするとかなりマシになります。
自作なので、バグがあるかもしれませんが…、添付したファイルにコンソールアプリを作成する際に便利な機能をクラス化したものが入っています。
このクラスのメンバ関数であるSetCursorPostion関数で、カーソルを任意の位置に移動できますので、そこでprintfやstd::coutで描画してください。
詳しい仕組みが知りたい場合は、またご質問ください(^-^)
102ポイント を手に入れた。
|
|
|
|
|
Name: バグ ..ハッカー(117,907ポイント)
Date: 2008/10/26(日) 10:10
No:23080
|
|
Title: Re:コンソールアプリでの裏画面処理
|
|
前記のConsoleクラスの使用例のサンプルソースです。
全てを書き換えてはいますが、同じ位置に描画しているので、思ったよりはチラつかないのではないでしょうか?
41ポイント を手に入れた。
|
|
|
|
|
Name: 柏 ..上級者(15,300ポイント)
Date: 2008/10/26(日) 22:41
No:23111
|
|
Title: Re:コンソールアプリでの裏画面処理
|
|
バグさん、アドバイスありがとうございます。
さっそく頂いたサンプルソースを動かしてみましたが、、、おお、これはすごい。
「思ったよりはチラつかない」という記述があったので、少しはチラつくのかな……と思っていましたが全く問題ないです。
上に掲載したテスト用のソースで再度テストしてみても問題ありませんでした。
これで描画の問題は完璧に解決できそうです。ありがとうございます。
バグさんのConsole.hとConsole.cppはリバーシを作る時に色の指定部分だけ使用させてもらっていたのですが、
まさかこんな事も出来るとは思いませんでした。
事前にこのような形になっていなければ、とても今の自分の力では不可能でした^^;
とりあえず描画の問題は解決したのですが、いくつか質問したいことがあります。
お時間のある時にでも教えて頂ければ幸いです。
1.SetCursorPostionの動作について
このSetCursorPostionについてなのですが、この関数は描画する際、一度カーソル位置にある文字列なりなんなりを消去してから描画、
という動作をしているのでしょうか?
例えるなら
バックスペースで削除→入力(描画)
といった感じでしょうか。
2.局所的な色の変更方法
SetForegroundColor関数についてなのですが、今の所ある一部分だけ色を変えたいという場合には
console.SetForegroundColor(Red);
printf("■");
console.SetForegroundColor(Gray);
という感じで一度色を変更した後に再度デフォルトの色(この場合はグレイ)に戻しているのですが、
この方法が一般的でしょうか?
もっと効率的というか、わざわざデフォルトの色に戻す記述を入れない方法などあるかなと思いまして。
3.GetForegroundColor()について
この関数は、名前から察するに現在設定されている色の情報を取得する関数のような気がするのですが、
それであっているでしょうか?
確認してみようとは思ったのですが、引数の型がConsoleColor型(?)
だったりとちょっと理解できませんでした。
ビット演算(?)をしているような気もしますし、もしAPI絡みのお話などが出てくるようであれば、
とりあえずこれは色を取得する関数なのかどうか、という部分だけお答え頂ければと思います。
4.ConsoleColorについて
あらかじめDarkBlueやRedといった具合に定義されていると思いますが、
これに新たな色を追加することは出来るのでしょうか?
例えばピンクや紫といった感じです。
テトリスを作るだけなら今ある色で十分なのですが、少し気になったもので。。。
5.SetWindowSize()について
これは恐らく名前の通り、windowサイズを任意を大きさにしてくれるものなのかなと思い、
x,yがウインドウの左上の座標でwidth,heightでウインドウの大きさを指定するものだという仮定のもと動かしてみましたが、
特に何も変わりませんでした。
大雑把な質問で申し訳ないのですが、これはどういった事をする関数なのでしょうか?
6.SetBackgroundColor()について
いい加減多くなってきたのでこの辺りで最後に。。。
このSetBackgroundColorなのですが、コンソール画面上全体は指定した色で塗りつぶすことは出来ないでしょうか?
一応適当にスペースなどを画面いっぱいに敷き詰めれば可能なのかもしれませんが、
もっと効率的な方法などはあるでしょうか?
以上です。
テトリスを作るうえでは描画の問題が解決したので、SetBackgroundColor()等などについては知らなくても問題はないのですが、
色々試しているうちに疑問が出てきてしまいまして^^;
質問事項が6つと多くなってしまいましたが、ちょちょいと簡単にでもいいのでお答え頂ければありがたいです。
1,559ポイント を手に入れた。
|
|
|
|
|
Name: バグ ..ハッカー(119,245ポイント)
Date: 2008/10/27(月) 12:00
No:23133
|
|
Title: Re:コンソールアプリでの裏画面処理
|
|
>>1.SetCursorPostionの動作について
>>このSetCursorPostionについてなのですが、この関数は描画する際、一度カーソル位置にある文字列なりなんなりを消去してから描画、 という動作をしているのでしょうか?
例えるならバックスペースで削除→入力(描画)といった感じでしょうか。
printf関数やstd::coutなどの内部処理的にはそうなのかもしれませんが、SetCursorPosition関数自体は、カーソル(文字入力待ち位置で点滅していますよね?)の位置を移動させているだけです。描画までは行っておりません。
>>2.局所的な色の変更方法
>>SetForegroundColor関数についてなのですが、今の所ある一部分だけ色を変えたいという場合には
>>console.SetForegroundColor(Red);
>>printf("■");
>>console.SetForegroundColor(Gray);
>>という感じで一度色を変更した後に再度デフォルトの色(この場合はグレイ)に戻しているのですが、
>>この方法が一般的でしょうか?
>>もっと効率的というか、わざわざデフォルトの色に戻す記述を入れない方法などあるかなと思いまして。
今回添付したバージョンに、新たにColorStringという関数を追加しましたので、そちらを利用ください。
>>3.GetForegroundColor()について
>>この関数は、名前から察するに現在設定されている色の情報を取得する関数のような気がするのですが、
>>それであっているでしょうか?
>>確認してみようとは思ったのですが、引数の型がConsoleColor型(?)
>>だったりとちょっと理解できませんでした。
>>ビット演算(?)をしているような気もしますし、もしAPI絡みのお話などが出てくるようであれば、とりあえずこれは色を取得する関数なのかどうか、という部分だけお答え頂ければと思います。
そうですね。現在設定されている文字の色を取得する関数です。
ConsoleColor型は私が用意したオリジナルの列挙型です。今回添付したファイルの中にreadme.txtというファイルがありますので、そのファイルの一番最後にConsoleColor列挙型について書いておきましたので、そちらを御覧下さい。
ビット演算を使用しているのは、前景色と後景色の両方の情報が1つの変数に格納されているので、それを分離させる為です。
>>4.ConsoleColorについて
>>あらかじめDarkBlueやRedといった具合に定義されていると思いますが、これに新たな色を追加することは出来るのでしょうか?
>>例えばピンクや紫といった感じです。
>>テトリスを作るだけなら今ある色で十分なのですが、少し気になったもので。。。
現状のWindowsの仕様ではコンソールアプリで使用できる色は16色だけです。
その内容も変更できませんので、今よりもグラフィカルなアプリケーション開発を行いたいのであれば、コンソールアプリでは無理です(^_^;)
あ、紫はありますよ。Magentaがそうですね。
>>5.SetWindowSize()について
>>これは恐らく名前の通り、windowサイズを任意を大きさにしてくれるものなのかなと思い、
>>x,yがウインドウの左上の座標でwidth,heightでウインドウの大きさを指定するものだという仮定のもと動かしてみましたが、特に何も変わりませんでした。
>>大雑把な質問で申し訳ないのですが、これはどういった事をする関数なのでしょうか?
その認識であっています。Windowの大きさを変更する関数です。
大きさが変わらなかったのは、恐らく変更不可能なサイズ(大き過ぎor小さ過ぎ)を指定されたのではないかと思います。指定できるサイズは動作環境によって変わりますので、戻り値で関数の成否を確認してください。
この関数に限らず、全ての関数の戻り値はBOOL型になっており、TRUEが返った場合は成功、FALSEが返った場合は失敗となっています。
あ、それから、引数の扱いがちょっと分かりづらかったので今回の新バージョンでは、引数をWidthとHeightだけにしました。
>>6.SetBackgroundColor()について
>>いい加減多くなってきたのでこの辺りで最後に。。。
>>このSetBackgroundColorなのですが、コンソール画面上全体は指定した色で塗りつぶすことは出来ないでしょうか?
>>一応適当にスペースなどを画面いっぱいに敷き詰めれば可能なのかもしれませんが、もっと効率的な方法などはあるでしょうか?
APIのコンソールに関する関数を調べていたら、いいのがありましたので今回の新バージョンで追加してみました。FillScreenという関数です。指定した色で画面を塗りつぶします。スペースを敷き詰めるよりは早いんじゃないかと思われます。
1,250ポイント を手に入れた。
|
|
|
|
|
Name: lbfuvab ..初心者(6,974ポイント)
Date: 2008/10/27(月) 15:32
No:23137
|
|
Title: Re:コンソールアプリでの裏画面処理
|
|
全体の色を変えるなら
system("color 0e");
とかでも良いんじゃないですか?
32ポイント を手に入れた。
|
|
|
|
|
Name: バグ ..ハッカー(119,291ポイント)
Date: 2008/10/27(月) 15:46
No:23138
|
|
Title: Re:コンソールアプリでの裏画面処理
|
|
それでもいいんですが、systemコマンドだと前景と背景を同色に設定できないようなので、そこだけ少し不便ですね。
46ポイント を手に入れた。
|
|
|
|
|
Name: 柏 ..上級者(16,656ポイント)
Date: 2008/10/28(火) 18:54
No:23171
| 解決!
|
Title: Re:コンソールアプリでの裏画面処理
|
|
>バグさん
新しく追加されたColorStringですが、表示する文字列の指定も一緒に行うため、
一行で済むのでとても分かりやすくすっきりしますね。大変ありがたいです。
色についてですが、コンソールアプリではそのような仕様があるのですゥ。
でもコンソールアプリを作るうえで、あまり贅沢な事はしないと思うので16色もあれば十分かもしれませんね^^;
SetWindowSize()についてですが、小さい値にするとちゃんと変更出来ました。
普通に640×480などを指定していました。
縦方向には割と画面いっぱいまで表示してくれるようですが、
横方向はデフォルトの大きさくらいが限界のようですね。
今回の事でBOOL型のありがたさを知りました……クラスを自作(?)したりする時にはBOOL型で返却値を確認出来るようにすると便利なのですね。
返却値の判定が間違っていたらどうしようもないのかもしれませんが。。。
どうにかこれでテトリスを作る事は出来そうです。
色々と教えて頂き、本当にありがとうございます。
コンソールアプリでもいろんな事が出来そうだと、
私のなかでのコンソールアプリに対する可能性が広がった気がします(^_^;)
>lbfuvabさん
なるほど、このような方法もあるのですね。
systemコマンドはsystem("cls")しか知らなかったので、どう使えばいいんだろう……と適当にいじっていたら、system("color #")と入力して実行すると使い方のような物が表示されたのでビックリしましたw
systemコマンドは若干呼び出し、実行共に遅いようなのでその点だけが難点だと思っていましたが、最初に一回呼び出すだけなら全然問題ないですね。
色々と使えそうなものがないか調べてみたいと思います。
アドバイスありがとうございます。
2倍のポイントを手に入れた! 1,356ポイント を手に入れた。
|
|
|
|
|
Name: バグ ..ハッカー(120,221ポイント)
Date: 2008/10/28(火) 23:17
No:23177
|
|
Title: Re:コンソールアプリでの裏画面処理
|
|
>>SetWindowSize()についてですが、小さい値にするとちゃんと変更出来ました。
>>普通に640×480などを指定していました。
ああ、なるほど、ピクセルでの指定と勘違いされていたんですね。
コンソールアプリの場合は、ピクセル単位ではなく、キャラクター(半角文字)単位で指定する事がほとんどです。
ですので、SetWindowSize関数の引数であるwidthとheightも描画できる文字数だと思ってください。
ちなみにSetCursorPosition関数も同じです(^-^)
>>縦方向には割と画面いっぱいまで表示してくれるようですが、横方向はデフォルトの大きさくらいが限界のようですね。
これはですね、実はSetBufferSize関数で大きくしてやる事が出来ます。SetBufferSize関数で最大幅を拡大して、そのあとでSetWindowSize関数でウインドウ自体の大きさを変更してやってください。
ちなみにウチの環境(解像度1280×1024)だと、width = 159、height = 53に設定してやると、フル画面(?)のコンソールウインドウになりました(笑)
この関数の使用上の注意としては、現在設定されているウインドウの大きさ(GetWindowSize関数で確認できます)以下の数値は設定できないということだけ覚えておいてください。(※つまり、小さくしたい場合はあらかじめSetWindowSize関数で変更したい大きさにウインドウを小さくしておいてから、SetBufferSize関数で設定するということになります。)
2倍のポイントを手に入れた! 930ポイント を手に入れた。
|
|
|
|
|
Name: 柏 ..上級者(16,770ポイント)
Date: 2008/10/30(木) 22:45
No:23265
|
|
Title: Re:コンソールアプリでの裏画面処理
|
|
SetBufferSize関数での最大幅の拡大を試してみました。
うちの環境は1280×800ですが、最大サイズはwidth160,height41でした。
フル画面にしたのに相変わらず左端の方でこじんまりと描画していたので、
せっかくなので思いっきりど真ん中で描画したりしてみましたw
これだけ大きく表示出来れば、すごろくや人生ゲームといったボードゲーム、
神経衰弱なんかも作りやすそうですね。
114ポイント を手に入れた。
|
|
|
|
Name: オルビ♪ ..ぴよぴよ(416ポイント)
Date: 2008/10/30(木) 16:46
No:23252
|
|
Title: わからないとこだらけです。
|
|
次のプログラムは,name, month, day の3つのデータを端末から構造体に入力し,実行例に示す書式で出力します。a 〜 g を埋めてプログラムを完成せよ。
━(ここから)
//en1.c
#include <stdio.h>
typedef struct{
char name[30];
int month;
int day;
} DATE;
int main(void){
/*a*/ d;
printf("名前 月 日 >>");
scanf("%s%d%d", /*b*/, /*c*/, /*d*/);
printf("%d月 %d日 %sさんの誕生日\n",/*e*/,/*f*/,/*g*/);
return 0;
}
━(ここまで)
という問題です。私の考えとしては、
//en1.c
#include <stdio.h>
typedef struct{
char name[30];
int month;
int day;
} DATE;
int main(void){
/*a*/ d;
printf("名前 月 日 >>");
scanf("%s%d%d", &name, &month, &day);
printf("%d月 %d日 %sさんの誕生日\n",month,day,name);
return 0;
}
で、会っているかは全然わかりません。
aには何が入るのでしょうか?
(コードは管理人によって字下げされました)
416ポイント を手に入れた。
|
|
|
|
Name: 御津凪 [URL] ..プログラマー(28,976ポイント)
Date: 2008/10/30(木) 17:06
No:23254
|
|
Title: Re:わからないとこだらけです。
|
|
プレタグで囲むの失敗してますね。(preと/preの残骸が...)
管理人さんが仰っていますが、その部分さえ理解できれば、
この問題は解けますよ。
追記ですが、もし自宅に PC があり、ソースコードをコンパイルできる環境があれば、
回答があっているかどうかチェックできますよ。
あと、問題に対して一応ヒントを。
/*a*/ の部分は宣言を指定する型ですね。
ここには構造体の型名が入ります。
そして、 /*b*/ 〜 /*g*/ にはその構造体の型の変数 d の、
構造体変数を指定します。
251ポイント を手に入れた。
|
|
|
|
|
Name: オルビ♪ ..ぴよぴよ(548ポイント)
Date: 2008/10/30(木) 17:14
No:23256
|
|
Title: 一応出来ました。
|
|
//en1.c
#include <stdio.h>
typedef struct{
char name[30];
int month;
int day;
} DATE;
int main(void){
DATE d;
printf("名前 月 日 >>");
scanf("%s%d%d",d.name, &d.month, &d.day);
printf("%d月 %d日 %sさんの誕生日\n",d.month,d.day,d.name);
return 0;
}
132ポイント を手に入れた。
|
|
|
|
|
Name: オルビ♪ ..ぴよぴよ(737ポイント)
Date: 2008/10/30(木) 17:23
No:23257
|
|
Title: Re:一応出来ました。
|
|
2つの int型データ PAIR を構造体データ型として宣言する(メンバをx, yとする)。変数 tsui に PAIR を割り当て,tsui のメンバ x と y に 100, -100 を端末から入力し,その2数の差の絶対値を印刷するプログラムを作成せよ。
という問題が続くのですが、
//en1.c
#include <stdio.h>
typedef struct{
char name[100];
int month;
int day;
} PAIR;
int main(void){
PAIR tsui;
printf("名前 月 日 >>");
scanf("%s%d%d",tsui.name, &tsui.month, &tsui.day);
printf("%d月 %d日 %sさんの誕生日\n",tsui.month,tsui.day,tsui.name);
return 0;
}
って感じですか?
189ポイント を手に入れた。
|
|
|
|
|
Name: non ..かけだし(1,573ポイント)
Date: 2008/10/30(木) 18:37
No:23260
|
|
Title: Re:一応出来ました。
|
|
メンバーxとyで構造体を宣言しなさいという課題ですよね。
そしてその型をtypedefする方法を問う課題です。
最後に、メンバーの参照。
前の課題を参考に、型の宣言をしてみてください。
62ポイント を手に入れた。
|
|
|
|
Name: dic ..入門者(2,738ポイント)
Date: 2008/10/29(水) 20:27
No:23234
|
|
Title: 素朴な質問ですが
|
|
ただいまシューティングを制作しているのですが、ソースコードの美しさというか、
保守的な目で見て、どのようなコーティングスタイルをとるのか迷っています
具体例を挙げると
img[0]=LoadGraph("test00.bmp");
img[1]=LoadGraph("test01.bmp");
img[2]=LoadGraph("test02.bmp");
img[3]=LoadGraph("test03.bmp");
img[4]=LoadGraph("test04.bmp");
img[5]=LoadGraph("test05.bmp");
img[6]=LoadGraph("test06.bmp");
img[7]=LoadGraph("test07.bmp");
img[8]=LoadGraph("test08.bmp");
img[9]=LoadGraph("test09.bmp");
//-------------------------------------------------------------------
char str[80];
for(inti=0;i<10;i++){
wsprintf(str,"test%02d.bmp",i);
img[i]=LoadGraph(str);
}
//-------------------------------------------------------------------
char *filename[] = {
"test00.bmp",
"test01.bmp",
"test08.bmp",
"test09.bmp",
};
for( int i=0; i<sizeof(filename)/sizeof(filename[0]); i++ ) {
img[i] = LoadGraph( filename[i] );
}
のように3通りの方法があるのですが、どのコーティングスタイルにするか迷っています
「これがいいよ」とか意見ないでしょうか?
438ポイント を手に入れた。
|
|
|
|
Name: 御津凪 [URL] ..プログラマー(28,725ポイント)
Date: 2008/10/29(水) 20:38
No:23235
|
|
Title: Re:素朴な質問ですが
|
|
こういう手はどうでしょうか?
// 読み込む画像の数
#define IMGLIST_COUNT 10
// 画像IDの配列
int img[IMGLIST_COUNT];
// 画像読み込みリスト
const char* ImgFileList[IMGLIST_COUNT] = {
// 長くなるのでここは省略...
};
// 読み込み処理
for(int i = 0;i < IMGLIST_COUNT;++i){
img[i]=LoadGraph(ImgFileList[i]);
}
後で画像数が変わったとき、変更する部分が少なくて手間が省けます。
dic さんの3番目の手も同じように手間が省けますが、省ける箇所が違いますね。
261ポイント を手に入れた。
|
|
|
|
|
Name: Justy ..ハッカー(251,635ポイント)
Date: 2008/10/29(水) 21:29
No:23239
|
|
Title: Re:素朴な質問ですが
|
|
諸々考えると、3ですね。
>保守的な目で見て、どのようなコーティングスタイルをとるのか迷っています
1つ目は1〜3個くらいならともかく、10個もあったら「ない」です。
確実に連番に出来る(後々欠番が出来たりしない)のなら、2つ目は問題なしです。
3つ目は普通にいいと思います。
強いて言うなら、配列 imgの要素数が 配列 filenameの要素数以上に
なっている保証が欲しい(forループ回数のように配列 filenameに連動するといいですね)かな、
ということと、出来れば filename配列はconst char * const texture_file_list[]のように constをつけて
あると尚良しです。
ちなみに、この配列 filenameは関数の中に書きますか? 外に書きますか?
224ポイント を手に入れた。
|
|
|
|
|
Name: dic ..入門者(2,797ポイント)
Date: 2008/10/30(木) 08:59
No:23248
|
|
Title: Re:素朴な質問ですが
|
|
>御津凪さん
なるほどさらに改良できるのですね
参考になります
>Justyさん
これは関数の中に書きますね
59ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..熟練のプログラマー(66,838ポイント)
Date: 2008/10/30(木) 11:07
No:23249
|
|
Title: Re:素朴な質問ですが
|
|
C++らしくするなら、
const char* const filename[] = {
"test00.bmp",
"test01.bmp",
"test08.bmp",
"test09.bmp",
};
const std::size_t n = sizeof filename / sizeof filename[0];
std::vector<int> img;
std::transform(filename + 0, filename + n, std::back_inserter(img), &LoadGraph);
ですね。
後から動的にimgに追加を行うのでなければ、std::vectorの代わりにstd::tr1::arrayを使ってもよいでしょう。
190ポイント を手に入れた。
|
|
|
|
|
Name: Justy ..ハッカー(251,767ポイント)
Date: 2008/10/30(木) 11:21
No:23250
|
|
Title: Re:素朴な質問ですが
|
|
>これは関数の中に書きますね
なら、staticも付けてあげると、関数が呼ばれる度に配列を作らなくて
済むようになります。
2倍のポイントを手に入れた! 132ポイント を手に入れた。
|
|
|
|
|
Name: dic ..入門者(2,820ポイント)
Date: 2008/10/30(木) 15:20
No:23251
| 解決!
|
Title: Re:素朴な質問ですが
|
|
なるほどそういう手法もあるのですね
参考になりました
ありがとうございました
23ポイント を手に入れた。
|
|
|
|
Name: ヨッシー ..ぴよぴよ(332ポイント)
Date: 2008/10/29(水) 23:54
No:23242
|
|
Title: 初心者です。
|
|
このサイトを見て、ゲームを作りたくなりました!
今はC言語が少し身についてる程度なんですが・・・
教えてほしい事は、キャラクターの事についてなんです。
オリジナルのキャラの作成方法などや2D用のキャラが作りたいです!
教えてください!!
スミマセン補足です。
できればRPG系のキャラクターで、移動中の画像や、戦闘系の画像の作り方を教えてください。
多分・・・構造体というものだと思います。
間違ってたらすみません
キャラクターを書く?っていうのか、作りたいです
お願いします
236ポイント を手に入れた。
|
|
|
|
Name: lbfuvab ..初心者(6,815ポイント)
Date: 2008/10/30(木) 00:34
No:23245
|
|
Title: Re:初心者です。
|
|
次の質問に1か2で答えて下さい。
訊きたい事は
1.絵の描き方や使うソフトの事か
2.プログラム内でのキャラ画像の扱いか
どちらですか?
23ポイント を手に入れた。
|
|
|
|
|
Name: 究極の初心者 ..中級者(9,525ポイント)
Date: 2008/10/30(木) 01:47
No:23246
|
|
Title: Re:初心者です。
|
|
このような絵の描き方を知りたいということでしょうか?
(管理人様、ごめんなさい。無断でサンプルとして挙げさせて頂きました)
それとも、このように作ったキャラを動かす(右に歩くときは、右を向かせるなどの)プログラムが知りたいということですか?
キャラの動かし方の方法ならば、管理人様の作られた
ゲームプログラミングの館(http://dixq.net/g/)
の17〜25までにプログラムは載ってますよ。
作り方ならば、一度こちらに目を通してみるといいかと思います。
153ポイント を手に入れた。
|
|
|
|
Name: ヨッシー ..ぴよぴよ(96ポイント)
Date: 2008/10/29(水) 23:02
No:23240
|
|
Title: 初心者です。
|
|
このサイトを見て、ゲームを作りたくなりました!
今はC言語が少し身についてる程度なんですが・・・
教えてほしい事は、キャラクターの事についてなんです。
オリジナルのキャラの作成方法などや2D用のキャラが作りたいです!
教えてください!!
96ポイント を手に入れた。
|
|
|
|
Name: kazuoni ..プログラマー(36,207ポイント)
Date: 2008/10/29(水) 23:10
No:23241
|
|
Title: Re:初心者です。
|
|
とてつもなく漠然としていますが・・・^^;
まずジャンルは決まっていますか?
RPG、シューティングならこのホームページにいろいろと書いてありますが。
ちょっと回答しがたいです。。
キャラの画像の読み込みですか?
(RPGなら)キャラ移動のさせ方ですか?
キャラの構造体作成ですか?
もう少し具体的な内容のがよい回答が返ってくるはずです。
167ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(868,983ポイント)
Date: 2008/10/29(水) 23:56
No:23243
|
|
Title: Re:初心者です。
|
|
確かに漠然としてますね;
一瞬絵の描き方かな?と思いましたが、Cについてかいてあったので、プログラム的な話ですかね?
ウェブに落ちてる素材とか使わずオリジナルキャラを作るなら
一番最初にすべきことはやっぱ絵を書くことですかね。
ドット絵ならペイントでも書けるでしょうし、
もうちょっとちゃんと描きたいならPhotoShop,Sai,Painter,GIMP,PictBearなどを使うとよいでしょう。
143ポイント を手に入れた。
|
|
|
|
Name: ママ ..ぴよぴよ(478ポイント)
Date: 2008/10/29(水) 04:52
No:23190
|
|
Title: sprintf()でのヌル文字の指定
|
|
よろしくお願いします。
sprintf関数を使い変数に文字を入れているのですが
ヌル文字を途中で入れるとそこまでしか代入されず困っています。
ソースは以下の通りです。
char c[1024] = "";
int a = 10;
sprintf(c,"あいうえお\0かきくけこ%d",a);
このままだとあいうえおまでしか入らずカ行が代入されません。
実際にはTCHAR型を使い、sprintfの代わりに_stprintfを使用していますが・・・
ファイル操作のOPENFILENAMEメンバlpstrFilterに指定するためにどうしても
ヌル文字で区切る必要があります。
こんな質問でいいのかわかりませんがよろしくお願いします。
196ポイント を手に入れた。
|
|
|
|
Name: フリオ ..プログラマー(28,445ポイント)
Date: 2008/10/29(水) 05:58
No:23192
|
|
Title: Re:sprintf()でのヌル文字の指定
|
|
文字列を操作する関数は、基本的に'\0'で終端するようになっているので、
それを超えての操作は出来ないと思います。
"sprintf"を使うなら、2回に分けて、
#include <stdio.h>
#include <string.h>
int main(void)
{
char c[1024] = "", *p;
int a = 10, i;
sprintf(c,"あいうえお");
p = c + strlen(c) + 1;
sprintf(p,"かきくけこ%d",a);
for(i = 0; i < 24; i ++){
if(!c[i]) printf("\\0");
else putchar(c[i]);
}
return 0;
}
でどうでしょう。
175ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(868,442ポイント)
Date: 2008/10/29(水) 06:00
No:23193
|
|
Title: Re:sprintf()でのヌル文字の指定
|
|
別々にいれてみてはどうですか?
#include <stdio.h>
#include <string.h>
int main(void){
char c[1024];
int a = 10,len;
sprintf(&c[0],"あいうえお");
sprintf(&c[len=(strlen(c)+1)],"かきくけこ%d",a);
printf("%s%s",&c[0],&c[len]);
return 0;
}
実行結果
あいうえおかきくけこ10
15ポイント を手に入れた。
|
|
|
|
|
Name: hoge ..かけだし(2,357ポイント)
Date: 2008/10/29(水) 13:47
No:23211
|
|
Title: Re:sprintf()でのヌル文字の指定
|
|
%c変換を使う。
sprintf(c,"あいうえお%cかきくけこ%d", 0, a);
フリオさん、Dixqさんへ、
2回に分けるなら、sprintfの戻り値を使おうよ。
len = sprintf(c,"あいうえお")+1;
124ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..熟練のプログラマー(66,497ポイント)
Date: 2008/10/29(水) 15:43
No:23225
|
|
Title: Re:sprintf()でのヌル文字の指定
|
|
const char s[] = "あいうえお\0かきくけこ";
char c[1024];
int a = 10;
memcpy(c, s, sizeof(s)-1);
sprintf(c + sizeof(s)-1, "%d", a);
これでもOKです。
110ポイント を手に入れた。
|
|
|
|
|
Name: ママ ..ぴよぴよ(653ポイント)
Date: 2008/10/29(水) 17:57
No:23229
| 解決!
|
Title: Re:sprintf()でのヌル文字の指定
|
|
みなさんありがとうございます。
考えた結果こんな感じになりました。
char c[512];
char* p=c;
int a=10,b=20;
p = sprintf("あいうえお")+1;
p = sprintf("かきくけこ%d",a)+1;
p = sprintf("さしすせそ%d",b)+1;
p = sprintf("")+1;
ファイル操作なので最後にヌル文字を2つつけています。
たくさんの回答ありがとうございました。
175ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..プログラマー(29,223ポイント)
Date: 2008/10/29(水) 18:18
No:23231
|
|
Title: Re:sprintf()でのヌル文字の指定
|
|
環境書かれていないけどそのソースでコンパイルとおるんですか?
戻り値がchar*のsprintfって何?(私が無知なだけですか?)
48ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..熟練のプログラマー(66,648ポイント)
Date: 2008/10/29(水) 20:01
No:23233
|
|
Title: Re:sprintf()でのヌル文字の指定
|
|
> 環境書かれていないけどそのソースでコンパイルとおるんですか?
sprintfの引数の数が異なるので、コンパイルを通すには <stdio.h> をインクルードしない以外にはあり得ません(もちろん未定義の動作になります)。
> 戻り値がchar*のsprintfって何?(私が無知なだけですか?)
<stdio.h>をインクルードしてもしなくても、sprintfの返却型はintですね。
int型の値はchar*に代入することができます(コンパイルできます)。
もちろん、この場合にまともに動く可能性はありません。
151ポイント を手に入れた。
|
|
|
|
Name: 大学生 ..かけだし(1,688ポイント)
Date: 2008/10/29(水) 15:18
No:23219
|
|
Title: C言語の課題です。
|
|
問2(基礎):gstudent構造体
struct gstudent {
char name[20]; /*氏名*/
int height; /*身長*/
float weight; /*体重*/
long schols; /*奨学金*/
};
この各メンバに値を設定し,その構造体を返す関数
struct gstudent set_gstudent(char name[], int height, float weight, long schols){ }
を作成し,main()において適当な値を設定せよ.また,gstudent構造体へのアドレスが与えられたとき,そのメンバの値を表示する関数
void show_gstudent(struct gstudent *gs){ }
を作成し,main()において設定した内容を1行で表示せよ.
表示例:Mike 165 72.0 70000
問3(応用):問2のgstudent構造体の配列変数とその値を用意して,最も身長が高い学生のメンバを表示するプログラムを書け.
よろしくお願いします。
一応問2は自力でやりました添付しときます。問3がわかりません。解答例載せてくれるとうれしいです。
221ポイント を手に入れた。
|
|
|
|
Name: 大学生 ..かけだし(1,960ポイント)
Date: 2008/10/29(水) 15:20
No:23220
|
|
Title: Re:C言語の課題です。
|
|
添付できてなかったのでコピペします。
問2
#include <stdio.h>
#include <string.h>
struct gstudent {
char name[20];
int height;
float weight;
long schols;
};
struct gstudent set_gstudent
(char name[],int height, float weight,long schols)
{
struct gstudent a;
strcpy(a.name,name);
a.height = height;
a.weight = weight;
a.schols = schols;
return (a);
}
void show_gstudent(struct gstudent *gs)
{
printf("%s %d %f %ld\n",(*gs).name,(*gs).height,(*gs).weight,(*gs).schols);
}
int main ()
{
char x[100];
int y;
float z;
long w;
printf("namae : "); scanf("%s",&x);
printf("sincyou : "); scanf("%d",&y);
printf("taijuu : "); scanf("%f",&z);
printf("shougakukin : "); scanf("%ld",&w);
struct gstudent b = set_gstudent(x,y,z,w);
show_gstudent (&b);
return 0;
}
272ポイント を手に入れた。
|
|
|
|
|
Name: 匿名 ..入門者(2,652ポイント)
Date: 2008/10/29(水) 15:27
No:23221
|
|
Title: Re:C言語の課題です。
|
|
まずは規約をよく読んでください。
コードを書くときはタグを使って下さい。
また、宿題の答えを要求する行為も規約違反です。
アドバイスを受けて自分で作りましょう。
答えをくれって書くと、きっと答えてくれる回答者の数が減りますよ。
50ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) ..伝説なるハッカー(868,801ポイント)
Date: 2008/10/29(水) 15:58
No:23226
|
|
Title: Re:C言語の課題です。
|
|
まずいっぺんに作ろうとせず、一つ一つパーツを作ってつなげるといいですよ。
まず、
1. 5個の要素を持った配列を用意し、適当に値を代入し、その最大値を表示するプログラムを作る
2. 1のプログラムを拡張して、値の代入はscanfで行うようにする。
3. 2のプログラムを拡張して、何番目の値が最大か表示するようにする。
ここまで出来たら次はつなげるだけですね。
一応3の回答例を書いておきます。
まずは自分でやってみて、出来たら照らし合わせてみて下さい。
#include <stdio.h>
int main (){
int i,id,height[5],max;
for(i=0 ; i<5; i++){
scanf("%d",&height[i]);
if(i == 0){
max = height[0];
id = i;
} else {
if(max < height[i]){
max = height[i];
id = i;
}
}
}
printf("最大は%d番目に入力した%dの値\n", id+1, max);
return 0;
}
実行結果例
100
-20
349
38
200
最大は3番目に入力した349の値
521ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..プログラマー(29,175ポイント)
Date: 2008/10/29(水) 16:06
No:23227
|
|
Title: Re:C言語の課題です。
|
|
> gstudent構造体の配列変数とその値を用意して
とあるから、管理人さんのは答えじゃないんじゃないかな?
(そのまま使われないようにわざとそうしたのかもしれませんけど)
53ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(868,816ポイント)
Date: 2008/10/29(水) 16:38
No:23228
|
|
Title: Re:C言語の課題です。
|
|
そうですね。
理論がわかれば自分で実装出来ると思いますし、その方がいいと思ったので、
問題に対する答えそのものは書きませんでした。
>ここまで出来たら次はつなげるだけですね。
と書いたのはこれが出来たら自分がこれまで書いたプログラムに
当てはめるだけ、あるいは応用するだけですね、という意味だったのですが、
少々誤解を招きますね。
最大値を計算する方法と、最大値のIDが計算できれば後は表示だけなので、
もう自分で出来ますねって意味でした。
15ポイント を手に入れた。
|
|
|
|
Name: みどり ..ぴよぴよ(0ポイント)
Date: 2008/10/29(水) 13:13
No:23202
|
|
Title: fread()の返し値はcountより小さい?
|
|
Q: どんな場合、fread()の返し値はcountより小さいでしょうか。
fread()関数の説明(MS-VC++ helpから):
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
size_t fread(
void *buffer,
size_t size,
size_t count,
FILE *stream );
パラメータ
buffer
データの格納場所。
size
項目のサイズ (バイト単位)。
count
読み出す最大項目数。
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
実際の問題として、ファイルに残るデータのbyte数がcount×size より遥かに多いに関わらず、
fread()の返し値はcountより小さいです。
可能性のある原因についてご教授お願い致します。
279ポイント を落としてしまった。
|
|
|
|
Name: 御津凪 [URL] ..プログラマー(28,147ポイント)
Date: 2008/10/29(水) 13:30
No:23206
|
|
Title: Re:fread()の返し値はcountより小さい?
|
|
返す値は、項目数なので、最大 count までの値しか返しません。
つまり、 count が 5 、 size が 10 の時、読み出すbyte数は 50 ですが、返される値は 5 です。
読み込んだbyte数そのままを返したい場合は、size を 1、count を読み込む byte 数にすれば、読み込んだbyte数が返されます。
113ポイント を手に入れた。
|
|
|
|
|
Name: みどり ..ぴよぴよ(110ポイント)
Date: 2008/10/29(水) 13:39
No:23209
|
|
Title: Re:fread()の返し値はcountより小さい?
|
|
御津凪さま
早速ご返答ありがとうございます。
質問不明確で御免なさい!
まさに残る"項目数"はcountより大きいであるが、
返された数はcountより小さいケースです。
不思議に思いますが、原因は分かりません。
(以前、発生しなかった現象)
また宜しくお願い致します.
110ポイント を手に入れた。
|
|
|
|
|
Name: 御津凪 [URL] ..プログラマー(28,464ポイント)
Date: 2008/10/29(水) 13:56
No:23212
|
|
Title: Re:fread()の返し値はcountより小さい?
|
|
読み込むbyte数はどれくらいですか?
遥かに多い(MB単位ぐらい)場合、fread() 呼び出し一回では読みきれない場合があります。
(内部処理によりますし、元々エラーが発生しているのかもしれませんが)
対策として、こんな関数を作ってみました。size_t readfile( void* buffer, size_t size, FILE* fp ){
size_t rest = size; // 残り読み込みバイト数
size_t read; // 読み込んだバイト数
do{
read = fread(buffer,1,rest,fp);
rest -= read;
if(read == 0){ // 読み込みが1バイトもされなかった場合、
if(feof(fp)){ // EOF(ファイルの終端)に達した場合
return rest; // 読み込まれなかったbyte数を返す。
}
else{ // EOF でない(つまりエラー)場合
return (size_t)-1; // エラーを示す値を返す。
}
}
}while(rest != 0);
return 0; // 正常終了の 0 を返す。
}
動作確認はしてません。
317ポイント を手に入れた。
|
|
|
|
|
Name: みどり ..ぴよぴよ(417ポイント)
Date: 2008/10/29(水) 15:40
No:23224
| 解決!
|
Title: Re:fread()の返し値はcountより小さい?(原因は分かった)
|
|
御津凪 さま
丁寧なご指導ありがとうございます。
大きな誤りを犯してしまいました! .....Cではよくあるケースだと思います。
いまのbufferに当たるものは「ポインタ」ではなくて、「ポインタ」の「ポインタ」ですので
fread( buffer, size, count, stream );
ではだめなわけで、
fread( *buffer, size, count, stream );
ではなければならないことにやっと気づきました。
この「小さなミス」で、それ以降、理解不可能現象がぞくぞくと発生しました!
***************************************************
ただ、御津凪さまに示されたコードは参考価値が高くて、
他の場合にご利用させていただきます。
どうも有難うございました。
307ポイント を手に入れた。
|
|
|
|
Name: kazuoni ..プログラマー(35,532ポイント)
Date: 2008/10/29(水) 04:28
No:23189
|
|
Title: ライフゲームのセルの移動について
|
|
お邪魔します。
現在ライフゲームを作成しています。
大まかにはできたのですが、
移動型あるは増殖型のセルが自分の指定している領域から出る時の移動について困っています。
左から出れば右から現れる
上から出れば下から現れる
これはわかるのですが
右斜め上(角)から出たとき、すべての角から出てくる
こんな場合ありますよね?これってどうなっているのでしょうか?
正方形の中心にあわせて四隅を折り込む(折り紙・・・w)
と何からしきものは見えてくるのですが・・・なんだかしっくりこないです。
これが実現できないと(当然ですが)増殖型ができないです。。
分かりにくい質問で申し訳ありません。。
よろしくお願いします。
画像初投稿なんでうまくできているかどうか心配ですが・・・。
302ポイント を手に入れた。
|
|
|
|
Name: フリオ ..プログラマー(28,281ポイント)
Date: 2008/10/29(水) 07:17
No:23195
|
|
Title: Re:ライフゲームのセルの移動について
|
|
>左から出れば右から現れる
>上から出れば下から現れる
という上下左右がつながったフィールドは、
>正方形の中心にあわせて四隅を折り込む
ではなく、まず上下(または、左右)の辺を合わせて円筒を作り、その円筒の両口を合わせた
ドーナッツ形状の表面になります。
ですから、難しく考えなくても、上(下)から出たら下(上)、右(左)から出たら左(右)と
縦横の処理だけ考えればいいです。
164ポイント を落としてしまった。
|
|
|
|
|
Name: kazuoni ..プログラマー(36,023ポイント)
Date: 2008/10/29(水) 14:46
No:23213
| 解決!
|
Title: Re:ライフゲームのセルの移動について
|
|
遅くなりました。。
無事解決できました。
初めてライフゲームを知ってとても面白いなと思ったのですが・・・
なんだかどーもこれが人工生命とは思えないですね^^;
確かにイーターとかもいますが・・・。
最後になりましたがご回答ありがとうございました。
またよろしくお願いします。
80ポイント を手に入れた。
|
|
|
|
Name: 匿名 ..かけだし(2,387ポイント)
Date: 2008/10/28(火) 15:12
No:23165
|
|
Title: 配列などの値の変更
|
|
a[10];などの変数にすべて0を代入する場合、初期化では int a[10]={0}; とでも書けばすべてに0が入りますが一度タイトル画面に戻って再びゲーム開始、と言う時にこういう配列にひとつひとつ0を代入していくのは大変ですよね。今回はグローバル変数なので再宣言もできません、唯一思いつくのはすべてに0が代入されている構造体との値渡しぐらいです。なにか簡単にすべてに0を代入する方法は無いでしょうか。
175ポイント を手に入れた。
|
|
|
|
Name: 御津凪 [URL] ..プログラマー(27,908ポイント)
Date: 2008/10/28(火) 15:25
No:23166
|
|
Title: Re:配列などの値の変更
|
|
単に値を 0 にするなら memset 関数を使えばOKです。
memset(a,0,sizeof(a)); // a は初期化する配列
もし、初期値として 0 以外の数値を入れるのであれば、
あらかじめその初期値データを用意しておき、 memcpy 関数を使います。
memcpy(a,b,sizeof(a)); // a は初期値を格納する配列、b は初期値があらかじめ入っている配列
こんな感じでしょうか。
166ポイント を手に入れた。
|
|
|
|
|
Name: box ..ハッカー(128,237ポイント)
Date: 2008/10/28(火) 21:23
No:23174
|
|
Title: Re:配列などの値の変更
|
|
> 再びゲーム開始、と言う時にこういう配列にひとつひとつ0を代入していくのは大変ですよね。
そんなに大変なことでしょうか? 大変さの想像がつきません。
ループを所定の回数だけ回しながら初期化すればいいだけのことです。
39ポイント を手に入れた。
|
|
|
|
|
Name: 匿名 ..かけだし(2,407ポイント)
Date: 2008/10/29(水) 12:47
No:23196
|
|
Title: Re:配列などの値の変更
|
|
すいません
memcpy(a,b,sizeof(a));
のsizeofはなんですか?
20ポイント を手に入れた。
|
|
|
|
|
Name: 匿名 ..入門者(2,506ポイント)
Date: 2008/10/29(水) 12:57
No:23199
|
|
Title: Re:配列などの値の変更
|
|
多分わかったと思います。ちなみにmemcpy(a,b,sizeof(a));であって
memcpy(a[n],b[n],sizeof(a[n]));ではないんですね。
26ポイント を手に入れた。
|
|
|
|
|
Name: 匿名 ..入門者(2,537ポイント)
Date: 2008/10/29(水) 13:03
No:23201
|
|
Title: Re:配列などの値の変更
|
|
よくわかりました、ところで上には初期値と書かれていますが宣言した後でも可能でしょうか?
31ポイント を手に入れた。
|
|
|
|
|
Name: 御津凪 [URL] ..プログラマー(28,034ポイント)
Date: 2008/10/29(水) 13:20
No:23203
|
|
Title: Re:配列などの値の変更
|
|
たとえば、
int b[3] = {0,1,2};
とした、b の配列値を初期値とすると、 memcpy (memset では無いですよ)を使用して b からコピーすれば可能です。
もちろん、 b の値を変更した後でコピーすれば、その値になります。
83ポイント を手に入れた。
|
|
|
|
|
Name: 匿名 ..入門者(2,587ポイント)
Date: 2008/10/29(水) 13:34
No:23207
| 解決!
|
Title: Re:配列などの値の変更
|
|
よくわかりました。どうもありがとうございます。
2倍のポイントを手に入れた! 50ポイント を手に入れた。
|
|
|
|
Name: 久美 ..ぴよぴよ(236ポイント)
Date: 2008/10/26(日) 02:50
No:23065
|
|
Title: 引数をランダムに
|
|
ある変数に引数からランダムで数字をいれるという関数をつくりたいのですが
どうすればよいのかわかりません><
void RandNum(int *Num,・,・,・);
Numに・・・の中のどれかがランダムで入る。
・・・の数はその時によって変わる。
たとえば
RandNum(int &a, 3, 5)とかいたら
aに3か5が入り、
RandNum(int &a, 3, 5, 7)とかいたら
aに3か5か7が入ります。
また調べていたら引数でFormatと書いてある所が
あったのですがどういう意味なのでしょうか?
236ポイント を手に入れた。
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(855,994ポイント)
Date: 2008/10/26(日) 03:19
No:23067
|
|
Title: Re:引数をランダムに
|
|
これでどうでしょう?
int SelectRandNum( int a[], int n ){
return ( a [ GetRand( n-1 ) ] );
}
aにはランダムで返したい数字が入っています。
nはその個数です。
int a[5]={6,1,3,2,8}, ans;
ans = SelectRandNum( a, 5 );
このように呼ぶとaの中の数字のどれかが返ります。
100ポイント を手に入れた。
|
|
|
|
|
Name: box ..ハッカー(128,010ポイント)
Date: 2008/10/26(日) 06:49
No:23075
|
|
Title: Re:引数をランダムに
|
|
質問者さんは可変個の引数を受取る関数を
実装しようとしているようです。
管理人さんの話とはちょっと違うような気がします。
63ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..熟練のプログラマー(65,875ポイント)
Date: 2008/10/26(日) 09:12
No:23076
|
|
Title: Re:引数をランダムに
|
|
これは規格厳密合致プログラムでは実現できそうもありません。
とりあえず、GCCを使って次のようにすれば実現可能です。
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#define RandNum(var_decl, ...) const var_decl = RandNumHelper(sizeof((int[]){__VA_ARGS__})/sizeof(int), __VA_ARGS__)
int RandNumHelper(size_t n, ...)
{
n = rand() % n;
va_list ap;
va_start(ap, n);
int result;
for (size_t i = 0; i <= n; i++)
{
result = va_arg(ap, int);
}
va_end(ap);
return result;
}
int main(void)
{
for (int i = 0; i < 10; i++)
{
RandNum(int &a, 1, 2, 3);
printf("%d\n", a);
}
}
引数に int &a を渡したときに a に格納しないといけないとのことですので、C++でなければなりません。
322ポイント を手に入れた。
|
|
|
|
|
Name: バグ ..ハッカー(117,764ポイント)
Date: 2008/10/26(日) 09:32
No:23077
|
|
Title: Re:引数をランダムに
|
|
たかぎさんの後は緊張しますねぇ(^_^;)
とりあえず、関数部だけ…
C++やC#で書くことが多いのでmalloc関数を使用する機会が少ないので、なんか新鮮でした(^-^)
// int* data = データ格納用バッファへのポインタ
// int num = 可変個引数の個数
// 戻り値 = 数値取得に成功したら1を、エラー時には0を返します
int RandNum(int* data, int num, ...)
{
// 可変個引数の数値を一時的に格納するメモリを確保
int* buf = (int*)malloc(sizeof(int) * num);
if (buf == NULL)
{
// メモリの確保に失敗したので0を返す
return 0;
}
// 可変個引数の取得
va_list list;
va_start(list, num);
for (int i = 0; i < num; ++i) *(buf + i) = va_arg(list, int);
va_end(list);
// *dataにランダムに選択した数値を格納する
*data = *(buf + rand() % num);
// メモリの解放
free(buf);
// 数値取得に成功したので1を返す
return 1;
}
395ポイント を落としてしまった。
|
|
|
|
|
Name: たかぎ [URL] ..熟練のプログラマー(66,008ポイント)
Date: 2008/10/26(日) 12:21
No:23082
|
|
Title: Re:引数をランダムに
|
|
バグさん
//形式のコメントや for (int i = 0; i < num; ++i) という書き方から見てC99を想定しているのでしょうが、それならmallocを使わなくても可変長配列で十分な気がします。
そもそも、mallocも可変長配列も不要ですが...
この質問の難しいところは、可変個引数の個数が分からないため、自動的に認識させることと、第1引数に int &a のような宣言を渡すところです。void RandNum(int *Num,・,・,・); という関数原型と矛盾しているような気もしますが...
133ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..熟練のプログラマー(66,210ポイント)
Date: 2008/10/26(日) 12:41
No:23083
|
|
Title: Re:引数をランダムに
|
|
第1実引数が int &a ではなく &a でよいのであれば、規格厳密合致プログラムが可能になります。
#include <stdio.h>
#include <stdlib.h>
#define RandNum(result, ...) \
((void)(*(result) = (int[]){__VA_ARGS__}[rand() % (sizeof((int[]){__VA_ARGS__})/sizeof(int))]))
int main(void)
{
for (int i = 0; i < 10; i++)
{
int a;
RandNum(&a, 1, 2, 3);
printf("%d\n", a);
}
}
今度はC99で扱えます。ただし、このマクロは標準C++では使えません。
202ポイント を手に入れた。
|
|
|
|
|
Name: 久美 ..ぴよぴよ(470ポイント)
Date: 2008/10/26(日) 13:04
No:23084
|
|
Title: Re:引数をランダムに
|
|
このサイトの方たちは皆さん優しいですね><
えっと、言語はC++です。
Dixq (管理人)さんの
int SelectRandNum( int a[], int n ){
return ( a [ GetRand( n-1 ) ] );
}
int a[5]={6,1,3,2,8}, ans;
ans = SelectRandNum( a, 5 );
を使いますね>< と言いますか、これしか理論がわからないw
皆さん天才ですか?
できれば配列を使わずにこれをしたいのですが無理そうですのでこれでいきます。
もし、他にもできそうなのでしたらお願いします。
234ポイント を手に入れた。
|
|
|
|
|
Name: バグ ..ハッカー(117,995ポイント)
Date: 2008/10/26(日) 14:03
No:23086
|
|
Title: Re:引数をランダムに
|
|
>>たかぎさん
確かに、わざわざmallocを使う必要無かったですね。ご指摘有り難うございます(^-^)
>>久美さん
C++ならば、vectorに任意の値を格納し、random_shuffleでシャッフルして、先頭の値を返すとかでいいんじゃないでしょうか?
88ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(856,685ポイント)
Date: 2008/10/26(日) 15:41
No:23088
|
|
Title: Re:引数をランダムに
|
|
配列を使わずに、かつわかりやすくということでしたら、こういうのはどうでしょう。
int SelectRandNum(int a, int b){
int *p[2]={&a,&b};
*p += rand()%2;
return **p;
}
a,bのアドレスをポインタ配列pにいれます。
最初*pはaをさしています。もし*pに1を足すと、bをさしますよね。
それを利用して0か1どっちかを足せばaかbどっちかをさします。
*pに入っている変数の中身を返す
return **p;
するとaかbどちらかが返る事になります。
効率は悪いですが、これを沢山作るとか・・。
#include <stdio.h>
#include <stdlib.h>
int SelectRandNum(int a, int b){
int *p[2]={&a,&b};
*p += rand()%2;
return **p;
}
int SelectRandNum(int a, int b, int c){
int *p[3]={&a,&b,&c};
*p += rand()%3;
return **p;
}
int SelectRandNum(int a, int b, int c, int d){
int *p[4]={&a,&b,&c,&d};
*p += rand()%4;
return **p;
}
int main(void){
printf("%d\n",SelectRandNum(1,2));
printf("%d\n",SelectRandNum(2,3,4));
printf("%d\n",SelectRandNum(5,6,7,8));
return(0);
}
実行結果
2
4
7
447ポイント を手に入れた。
|
|
|
|
|
Name: tkmakwins15 ..比類無きプログラマー(90,680ポイント)
Date: 2008/10/26(日) 18:45
No:23094
|
|
Title: Re:引数をランダムに
|
|
引数40個までで、実装してみました。
#include<cstdio>
#include<cstdlib>
#include<ctime>
using namespace std;
/*↑
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
の代わり(警告対策)*/
class Input{
int value;
bool isendmark;
public:
Input(int invalue){
value=invalue;
isendmark=false;
}
Input(){
value=-1;//適当に代入しておく(警告封じ)。
isendmark=true;
}
bool IsEndMark()const{
return isendmark;
}
int GetValue()const{
return value;
}
};
void RandNum(int *Num,
const Input&arg1=Input(),
const Input&arg2=Input(),
const Input&arg3=Input(),
const Input&arg4=Input(),
const Input&arg5=Input(),
const Input&arg6=Input(),
const Input&arg7=Input(),
const Input&arg8=Input(),
const Input&arg9=Input(),
const Input&arg10=Input(),
const Input&arg11=Input(),
const Input&arg12=Input(),
const Input&arg13=Input(),
const Input&arg14=Input(),
const Input&arg15=Input(),
const Input&arg16=Input(),
const Input&arg17=Input(),
const Input&arg18=Input(),
const Input&arg19=Input(),
const Input&arg20=Input(),
const Input&arg21=Input(),
const Input&arg22=Input(),
const Input&arg23=Input(),
const Input&arg24=Input(),
const Input&arg25=Input(),
const Input&arg26=Input(),
const Input&arg27=Input(),
const Input&arg28=Input(),
const Input&arg29=Input(),
const Input&arg30=Input(),
const Input&arg31=Input(),
const Input&arg32=Input(),
const Input&arg33=Input(),
const Input&arg34=Input(),
const Input&arg35=Input(),
const Input&arg36=Input(),
const Input&arg37=Input(),
const Input&arg38=Input(),
const Input&arg39=Input(),
const Input&arg40=Input()
){
Input arglist[]={
arg1,
arg2,
arg3,
arg4,
arg5,
arg6,
arg7,
arg8,
arg9,
arg10,
arg11,
arg12,
arg13,
arg14,
arg15,
arg16,
arg17,
arg18,
arg19,
arg20,
arg21,
arg22,
arg23,
arg24,
arg25,
arg26,
arg27,
arg28,
arg29,
arg30,
arg31,
arg32,
arg33,
arg34,
arg35,
arg36,
arg37,
arg38,
arg39,
arg40
};
int count;
for(count=0;count<sizeof(arglist)/sizeof(arglist[0]);count++){
if(arglist[count].IsEndMark())break;
}
if(count<1)return ;
*Num=arglist[rand()%count].GetValue();
}
int main()
{
int rnum;
srand((unsigned)time(0));
RandNum(&rnum,10,30,65,20,54,42);
printf("%d\n",rnum);
return 0;
}
コードがめちゃくちゃですが、一応動作チェックはしています。
703ポイント を手に入れた。
|
|
|
|
|
Name: hoge ..かけだし(2,233ポイント)
Date: 2008/10/29(水) 01:35
No:23184
|
|
Title: Re:引数をランダムに
|
|
雑談になりますが、
No:23076のたかぎさんの発言に反応
> これは規格厳密合致プログラムでは実現できそうもありません。
多分、C99規格に合致していると思われるコードが書けました。
// ヘッダは省略
#define RandNum(var_decl, ...) RandNum##var_decl, __VA_ARGS__)
#define RandNumint RandNumintHelper(
#define RandNumintHelper(result, ...) \
((void)(*(result) = (int[]){__VA_ARGS__}[rand() % (sizeof((int[]){__VA_ARGS__})/sizeof(int))]))
int main(void)
{
for (int i = 0; i < 10; i++)
{
int a;
RandNum(int &a, 1, 2, 3);
printf("%d\n", a);
}
}
198ポイント を手に入れた。
|
|
|
|
Name: lbfuvab ..初心者(6,779ポイント)
Date: 2008/10/28(火) 17:30
No:23169
|
|
Title: リプレイなどの撮影
|
|
この前に色々エンコードの話が出たのでちょっと聞いてみたくなりました。
私は下記の様な方法で撮影しています。(やたらと面倒臭いです・・・)
@Ragud Mezegisで速度を20%(12fps)に落とす(東方などは色々設定を弄る必要があります)
Adisplay2aviで6fpsで撮影する(音なし)
BAVI Frame Rate Changerで撮影した動画を30fpsにする
CAudacityで音声を録音する
Davisynthでスクリプトを組んで必死こいて音声を合わせる
EffmpegでAVS(avisynth script)ファイルからWAVEファイルを作成
F「Eで作ったWAVEファイル」と「Dで作ったAVSファイル」を使ってaviutlでエンコードする
長所:動画自体は滑らかに動く(処理落ちフレームは絶対にないので)
短所:音を完全に合わせる事が出来ない
こんな感じです。
217ポイント を落としてしまった。
|
|
|
Name: rin ..ぴよぴよ(85ポイント)
Date: 2008/10/27(月) 02:03
No:23122
|
|
Title: つまづきました…
|
|
全くの初心者なのですが、このホームページの入門編から指示通りに進めたのにも関わらず、うまくいきませんでした。
DXライブラリの設定を確認とやらもしっかりできてるとは思うのですが…
VisualC++ 2008 Express Editionを使ってます。
85ポイント を手に入れた。
|
|
|
|
Name: rin ..ぴよぴよ(260ポイント)
Date: 2008/10/27(月) 22:51
No:23151
|
|
Title: Re:つまづきました…
|
|
言葉足らずで申し訳ございませんでした。
入門編(基本的な関数の使い方)の2の「ウィンドウを表示する。」より前は出来たのですが、2で、ここにあるサンプルプログラムをコピーして貼り付け実行したらビルドエラーになり、何故だかエラー一覧に39個もあり、警告が2個あってもう訳が分からなくなってしまいました。
【エラー 1 error LNK2005: __CrtSetCheckCount は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 LIBCMTD.lib】
ちなみに1番上のエラーは↑です。
175ポイント を手に入れた。
|
|
|
|
|
Name: おじゃまマン ..ぴよぴよ(135ポイント)
Date: 2008/10/28(火) 14:48
No:23164
|
|
Title: Re:つまづきました…
|
|
自作スタティックライブラリ リンク時LNK2005の回避方法(VC++)
msvcprtd.lib(MSVCP60D.dll) : error LNK2005:
"public: 〜〜" (〜〜) はすでに 〜〜(〜〜.obj) で定義されています
スタティックライブラリ作成時の「使用するランタイムライブラリ」(*1)と
使用側の「使用するランタイムライブラリ」が一致してない場合にこのエラーが出ます。
回避方法としては、使用側の「使用するランタイムライブラリ」と同じ値を
スタティックライブラリ側の「使用するランタイムライブラリ」に指定します。
VC++の設定
「プロジェクトの設定」→「C/C++」→「コード生成」の所にあります。
135ポイント を手に入れた。
|
|
|
|
|
Name: toyo ..上級者(19,972ポイント)
Date: 2008/10/28(火) 15:44
No:23167
|
|
Title: Re:つまづきました…
|
|
メニューバーの
「プロジェクト(P)」から一番下の「〜のプロパティ」を選びます。
開いたウィンドーで
「構成プロパティ」
↓
「C/C++」
↓
「コード生成」
を選びます。
右側の欄で「ランタイムライブラリ」をクリックすると右端に三角ボタンが表示されます。
三角ボタンをクリックして
「マルチスレッドデバッグDLL(/MDd)」を
「マルチスレッドデバッグ(/MTd)」に変更して「適用」ボタンをクリックします。
上の「構成」欄を「アクティブ(Debug)」から「Release」に変更し同様に
「マルチスレッドDLL(/MD)」であれば「マルチスレッド(/MT)」に変更します。
ウィンドーを閉じてビルドしなおしてみましょう。
19ポイント を手に入れた。
|
|
|
|
|
Name: rin ..ぴよぴよ(270ポイント)
Date: 2008/10/28(火) 19:32
No:23172
|
|
Title: Re:つまづきました…
|
|
管理人さん、おじゃまマンさん、toyoさん ありがとうございます。
おじゃまマンさんの書かれてるページへ行き、手順通りやって「6.プログラムを組む」でプログラムを組み、デバック実行したところ下記のエラーが出てしまいました。
手順通りやってたつもりなのですが一体何が原因なのでしょうか?
たびたびすみませんがよろしくお願いします。
エラー 1 fatal error C1083: include ファイルを開けません。'windows.h': No such file or directory h:\1、演習用\dxlib_vc\プロジェクトに追加すべきファイル_vc用\dxlib.h 35
10ポイント を手に入れた。
|
|
|
|
|
Name: toyo ..上級者(20,118ポイント)
Date: 2008/10/28(火) 19:44
No:23173
|
|
Title: Re:つまづきました…
|
|
@ VisualC++ 2008 Express Edition のメニューの『ツール』→『オプション』を選びます。
A オプションウインドウの左側から『プロジェクトおよびソリューション』→
『VC++ ディレクトリ』を選びます。
B 右側の『ディレクトリを表示するプロジェクト』から『インクルードファイル』を選びます。
ここに
$(WindowsSdkDir)\include
はありますか
146ポイント を手に入れた。
|
|
|
|
Name: 紅葉 ..かけだし(1,564ポイント)
Date: 2008/10/27(月) 19:34
No:23144
|
|
Title: 3Dで二つの物体の当たり判定
|
|
2回目の投稿になります><
3Dで二つの物体の当たり判定をしたいのですがよくわかりません。
BOX同士は回転している場合もあります。
またメッシュのサイズなどはそれぞれ違うので、
勝手に読み込んでくれなくてもかまわないので数字を変えてもできると助かります。
調べてみると法線ベクトルをつかうとよいと書いてありました。
処理速度などは考えなくてもよいのでよろしくお願いします。
法線ベクトルでなくても当たり判定がとれるなら助かります。
添付物はソースになります。
説明不足で申し訳ないのですが、もう一度お力を貸して下さい。
122ポイント を手に入れた。
|
|
|
|
Name: 紅葉 ..かけだし(1,641ポイント)
Date: 2008/10/27(月) 22:02
No:23149
|
|
Title: Re:3Dで二つの物体の当たり判定
|
|
すいません><
よく調べたら法線ベクトルって三角形と線の当たり判定なんですね・・・
できればボックス同士の当たり判定を教えていただきたいです><
77ポイント を手に入れた。
|
|
|
|
|
Name: 紅葉 ..かけだし(1,728ポイント)
Date: 2008/10/27(月) 22:42
No:23150
|
|
Title: 無題
|
|
連レス申し訳ありません><
bool Judge_Line_Plane(D3DXVECTOR3 p, D3DXVECTOR3 q, D3DXVECTOR3 v[3])
とあるのですが呼ぶ時にはどのようにかけばいいのでしょうか?
できれば私のソースに実装し見本を見せていただけますと助かります><
お忙しい中、申し訳ありませんがよろしくお願いします。
87ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..プログラマー(29,122ポイント)
Date: 2008/10/28(火) 10:00
No:23161
|
|
Title: Re:無題
|
|
> できれば私のソースに実装し見本を見せていただけますと助かります><
これって丁寧に言っているだけで、丸投げ依頼しているのと同じって理解してます?
参考HPにJudge_Line_Planeの引数には直線の始点、直線の終点、平面の頂点(平面は三角形)と書いています
が、何がわからないのでしょうか?
D3DXVECTOR3構造体がわからないのであれば、まずそれをググることから始められてはいかがでしょうか?
2倍のポイントを手に入れた! 190ポイント を手に入れた。
|
|
|
|
Name: ムンバ ..初心者(5,972ポイント)
Date: 2008/10/27(月) 00:25
No:23117
|
|
Title: #include <math.h>について
|
|
こんばんは。お世話になります。<(_ _)>
今、ゲームプログラミングの館の「27. ジャンプの考え方1(物理)」を勉強中です。
#include <math.h>
「27. ジャンプの考え方1(物理)」のプログラムソース内では
「sqrt関数」のみを扱うためのヘッダファイルの取り込み。
と、理解すればいいでしょうか?^^;
参考書とか参考HPを参考にさせて頂きながら
#include が、ヘッダファイルの呼び出し。
まだ、この程度の知識しかありません。(涙
よろしくお願い致します。
183ポイント を手に入れた。
|
|
|
|
Name: ムンバ ..初心者(6,027ポイント)
Date: 2008/10/27(月) 01:14
No:23121
| 解決!
|
Title: Re:#include <math.h>について
|
|
早速な、ご解説どうもありがとう御座います。
ご紹介ページ、お気に入りに登録させて頂きました。
ありがとうございました。<(_ _)>
55ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..熟練のプログラマー(66,387ポイント)
Date: 2008/10/27(月) 17:24
No:23139
|
|
Title: Re:#include <math.h>について
|
|
> #include が、ヘッダファイルの呼び出し。
厳密にいうと違います。
<math.h>のような標準ヘッダは、「ヘッダ」であって「ヘッダファイル」ではありません。
すなわち、「ヘッダ」はファイルによって実現しているとは限らないのです。
2倍のポイントを手に入れた! 138ポイント を手に入れた。
|
|
|
|
|
Name: ムンバ ..初心者(6,145ポイント)
Date: 2008/10/27(月) 20:09
No:23146
| 解決!
|
Title: Re:#include <math.h>について
|
|
たかぎさん、こんばんは。
> #include が、ヘッダファイルの呼び出し。
2冊の本を読んだだけの受け売りです。(激汗
まだ何も解っていませんが、たかぎさんのご解説、頭に入れました。
そのうち「なるほど、たかぎさんがおっしゃってた事は、この事だったんだ。」
って思える日がきっと来ると思うんです。
ご解説、どうもありがとうございました。
また何かありましたら宜しくお願い致します。
118ポイント を手に入れた。
|
|
|
|
Name: スコアラー ..ぴよぴよ(45ポイント)
Date: 2008/10/26(日) 20:17
No:23100
|
|
Title: なぜ??
|
|
ゲームをつくってるんですがCOSやSINを多用すると、めちゃめちゃ重くなってゲームが遅くなります。
私のPCの性能が悪いからなのでしょうか?
VISTAでメモリ512Mです。
原因わかる方教えて下さい
45ポイント を手に入れた。
|
|
|
|
Name: Justy ..ハッカー(251,411ポイント)
Date: 2008/10/26(日) 20:43
No:23103
|
|
Title: Re:なぜ??
|
|
>私のPCの性能が悪いからなのでしょうか?
Vistaとメモリだけでは何とも判断はつきませんが、可能性としてはありえます。
少しメモリが少ない(最低1GBくらいは欲しいところ)気もしますし、
CPU / GPUのパワーが不十分なのかもしれません。
>ゲームをつくってるんですがCOSやSINを多用すると、めちゃめちゃ重くなってゲームが遅くなります
本当に sinや cosが重いのか、どうか。
まず、それを確認した方がいいと思います。
sinや cosの計算をしないようにしたバージョンを作って試してみてはどうでしょうか?
仮に、ゲームが重い原因が本当に cosや sinだったとしたら。
それを解消するには以下の2点が有効だと思います。
1 sin/cosが使われているところを精査し、その処理が必要がどうかを
検討・修正します。
不要なところで使ってしまうことはよくあるので、その無駄をなくします。
2 それでも重いようならゲーム向けにカスタマイズした sin/cos関数を作ります。
たいていのゲームでは1周 360度を表現するのに標準関数に求められるほどの精度は
必要なかったりしますので、計算を端折って高速化したバージョンの sin/cos関数を
作っておけば、それなりに高速になると思います。
439ポイント を手に入れた。
|
|
|
|
|
Name: スコアラー ..ぴよぴよ(100ポイント)
Date: 2008/10/26(日) 21:27
No:23105
| 解決!
|
Title: Re:なぜ??
|
|
アドバイスどうもありがとうございます。
ちと、色々と試してみます。
またわからないことがあれば教えて下さいね☆
55ポイント を手に入れた。
|
|
|
|
|
Name: 管理人 [URL] ..かけだし(1,051ポイント)
Date: 2008/10/26(日) 21:51
No:23108
|
|
Title: Re:なぜ??
|
|
何回計算したらどれ位時間がかかるのか把握しておくのも大事だと思います。
#include <stdio.h>
#include <math.h>
#include <time.h>
#define PI 3.1415926535897932
int main(){
int i;
double c;
clock_t t;
t = clock();//時間を格納
printf("計測中です\n");
for(i=0;i<20000000;i++){
c = cos( PI/1000*(i%1000) );
}
printf("%.3f秒\n",(clock()-t)/(double)CLOCKS_PER_SEC);
}
実行結果例
計測中です
1.046秒
2000万回cosの計算するのにどれ位時間がかかるか計測するプログラムです。
うちのパソコンだと1秒でした。
math.hの関数は時間がかかると言えども1秒間に2000万回も計算できるわけです。
逆に言えば、これが原因だとすると、簡単なゲームや2Dゲームなどで
1秒間に2000万回も計算しないといけないようなプログラムは
それはそれで問題があるように思います。
(多数のポリゴンの計算などになると必要かもしれませんが)
案外他に原因がある可能性が高いです。
例えばDXライブラリでいえばSetFontSizeや画面をキャプチャする関数などを多用すると重くなります。
フォントサイズを毎回指定するときは、この関数を呼ぶのではなく、
フォントハンドルを最初に作って描画しないといけません。
また、見えないところで画像を何枚も重ねて描画していたり、
アルファブレンドを大きな面積でおこなっていたりしていても遅くなります。
このように関数の使い方を間違ったり、非効率なプログラムを書いたりしていても処理は遅くなるので、
その辺も見直してみるといいと思います。
もしもcos,sin計算が原因で、そこまで厳密な計算が必要ないときは、
あらかじめ配列に計算結果を代入しておくと言う方法もあるようです。
計算結果を格納する配列要素を1000個位用意しておき、
2π/1000ずつ予め計算しておいて格納しておくという方法です。
あまり良い方法ではないかもしれませんが。
しかしビスタで512Mは少なすぎると思います。
無理にビスタを入れる必要は無いのではないでしょうか?
スペックが低いのに重いOSを入れると使い物にならなくなってしまう可能性ありますし。
もしウィルスソフトとかいれてしまうと、常にメモリオーバーしている状態になっていると思います。
PF使用量はいくらになっていますか?
メモリオーバーになっていると、極端に処理は遅くなります。
582ポイント を手に入れた。
|
|
|
|
|
Name: スコアラー ..ぴよぴよ(142ポイント)
Date: 2008/10/27(月) 18:43
No:23140
|
|
Title: Re:なぜ??
|
|
どうもありがとうございます。
PCを買ってまだ一年ぐらいなので詳しいことはわかりませんが、
いろいろと試してみますね☆
42ポイント を手に入れた。
|
|
|
|
|
Name: スコアラー ..ぴよぴよ(229ポイント)
Date: 2008/10/27(月) 19:06
No:23142
|
|
Title: Re:なぜ??
|
|
関係ないんですけど、
東方でショットボタン「Z」押しっぱなしの方向キーの左を押しっぱなしの時に、
ボムボタン「X」を押すと、ボムが出ないんですけど、これって私のキーボードが壊れて
るんですかね?
ちなみに、方向キーの右を押しっぱの時はボムがちゃんと出ました。
87ポイント を手に入れた。
|
|
|
|
|
Name: 御津凪 [URL] ..プログラマー(27,668ポイント)
Date: 2008/10/27(月) 19:19
No:23143
|
|
Title: Re:なぜ??
|
|
キーボードによっては同時押しが利かない組み合わせがあるものがあります。
ゲーム用に複数キーの入力に対応したもの(最大7つ)がありますが、
同時押しが利かないキーは、キーボードによってまちまちです。
どうしても耐えられないのなら、買い換えたほうが良いかもしれませんよ。
(ついでに自分の入力スタイルにあったものを選ぶと得)
167ポイント を手に入れた。
|
|
|
|
Name: 御津凪 [URL] ..プログラマー(27,088ポイント)
Date: 2008/10/27(月) 04:31
No:23127
|
|
Title: サンプルがてら弾幕避けゲーム作ってみた
|
|
サンプルプログラミングの館が開館されたこともあり、
急いでゲームとなるような状態まで持ってきたサンプルゲームです。
http://mitsunagistudio.a.orn.jp/?page=lib&sub=stelight
↑こちらにゲーム・ソースコードを上げております。
自作ライブラリのサンプル、という位置づけではありますが、
弾の動作や当り判定など、一通りの処理が出来ているます。
(ライブラリが担当しているのはあくまで基本部分です)
※このプログラムは C++ と DirectX で作られており、
ゲームをするには最新の DirectX ランタイムが必要です。
サンプルとしては…、ちょっとごちゃごちゃしてて適さないかもしれません。
そういうのも合わせて、☆8つくらいかな(汗
とりあえず、遊んでいただければとてもうれしいです。
ちなみに、遊べるだけでまだ音やハイスコアがないです。
これらはライブラリの増築とともに追加していく予定です。
212ポイント を手に入れた。
|
|
|
|
Name: 管理人 [URL] ..ぴよぴよ(89ポイント)
Date: 2008/10/27(月) 07:09
No:23128
|
|
Title: Re:サンプルがてら弾幕避けゲーム作ってみた
|
|
おぉ〜素晴らしい〜♪
面白い弾幕ありますね^^
レーザーが回転しながら落ちてくるのは案外避けにくいw
しかしオーバークロックという言葉が何となくピンときたので、
意味もわからずそればかり選択してましたけど、難易度だったんですねw
難しいな〜とか思ってやってたらSafeはずっと簡単でしたw
これは完成が楽しみです☆
89ポイント を手に入れた。
|
|
|
|
|
Name: dic ..かけだし(2,300ポイント)
Date: 2008/10/27(月) 08:35
No:23129
|
|
Title: Re:サンプルがてら弾幕避けゲーム作ってみた
|
|
起動しませんね
私のパソコンのスペックです
------------------
System Information
------------------
Time of this report: 10/27/2008, 08:27:24
Operating System: Windows XP Home Edition (5.1, Build 2600) Service Pack 3 (2600.xpsp_sp3_gdr.080814-1236)
Language: Japanese (Regional Setting: Japanese)
System Manufacturer: PCCHIPS
System Model: P25G
BIOS: Phoenix - AwardBIOS v6.00PG
Processor: Intel(R) Celeron(R) CPU 2.53GHz
Memory: 1246MB RAM
Page File: 438MB used, 2538MB available
Windows Dir: C:\WINDOWS
DirectX Version: DirectX 9.0c (4.09.0000.0904)
DX Setup Parameters: Not found
DxDiag Version: 5.03.2600.5512 32bit Unicode
266ポイント を手に入れた。
|
|
|
|
|
Name: 御津凪 [URL] ..プログラマー(27,463ポイント)
Date: 2008/10/27(月) 10:30
No:23132
|
|
Title: Re:サンプルがてら弾幕避けゲーム作ってみた
|
|
> 管理人さん
> しかしオーバークロックという言葉が何となくピンときたので、
> 意味もわからずそればかり選択してましたけど、難易度だったんですねw
> 難しいな〜とか思ってやってたらSafeはずっと簡単でしたw
説明不足でした。
本当ならゲーム内で項目の説明文を入れるつもりでしたが、
突貫工事でそこまで手が回って無かったです><
難易度は、東方に例えると、
Safe Clock → Easy
Best Clock → Normal
Fast Clock → Hard
Over Clock → Lunatic
です。
> dic さん
パソコンのスペックまで提示して頂いてありがとうございます。
こちらも説明不足でした。
Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)
VC++ でコンパイルを マルチスレッド DLL で作成したゲームなので、
これが必要になります。
これを入れれば多分起動します。
・補足追記
スコアはどれだけ弾をかすったによって増加します。
ミスらずボムらずにいけばどんどん増加します。
ボムは右の Power が 100 (かすり100回)になった時に撃てます。
ミスると Power は 0 になります。
375ポイント を手に入れた。
|
|
|
|
|