|
Name: JT ..かけだし(1,184ポイント)
Date: 2009/01/27(火) 14:42
No:27771
|
|
Title: VMWARE SERVER
|
|
2.0を無償でダウンロードし、デスクトップにexeができたのですが起動せずエラーが出ます。(VMware-guest64check-5.5.0-18463.exe)コンパネでローカルディスクの管理権限を外しWindows再起動を行ってもエラーが出ました。原因についてわかるかたいらっしゃいませんか?
73ポイント を手に入れた。
|
|
|
|
Name: JT ..かけだし(1,226ポイント)
Date: 2009/01/27(火) 14:51
No:27773
|
|
Title: Re:VMWARE SERVER
|
|
MISTさんエラー内容は This host is NOT capable of running 64-bit guest operating system under this VMware product. と出ます
42ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(47,440ポイント)
Date: 2009/01/27(火) 14:54
No:27774
|
|
Title: Re:VMWARE SERVER
|
|
翻訳
このホストはこのVMware製品の下で64ビットのゲストオペレーティングシステムを実行できません。
あなたの実行しようとしているPCのCPUは64bitに対応していないんじゃないですか?
この手のツールはPCについて十分な知識がないのであれば使うのは無理です。
あと、英語が読めることも重要です。
114ポイント を手に入れた。
|
|
|
|
|
Name: JT ..かけだし(1,259ポイント)
Date: 2009/01/27(火) 14:56
No:27775
|
|
Title: Re:VMWARE SERVER
|
|
わかりました 結構きついことをおっしゃられるんですね 何様ですか
33ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..比類無きプログラマー(82,306ポイント)
Date: 2009/01/27(火) 15:04
No:27777
|
|
Title: Re:VMWARE SERVER
|
|
最近のJTさんの質問を見ていて思うのですが...
すでに読まれたとは思いますが、規約と注意事項を再度熟読することを強くお勧めします。
熟読する際は、大きな声で音読することをお勧めします。目で見る、声に出す、耳で聞くことにより、いっそう理解が進むはずです。
> 英語が読めることも重要です。
この程度の英語は中学生レベルです。
社会人になってしまえば、ある意味、漢字が読めるかどうかと大差ないはずですね。
あとは自分で読む気、自分で考える気、自分で調べる気があるかどうかです。
188ポイント を手に入れた。
|
|
|
|
|
Name: JT ..かけだし(1,292ポイント)
Date: 2009/01/27(火) 15:05
No:27778
|
|
Title: Re:VMWARE SERVER
|
|
もちろん質問する前に調べました。わかったのはあなたにはこの問題が解決できないということだけです
33ポイント を手に入れた。
|
|
|
|
|
Name: JT ..かけだし(1,340ポイント)
Date: 2009/01/27(火) 15:06
No:27779
| 解決!
|
Title: Re:VMWARE SERVER
|
|
ありがとうございました。参考にしませんが
2倍のポイントを手に入れた! 48ポイント を手に入れた。
|
|
|
|
Name: もり ..ぴよぴよ(185ポイント)
Date: 2009/01/27(火) 02:40
No:27736
|
|
Title: これらのプログラムはあっていますか?
|
|
・0,1,2,3,4の数の中で偶数の数だけの和を求めるプログラム。
include<stdio.h>
int main(void){
int i,sum;
for(i=0;i<=4;i++){
if(i/2=0){
sum=sum+i;
}
}
printf("%d",sum);
return(0);
}
・配列s[5]={0,1,2,3,4}とあってそれらの平均値を求めるプログラム。
include<stdio.h>
int main(void){
int
for(i=0;i<5;i++){
average=average+s[i]
}
average1=average/5;
printf("平均=%d\n",average1);
return(0);
}
テストでこのような回答を書いたのですが50点満点だとしたら何点くらいでしょうか?
185ポイント を手に入れた。
|
|
|
|
Name: Dixq (管理人) ..伝説なるハッカー(972,371ポイント)
Date: 2009/01/27(火) 02:47
No:27738
|
|
Title: Re:これらのプログラムはあっていますか?
|
|
まず、間違い箇所を言いますと・・
一つ目
・イゲタ(最初に書くシャープ記号)が無い
・sumが初期化されていない
・ifの比較は=ではなく、==
・i/2ではなくi%2
二つ目
・イゲタ(最初に書くシャープ記号)が無い
・intの宣言がおかしい(変数名がかいてない)
・averageが宣言されていない
・s配列が用意されていない。
・s配列に数値が入っていない。
・average1が用意されていない
・int型に平均を入れても、小数点が入らない(これは仕様による)
・カウンタ変数iが用意されていない
・for文の計算式の後にセミコロンが無い
と言う事で、残念ながらコンパイル通りませんし、
厳しく採点するなら、部分点があったとしてもあまり期待できないかもしれません。
自分のPCにコンパイラは入ってますか?
今そのプログラムを自分でコンパイルしてみませんか?
もし出来る事なら、間違いの無いプログラムを完成させて見ましょう!
後私が採点するならプレタグで投稿されてないので1点減点。
・・というのは冗談で、コードを投稿するときはタグを使って下さい。
詳しくは利用規約をご覧下さい。
251ポイント を手に入れた。
|
|
|
|
|
Name: Naohiro19 ..ぴよぴよ(170ポイント)
Date: 2009/01/27(火) 11:40
No:27758
|
|
Title: Re:これらのプログラムはあっていますか?
|
|
配列の要素数分をループさせて偶数のみの合計を返すプログラムをつくってみました。
どうでしょうか?
引数にポインタを指定しているのはint型の配列の先頭番号を渡すためです。
int EvenSum(int* num, int loop)
{
int total = 0; //偶数合計格納用
for(int i = 0; num[i] < loop; i++){
if((num[i] / 2) == 0){
//偶数のみを合計
total += num[i];
}
}
//戻り値として偶数の合計を返す
return total;
}
163ポイント を手に入れた。
|
|
|
|
|
Name: s-rush ..上級者(21,027ポイント)
Date: 2009/01/27(火) 12:00
No:27761
|
|
Title: Re:これらのプログラムはあっていますか?
|
|
1つ目のプログラムなんですけど、偶数の値だけを足していくのであれば
iの値を2ずつインクリメントしていくのでもいいのでは?
たとえばこんな感じに
#include <stdio.h>
int main(void)
{
int sum = 0;
int i;
for(i=0; i<=4; i+=2)
sum = sum+i;
printf("sum = %d\n", sum);
return 0;
}
すると
if(i%2 == 0)
という条件は必要なくなりますよ。
あとは管理人さんのおっしゃる通り、初期化はちゃんとしておきましょう。
でないと実行結果がおかしくなりますよ。
私も同じ意見で、採点結果はかなり厳しいかと思います。
140ポイント を手に入れた。
|
|
|
|
Name: YmNk ..ぴよぴよ(90ポイント)
Date: 2009/01/27(火) 10:47
No:27749
|
|
Title: 横スクロールのキャラクター移動
|
|
初めて質問します。
横スクロール型のアクションゲームを作りたいと思って、
C言語を勉強しだしたのですが、どうもキャラクターの移動でつまずいてしまって先にすすみませんorz
止まってる状態と横に移動している状態の画像の切り替え(?)ができません。
→のキーを押すと、右にキャラクターが走りながら移動して、
何も押さないと止まるような・・
具体的にどういうようにプログラムを書けばいいのでしょうか?
C言語は猫でもわかるシリーズと14歳の・・などの本で少し勉強しました。
90ポイント を手に入れた。
|
|
|
|
Name: Mist ..熟練のプログラマー(47,050ポイント)
Date: 2009/01/27(火) 10:57
No:27750
|
|
Title: Re:横スクロールのキャラクター移動
|
|
規約にあるとおり開発環境を明示していただけますか。
DXライブラリを使用しているのか、DirectX直接なのか、MFCなのか、.NETなのか、WinAPIオンリーなのか。
これらがわからないと回答できません。
59ポイント を手に入れた。
|
|
|
|
|
Name: YmNk ..ぴよぴよ(95ポイント)
Date: 2009/01/27(火) 10:59
No:27751
|
|
Title: Re:横スクロールのキャラクター移動
|
|
すいません。
開発環境はBCC Developerを使っていて、DXライブラリを使っています。
5ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(47,312ポイント)
Date: 2009/01/27(火) 11:13
No:27753
|
|
Title: Re:横スクロールのキャラクター移動
|
|
やり方はいくらでもあると思いますが一番簡易な一例を示します。
int grh[3];
int cnt = 0;
grh[0] = LoadGraph(止まっているときの画像);
grh[1] = LoadGraph(右に動いている画像1);
grh[2] = LoadGraph(右に動いている画像2);
if (→キーが押されている) {
// 動いている
// 交互に表示することで手足が動いているように見せる
if (cnt < 1000) {
DrawGraph(grh[1]);
} else {
DrawGraph(grh[2]);
}
cnt++;
if (cnt < 2000) cnt = 0;
} else {
// 止まっている
cnt = 0;
DrawGraph(grh[0]);
}
ScreenFlip();
262ポイント を手に入れた。
|
|
|
|
|
Name: YmNk ..ぴよぴよ(131ポイント)
Date: 2009/01/27(火) 11:26
No:27756
|
|
Title: Re:横スクロールのキャラクター移動
|
|
ありがとうございます。
画像が二枚ではなくそれ以上の場合は、
345..と追加して加工していけばいいのですね。
それと画像がつなげた場合はどうすればいいのでしょうか?
36ポイント を手に入れた。
|
|
|
|
Name: MOMO ..ぴよぴよ(367ポイント)
Date: 2009/01/22(木) 18:07
No:27484
|
|
Title: ゲーム
|
|
今宿題で3桁の数を当てるというプログラムを作っているのですが最後に正解数を表示させるにはどうすればよいですか?
C言語初心者です。
よろしくお願いします。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(void)
{
int secret_number[3];
int guess_number[3];
int hit;
int blow;
int count;
int again;
int point;
int i, n, k;
count= again = point = 0;
srand(time(NULL));
while(1){
k = 0;
secret_number[0] = rand () % 9 + 1;
secret_number[1] = rand () % 9 + 1;
secret_number[2] = rand () % 9 + 1;
for(i = 0;i < 3;i++){
for(n = 0;n < 3;n++){
if(i != n){
if(secret_number[i] != secret_number[n]){
k = k + 1;
}
}
}
}
if(k == 6){
break;
}
}
while(1){
hit = blow = again = 0;
printf("Make a guess the number\nChance is %d\n", (10 - count));
count++;
printf("Make the hundredth.");
scanf("%d", &guess_number[0]);
printf("Make the tenth.");
scanf("%d", &guess_number[1]);
printf("Make the oneth");
scanf("%d", &guess_number[2]);
if (guess_number != secret_number){
if (secret_number > guess_number){
printf("You missed.\nThe number is small\n");
}else{
printf("You missed.\nThe number is big.\n");
}
if (count == 10){
printf("You missed.\nThe correct number is %d",secret_number);
break;
}
}
for(i = 0;i < 3;i++){
for(n = 0;n < 3;n++){
if(i == n){
if(guess_number[i] == secret_number[n]){
hit = hit + 1;
}
}
else{
if(guess_number[i] == secret_number[n]){
blow = blow + 1;
}
}
}
}
printf("hit = %d , blow = %d\n",hit, blow);
if (hit == 3 ){
printf("Bingo\n");
point = point + (11 - count);
printf("This point is%d \n" ,(11 - count));
printf("Total point is%d\n", point);
printf("Do you try again(Yes 2, No 6)\n");
scanf("%d", &again);
if (again == 6){
break;
}
if (again == 1){
count = 0;
}
}
else if (count == 10){
printf("You bad.\n");
printf("Do you try again(Yes 2, No 6)\n");
scanf("%d", &again);
if (again == 6){
break;
}
else {
count = 0;
}
}
else if (hit < 3){
printf("You miss.\n");
}
}
}
367ポイント を手に入れた。
|
|
|
|
Name: non ..プログラマー(32,007ポイント)
Date: 2009/01/22(木) 18:21
No:27485
|
|
Title: Re:ゲーム
|
|
質問ですが、3桁の数字は1桁づつ、配列にいれなければいけないのは、仕様ですか?
また、同じ数字が使われてはいけないのも仕様ですか?
38ポイント を手に入れた。
|
|
|
|
|
Name: MOM ..ぴよぴよ(43ポイント)
Date: 2009/01/22(木) 18:24
No:27486
|
|
Title: Re:ゲーム
|
|
三桁の数字は一桁づつ、配列に入れなければいけないのは使用ではありません。
しかし三桁の数字がすべて異なっていなければいけません。
よろしくお願いします。
43ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(44,785ポイント)
Date: 2009/01/22(木) 18:30
No:27488
|
|
Title: Re:ゲーム
|
|
最後って言うのは1ゲームごとの終わり?
それとも、6を押して終了した時?
あと、規約にしたがってソースの字下げを行ってください。
読みにくいです。
62ポイント を手に入れた。
|
|
|
|
|
Name: non ..プログラマー(32,279ポイント)
Date: 2009/01/22(木) 18:33
No:27489
|
|
Title: Re:ゲーム
|
|
次の質問です。
10の位や1の位に0は使ったらいけないのですね。
まだ、プログラムを全部見てないですが、正しく動いてないのは確かですよね。
原因の一つとして、
if (guess_number != secret_number){
これは、配列のアドレスを比較しているので、数字の大きさを比較しているわけではありません。
2倍のポイントを手に入れた! 272ポイント を手に入れた。
|
|
|
|
|
Name: non ..プログラマー(32,359ポイント)
Date: 2009/01/22(木) 18:42
No:27490
|
|
Title: Re:ゲーム
|
|
とりあえず、3桁の数字にしたらどうでしょうか?
あとで、正解を出すときにも、役に立ちますし。
sec_num=secret_number[0]*100+secret_number[1]*10+secret_number[2];
80ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(44,879ポイント)
Date: 2009/01/22(木) 18:43
No:27491
|
|
Title: Re:ゲーム
|
|
if (guess_number != secret_number){
if (secret_number > guess_number){
printf("You missed.\nThe number is small\n");
}else{
printf("You missed.\nThe number is big.\n");
}
この部分で何をしたいのかは意味不明だけど、Hit & Blowとしては一応ちゃんと動くよ。
94ポイント を手に入れた。
|
|
|
|
|
Name: MOMO ..ぴよぴよ(491ポイント)
Date: 2009/01/22(木) 18:43
No:27492
|
|
Title: Re:ゲーム
|
|
Mist ..熟練のプログラマーへ
1ゲームごとです。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(void)
{
int secret_number[3];
int guess_number[3];
int hit;
int blow;
int count;
int again;
int point;
int i, n, k;
count= again = point = 0;
srand(time(NULL));
while(1){
k = 0;
secret_number[0] = rand () % 9 + 1;
secret_number[1] = rand () % 9 + 1;
secret_number[2] = rand () % 9 + 1;
for(i = 0;i < 3;i++){
for(n = 0;n < 3;n++){
if(i != n){
if(secret_number[i] != secret_number[n]){
k = k + 1;
}
}
}
}
if(k == 6){
break;
}
}
while(1){
hit = blow = again = 0;
printf("Make a guess the number\nChance is %d\n", (10 - count));
count++;
printf("Make the hundredth.");
scanf("%d", &guess_number[0]);
printf("Make the tenth.");
scanf("%d", &guess_number[1]);
printf("Make the oneth");
scanf("%d", &guess_number[2]);
if (guess_number != secret_number){
if (secret_number > guess_number){
printf("You missed.\nThe number is small\n");
}else{
printf("You missed.\nThe number is big.\n");
}
if (count == 10){
printf("You missed.\nThe correct number is %d",secret_number);
break;
}
}
for(i = 0;i < 3;i++){
for(n = 0;n < 3;n++){
if(i == n){
if(guess_number[i] == secret_number[n]){
hit = hit + 1;
}
}
else{
if(guess_number[i] == secret_number[n]){
blow = blow + 1;
}
}
}
}
printf("hit = %d , blow = %d\n",hit, blow);
if (hit == 3 ){
printf("Bingo\n");
point = point + (11 - count);
printf("This point is%d \n" ,(11 - count));
printf("Total point is%d\n", point);
printf("Do you try again(Yes 2, No 6)\n");
scanf("%d", &again);
if (again == 6){
break;
}
if (again == 1){
count = 0;
}
}
else if (count == 10){
printf("You bad.\n");
printf("Do you try again(Yes 2, No 6)\n");
scanf("%d", &again);
if (again == 6){
break;
}
else {
count = 0;
}
}
else if (hit < 3){
printf("You miss.\n");
}
}
}
124ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(44,972ポイント)
Date: 2009/01/22(木) 18:45
No:27493
|
|
Title: Re:ゲーム
|
|
> とりあえず、3桁の数字にしたらどうでしょうか?
Hit & Blowというゲームの性質上、各桁はばらばらのほうが処理しやすいと思うよ。
HitはともかくBlowのチェックがめんどくさいよ。
Bitマスクとか使えばそれほど手間でもないけど、初心者ってことだし。
93ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(45,037ポイント)
Date: 2009/01/22(木) 18:52
No:27494
|
|
Title: Re:ゲーム
|
|
とりあえずご質問の回答。
正解数を記憶するための変数をひとつ追加。
最初に0をセットしておく。
printf("Bingo\n"); のところで正解数+1する
正解数を表示する。
それだけ。
65ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(45,166ポイント)
Date: 2009/01/22(木) 19:23
No:27495
|
|
Title: Re:ゲーム
|
|
なんとなくネット上で見つけたソースを切り貼りして作りました、って感じだけど他のおかしなところも指摘しておきます。
1.複数回プレイできるようになっているけど正解はみんな同じ
正解を作る部分が最初の一回しか実行されないので何回プレイしても答えの数字は常に同じ。
2.下の部分は入力された各桁の数字が1〜9の範囲であるかをチェックするようにすべき。
同じ答えを見たことがあるけど、そのプログラムとあなたのプログラムでは目的がそもそも違うからそのままパクっても意味がない。
if (guess_number != secret_number){
if (secret_number > guess_number){
printf("You missed.\nThe number is small\n");
}else{
printf("You missed.\nThe number is big.\n");
}
各プログラムの意味を理解して修正しないとこのまま出しても多分受け取ってもらえないですよ。
129ポイント を手に入れた。
|
|
|
|
|
Name: non ..プログラマー(32,531ポイント)
Date: 2009/01/22(木) 19:41
No:27496
|
|
Title: Re:ゲーム
|
|
> if (guess_number != secret_number){
> if (secret_number > guess_number){
> printf("You missed.\nThe number is small\n");
> }else{
> printf("You missed.\nThe number is big.\n");
> }
>
> この部分で何をしたいのかは意味不明だけど、Hit & Blowとしては一応ちゃんと動くよ。
やりたいことは、入力した3桁の数字が、乱数で出しておいた答えと比較して大きいか
小さいか表示しているつもりだと思いますが・・・
どうして、一応ちゃんと動くの?
配列のアドレスを比較しているのだから、絶対一致することはなく、何度やっても同じ答えに
なるのでは?
MOMOさんがいう正解数とは、10回やっても当たらなかったときに、secret_number を
表示したいのかと私は思いました。
172ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(45,403ポイント)
Date: 2009/01/22(木) 20:20
No:27497
|
|
Title: Re:ゲーム
|
|
> どうして、一応ちゃんと動くの?
Hit & Blowというゲーム知りません?
上にも書きましたがここで本来行うべきエラーチェックはguess_number[0]〜[2]に一桁の1〜9までの数値がきちんと入力されているかどうかです。
で、間違った値が入力されている場合は再入力に戻るようにすることです。
全然出来ていませんけど。
ただ、現状のプログラムでも無駄な文章が毎回出力されるだけでbreakされているわけではないのでその後の処理が動きます。
そのため、”間違った入力がされることがなければ”という条件付でHit & Blowとしては正しく動作していますしゲームとして成立します。
そういう意味での”一応”です。
> まだ、プログラムを全部見てないですが、正しく動いてないのは確かですよね。
エラー処理は多分MOMOさんの意図どおり動いてないとは思いますが、正常系は動きますから動かないと断ずるのはちょっと可哀想かな、と思いました。
どこまでを”正しく”の範疇に含めるかの問題なのかもしれませんが。
> MOMOさんがいう正解数とは、10回やっても当たらなかったときに、secret_number を
> 表示したいのかと私は思いました。
ああ、なるほど。それは思いつきませんでした。
複数回実行できるようになってるから正解までたどり着いた回数かと。
それだったらprintf一個追加するだけですね。
237ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(45,477ポイント)
Date: 2009/01/22(木) 20:24
No:27498
|
|
Title: Re:ゲーム
|
|
ごめん。最後取り消し。
> MOMOさんがいう正解数とは、10回やっても当たらなかったときに、secret_number を
> 表示したいのかと私は思いました。
printf("You missed.\nThe correct number is %d",secret_number);
ここ直すだけか。
printf("You missed.\nThe correct number is %d %d %d",secret_number[0],secret_number[1],secret_number[2]);
だね。
74ポイント を手に入れた。
|
|
|
|
|
Name: non ..プログラマー(32,604ポイント)
Date: 2009/01/22(木) 20:24
No:27499
|
|
Title: Re:ゲーム
|
|
Mistさんへ
風呂の中で、さきほどMistさんが書かれた、Hit & Blowは動いているという意味に気がつき、
風呂から、上がったら、MistさんからすでにRESが・・・大変失礼しました。
73ポイント を手に入れた。
|
|
|
|
|
Name: s-rush ..上級者(17,019ポイント)
Date: 2009/01/22(木) 21:14
No:27502
|
|
Title: Re:ゲーム
|
|
横やりすいません。
>>複数回プレイできるようになっているけど正解はみんな同じ
>>正解を作る部分が最初の一回しか実行されないので何回プレイしても答えの数字は常に同じ。
確かにおっしゃる通り、正解を作る部分が1度しか実行されていないので、
何回プレイしても答えは常に同じ数次になります。
ですが、仮にその部分を修正して、ゲームやり直し時に乱数生成部から実行できるようにしても
rand()(だけ)で乱数を生成しているようなので、
何度実行したとしても同じ数値になるのではないでしょうか?
初めの数字を生成するところから少し不十分のような気がします。
121ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(45,529ポイント)
Date: 2009/01/22(木) 22:42
No:27505
|
|
Title: Re:ゲーム
|
|
> rand()(だけ)で乱数を生成しているようなので、
> 何度実行したとしても同じ数値になるのではないでしょうか?
どうしてそのように思われましたか?
何が不足していると思いますか?
「だけ」と書かれているのが非常に気になります。
3桁の重複しない数字ですから同じ数字になる確率は小さくないかもしれませんが、必ず同じになることはないと思います。
52ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(46,635ポイント)
Date: 2009/01/22(木) 23:37
No:27518
|
|
Title: Re:ゲーム
|
|
私の書き方が悪かったかもしれませんが、今回の「何度も実行」というのはプログラムを終了させず(正解、不正解の後2キーを押して)ゲームを継続した場合のことなので、乱数シードの初期化(srand)を行っているかどうかは関係ありません。
randが実行されるたびに乱数が返されますので、まず違う答えが出来ると思います。
プログラムを終了させてもう一度実行する場合には時間等を使ったシードの初期化行っておかないと、s-rushさんがおっしゃるとおりに1回目と2回目では同じ答えになります。(同じだったら"乱数"じゃねーな(^^;)
例:srandは行わない、乱数値は適当
プログラム自体の実行(1回目)
rand(1回)=1000
rand(2回)=5
rand(3回)=98
rand(4回)=325
プログラム自体の実行(2回目)
rand(1回)=1000
rand(2回)=5
rand(3回)=98
rand(4回)=325
プログラムの実行単位で見れば同じになりますが、内部単位でみれば同じにはなりませんので違う答えが作れます。
この違いは混同しないでください。
432ポイント を手に入れた。
|
|
|
|
|
Name: s-rush ..上級者(17,337ポイント)
Date: 2009/01/23(金) 00:09
No:27526
|
|
Title: Re:ゲーム
|
|
>>プログラムを終了させてもう一度実行する場合には時間等を使ったシードの初期化行っておかないと、s-rushさんがおっしゃるとおりに1回目と2回目では同じ答えになります。
一応こういう意味で、同じになるのではないのかな?
って思いましたので^^;
もっと詳しく書くべきでした。
なので
>>プログラムの実行単位で見れば同じになりますが、内部単位でみれば同じにはなりませんので違う答えが作れます。
>>この違いは混同しないでください。
たぶん大丈夫です。
一応私もゲームで乱数を使いまくっている身なので^^
252ポイント を手に入れた。
|
|
|
|
|
Name: MOMO ..ぴよぴよ(606ポイント)
Date: 2009/01/23(金) 12:19
No:27542
|
|
Title: Re:ゲーム
|
|
返事が遅くなりすいません。
Mist ..熟練のプログラマーへ
printf("You missed.\nThe correct number is %d %d %d",secret_number[0],secret_number[1],secret_number[2]);の部分を変えたら出てくるようになりました。
ありがとうございます。
しかし異なる数字にするにはrandだと3桁をいつも異ならせることは難しいのですが3桁を常に異ならせるいい方法はありますか?
115ポイント を手に入れた。
|
|
|
|
|
Name: BEMANI ..初心者(6,743ポイント)
Date: 2009/01/23(金) 12:37
No:27545
|
|
Title: Re:ゲーム
|
|
>>MOMOさん
>異なる数字にするにはrandだと3桁をいつも異ならせることは難しいのですが・・・
取得したランダム値と、すでに取得されているランダム値を比較して
同じであればもう一度取得するという方法ではダメでしょうか?
上の記事に管理人さんも書かれていらっしゃいますが
以後、名前を呼ぶ時に「Mist ..熟練のプログラマーへ 」
という書き方は本当にしない方がいいです。(お友達などの関係であれば結構です)
もし違うのであれば、「Mistさん・Mist様」など呼び捨てにしないようにしましょう。
177ポイント を手に入れた。
|
|
|
|
|
Name: MOMO ..ぴよぴよ(696ポイント)
Date: 2009/01/23(金) 12:49
No:27547
|
|
Title: Re:ゲーム
|
|
すいませんでした。
気をつけます。
取得したランダム値と、すでに取得されているランダム値を比較して
同じであればもう一度取得するという方法とはどのようにやるのですか?
C言語初心者なものでいろいろとすいません。
90ポイント を手に入れた。
|
|
|
|
|
Name: BEMANI ..初心者(7,632ポイント)
Date: 2009/01/23(金) 13:51
No:27551
|
|
Title: Re:ゲーム
|
|
>>MOMOさん
MOMOさんの場合、
・乱数を三つ取得する
・正解・不正解を表示する
という流れが出来ていると思うので、
・それが同じかどうかを見る
・同じならもう一度取得し、違うのであれば三つの数字はすべて違うといえる
これをC言語という形で書いていきましょう。
secret_number[0]、[1]、[2]が同じでなければいいんですよね?
(間違ってたらごめんなさい;)
// まず、secret_number[0]と[1]と[2]の値を取得します。(これはもう出来ていますね)
secret_number[0] = rand () % 9 + 1;
secret_number[1] = rand () % 9 + 1;
secret_number[2] = rand () % 9 + 1;
// 次に、secret_number[0]と[1]が同じ値でないかを調べ、
// もし同じならもう一度取得します。
// ここで、取得した値がまたかぶってしまう可能性もあるのでwhileを使い
// 同じでなくなるまで取得します。
while(1)
{
if(secret_number[0] == secret_number[1])
secret_number[1] = rand()%9 + 1;
else
break;
}
// 最後に、secret_number[0]と[2]・[1]と[2]が同じ値でないかを調べ、
// もし同じならもう一度取得します。
// この条件が満たされれば、かぶらないと思います
while(1)
{
if( (secret_number[0] == secret_number[2]) || (secret_number[1] == secret_number[2]) )
secret_number[2] = rand()%9 + 1;
else
break;
}
今は三桁みたいですので、こんな方法でよいのなら・・・。
(ただし、この書き方は桁数が増えれば、増えるほど、しんどいやり方になります。
改良できるのであれば改良してみましょう。)
889ポイント を手に入れた。
|
|
|
|
|
Name: toyo ..上級者(23,650ポイント)
Date: 2009/01/23(金) 14:03
No:27552
|
|
Title: Re:ゲーム
|
|
バグさんの書かれたランダムに入れ替えていく方法なら
int secret_number[] = {1,2,3,4,5,6,7,8,9};
int i, j, k, l;
for (i = 0; i < 10; i++) {
j = rand() % 9;
k = rand() % 9;
l = secret_number[ j ];
secret_number[ j ] = secret_number[ k ];
secret_number[ k ] = l;
}
トランプゲームのシャッフルでよく使われるかな
179ポイント を手に入れた。
|
|
|
|
|
Name: やそ ..比類無きプログラマー(86,104ポイント)
Date: 2009/01/23(金) 16:48
No:27558
|
|
Title: Re:ゲーム
|
|
ちょっと横に逸れますが・・
TOYOさんの例をみても分かるとおり、
secret_number[0] = rand () % 9 + 1;
だと
0から9ではなく
1から9の乱数になりますが・・・
良いです?
98ポイント を手に入れた。
|
|
|
|
|
Name: やそ ..比類無きプログラマー(86,337ポイント)
Date: 2009/01/27(火) 11:16
No:27754
|
|
Title: Re:ゲーム
|
|
>Mist さん
> 0から9
>と書いたのはバグさんでMOMOさんじゃないね。
うん、バグさんが0から9と書いているのは流れを読んで分かっていますです^^
ただ、MONOさんが想定している数字の範囲が0からなのか1からなのか、はっきりとした
回答が出ていなかったように見えましたので聞いてみた次第です。
nonさんの質問で
>10の位や1の位に0は使ったらいけないのですね。
というのもありましたし・・・
ランダム数字の決定でしたら、toyoさんの提示されたトランプシャッフルの手法が
分かりやすくて良さそうですね^^
233ポイント を手に入れた。
|
|
|
|
Name: abc ..入門者(2,926ポイント)
Date: 2009/01/26(月) 18:12
No:27721
|
|
Title: アドレスについての質問です。
|
|
windowsで6.0Cコンパイラーを使っています.
HANDLE hComm=::CreateFile(.....)でハンドルを取得し、
if((m_pThread = AfxBeginThread(Recv, &hComm, 0,0,0,NULL)) == NULL)でスレッド生成する.
Recv関数は UINT Recv(LPVOID hComm)で宣言されていています。
AfxBeginThread(Recv, &hComm, 0,0,0,NULL))をAfxBeginThread(Recv, (HANDLE*)hComm, 0,0,0,NULL))に
するとうまくいくのですが、&と(HANDLE*)でやった時の違いを教えてもらいたいです。
ちなみに(HANDLE*)でやるとうまくいきます。
自分の考えでは両方アドレスなので問題ないように思ったのですが&だとうまくいきませんでした。
文章がわかりずらいかもしれませんがよろしくお願いします。
285ポイント を手に入れた。
|
|
|
|
Name: YuO ..プログラマー(28,460ポイント)
Date: 2009/01/26(月) 19:11
No:27726
|
|
Title: Re:アドレスについての質問です。
|
|
・&hCommを渡す
→ローカルのオブジェクトへのポインタを渡しているので,hCommが定義された関数から抜け出した場合,Recv関数からは利用できなくなる
→Recv関数中でのhCommの実際の型はHANDLE *型
・(HANDLE *)hCommを渡す
→値を渡しているので,hCommが定義された関数から抜け出しても,Recv関数からは利用できる
→Recv関数中でのhCommの実際の型はHANDLE
110ポイント を落としてしまった。
|
|
|
|
|
Name: abc ..入門者(2,972ポイント)
Date: 2009/01/27(火) 09:51
No:27747
| 解決!
|
Title: Re:アドレスについての質問です。
|
|
すいません解決しました。
結論から言うと、ハンドル=アドレスだったんですね><
実態と勘違いしていました。
YuOさんありがとうございました。
46ポイント を手に入れた。
|
|
|
|
Name: モンキー ..ぴよぴよ(14ポイント)
Date: 2009/01/27(火) 04:11
No:27739
|
|
Title: PSPのゲームを作りたいのですが‥
|
|
趣味でPSPで遊べるゲームが作りたいと思っています。
あちこち見て回ったのですが、参考になりそうなサイトが見つかりません。
何を勉強したらPSPで遊べるゲームが作れるようになりますか?
そういうライブラリみたいなものはありませんか?
14ポイント を手に入れた。
|
|
|
|
Name: YuO ..プログラマー(28,530ポイント)
Date: 2009/01/27(火) 04:41
No:27740
|
|
Title: Re:PSPのゲームを作りたいのですが‥
|
|
> 趣味でPSPで遊べるゲームが作りたいと思っています。
PSPのゲームを個人で開発することはできません。
まずは会社を作るところからになると思います。
# 個人相手に開発用の契約を結んでくれるとは思えませんので。
現行のゲーム機において,個人で手に入る開発環境が公式に提供されているのは,Xbox 360だけです。
これも,XNAという.NET Compact Frameworkのカスタム版上でMSILを実行する環境であり (言語はC#のみ対応),
本来の開発者に提供されている環境 (C++用と聞いています) とは別物で機能も劣る物になっています。
58ポイント を手に入れた。
|
|
|
|
|
Name: kazuoni [URL] ..熟練のプログラマー(52,258ポイント)
Date: 2009/01/27(火) 09:33
No:27745
|
|
Title: Re:PSPのゲームを作りたいのですが‥
|
|
toyoさんの挙げられたページにも載っていますが、
PSPTOOLCHAINで一応動作しましたが、
関数が詳細に解説されているページが少なく、
ゲームと呼べる代物はDXライブラリポータブルが完成しないとなかなか厳しいです。
英語が読めれば何とかなるのですが・・・。
っと自分もちょっと諦めた人の一人です^^;
50ポイント を手に入れた。
|
|
|
|
Name: biodg ..ぴよぴよ(119ポイント)
Date: 2009/01/26(月) 18:56
No:27724
|
|
Title: DXライブラリでプルダウンメニューは可能?
|
|
現在、DXライブラリを使ってゲームを作っているのですが
戦略が深いゲームで作戦を選ぶときに、サイトなどでよく見るプルダウンメニューが使えると便利だと思ったのですが、
このプルダウンメニューを表示し、その値を取得するような方法はありますか?
119ポイント を手に入れた。
|
|
|
|
Name: ムンバ ..上級者(24,523ポイント)
Date: 2009/01/26(月) 22:50
No:27731
|
|
Title: Re:DXライブラリでプルダウンメニューは可能?
|
|
こんばんは。
実は私もbiodgさんと同じ様に思ってました。
自分で作る知識が無いので、あればいいな〜って。^^;
解説されてるページがあるんじゃないかと探してみたのですが、見つかりませんでした。
3Dなのですが
「DXライブラリ3D 公式ダウンロードページ」(←本家ですが、今現在はTOP開けません。)
内の
http://fatalita.sakura.ne.jp/3DLib/Ref.htm#L25
↑こちらの
「ミニウインドウ操作関数」
まだ完成されて無い様なのですが、完成されれば使わせて頂きたいかと思い。
プルダウンメニューとは違うかもしれませんが、ご参考までに。<_ _>
kazuoniさんのおっしゃる通り、今は自作するしか無いみたいです。(涙
320ポイント を手に入れた。
|
|
|
|
|
Name: ムンバ ..上級者(24,583ポイント)
Date: 2009/01/27(火) 01:26
No:27734
|
|
Title: Re:DXライブラリでプルダウンメニューは可能?
|
|
マジですか?本当に残念です。
って言いますか、私は人に頼りすぎかと・・・。(謝
できるだけ、自分でがんばってみます!
情報ありがとうございました。<_ _>
60ポイント を手に入れた。
|
|
|
|
|
Name: バグ ..ハッカー(144,213ポイント)
Date: 2009/01/27(火) 08:41
No:27744
|
|
Title: Re:DXライブラリでプルダウンメニューは可能?
|
|
所謂、コンボボックスというやつですね。
DxLibを使用しているとはいえ、Windowには変わりないので、DxLibの中身をいじくれば出来ない事はないんじゃないかな…多分(^_^;)
67ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..比類無きプログラマー(81,965ポイント)
Date: 2009/01/26(月) 15:10
No:27705
|
|
Title: Re:ネットで調べたソースと自作のプログラムがかぶりました><
|
|
> 内容を理解しているならそのまま使用してもいいですよね
どんな観点で「いいですね」なのか分かりませんが...
著作権については、まったく独自に作ったものが"たまたま"同じになった場合は違反ではありません。
ただし、係争になった場合、どうやって立証するかはまた別の問題です。
特許については、"たまたま"同じでもアウトです。
64ポイント を手に入れた。
|
|
|
|
|
Name: 通りすがり ..中級者(13,868ポイント)
Date: 2009/01/26(月) 15:19
No:27706
|
|
Title: Re:ネットで調べたソースと自作のプログラムがかぶりました><
|
|
ネットで調べたソースがどんなソースかわかりませんが、
内容を理解していなければ、何らかの解説サイトの内容と一致したプログラムが出来上がる事はありませんよね。
また、何を目的として許可を求めているのか、何がどうかぶったのかこれではさっぱりわかりません。
前も同じことを言われていましたが、もう少し具体的に質問して下さい。
それから、解決したにしても「○」とだけ書いて解決にしておくのは見てあまり気持ちのいいものではありません。
仕事中だから時間が無いということですが、「○」と書くのも「解決しました」と書くのもほとんど時間は変わりませんよね。
209ポイント を手に入れた。
|
|
|
|
|
Name: Haru ..上級者(23,120ポイント)
Date: 2009/01/26(月) 15:36
No:27708
|
|
Title: Re:ネットで調べたソースと自作のプログラムがかぶりました><
|
|
通りすがりさん
>ネットで調べたソースがどんなソースかわかりませんが、
>内容を理解していなければ、何らかの解説サイトの内容と一致したプログラムが出来上がる事はありませんよね
100%ありえない・・・。というわけではないでしょうが・・・
確かに Hello World レベルでない限りはまずないですよね。
>それから、解決したにしても○とだけ書いて解決にしておくのは見てあまり気持ちのいいものではありまん。
>仕事中だから時間が無いということですが、「○」と書くのも「解決しました」と書くのもほとんど時間は変
>わりませんよね
決して揚げ足を取るわけではないのですが、
一番最初の投稿の時点で解決ボタンを押されているようです
334ポイント を手に入れた。
|
|
|
|
|
Name: Haru ..上級者(23,192ポイント)
Date: 2009/01/26(月) 15:45
No:27709
|
|
Title: Re:ネットで調べたソースと自作のプログラムがかぶりました><
|
|
>決して揚げ足を取るわけではないのですが、
>一番最初の投稿の時点で解決ボタンを押されているようです
うそです。
間違えました・・・orz
編集キー登録してなかったので、すいません
72ポイント を手に入れた。
|
|
|
|
Name: JT ..ぴよぴよ(897ポイント)
Date: 2009/01/26(月) 11:06
No:27677
|
|
Title: Windows API機能
|
|
// 126.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//
#include "stdafx.h"
#include <Windows.h>
void ShutdownWindows(BOOL bReboot, BOOL bForce);
int main(UINT ShutDownWindows)
{
ShutDownWindows(TRUE,TRUE);//void ShutdownWindowsを呼び出して再起動を行う(ここが駄目な箇所)
}
// [引数]
// bReboot : 終了後に再起動する場合はTRUE
// bForce : プロセスを強制的に打ち切る場合はTRUE
//
// [返値]
// 終了指示を発行した : TRUE
// 終了指示が失敗した : FALSE
void ShutdownWindows(BOOL bReboot = FALSE, BOOL bForce = FALSE)
{
DWORD ret;
HANDLE hProcess;
HANDLE hToken;
LUID Luid;
TOKEN_PRIVILEGES tokenNew, tokenPre;
UINT nFlag;
hProcess = GetCurrentProcess();
OpenProcessToken(hProcess,
TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &hToken);
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &Luid);
tokenNew.PrivilegeCount = 1;
tokenNew.Privileges[0].Luid = Luid;
tokenNew.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tokenNew,
sizeof(tokenPre), &tokenPre, &ret);
if (bReboot) {
nFlag = EWX_REBOOT; // 再起動
} else {
nFlag = EWX_POWEROFF; // 電源OFF
}
if (bForce) {
nFlag |= EWX_FORCE; // プロセス強制終了
}
ExitWindowsEx(nFlag, 0); // シャットダウン処理
return;
}
ShutdownWindowsを呼び出して再起動を行う処理が上手くいきません。どなたか教えてください
481ポイント を手に入れた。
|
|
|
|
Name: JT ..ぴよぴよ(924ポイント)
Date: 2009/01/26(月) 11:30
No:27679
|
|
Title: Re:Windows API機能
|
|
インデント忘れてました、、、すいません><
18ポイント を手に入れた。
|
|
|
|
|
Name: バグ ..ハッカー(144,146ポイント)
Date: 2009/01/26(月) 11:31
No:27680
|
|
Title: Re:Windows API機能
|
|
呼び出したい関数は、ShutdownWindows関数ですよね?
UINT ShutDownWindows // main関数の引数
void ShutdownWindows(BOOL, BOOL) // シャットダウンを行うのであろう関数
58ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(46,743ポイント)
Date: 2009/01/26(月) 11:34
No:27681
|
|
Title: Re:Windows API機能
|
|
規約をよく読んでそれに則った質問をしていただけませんか。
・ソースの字下げをしていない
・「上手くいきません。」ではわからない。もっと具体的に。
69ポイント を手に入れた。
|
|
|
|
|
Name: JT ..ぴよぴよ(943ポイント)
Date: 2009/01/26(月) 11:34
No:27682
|
|
Title: Re:Windows API機能
|
|
ありがとうございます。ですがこれでもできませんでした
19ポイント を手に入れた。
|
|
|
|
|
Name: JT ..かけだし(1,034ポイント)
Date: 2009/01/26(月) 11:36
No:27683
|
|
Title: Re:Windows API機能
|
|
int main(UINT ShutDownWindows)
{
ShutDownWindows(TRUE,TRUE);//void ShutdownWindowsを呼び出して再起動を行う(ここが駄目な箇所)
}
ここで再起動処理の引数を渡し、実行したいのですができないのです。
91ポイント を手に入れた。
|
|
|
|
|
Name: YuO ..プログラマー(28,396ポイント)
Date: 2009/01/26(月) 11:37
No:27684
|
|
Title: Re:Windows API機能
|
|
5つのWindows APIの呼び出しを行っていますが,一個もエラーチェックをしていませんね……。
・どこのAPI呼び出しで失敗しているのですか。
→各APIのMSDNの記述を読んで,APIごとに判別を行う
・また,その失敗についてGetLastError APIはどう言っているのですか。
→ルックアップツールとか,NET HELPMSGとかで確認もする
134ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(46,799ポイント)
Date: 2009/01/26(月) 11:44
No:27686
|
|
Title: Re:Windows API機能
|
|
UINT ShutDownWindows
メイン関数の上記の引数は何のためにあるんですか?
引数変数名と関数名が同じのためVC++2008ではコンパイルが出来ますがShutDownWindowsは関数として評価しないと警告が出ます。
56ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(46,967ポイント)
Date: 2009/01/26(月) 12:43
No:27696
|
|
Title: Re:Windows API機能
|
|
JTさんはもっと質問の仕方を考えたほうがいいと思うね。
先にも書いたがぜんぜん具体的じゃない。
> これはわかります
とだけ返されても、「じゃあ何がわからないの?」としか返せません。
> どう直せばいいかご教示お願いします
一度でも自分でやってみてそれでもだめならともかく、最初から答えを欲しがるようでは成長しないよ?
自分でやってみたのだったら、どういうふうに直したのか、その結果どういう動作になったのかをもっと詳細にするべきです。
101ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..比類無きプログラマー(81,901ポイント)
Date: 2009/01/26(月) 12:53
No:27697
|
|
Title: Re:Windows API機能
|
|
> これはわかります
だとすると、mainの引数は、
int main(int argc, char *argv[])
でなければならないことが分かっているのですよね?
にもかかわらず、
int main(UINT ShutDownWindows)
とされている理由は何でしょうか?
もし、分かっていてあえてやっているとすると、考えられる可能性はひとつしかありません。
すなわち、WinMainから上記の非標準のmainを(直接的または間接的に)呼び出しているということです。
そうなのでしょうか?
185ポイント を落としてしまった。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(46,980ポイント)
Date: 2009/01/26(月) 13:06
No:27698
|
|
Title: Re:Windows API機能
|
|
最後のヒント
×:ShutDownWindows(TRUE,TRUE);
○:ShutdownWindows(TRUE,TRUE);
関数呼び出し部分をきちんと直せば再起動できます。(VC++2008EEで確認)
13ポイント を手に入れた。
|
|
|
|
|
Name: YuO ..プログラマー(28,570ポイント)
Date: 2009/01/26(月) 13:11
No:27700
|
|
Title: Re:Windows API機能
|
|
どうも,
> 上手くいきません
を見て私は実行時のエラー (文法エラー等は単なるミス) と思っていたのですが,JTさんの発言を読んでいると,コンパイルエラーのような気がしてきます。
まず,何が起きているのかをちゃんと記述してください。
現在のところ,わかっているのは,
・JTさんが最初にあげたプログラムに対して「上手くいかない」と思っていること
のみです。
せっかく規約と注意事項の項目に質問用のテンプレートがあるのですから,
まずはこのテンプレートを埋めて質問をしてください。
174ポイント を手に入れた。
|
|
|
|
|
Name: JT ..かけだし(1,080ポイント)
Date: 2009/01/26(月) 13:22
No:27701
|
|
Title: Re:Windows API機能
|
|
すみません><仕事中なので掲示板に投稿する文章を焦って入力しました
23ポイント を手に入れた。
|
|
|
|
Name: JT ..ぴよぴよ(119ポイント)
Date: 2009/01/23(金) 10:01
No:27538
|
|
Title: ユーザーアカウント
|
|
間違えて制限つきアカウントにしてしまってパソコンの管理者に戻したいんですがパスワードがわからずアカウントも一つしかありません。。。強制的にできないでしょうか?
68ポイント を手に入れた。
|
|
|
|
Name: array [URL] ..熟練のプログラマー(46,645ポイント)
Date: 2009/01/23(金) 14:40
No:27554
|
|
Title: Re:ユーザーアカウント
|
|
強制的にアカウントを管理権限持つよう様にできてしまうと、アカウント制限の意味がなく、OSの不具合という事になりそうです。
Windowsがそんな致命的なバグを残すとは思えないので、無理だと思います。
最終手段はリカバリCDからのPC初期化でしょうか。メーカによって初期化方法は違うのでPCの取扱説明書を読むといいです。
141ポイント を手に入れた。
|
|
|
|
|
Name: ibis ..上級者(17,549ポイント)
Date: 2009/01/23(金) 15:27
No:27557
|
|
Title: Re:ユーザーアカウント
|
|
Windowsではパスワードを記録してるファイルが見えないようになってるのですが、
他のOSを使うとそれが見えてしまうらしいですよ。
実際に確かめたことは無いですが。
FDやCDから起動できる無料のOS(例えばknopixとか)が便利です。
25ポイント を手に入れた。
|
|
|
|
|
Name: Justy ..伝説なるハッカー(312,793ポイント)
Date: 2009/01/23(金) 20:37
No:27563
|
|
Title: Re:ユーザーアカウント
|
|
意外と Administratorのパスワードを設定している人は少なかったりします。
だめもとでセーフモードで起動して、Administratorで入ってみてはどうでしょうか。
パスワードが設定されていなければ、それで入れると思いますが。
87ポイント を手に入れた。
|
|
|
|
Name: サッピ ..ぴよぴよ(11ポイント)
Date: 2009/01/22(木) 22:48
No:27506
|
|
Title: 久々のC言語。
|
|
久々にC言語をやろうと思います。
パケットを解析するツールってどんなんがありますか?
そのツールの特徴も教えてもらえませんか?
11ポイント を手に入れた。
|
|
|
|
Name: サッピ ..ぴよぴよ(25ポイント)
Date: 2009/01/22(木) 23:54
No:27523
|
|
Title: Re:久々のC言語。
|
|
何のパケット…。
よくわからないんですが、パケット…。
14ポイント を手に入れた。
|
|
|
|
|
Name: サッピ ..ぴよぴよ(68ポイント)
Date: 2009/01/23(金) 12:59
No:27548
|
|
Title: Re:久々のC言語。
|
|
私も調べてみたのですが、
いまいちよくわからなくて…。
いっぱいかいてあって。
31ポイント を手に入れた。
|
|
|
|
|
Name: toyo ..上級者(23,719ポイント)
Date: 2009/01/23(金) 14:26
No:27553
|
|
Title: Re:久々のC言語。
|
|
C言語をやろうと思ってからパケット解析ツールが必要になったいきさつはなんでしょうか。
ネットワークにつないでいるパソコンのパケットですよね。
ネットワーク管理者かハッカーぐらいしか使わないものだと思ってました。
69ポイント を手に入れた。
|
|
|
|
|
Name: Justy ..伝説なるハッカー(312,706ポイント)
Date: 2009/01/23(金) 20:31
No:27562
|
|
Title: Re:久々のC言語。
|
|
>わかる人いなかったかぁ…。
多分9割9分いないと思います。
たかぎさんも仰っていますが、まず何のパケットなのでしょう?
一口にパケットといってもネットワークだけでなく、USBとか ATAPIとか
何かしらの通信を伴うものはパケットというものが存在します。
次に、環境(OS)は何でしょうか?
Windowsなのか Linuxなのか、Macなのか、携帯電話その他 PDAなのか。
「WindowsXP上で、ネットワークのパケットをキャプチャしたい」と
ここまで特定できれば何かしら紹介はできると思いますが、
どちらも判らない状態では答えようがありません。
# toyoさん
>ネットワーク管理者かハッカーぐらいしか使わないものだと思ってました。
ネットワークアプリを作っていると、普通によく使いますよ。
2倍のポイントを手に入れた! 818ポイント を手に入れた。
|
|
|
|
|
Name: Mikan [URL] ..入門者(4,312ポイント)
Date: 2009/01/23(金) 22:09
No:27567
|
|
Title: Re:久々のC言語。
|
|
>何かしらの通信を伴うものはパケットというものが存在します。
補足ですが、
すこし噛み砕いて説明すると、データを全部送るのではなくデータを小分けにして
小包(パケット)をつくり、通信して送るということです。
携帯電話のパケット料金っていう言葉は、メールにしてもimodeのブラウザにしても全部データは
小さい単位で分割して送られてきているから、パケット料金(パケット通信料金)って名前がついたのだと思います(仮定)
なのでパケットが何か解らないので特定はできませんが、
通信関係で出てくるパケットと言う言葉は上記のような意味になります。
146ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..比類無きプログラマー(81,271ポイント)
Date: 2009/01/23(金) 23:06
No:27571
|
|
Title: Re:久々のC言語。
|
|
> すこし噛み砕いて説明すると、データを全部送るのではなくデータを小分けにして
> 小包(パケット)をつくり、通信して送るということです。
pack に縮小を意味する接尾辞 -et が付いたのが packet ですからね。
主に通信に使うわけですが、通信といっても、一般的に想像するようなものだけでなく、I2Cバスの通信なんかでもパケットの概念を使います。
ですから、何のパケットかがわからないと話になりません。
とりあえず利用規約を熟読した上で、改めて質問しなおすことを強くお勧めします。
151ポイント を手に入れた。
|
|
|
|
|
Name: サッッピ ..ぴよぴよ(2ポイント)
Date: 2009/01/24(土) 17:52
No:27609
| 解決!
|
Title: Re:すみません
|
|
よくわからなくなってきたので、
この辺で一度終りにします。
2ポイント を手に入れた。
|
|
|
|
|
Name: abc ..入門者(2,641ポイント)
Date: 2009/01/26(月) 10:45
No:27676
|
|
Title: Re:すみません
|
|
なんか終わっちゃいましたが、通信パケットならlan通信とかじゃないですかね??
勉強生ならAとBのパソコンをつないでパケットを送信したかっただけでは??
41ポイント を手に入れた。
|
|
|
|
Name: ぽにょ ..かけだし(1,532ポイント)
Date: 2009/01/22(木) 07:05
No:27438
|
|
Title: 質問です
|
|
今、提示している問題をやろうと思っているのですが半日ほどかけて処理手順を考えてたのですが
まったく思い浮かびません、問題の意図すら微妙な感じです・・
ピリオドが入力されるまでループ(while)でループさせる・・・
これぐらいしか思いつきませんでした
こんな自分ですが、助言の方、よろしくお願いします。
-- 課題 --
行頭でピリオドが入力されるまで、入力された文字を出力するプログラムを作成
(ピリオド自身は表示しなくていい)
エラー仕様
行頭ピリオドの後に文字がある場合
対処
行頭でピリオドと認識しプログラムを終了
(12:46管理人により課題内容追加)
132ポイント を手に入れた。
|
|
|
|
Name: 御津凪 [URL] ..熟練のプログラマー(52,036ポイント)
Date: 2009/01/22(木) 07:19
No:27439
|
|
Title: Re:質問です
|
|
短い問題文なら、添付せずに直接載せたほうがいいと思いますよ。
過去ログに入ってしまうと、添付したファイルは削除されますし。
コマンドラインでの入力が対象なら、getchar で読み込んで処理すればいいと思います。
#include <stdio.h>
int main(){
int ch;
ch = getchar();
while(ch != '.'){
ch = getchar();
}
return 0;
}
ヒントとして骨組み部分だけ書いておきます。
209ポイント を手に入れた。
|
|
|
|
|
Name: バグ ..ハッカー(143,800ポイント)
Date: 2009/01/22(木) 09:25
No:27443
|
|
Title: Re:質問です
|
|
1行辺りの最大文字数が決まっていないのが気になりますね…
こちら側で勝手に決めていいのかな?
28ポイント を手に入れた。
|
|
|
|
|
Name: ぽにょ ..かけだし(1,638ポイント)
Date: 2009/01/26(月) 00:09
No:27668
|
|
Title: Re:質問です
|
|
なるほど、次回からはそうします、ご指摘ありがとうございました
monさん
そうですね、行単位ならgetsの方がいいかもしれませんね
ありがとうございます
バグさん
文字数は・・・そうですね、今回はこちら側で決めてみようと思います
50とか。
御津凪さんのコードをヒントに
なんとなくですが書いてみました。
106ポイント を手に入れた。
|
|
|
|
|
Name: BEMANI ..中級者(9,204ポイント)
Date: 2009/01/26(月) 09:20
No:27674
|
|
Title: Re:質問です
|
|
ピリオドをチェックと仰ってるんですが、ソース見たところ
>if(','=!str[0])
だと、ピリオドではなくカンマをチェックしていることになるのでは・・・。
25ポイント を手に入れた。
|
|
|
|
Name: A ..かけだし(1,548ポイント)
Date: 2009/01/26(月) 00:40
No:27670
|
|
Title: 些細なことですが・・・・
|
|
はじめまして。いつも参考にさせていただいております。
龍神録プログラミングの館の21章「自機に当たり判定〜」と22章「ボムを〜」のところに
---- ini.cpp first_ini()関数内以下追加 ----
//例:弾0は76x76ピクセルで、5色あり、当たり範囲17ピクセル
input_bullet_info(&bullet_info[0],76, 76, 5,17.0);
input_bullet_info(&bullet_info[1],22, 22, 6, 4.0);
input_bullet_info(&bullet_info[2], 5,120,10, 2.5);
input_bullet_info(&bullet_info[3],19, 34, 5, 2.0);
input_bullet_info(&bullet_info[4],38, 38,10, 2.0);
input_bullet_info(&bullet_info[5],14, 16, 3, 3.5);
input_bullet_info(&bullet_info[6],14, 18, 3, 2.0);
input_bullet_info(&bullet_info[7],16, 16, 9, 2.5);
input_bullet_info(&bullet_info[8],12, 18,10, 1.5);
input_bullet_info(&bullet_info[9],13, 19, 3, 2.0);
とあるのですが、全く同じ内容のような・・・・・
些細なことですが気になったので投稿させていただきました。
354ポイント を手に入れた。
|
|
|
Name: 藍 ..初心者(7,778ポイント)
Date: 2009/01/23(金) 02:25
No:27533
|
|
Title: 東方弾幕っぽいの作ってみた2
|
|
以前も東方っぽい弾幕を製作してアップしてましたが、卒論の方も終わりが見えてきたので息抜きに
QED「495年の波紋」っぽいもの作ってみました〜
http://www.nicovideo.jp/watch/sm5918910
Dxtoryの音ズレが厄介すぎて最初の部分だけですが、後半も後ほどアップしようと考えてます。
音ズレ修正してmp4変換でまた音ズレという・・・orz
今回は結構想像で作った部分が多々あるので、っぽい とつけてます本家と見比べるとおかしい部分が大量にあると思われますw
178ポイント を手に入れた。
|
|
|
|
Name: 藍 ..初心者(8,202ポイント)
Date: 2009/01/23(金) 14:51
No:27556
|
|
Title: Re:東方弾幕っぽいの作ってみた2
|
|
>>自分の好きな弾幕真似するの楽しいですよね^^
実は途中でどうやって作るかわからなくて投げた弾幕が何個か・・・ 特殊な動きになると一気にわからなくなる・・orz
>>そしてこれを速度「速」にしてノーミスで神プレイ動画にするわけですねw
本家すら避けきれないのに速にしたら・・・・逆によけれ!ナイナイ
速だとスピード最終的に10ぐらいになりますよw
2倍のポイントを手に入れた! 308ポイント を手に入れた。
|
|
|
|
|
Name: 烏 ..入門者(4,789ポイント)
Date: 2009/01/23(金) 21:51
No:27565
|
|
Title: Re:東方弾幕っぽいの作ってみた2
|
|
素晴らしいですね。
速の発狂見て見たいですね〜w
そして神回避のパフォーマンスをするわけですかw
これは楽しみですn(ry
後半楽しみに待たせていただきます。
75ポイント を手に入れた。
|
|
|
|
Name: Mikan ..かけだし(1,772ポイント)
Date: 2009/01/22(木) 01:02
No:27409
|
|
Title: 背景画像について
|
|
現在、シューティングをC++の勉強がてら作っています。
ゲーム中に出てくる背景を新しくしたいと思っています。
東方や龍神録みたいな背景をつくりたいのですが
絵心の無い僕にもつくれますでしょうか?w
もしかしたら写真から加工するのかなぁ?とかも思いましたが
方法がわかりません^^;
ご教授おねがいします。
追伸
ホームページを作りましたので、興味のあるかたはぜひお立ち寄りください^^v
http://gardenofeden.bake-neko.net/
>管理人様
リンクフリーとの事なのでリンクを貼らせていただきました。
この場を借りて報告させていただきますね^^
204ポイント を手に入れた。
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(964,984ポイント)
Date: 2009/01/22(木) 01:47
No:27415
|
|
Title: Re:背景画像について
|
|
おぉ!本格的に出来上がっていますね♪
この絵どこかで見たことあるんですが、自作ですか?
うまいな〜・・私は絵がかけないんでうらやましいです・・。
まだ2面の途中まで一回遊んだだけなんですが、
コンテニュー後、パワーが少なすぎな状態になりません?
後、速いスピードで飛んできた弾との当たり判定きちんと計算できています?
2面途中の紫の大玉に当たり判定が最初無いのかと思いました。
毎回フレームごとに当たっているかを判定しただけでは、すれ違ってしまうかもしれませんので
「軌跡」を考慮する必要があります。
その辺実装されてたらすみません。
後、背景についてですが、私は絵心が無いので何もアドバイス出来ません・・。
ペンタブも持ってないんで、マウスでせっせこ書いて作りました;
しかも参考資料が無いとかけないので、例えば桜の絵にしても
グーグルで「桜」で画像検索して出てきた桜の絵を何枚か参考にしながら描きました。
ま〜時間かかるけど、ぼかしで書いていけばそれっぽくみえるかなという何ともやっつけな手法で書いてますw
う〜ん、あまりシューティングの背景について素材もなければ描き方も参考に出来そうなサイトないんですよね〜^^;
龍神録内部で使われているデータについてはご存知の方法で見れると思うので、参考にならないと思いますが、参考に出来るものならどうぞw
518ポイント を落としてしまった。
|
|
|
|
|
Name: Mikan ..かけだし(1,865ポイント)
Date: 2009/01/22(木) 02:06
No:27418
|
|
Title: Re:背景画像について
|
|
>>管理人様
>この絵どこかで見たことあるんですが、自作ですか?
絵はひとつも描いていませんww
ネットの素材屋さんでせっせこ集めました^^
ほんと絵をかける人がうらやましいですw
>コンテニュー後、パワーが少なすぎな状態になりません?
そうなんですよw
死んだときにアイテムを散らす処理を入れようと思って忘れている状態ですw
>後、速いスピードで飛んできた弾との当たり判定きちんと計算できています?
その処理いれてないんですよw
そうなるとは知ってはいるんですが、一人で作ってるとなかなか進まなくて入れませんでしたw
さっそく着て頂いてありがとうございます。
PerfectCrimeはテスト第一弾ということで作りましたので中途半端すぎますが
色々修正や改良をくわえたプログラムを作っていますので、またよろしくお願いします^^
田舎で一人ぼっちでやってると大変w 本とHPをいったりきたりして少しずつですが進んでいます。
ありがとうございました(人´・ω・`o)感謝♪
68ポイント を手に入れた。
|
|
|
|
|
Name: BEMANI ..初心者(5,672ポイント)
Date: 2009/01/22(木) 02:19
No:27420
|
|
Title: Re:背景画像について
|
|
>>Mikanさん
自分が作るゲームに自作画像を使っていますので、
アドバイスくらいならできるかもしれないです。
ただ、期待はしないで下さいね;
(自分はPhotoShop7.0を使用しています。同じソフト持ってると凄くありがたいですが
さすがにそんな偶然はないですよね><)
ということで、画像作成ソフトは何を使用するとお考えでしょうか?
>絵心の無い僕にもつくれますでしょうか?w
どのような画像かによりますが、明確な目標があれば、このあたりはカバーできます。
(写真を参考にできたりするので)
80ポイント を手に入れた。
|
|
|
|
|
Name: BEMANI ..初心者(5,791ポイント)
Date: 2009/01/22(木) 02:45
No:27423
|
|
Title: Re:背景画像について
|
|
>>Mikanさん
GIMPというツール名を初めて聞きました><
試しに自分も落としてみました・・・。
どういった感じの絵に仕上げるかという、イメージ図などはありませんか?
GIMPというものを使ってやってみようと思うのですが・・・。
119ポイント を手に入れた。
|
|
|
|
|
Name: BEMANI ..初心者(5,886ポイント)
Date: 2009/01/22(木) 02:58
No:27425
|
|
Title: Re:背景画像について
|
|
>>管理人さん
こんな所に同じソフトを使用している方がいらっしゃるとはw
なかなか慣れたインターフェイスは手放せないという気持ち凄くわかります><
PhotoShopかれこれ5年ほど使ってるので愛着湧き過ぎてどうしようというレベルですよ;
95ポイント を手に入れた。
|
|
|
|
|
Name: BEMANI ..初心者(5,934ポイント)
Date: 2009/01/22(木) 03:05
No:27427
|
|
Title: Re:背景画像について
|
|
>>管理人さん
Vista色々不便そうですよね;
Vistaでよかった! という話を全然耳にしないです><
48ポイント を手に入れた。
|
|
|
|
|
Name: Mikan [URL] ..かけだし(2,172ポイント)
Date: 2009/01/22(木) 03:21
No:27428
|
|
Title: Re:背景画像について
|
|
>>BEMANI様
>どういった感じの絵に仕上げるかという、イメージ図などはありませんか?
一応、夜の空にしたいなぁとおもってはいます。
あとは東方などのボス戦のときに背景の上に透過で切り抜いた模様みたいなエフェクトがかかるんですが
あんな感じの物もつくりたいと考えています。
フォトショはお金がないので断念しています。いつかは本腰をいれて勉強したいと思っていますが・・・
GIMPにフォトショとインターフェイスを同じにするプラグインがあったようなのでそれも入れて
フォトショの本とかサイトで勉強するのもいいのかな?とも考えています。
217ポイント を手に入れた。
|
|
|
|
|
Name: 御津凪 [URL] ..熟練のプログラマー(52,316ポイント)
Date: 2009/01/22(木) 03:24
No:27429
|
|
Title: Re:背景画像について
|
|
> どういった感じの絵に仕上げるかという、イメージ図などはありませんか?
> GIMPというものを使ってやってみようと思うのですが・・・。
ということなので、 GIMP を使っている私から一つ。
これは、
ファイル→画像の生成→ロゴ→星のきらめき
を選び、適当に設定しただけのものです。(背景色はなじむように微妙に修正)
> 私はフォトショ7.0をVistaにいれたらインストールできなかったのでその為にVistaを消したという人間ですw
今のバージョン(2.6.4)ならインストールできますよ。
フォトショはMDIなので、ショートカット操作に慣れていると、
GIMPの場合、対象ウインドウをアクティブにしてからでないと効かないのが大変です。
> Vistaでよかった! という話を全然耳にしないです><
私は Vista を使ってますが、たしかに良かったとは思ってませんね。
我慢してます。
168ポイント を手に入れた。
|
|
|
|
|
Name: Mikan ..かけだし(2,245ポイント)
Date: 2009/01/22(木) 03:57
No:27430
|
|
Title: Re:背景画像について
|
|
>>御津凪様
説明どおりの手順で私もロゴを作成してみました。
簡単にできますね。このような機能で模様とか背景画像みたいなやつは生成できないのでしょうか?
73ポイント を手に入れた。
|
|
|
|
|
Name: BEMANI ..初心者(6,566ポイント)
Date: 2009/01/22(木) 04:29
No:27432
|
|
Title: Re:背景画像について
|
|
>>Mikanさん
>このような機能で模様とか背景画像みたいなやつは生成できないのでしょうか?
望んだ夜空の背景になるかは解らないですが、
画面右下に「ブラシ」「パターン」「グラデーション」というタブが三つあると思います。
その中の「パターン」で、色々な画像があると思うので、それをキャンバスにドラッグすると
使えないかもしれませんが、背景っぽいのができました。
(そのパターンの中に宇宙っぽい雰囲気のものがあったので一度使ってみては如何でしょう;)
>あとは東方などのボス戦のときに背景の上に透過で切り抜いた模様みたいなエフェクトがかかるんですが
魔法陣とかあぁいうものですかね;
画像を作成した後に背景色を透明に設定するだけでいいのですぐにできると思います。
アドバイスついでに一つ・・・。
「レイヤー」という機能はめちゃくちゃ重要なのでどういうものか・・・
というだけでも覚えておいた方がいいです。
これから画像を作成するときは、レイヤーを作成し、そこに描くようにした方がいいと思います。
慣れてくると色々な使い方ができます。
新規作成すると、白いキャンバスが出てくると思います。
そこから「レイヤー」→「レイヤーを追加」→「レイヤー塗りつぶし方法 透明」→「OK」
とすると、画面右側の「背景レイヤー」の上に「新規レイヤー」が出来上がります。
画像を作る時は「新しいレイヤーを作成してから、そこに描く」という感じでやっていった方がいいです。
レイヤーは何枚でも作成することができます(ソフトによって上限があるかもしれませんが;)
632ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(967,526ポイント)
Date: 2009/01/22(木) 04:36
No:27434
|
|
Title: Re:背景画像について
|
|
レイヤー=直訳したら「層」ですがそのまんまの意味ですね^^
下のレイヤーいじってるときは、上の層に影響無いし、
独立した絵を重ねられるみたいな感じですね。
完成前にくっつけられると言う感じです。
GIMPやフォトショは使い方しだいでいくらでもプロっぽいことが出来ると思います。
ただ、使い方が難しい・・。
これぞまさしく「知識より知恵」機能の使い方がわかっていても、便利な応用方法を知らないと
宝の持ち腐れです。
mixiのフォトショップコミュとか結構技術共有しあってるので見てて勉強になりますよ。
GIMPとかもあるのかな?
259ポイント を手に入れた。
|
|
|
|
|
Name: 御津凪 [URL] ..熟練のプログラマー(51,827ポイント)
Date: 2009/01/22(木) 04:42
No:27435
|
|
Title: Re:背景画像について
|
|
メニューの、
ファイル→画像の生成
の中の下4つは選択後にでるパラメータを適当にいじるだけで簡単なものは出来ます。
(パターンは模様や背景画像に出来るかも)
あとは、色々弄ってみるのがいいと思います。
一応、夜空っぽい画像張っておきます。
この画像の大まかな手順は、
・ファイル→新しい画像 で新規作成。
・編集→描画色で塗りつぶす で(デフォルトで黒に)塗りつぶす。
・レイヤー→レイヤーを追加 で、新規作成(初期色は透明で)。
・フィルタ→ノイズ→浴びせ を選択、乱数度を1にする。
・レイヤー→レイヤーの拡大・縮小 で 300% に拡大。
・色→トーンカーブ でグラフをいじって適当な密度の点を残す。
・色→色相・彩度 で、下三つのスライドバーをいじって調整。
・完成。
です。
何か色々やっていますが、メニューからの操作だけです。
BEMANI さんの通り、レイヤーという概念は重要ですので、
ググって調べるなりして覚えていってください。
一応注意として、GIMP で調べると、古いバージョンのものが多く、
メニューなどが大きく違うので注意です。
489ポイント を落としてしまった。
|
|
|
|
|
Name: Mikan [URL] ..入門者(2,532ポイント)
Date: 2009/01/22(木) 05:14
No:27436
| 解決!
|
Title: Re:背景画像について
|
|
>>BEMANI様
>「レイヤー」という機能はめちゃくちゃ重要なのでどういうものか・・・
レイヤーについては調べてみました。
たしかに他の層に影響がないので追加・修正が楽にできそうですね^^
>>管理人様
>GIMPやフォトショは使い方しだいでいくらでもプロっぽいことが出来ると思います。 ただ、使い方が難しい・・。
たしかに色々できそうな分、インターフェースが多すぎて混乱してしまいますw
>>御津凪様
>ファイル→画像の生成
>の中の下4つは選択後にでるパラメータを適当にいじるだけで簡単なものは出来ます。
初心者にはありがたい機能ですねw
いままで他のソフトでロゴなどは作っていたのですが、GIMPの方が簡単にできて見栄えがいいです^^
GIMPで背景画像作成の練習をしていきます♪
BEMANI様、管理人様、御津凪様
夜遅く?朝早く?までありがとうございました。
287ポイント を手に入れた。
|
|
|
|
|
Name: Mikan ..入門者(2,671ポイント)
Date: 2009/01/22(木) 13:23
No:27459
|
|
Title: Re:背景画像について
|
|
>>にょろ様
いえいえ、私もはじめてアップしましたが、
テスト仕様なので、まだまだですが、これからもよろしくお願いします。
>シューティングゲームプログラミング(C++)の本を買ったら
>タスクシステムとかC#で作ってるからメモリ無理
タスクシステムは面倒なんでSTLのlistにぶっこんで処理しています。
>いまは線画の練習でしゃこしゃこ頑張ってます
私も本日朝6時までしゃこしゃこしてましたw
GIMP便利ですね。みなさんが教えてくれたのでスムーズに作成できています^^v
139ポイント を手に入れた。
|
|
|
|
|
Name: array [URL] ..熟練のプログラマー(46,866ポイント)
Date: 2009/01/23(金) 17:10
No:27559
|
|
Title: Re:背景画像について
|
|
いまさらではありますがPerfectCrimeを遊ばせてもらいました。
ドット絵も含め、良い画像を用意できたみたいで羨ましいです。エフェクトにも力を入れてますよね
ゲームプレイの感想ですが、1面のボスから強すぎやしませんか・・・。一度コンテニューした後の弾の弱さといったら、相当酷かったですw(1分で1mmくらい?)管理人さんと同じく、2面ボス戦までは行ったのですがコンテニュー時にミス(?)してタイトル画面に戻ってしまって終わりました。
あと、プログラム的な面も凄かったです。私も館を利用してゲームを作ってたのですが、調子良くてFPS50程度でした・・・。PerfectCrimeは常に60キープしてましたが何か工夫されてるのですかね。
プログラムの基礎となるところは殆ど完成していたみたいなので、今後のバージョンアップにも期待してます^^
221ポイント を手に入れた。
|
|
|
|
|
Name: Mikan [URL] ..入門者(4,166ポイント)
Date: 2009/01/23(金) 21:55
No:27566
|
|
Title: Re:背景画像について
|
|
>>array様
同じ九州人同士ですね^^ よろしくお願いします。
PerfectCrimeは突貫工事状況となっておりまして、
ゲーム同様、プログラム内部は醜いものですw
年末は忙しくなりそうだったのと、気持ちを切り替えたいと思いまして、
突貫工事でVer1.0はとりあえず終了とさせていただきました^^;
(実のところバランスの調整等、一切やっておりませんw)
なので、プレイヤーが被弾したときにアイテムを散らしたり
軌跡計算など色々いれていません^^;
次のアップを期待しててくださいw
>ドット絵も含め、良い画像を用意できたみたいで羨ましいです。エフェクトにも力を入れてますよね
素材を使わせていただいたところはホームページにてリンクを張っていますので
ぜひ遊びにいってください^^
>PerfectCrimeは常に60キープしてましたが何か工夫されてるのですかね。
なにも工夫はしていません^^;
開発環境がCeleronM 1.5Ghz メモリー512MB
なので低環境で作成してるのがいいのでしょうか?w(私も謎ですw)
実のところ、現在もVerアップ作業は続いているんですが、
ソースファイルを整えるのに時間がかかって、アップできてない状態にありますww
とてもC++ソースとはおもえないほどひどいことになってましたものでw
ソースファイルが晒せる状態になったときには、晒させていただきますw
array様のホームページにリンクを張らせていただこうかと思っています。
なにとぞよろしくお願いしますm(_ _)m
2倍のポイントを手に入れた! 1,244ポイント を手に入れた。
|
|
|
|
|
Name: array ..熟練のプログラマー(47,685ポイント)
Date: 2009/01/25(日) 01:15
No:27636
|
|
Title: Re:背景画像について
|
|
どうやら、バージョンアップしたみたいですよw →ver1.01
UpLoaderから、ダウンロードページにはいけるのですが、パスワードが分からずDLできませんでした。
先日、DEMOというのが気になっていて、DLして(DEMO)ムービーだと思いながらワクワク気分で起動したら、ムービーじゃなくて軽くガックリきました
#処理速度(FPS)について
> なにも工夫はしていません^^;
そういえば、C++で書かれてたのですね。それが良いのですかね。
私もC++に手を出してみたいとは思ってるのですが、オブジェクト指向やら、クラスやらあって、なかなか手を出せません。
時間を見つけて、猫でもわかるさんのHPで少しずつ勉強していきたいと思います。
そして、C++で作るシューティングがイメージできれば、また、シューティング作成に挑戦したいです^^
あと、リンクありがとうございます♪
是非こちらからもリンクを張らせてもらいますね。
377ポイント を手に入れた。
|
|
|
|
|
Name: Mikan [URL] ..入門者(4,891ポイント)
Date: 2009/01/25(日) 20:08
No:27661
|
|
Title: Re:背景画像について
|
|
>>Dixq様
>リンクエラーでダウンロード出来ませんでした(T_T
すみません、バグを修正したときにちょうどバッティングしてだと思います^^;
Ver1.01に修正しました。何度も足を運んでいただきありがとうございます。
近いうちに新しいのをバージョンアップしようと思っていますのでお願いいたします。
>array様
>ムービーじゃなくて軽くガックリきました
すみません、徐々にアップしていってるので変な形になったのだと思いますw
子連れプログラマーなもんで、時間が少ないんですが、まだまだバージョンアップしていきますので
よろしくお願いします。
>そういえば、C++で書かれてたのですね。それが良いのですかね。
C++は確かにいいんですが、オブジェクト指向を始めての人間にとって
グローバル変数の使い方など、少し難しい点が多すぎてPerfectCrimeも動いてるものの
ソースはメチャクチャな状態になっていますw
弾も400個を超えるとFPSもあやしいですw
>是非こちらからもリンクを張らせてもらいますね。
ありがとうございます。外部リンク初めてなのでうれしいです^^
今後ともよろしくお願いします。
P.S.
GIMPにだいぶなれてきて、背景作成もだいぶ進んでいる状況です。
再度、回答してくださった皆様にお礼を申し上げます。
ありがとうございました。
485ポイント を手に入れた。
|
|
|
|
Name: kaiten ..初心者(8,116ポイント)
Date: 2009/01/21(水) 18:05
No:27336
|
|
Title: [雑談?]自作ヘッダを公開してみる[Take2]
|
|
SWITCH.h
http://dixq.net/code/SWITCH.h
また湧いてきました。kaitenです。
学校を病欠している間にSWITCH.hがそれなりに形になったのでまた晒しに来た次第です。
病欠で何故そんなことしてるって?いやだって退くt(ry
冗談はおいといて、今回もまた問題点などを挙げていただこうと思いこの場を借りさせていただきました。
前回ご指摘いただいた型指定の排除やS_ENDの排除が思った以上に難航しているのでそれについての解法も御教授いただければ幸いです。
まだreadmeを作ってないので仕様があやふやなのですが、基本的に使用法は前回と変わっていません。
変更点は、FALL(RUN)機能の廃止、REFINE系機能の廃止(REFINEなしで強制的に同等の効果があるはずです)、
DEFAULT機能の使用を選択式に変更、旧バージョンとの互換性破棄、continueに対応、速度面の大幅なパフォーマンス向上(BCCDeveloperにて計測したところ、DEFAULT機能不使用時に本家switchに勝る速度を確認)、
#pragma onceを使わず#ifでインクルードガードを行うよう変更したことです。
310ポイント を手に入れた。
|
|
|
|
Name: hoge ..入門者(2,694ポイント)
Date: 2009/01/21(水) 20:11
No:27380
|
|
Title: Re:[雑談?]自作ヘッダを公開してみる[Take2]
|
|
>>前回ご指摘いただいた型指定の排除やS_ENDの排除が思った以上に難航しているので
>>それについての解法も御教授いただければ幸いです。
こんな感じかな。
使い方は以下の通り、ほぼswitch文と同じ。
SWITCH(i)
{
CASE(3): printf("3です\n"); break;
CASE(4): printf("4です\n"); break;
IN_CASE(7,10): printf("7から10です\n"); break;
DEFAULT: printf("その他\n"); break;
}
187ポイント を手に入れた。
|
|
|
|
|
Name: kaiten ..初心者(8,395ポイント)
Date: 2009/01/22(木) 16:58
No:27475
|
|
Title: Re:[雑談?]自作ヘッダを公開してみる[Take2]
|
|
hogeさん、ありがとうございます。
dynamic_castを使えばこのような方法で可能なのですね。自分では思いつきもしませんでした。
それ以前に、breakとcontinueの両方に対応させるためにswitch文を内部で使うという発想自体がなかったです。
既に上げた自作の物はそのうちほぼそのまま自ページにて公開するつもりなのですが、添付していただいたものを参考にして作ったものも公開させていただいてよろしいでしょうか?自分で理解してから組みますが、どうしても似たような感じになってしまうと思うので……
御許可を頂けない場合は万に一つも添付して頂いたものを参考に作ったヘッダを公開するようなことは致しません。
279ポイント を手に入れた。
|
|
|
|
|
Name: hoge ..入門者(2,700ポイント)
Date: 2009/01/22(木) 20:52
No:27500
|
|
Title: Re:[雑談?]自作ヘッダを公開してみる[Take2]
|
|
自由にどうぞ。
ぶら下がりelse対策ができていないけど。
6ポイント を手に入れた。
|
|
|
|
|
Name: kaiten ..初心者(8,400ポイント)
Date: 2009/01/25(日) 16:33
No:27659
|
|
Title: Re:[雑談?]自作ヘッダを公開してみる[Take2]
|
|
ありがとうございます。
ぶら下がりelse対策ですか…こちらで考えてみます。
5ポイント を手に入れた。
|
|
|
|
Name: tkk ..ぴよぴよ(142ポイント)
Date: 2009/01/25(日) 04:52
No:27649
|
|
Title: 再帰的関数によりnの階乗を求めるプログラム
|
|
#include<stdio.h>
int factorial(int);
int main(void){
int n,f,
scanf("%d",&n);
f=factorial(n);
printf("factorial=%d/n",f);
return(0);
}
int factorial(int n){
int f,
if(n<=1)
return(1)
else return n*factorial(n-1);
return(f);
}
のfactorialの関数の部分で、if文のelseの場合、n*factorial(n-1);
の結果をmain関数のfに返すのはわかるのですが、先ほどのn*factorial(n-1);
の下のreturn(f);について、fの値を返すというのはどういうことなのでしょうか?
factorial関数ではint fで変数fを宣言しているにもかかわらず使われていないように
見えるのですがこのプログラムは間違っていますか?
142ポイント を手に入れた。
|
|
|
|
Name: box ..ハッカー(133,869ポイント)
Date: 2009/01/25(日) 07:24
No:27651
|
|
Title: Re:再帰的関数によりnの階乗を求めるプログラム
|
|
factorial関数でのfの定義とreturn f;は不要です。
その他、提示されたコードにはコンパイルに支障を来す記述が散見されます。
32ポイント を手に入れた。
|
|
|
|
|
Name: non ..プログラマー(32,722ポイント)
Date: 2009/01/25(日) 08:19
No:27652
|
|
Title: Re:再帰的関数によりnの階乗を求めるプログラム
|
|
>else return n*factorial(n-1);
私なら、else を書きません。
return n*factorial(n-1); のみ。
49ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..比類無きプログラマー(81,743ポイント)
Date: 2009/01/25(日) 10:11
No:27654
|
|
Title: Re:再帰的関数によりnの階乗を求めるプログラム
|
|
> 下のreturn(f);について、fの値を返すというのはどういうことなのでしょうか?
最後にreturn文がないために発生するかもしれない警告を回避するためでは?
決してよいコードではないのは確かです。
52ポイント を手に入れた。
|
|
|
|
Name: tomo ..ぴよぴよ(152ポイント)
Date: 2009/01/24(土) 12:10
No:27592
|
|
Title: DxLib_VCについて
|
|
こんにちは。
C言語を始めようと思って、このHPにある
Visual 2008 C++ Express Editionを使用した場合のDXライブラリの使い方
を参考にしながら設定していました。
5.までは出来たのですが、6.のプログラムをコピー&ペーストして
メニューからデバッグ→デバッグ開始をしたんですが
プロジェクトは変更されています ビルドしますか?
というのが出ずに、
C:Users\tomo\Desktop\test\Debug\test.exe を開始できません。
指定されたファイルが見つかりません。
と出てしまいます。
どこが問題なのでしょうか?
ファイルの置いてる場所がマズイのか・・・
ご助言よろしくお願いします。
152ポイント を手に入れた。
|
|
|
|
Name: AC ..入門者(3,968ポイント)
Date: 2009/01/24(土) 15:13
No:27595
|
|
Title: Re:DxLib_VCについて
|
|
個人的には手順として
ソースを書く→ビルドの「(プロジェクト名)のビルド」→(ビルド成功時)デバッグ開始
というようにするのをお勧めします。
今回の現象の予測ですが、おそらくコンパイルエラーかリンクエラーかが起こっているのだと思います。
それと、5の後にtest.exeを削除しませんでしたか?
VC++2008EEの場合、ビルドせずにデバッグ開始すると、まずビルドを行います。
もし、そこでエラーが起きると、前回成功時にできたexeファイルを実行しようとします。
その時に、もし前回成功時のexeファイルがないと
C:Users\tomo\Desktop\test\Debug\test.exe を開始できません。
指定されたファイルが見つかりません。
と出るのだと思うのですが…違っていたらすみません。
とりあえずビルドをして、エラーが起きていたらソースの確認をしてみてください。
321ポイント を手に入れた。
|
|
|
|
|
Name: s-rush ..上級者(17,594ポイント)
Date: 2009/01/24(土) 15:22
No:27597
|
|
Title: Re:DxLib_VCについて
|
|
ACさんのおっしゃる通りおそらくコンパイルエラーのために実行ファイルが作成されていないんだと思います。
一度メニューバーのビルドから
「ソリューションのビルド」
を実行してみてください。
コンパイルエラーが出ていなければ実行ファイルが作られてるはずなので、
デバッグ(なし)で開始してみてください。
もしコンパイルエラーが出てしまっていたら、設定に不備があるんだと思います。
(コピー&ペーストが失敗しているとも考えられますが・・・
たとえば最後の } が抜けているとか)
もう一度設定のところを見直してみてください。
172ポイント を手に入れた。
|
|
|
|
|
Name: tomo ..ぴよぴよ(202ポイント)
Date: 2009/01/25(日) 09:59
No:27653
| 解決!
|
Title: Re:DxLib_VCについて
|
|
再インストールして、もう一度よく見直してみたら
解決しました!
ありがとうございます。
自分の不手際なのに申し訳なかったです・・・
また問題に直面することがあればよろしくお願いします。
50ポイント を手に入れた。
|
|
|
|
Name: kazuoni [URL] ..熟練のプログラマー(51,591ポイント)
Date: 2009/01/24(土) 22:48
No:27619
|
|
Title: 標準入力ストリームにファイルを指定した時のデバッグ
|
|
お邪魔します。
いつもながらかなり初歩的な質問なんですが・・・
タイトルの通り、
標準入力ストリームにファイルを指定した時のデバッグについてなのですが、
なぜデバッグなしで実行で正常に動き、
デバッグで実行すると正常に動かないのですか?
環境はvista,
visual c++ 2008です。
[プロジェクト]→[(プロジェクト名)のプロジェクト]→[デバッグ]
のコマンド引数のところに
< a.txt > b.txt
と指定し、以下のコードをビルドします。
#include<stdio.h>
int main()
{
printf("テスト\n");
int c=getchar();
char i[2];
i[0]=c;
i[1]='\0';
printf("%s",i);
return 0;
}
a.txtの中はabcとだけ書いてあります。b.txtは中身なしです
この状況で
[デバッグ開始]をするとgetcharを呼び出したら何も返ってきません。
printf("テスト")が実行画面に出ているので、
うまく指定できてないと分かりました。
そこで、[デバッグなしで開始]を実行するとうまくいきます。
これはなぜでしょうか?
ブレイクポイントを立てたかったのですが、立てれません。。
何か良い解決方法はあるのでしょうか?
よろしくお願いします。
23:52修正
383ポイント を手に入れた。
|
|
|
|
Name: Justy ..伝説なるハッカー(312,823ポイント)
Date: 2009/01/24(土) 23:58
No:27621
|
|
Title: Re:標準入力ストリームにファイルを指定した時のデバッグ
|
|
>これはなぜでしょうか?
バグじゃないですかね、デバッガの。
Can't redirect stdin/stdout for debugging
ttp://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=333493
でも、SP1で直っているようです。
List of changes and fixed issues in Visual Studio 2008 Service Pack 1 for Express Editions
ttp://support.microsoft.com/?scid=kb%3Ben-us%3B950264&x=9&y=9
ちなみにデバッガのタイプを混合にすると
< a.txt くらいはうまくいったりするようです。
30ポイント を手に入れた。
|
|
|
|
|
Name: kazuoni [URL] ..熟練のプログラマー(51,730ポイント)
Date: 2009/01/25(日) 01:57
No:27644
| 解決!
|
Title: Re:標準入力ストリームにファイルを指定した時のデバッグ
|
|
やっと再インストール終わりました。
Justyさんのおっしゃる通りバグだったようです。。
再インストールしたらきっちり動きました。
SP1のversionが古かったのでしょうか^^;
よく分かりませんが、無事解決しました!
ご回答いただきありがとうございました。
またよろしくお願いします。
139ポイント を手に入れた。
|
|
|
|
Name: ムンバ ..上級者(23,445ポイント)
Date: 2009/01/25(日) 00:02
No:27622
|
|
Title: if文とswitch文の違い(区別?)につきまして
|
|
こんばんはっ!
どちらをどの様な時にどの様に使ったらいいのか解らないので、ご意見お願い致します。^^;
if (cat.flag == 1){
/*if (cat.muki == 0)
cat.y++;
else if (cat.muki == 1)
cat.x--;
else if (cat.muki == 2)
cat.x++;
else if (cat.muki == 3)
cat.y--;*/
switch (cat.muki){
case 0: cat.y++; break;
case 1: cat.x--; break;
case 2: cat.x++; break;
case 3: cat.y--; break;
default: break;
}
}
この様なソースの場合、if文とswitch文の、どちらを使うのがいいのでしょうか?
どちらでも、コンパイルして実行すると同じ動きをするのです。^^;
このソースは、switch文を使ってる場合なので、if文を/* */でコメントしてます。
宜しくお願い致します。<_ _>
323ポイント を手に入れた。
|
|
|
|
Name: ムンバ ..上級者(23,511ポイント)
Date: 2009/01/25(日) 00:12
No:27623
|
|
Title: Re:if文とswitch文の違い(区別?)につきまして
|
|
言葉が足りなくて、すみません。
今、猫を主人公にしてRPGを作りたいと思ってます。
ですので、「猫」が構造体となってますので、「cat」を使ってます。
(猫でもわかる・・・とは関係ない事だという事です。^^;)
宜しくお願いします!
-----------------------------------------------------------------------------------------
編集にて追加です。
龍神録プログラミングの館→プロジェクトと素材を用意しよう→http://dixq.net/rp/img/1/5.png
の直下
「今後章ごとにダウロードしたファイル」
誤字かと思われます。(謝
-----------------------------------------------------------------------------------------
66ポイント を手に入れた。
|
|
|
|
|
Name: Libra ..初心者(8,070ポイント)
Date: 2009/01/25(日) 00:35
No:27625
|
|
Title: Re:if文とswitch文の違い(区別?)につきまして
|
|
自分はこの場合におけるifとswitchは見やすさの違いだと思いました。
#include <stdio.h>
#define DOWN 0
#define RIGHT 1
#define LEFT 2
#define UP 3
typedef struct CAT{
int flag;
int muki;
int x,y;
}Cat_t;
int main(void){
Cat_t cat;
cat.flag = 1 ;
cat.muki = DOWN ;
cat.x = 200 ;
cat.y = 200 ;
if (cat.flag == 1){
switch ( cat.muki ){
case DOWN: cat.y++;break;
case LEFT: cat.x--; break;
case RIGHT: cat.x++; break;
case UP: cat.y--; break;
default: break;
}
}
printf("x = %d y = %d ", cat.x , cat.y ) ;
return 0;
}
私はこの場合であればdefineとswitchを使って、分けた方が見やすいと思いました。
208ポイント を手に入れた。
|
|
|
|
|
Name: array [URL] ..熟練のプログラマー(47,308ポイント)
Date: 2009/01/25(日) 00:45
No:27629
|
|
Title: Re:if文とswitch文の違い(区別?)につきまして
|
|
私もこれは、謎に思ってました。
自分なりの解釈では、処理速度の違いだと思ってます。
----------- if文の場合 -----------
if (cat.muki == 0)
cat.y++;
else if (cat.muki == 1)
cat.x--;
else if (cat.muki == 2)
cat.x++;
else if (cat.muki == 3)
cat.y--;
if文の場合、もし「else if (cat.muki == 3)」まで一致しなかったら、4回判定する事になります。
cat.muki=「0」でもない「1」でもない「2」でもない「3」でもない、だと処理が長いです・・・
----------- switch文の場合 -----------
switch (cat.muki){
case 0: cat.y++; break;
case 1: cat.x--; break;
case 2: cat.x++; break;
case 3: cat.y--; break;
default: break;
}
switch文だと、if文と違って「cat.mukiは何と一致するか」を判定してると思います。
cat.muki=「何と一致するか」のみで、処理は短いはず・・・。
------ 結果 ------
結論は、switch文を使った方が良いと思われます。
----追記
判定じゃなくて比較ですね。
442ポイント を手に入れた。
|
|
|
|
|
Name: ムンバ ..上級者(23,583ポイント)
Date: 2009/01/25(日) 00:50
No:27630
|
|
Title: Re:if文とswitch文の違い(区別?)につきまして
|
|
Libraさん、早速のご解説ありがとうございます。
Key[KEY_INPUT_DOWN]
Key[KEY_INPUT_LEFT]
Key[KEY_INPUT_RIGHT]
Key[KEY_INPUT_UP]
の部分
#define DOWN KEY_INPUT_DOWN
#define LEFT KEY_INPUT_LEFT
#define RIGHT KEY_INPUT_RIGHT
#define UP KEY_INPUT_UP
で
Key[DOWN]
Key[LEFT]
Key[RIGHT]
Key[UP]
の様な感じで宜しいでしょうか?
2倍のポイントを手に入れた! 72ポイント を手に入れた。
|
|
|
|
|
Name: ムンバ ..上級者(23,647ポイント)
Date: 2009/01/25(日) 00:55
No:27632
|
|
Title: Re:if文とswitch文の違い(区別?)につきまして
|
|
BEMANIさん、arrayさん、ご解説ありがとうございます。
if文だと4回、switch文だと5回・・・何となく解ります。^^;
自分が好きな方で、うまく動作する方を選んだ方がいいということですかね?(汗
64ポイント を手に入れた。
|
|
|
|
|
Name: BEMANI ..初心者(8,216ポイント)
Date: 2009/01/25(日) 01:06
No:27633
|
|
Title: Re:if文とswitch文の違い(区別?)につきまして
|
|
沢山条件分岐が出るのであれば、switchの方が早いです。
ifはとりあえず、条件が何であれ比較します。
switchは switch(値)・・・
この「値」をみて、該当する「case 値」にジャンプするので比較の回数が少ないです。
もし、御時間が許されているのであれば、
cat.muki = 3; という値を入れて、
if文 と switch〜case をれぞれ一行一行にブレイクポイントをうち、デバッグしてみてください。
上にも書いてますが、ifはとりあえず、条件に合うまで比較します。
switchは、case ? にすぐ飛んでいきます。
127ポイント を手に入れた。
|
|
|
|
|
Name: ムンバ ..上級者(23,759ポイント)
Date: 2009/01/25(日) 01:09
No:27634
| 解決!
|
Title: Re:if文とswitch文の違い(区別?)につきまして
|
|
うっ!比較ですね。<_ _>
すごく悩んでたので助かりました。
どうもありがとうございました。(謝
2倍のポイントを手に入れた! 112ポイント を手に入れた。
|
|
|
|
|
Name: BEMANI ..初心者(8,262ポイント)
Date: 2009/01/25(日) 01:12
No:27635
|
|
Title: Re:if文とswitch文の違い(区別?)につきまして
|
|
ただ、見やすさというのは非常に重要なので、その辺りも考慮してあげて下さい^^
一概にswitchの方がいい! とは言い難いので;
二・三個程度の比較ならif文で十分ではないかな〜と思います^^
46ポイント を手に入れた。
|
|
|
|
|
Name: ムンバ ..上級者(23,831ポイント)
Date: 2009/01/25(日) 01:18
No:27637
| 解決!
|
Title: Re:if文とswitch文の違い(区別?)につきまして
|
|
BEMANIさん、ありがとうございます!
今日は、眠くて自爆ですみません。^^;
起きたら、試してみます。(謝
皆さんのご解説のスレッド保存して
今後、読み返しながら勉強したいと思います。
ずっと悩んでいた事なので助かりました。
どうもありがとうございました。(謝
編集で追加です。
switch文を使った方が自分なりに見た目もカッコいい〜♪
的な感じで、いいのでしょうかね?^^
どうもありがとうございました。<_ _>
72ポイント を手に入れた。
|
|
|
|
|
Name: Libra ..初心者(8,103ポイント)
Date: 2009/01/25(日) 01:21
No:27638
|
|
Title: Re:if文とswitch文の違い(区別?)につきまして
|
|
> if文だと4回、switch文だと5回・・・何となく解ります。^^;
>
自分もそう思ってました。同じなら見やすさの問題かなと。
勉強になります。m(_ _)m
33ポイント を手に入れた。
|
|
|
|
|
Name: ムンバ ..上級者(23,891ポイント)
Date: 2009/01/25(日) 01:30
No:27639
| 解決!
|
Title: Re:if文とswitch文の違い(区別?)につきまして
|
|
こちらこそ、勉強になります。^^
重ね重ね、どうもありがとうございました。(謝
2倍のポイントを手に入れた! 60ポイント を手に入れた。
|
|
|
|
|
Name: Justy ..伝説なるハッカー(312,877ポイント)
Date: 2009/01/25(日) 01:39
No:27640
|
|
Title: Re:if文とswitch文の違い(区別?)につきまして
|
|
参考までに。
メモリ効率の向上 : Y's Software Library
ttp://ww4.tiki.ne.jp/~yosshie-k/programming/techniques/memory.html#if_or_switch
54ポイント を手に入れた。
|
|
|
|
|
Name: ムンバ ..上級者(24,059ポイント)
Date: 2009/01/25(日) 01:47
No:27642
| 解決!
|
Title: Re:if文とswitch文の違い(区別?)につきまして
|
|
ttp://ww4.tiki.ne.jp/~yosshie-k/programming/techniques/memory.html
こっ これは・・・。(激汗
Justyさん、ありがとうございます。^^
お気に入りに登録です!
ありがとうございました。おやすみなさい♪
2倍のポイントを手に入れた! 168ポイント を手に入れた。
|
|
|
|
Name: saga ..ぴよぴよ(33ポイント)
Date: 2009/01/24(土) 14:01
No:27593
|
|
Title: 龍神録(初期化)について
|
|
初めまして、龍神録プログラミングの館で疑問に思ったところを質問させてください。
URL : http://dixq.net/rp/19.html
この19章でeffectの登録・計算を行っていますが
void calc_del_effect(){
int k;
for(int i=0;i<DEL_EFFECT_MAX;i++){
if(del_effect[i].flag>0){
if(del_effect[i].cnt%2==0){// 1/30秒ずつセット
if((k=search_effect())!=-1){//空き番号検索
memset(&effect[k],0,sizeof(effect_t));//初期化
effect[k].flag=1;//フラグを立てる
effect[k].brt=255;//輝度を最大値に
・
・
この初期化を行う意味を教えてもらえないでしょうか。
22章-ボムを撃ってみよう
では同じようなところの初期化では書かれていないみたいで、使い分けなど有ったら知りたいので。
33ポイント を手に入れた。
|
|
|
|
Name: こめかみ ..熟練のプログラマー(41,198ポイント)
Date: 2009/01/24(土) 16:19
No:27601
|
|
Title: Re:龍神録(初期化)について
|
|
違ってたらごめんなさい。
エフェクトを消滅させる関数なので、
次のエフェクト処理に使いまわすのに備えて、
エフェクト構造体を初期化しています…多分。
エフェクトの処理のためにいろいろ使われたデータを
エフェクトを消す処理のついでに初期化しています。
すみません…自信ないです。
次にシューティングに取り掛かるときは
また一章からやり直しかなあ
142ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(969,617ポイント)
Date: 2009/01/24(土) 16:53
No:27602
|
|
Title: Re:龍神録(初期化)について
|
|
memsetで構造体の中身を全て0にしておけば、
=0;
と書かないといけない処理がスキップ出来るのです。
例えば
{
int x,y;
int flag;
}
の3つを持つ構造体があったとし、これを全部
.x=0;
.y=0;
.flag=0;
としなくても、memsetで領域全部を0にしてやれば1行で済むわけです。
また、初期化漏れによるバグ発生の可能性も減らせます。
ここで、意味がある処理であったかどうかわかりませんが、
もし意味が無ければ今後変数が増えた時の為に付けていた処理だったかもしれません。
また、構造体に値を代入する時は、値代入用の関数を作ってもいいと思います。
268ポイント を手に入れた。
|
|
|
|
|
Name: kazuoni [URL] ..熟練のプログラマー(51,208ポイント)
Date: 2009/01/24(土) 19:38
No:27612
|
|
Title: Re:龍神録(初期化)について
|
|
たかぎさんの会社のホームページにある
[迷信]シリーズ大体読破していますw
C++のコラムはまだ読むだけになっているので
時間を見つけて実践していきたいと思ってます^^
(ライブラリ開発入門・・・更新が待ち遠しいですw)
話それました。。失礼しました。(最近コメントそれすぎかなぁ・・・。)
154ポイント を手に入れた。
|
|
|
|
|
Name: saga ..ぴよぴよ(85ポイント)
Date: 2009/01/24(土) 23:07
No:27620
| 解決!
|
Title: Re:龍神録(初期化)について
|
|
こめかみさん、管理人さん、たかぎさん、kazuoniさん
ありがとうございます。
memsetを最近知った素人ですので助かります。
52ポイント を手に入れた。
|
|
|
|
Name: スライク ..ぴよぴよ(550ポイント)
Date: 2009/01/23(金) 23:05
No:27570
|
|
Title: 変数なんですが・・・
|
|
#include<stdio.h>
#include<float.h>
int main(void)
{
double pai=3.14159265358979;
int mon=2;
float flt=1.2f;
printf("%5.2hf\n",flt);
printf("%-5.2f\n",flt);
printf("%05.2f\n",flt);
printf("%+08.2f\n",flt);
printf("%-08.2f\n",flt);
printf("%d\n",mon=3);
printf("%e\n",pai);
printf("%08.2f\n",pai);
printf("%05d\n",mon);
printf("円周率は%fです\n",pai);
printf("円周率は%1fです\n",pai);
printf("もう少し詳しい値は%10.81fです\n",pai);
printf("もう少し詳しい値は%15.131fです\n",pai);
printf("もう少し詳しい値は%20.18fです\n",pai);
printf("円周率は%010.2f\n",pai);
printf("円周率は%-10.2f\n",pai);
printf("円周率は%10.2f\n",pai);
return 0;
}
これなんですがどうしても結果が本通りになりません。
本だと
もう少し詳しい値は3.14159265です
もう少し詳しい値は3.1415926535898です
もう少し詳しい値は3.141592653589790000です
と表示されるはずなのですが・・・他は本どおりに表示されたのですがどこが間違っているかわかりません。
アドバイスよろしくお願いします。
352ポイント を手に入れた。
|
|
|
|
Name: スライク ..ぴよぴよ(646ポイント)
Date: 2009/01/23(金) 23:16
No:27575
| 解決!
|
Title: Re:変数なんですが・・・
|
|
>>lbfuvabさん
あっ結果載せてなかったですね。
すみません!
3.141592650000000000000000000
3.14159265358980000000000000000000000
3.1415926535897900000000000000000000000000000000000
こんな感じで表示されました。
96ポイント を手に入れた。
|
|
|
|
|
Name: スライク ..ぴよぴよ(670ポイント)
Date: 2009/01/23(金) 23:18
No:27576
| 解決!
|
Title: Re:変数なんですが・・・
|
|
>> boxさん
>>たかぎさん
指摘ありがとうございます!
1とLを間違ってたみたいです。
24ポイント を手に入れた。
|
|
|
|
|
Name: non ..プログラマー(32,652ポイント)
Date: 2009/01/24(土) 08:06
No:27582
|
|
Title: Re:変数なんですが・・・
|
|
>printf("%5.2hf\n",flt);
hfってのはどんな指定なんですか?始めてみました。
>他は本どおりに表示されたのですが
参考までに、本の題名を教えて下さい。
48ポイント を手に入れた。
|
|
|
|
|
Name: toyo ..上級者(23,849ポイント)
Date: 2009/01/24(土) 08:25
No:27583
|
|
Title: Re:変数なんですが・・・
|
|
%lfはしょっちゅう見かけますが%hfは、はじめて見ました
>ストライクさんへ
printfでは%lfも%hfも使わないようにしましょう
float型でもdouble型でも%fで表示します
本に書いてあることにも間違いはあります
106ポイント を手に入れた。
|
|
|
|
|
Name: スライク ..ぴよぴよ(827ポイント)
Date: 2009/01/24(土) 09:36
No:27587
|
|
Title: Re:変数なんですが・・・
|
|
>>たかぎさん
未定義にはならなくちゃんとコンパイルされたんですけどね・・・・。
おかしいですね。%10.8Lfにしましたよ。
>>nonさん
hf・・・・わかんないです。
何なんでしょうねw初心者にはこの本は難しすぎます!
本はtoyaさんが調べてくれた通り「猫でもわかるC言語プログラミング」です。
>>toyoさん
なるほど・・・。
ありがとうございます!
157ポイント を手に入れた。
|
|
|
|
|
Name: box ..ハッカー(133,668ポイント)
Date: 2009/01/24(土) 10:00
No:27588
|
|
Title: Re:変数なんですが・・・
|
|
> 未定義にはならなくちゃんとコンパイルされたんですけどね・・・・。
> おかしいですね。%10.8Lfにしましたよ。
未定義とは、コンパイルできたとしても、
実行時にどういう振る舞いをするかがわからない、という意味です。
%10.8LF
の場合の実行結果はどうなりましたか?
49ポイント を落としてしまった。
|
|
|
|
|
Name: toyo ..上級者(24,070ポイント)
Date: 2009/01/24(土) 10:10
No:27589
|
|
Title: Re:変数なんですが・・・
|
|
%Lfはlong double型の変換子になります。
%Lfでdouble型を表示するのは未定義動作であるという指摘ですね
未定義なのでコンパイラによってはちゃんと表示されることはありますが違うコンパイラを使ったときに不具合が出る可能性があります。
scanf( )でdouble型を入力するのは %lf なので printf( )でも間違って %lfを使う人が多いようです。
あとshort型でもunsigned型でも整数なら %d オンリーだったり。
%hdや%uもありますよといいたいです。
197ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..比類無きプログラマー(81,381ポイント)
Date: 2009/01/24(土) 11:43
No:27591
|
|
Title: Re:変数なんですが・・・
|
|
> 未定義にはならなくちゃんとコンパイルされたんですけどね・・・・。
> おかしいですね。%10.8Lfにしましたよ。
codepadで試すと、次のような結果になりました。
1.20
1.20
01.20
+0001.20
1.20
3
3.141593e+00
00003.14
00003
円周率は3.141593です
円周率は3.141593です
もう少し詳しい値は-0.00000000です
もう少し詳しい値は-0.0000000000000です
もう少し詳しい値は3.141592653589790007です
円周率は0000003.14
円周率は3.14
円周率は 3.14
105ポイント を手に入れた。
|
|
|
|
|
Name: box ..ハッカー(133,805ポイント)
Date: 2009/01/24(土) 17:23
No:27607
|
|
Title: Re:変数なんですが・・・
|
|
gccだとこんな風になりました。
1.20
1.20
01.20
+0001.20
1.20
3
3.141593e+000
00003.14
00003
円周率は3.141593です
円周率は3.141593です
もう少し詳しい値は3.14159265です
もう少し詳しい値は3.1415926535898です
もう少し詳しい値は3.141592653589790000です
円周率は0000003.14
円周率は3.14
円周率は 3.14
137ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..比類無きプログラマー(81,691ポイント)
Date: 2009/01/24(土) 21:49
No:27618
|
|
Title: Re:変数なんですが・・・
|
|
一応補足しておくと...
MinGWのprintf系関数やscanf系関数は、Visual C++のものを流用しています。
Visual C++では、(16ビット版のバージョン1.xを除き)long double型は64ビットでdouble型と同じ精度です。
それに対して、MinGWのlong double型は80ビット(ただし、sizeof(double)は12バイト)ですので、矛盾があります。
結果として、MinGWのprintf/scanf系関数でlong double型を扱おうとすると不具合に遭遇します。
103ポイント を手に入れた。
|
|
|
|
Name: AC ..入門者(3,308ポイント)
Date: 2009/01/24(土) 04:53
No:27580
|
|
Title: メニューバーのデザイン
|
|
ただいまWin32API学習中の者です。
また、こちらのフォーラムで質問させていただきます。
さて、本題ですがタイトル通りメニューバーのデザインがちょっとした書き方の違いで変わることが分かりその原因を知りたいのです。
もともと以下のソースで付加していて、この時は立体的なデザインでした(メニューのリソース名をIDR_MENUとします)。
// 立体的なメニューバーになる場合(ウィンドウプロシージャ部分のみ)
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
static HMENU hMenu;
switch(msg)
{
case WM_CREATE:
hMenu = LoadMenu(NULL, _T("IDR_MENU"));
SetMenu(hWnd, hMenu);
break;
case WM_DESTROY:
DestroyMenu(hMenu);
SetMenu(hWnd, NULL);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, msg, wp, lp);
}
return 0;
}
で、上のソースを見ていてメニュー付加の部分だけを関数化できそうだったので
BOOL CreateMenuBar(HWND hWnd)
{
HMENU hMenu;
hMenu = LoadMenu(NULL, _T("IDR_MENU"));
SetMenu(hWnd,hMenu);
return DestroyMenu(hMenu);
}
のようにして、CreateWindow()の直後に呼んでみたのですが、その結果メニューバーのスタイルがフラットになってしまいました。
また、WNDCLSSEX構造体で直接指定した場合は立体的なスタイルでした。
自分の考えとしては
CreateWindow()→WM_CREATEメッセージ送信(一度しか呼ばれない)→メニューセット→…
という流れだと思っているのでやってることは一緒じゃないのかなぁと思うのですが、どうなのでしょう?
もし原因のわかる方がいらっしゃいましたら、ご回答いただけたらと思います。
また、もしあとからCreateMenuBar()のようにして付加する場合で立体的なメニューバーを作成する方法があるのならば、その方法も教えていただけたらと思います。
よろしくお願いします。
163ポイント を手に入れた。
|
|
|
|
Name: AC ..入門者(3,647ポイント)
Date: 2009/01/24(土) 11:37
No:27590
|
|
Title: Re:メニューバーのデザイン
|
|
toyoさん回答ありがとうございます。
BOOL CreateMenuBar(HWND hWnd)
{
HMENU hMenu;
hMenu = LoadMenu(NULL, _T("IDR_MENU"));
return SetMenu(hWnd,hMenu);
}
のようにしたところ、立体的なデザインになりました。
今MSDN見てみましたが、DestroyMenu()をしなければならない条件は「どのウィンドウにも割り当てられていないメニュー」ということですので、↑のような場合はSetMenuでhWndのウィンドウに割り当てられているので明示的に解放する必要はなかったのですね。
ただDestroyMenu()をするのとしないので何が変わっているのでしょうか?
なぜメニューのメモリを開放しないでおくと立体的なデザインのままで、解放するとフラットになるのでしょうか?
DestroyMenu()をしても、コントロールとしての機能は失われていないようなので(WM_COMMANDメッセージは送信されているようです)、そこの部分がどうも納得いかないのですが…。
それと、LoadMenu()第一引数はインスタンスハンドルをちゃんと指定した方が良いのでしょうか?
すこし細かい話ですが、よろしくお願いいたします。
339ポイント を手に入れた。
|
|
|
|
|
Name: 御津凪 [URL] ..熟練のプログラマー(52,705ポイント)
Date: 2009/01/24(土) 15:00
No:27594
|
|
Title: Re:メニューバーのデザイン
|
|
LoadMenu で取得したルリソースデータは、プログラムが終了するまでメモリ上に残り続けます。
なので、 DestroyMenu() を呼んだら開放されるわけではなく、
恐らく開放されない原因(バグ?)でフラットになっていると思いますがちょっと分かりません。
> それと、LoadMenu()第一引数はインスタンスハンドルをちゃんと指定した方が良いのでしょうか?
第一引数が NULL の場合、自分自身を指すので、外部DLLで読み込む場合以外は NULL で大丈夫です。
160ポイント を手に入れた。
|
|
|
|
|
Name: AC ..入門者(4,028ポイント)
Date: 2009/01/24(土) 15:25
No:27599
| 解決!
|
Title: Re:メニューバーのデザイン
|
|
御津凪さん、的確な回答いつもありがとうございます。
なるほど、バグっぽいですか。納得しました。
これで解決に致します。
回答してくださった皆様どうもありがとうございました。
60ポイント を手に入れた。
|
|
|
|
Name: あつし ..ぴよぴよ(422ポイント)
Date: 2009/01/23(金) 12:34
No:27544
|
|
Title: シーザー暗号
|
|
大学の課題で今シーザー暗号を作っています。
一様プログラムはできたのですがprintf("3と入力してください: ");で3と入力せずに3こづらしたいのですがどのようにこのプログラムを改良すればよいですか?
#include <stdio.h>
#include <string.h>
char *shift_char(char x[], int y){
static const char table[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz";
static const int table_len = (sizeof(table)-1) / 2;
char *p;
y %= table_len;
for(p=x;*p;p++)
*p = *(strchr(table, *p) + y);
return x;
}
int main(void){
char input[301];
int count;
printf("アルファベットを入力してください: ");
scanf("%s", input);
printf("3と入力してください: ");
scanf("%d", &count);
printf("%s", shift_char(input, count));
return 0;
}
422ポイント を手に入れた。
|
|
|
|
Name: あつし ..ぴよぴよ(538ポイント)
Date: 2009/01/23(金) 13:01
No:27549
|
|
Title: Re:シーザー暗号
|
|
ありがとうございました。もう一つ質問があるのですがabc100と printf("アルファベットを入力してください: "); の所に入力すると、defと3桁シフトはするのですが100という数字が表示されません。3桁シフトして、数字はそのままにするにはどうしたらよいですか?
#include <stdio.h>
#include <string.h>
char *shift_char(char x[], int y){
static const char table[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz";
static const int table_len = (sizeof(table)-1) / 2;
char *p;
y %= table_len;
for(p=x;*p;p++)
*p = *(strchr(table, *p) + y);
return x;
}
int main(void){
char input[301];
int count;
printf("アルファベットを入力してください: ");
scanf("%s", input);
printf("%s", shift_char(input, 3));
printf("%s", shift_char(input, count));
return 0;
}
116ポイント を手に入れた。
|
|
|
|
|
Name: 御津凪 [URL] ..熟練のプログラマー(52,545ポイント)
Date: 2009/01/23(金) 13:19
No:27550
|
|
Title: Re:シーザー暗号
|
|
for 文内で、シフト対象外(英字以外)の文字はそのまま出力するようにすれば良いでしょう。
この場合なら、 strchr を使って先に table 内に含まれているかどうかをチェックし、
含まれていたらシフト処理を実行する方法が楽でしょう。
if(strchr(table,*p) != NULL){
// 含まれている
}
こんな感じで。
strchr は含まれていない文字があれば NULL を返すので、
*(strchr(table, *p) + y) はおかしなことになります。
(規約の方に書いていますが、出来るならソースコードはプレタグで囲ってください)
2倍のポイントを手に入れた! 442ポイント を手に入れた。
|
|
|
|
|
Name: 通りすがり ..中級者(13,659ポイント)
Date: 2009/01/23(金) 18:06
No:27560
|
|
Title: Re:シーザー暗号
|
|
老婆心ながら、「一様」とは「様子が同じであるさま」のことです。
「ひとまず」「とりあえず」の意味で使うのは
「一応(いちおう)」です。
51ポイント を落としてしまった。
|
|
|
|
Name: J ..上級者(16,925ポイント)
Date: 2009/01/22(木) 22:42
No:27504
|
|
Title: ポインタを解説しないといけないのですが・・・
|
|
お久しぶり&あけましておめでとうございます
明日、学校でC言語におけるポインタについて30分ほど解説しないといけないのですが
自動変数の有効範囲と自作関数から入って、ポインタの必要性と利便性について語るという手順でよろしいでしょうかね。
私はこれがベストかなと思っているのですが。あんまり自信ないです><
どなたかアドバイスをくださると嬉しいです。お願いします。
21ポイント を手に入れた。
|
|
|
|
Name: J ..上級者(16,947ポイント)
Date: 2009/01/22(木) 23:15
No:27512
|
|
Title: Re:ポインタを解説しないといけないのですが・・・
|
|
そうでしたね
内容は適当にこちらが決めていいのですが。。
どれが一番やりやすそうですかね?
22ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..比類無きプログラマー(81,073ポイント)
Date: 2009/01/22(木) 23:27
No:27515
|
|
Title: Re:ポインタを解説しないといけないのですが・・・
|
|
ポインタの使い方は、突き詰めていくと...
1. オブジェクトまたは関数の参照
2. 配列要素へのアクセス
3. 動的オブジェクトの保持
ではないかと思います。
これがそのまま利点にもなっています。
2.の配列要素のアクセスについては、ポインタを使わなくても a[i] のようにすればよいと考えるかもしれませんが、a[i] は *(a + i) のシンタックスシュガーですので、やはりポインタが絡みます。
175ポイント を手に入れた。
|
|
|
|
|
Name: J ..上級者(17,093ポイント)
Date: 2009/01/23(金) 00:05
No:27525
|
|
Title: Re:ポインタを解説しないといけないのですが・・・
|
|
いえいえ(笑
そんなに重要なものでも無いですよ管理人さん
先生の思いつきの授業内の発表ですから
まあ、「学生に教える為に必要」ですね
だからそんなに深いことは必要ないです
「ポインタ」としか題は決めていないんで、どうしようかと思いまして。
ポインタの概要をちょっとでも理解してくれればいいんですけどね
146ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) ..伝説なるハッカー(968,957ポイント)
Date: 2009/01/23(金) 00:57
No:27530
|
|
Title: Re:ポインタを解説しないといけないのですが・・・
|
|
それなら一連のポインタの説明に加え、
利点の説明などには
自分がプログラム書いてて「あ、こういうときポインタって便利だな」と思ったこと並べるような感じでいいんじゃないでしょうか?
私が一番ポインタ便利だなって思ったのは、初めて関数ポインタ使ったときでした。
例えば弾幕シューティングで言えば
弾幕001();
弾幕002();
弾幕003();
....
弾幕150();
とか似たような関数が何百ってあるんですよね。
それをイチイチ個別に呼び出していたのではめんどくさいってことで、
関数のアドレスを配列に入れておいて、番号で呼べるようにしました。
こうすることで、すごく簡単に関数が呼べるようになりました。
自分の経験を混ぜて説明すれば説得力ある説明が出来ると思います。
後、「ポインタ 利点」とかで検索してもいい情報が得られるかもしれません。
280ポイント を手に入れた。
|
|
|
|
|
Name: たいちう ..上級者(22,510ポイント)
Date: 2009/01/23(金) 09:27
No:27537
|
|
Title: Re:ポインタを解説しないといけないのですが・・・
|
|
関数の引数としてオブジェクトのコピーを渡さないですむという利点の説明はどうですか?
それだけだと多分30分も持たないので、後はリスト構造の説明とか。
39ポイント を手に入れた。
|
|
|
|
|
Name: やそ ..比類無きプログラマー(86,006ポイント)
Date: 2009/01/23(金) 10:09
No:27539
|
|
Title: Re:ポインタを解説しないといけないのですが・・・
|
|
ポインタの利点・・・
殆どは皆さんが語っている点で間違いないと思います。
わたしも関数ポインタにはお世話になりました^^
で良く初心者向けの本に載っているポインタの利点として解説されているのは、
関数だと戻り値はひとつしか返せないけど、ポインタを使えば複数の値を返すことが出来る。
ってところを最初に習った気がします。
134ポイント を手に入れた。
|
|
|
|
Name: へたれ ..ぴよぴよ(462ポイント)
Date: 2009/01/20(火) 18:07
No:27233
|
|
Title: 質問です。
|
|
いつもお世話になっています。今回もアドバイスを頂きたく質問させてもらいます。
まず、このソースファイルを見てもらいたいのですが
main(void){
char filename1[256], filename2[256];
FILE *fd1, *fd2;
int i, m, n;
fprintf( stderr, "入力ファイル: " );
scanf( "%s", filename1 );
fd1 = fopen( filename1, "r" );
if( fd1 == NULL ){
puts( "Error: File doesn't open it. \n" );
exit(1);
}
fprintf( stderr, "出力ファイル: " );
scanf( "%s", filename2 );
fd2 = fopen( filename2, "r" );
if( fd2 == NULL ){
puts( "Error: File doesn't open it. \n" );
exit(1);
}
}
これはファイルの入出力のプログラムなのですが、この状態だと入力ファイルの名前はもちろんのこと、出力ファイルの名前も打ち込まなければなりません。
自分としては出力ファイルの名前の入力を省略したいのですが…
例としては、入力ファイルの名前をabc.txtとしたら、
出力ファイルの名前をabc1.txtのようにしたいのですが、やり方がいまいちわかりません。
strcpyを使うのかな?とかも思うのですが…
分かる方がいらっしゃいましたら、ぜひご教授をお願いします。
306ポイント を落としてしまった。
|
|
|
|
Name: non ..ぴよぴよ(212ポイント)
Date: 2009/01/20(火) 18:20
No:27234
|
|
Title: Re:質問です。
|
|
こんなんで、どうでしょう。ただ、拡張子がない場合(ピリオドがない場合など)のエラー処理を
加えるべきだとは思います。
#include <stdio.h>
void makefilename(char *s1,char *s2)
{
while(*s1!='\0'){
if(*s1=='.')
*s2++='1';
*s2++=*s1++;
}
*s2='\0';
}
int main(void)
{
char filename1[256], filename2[256];
fprintf( stderr, "入力ファイル: " );
scanf( "%s", filename1 );
makefilename(filename1,filename2);
puts(filename2);
return 0;
}
212ポイント を手に入れた。
|
|
|
|
|
Name: へたれ ..ぴよぴよ(581ポイント)
Date: 2009/01/20(火) 19:41
No:27236
|
|
Title: Re:質問です。
|
|
non様、回答ありがとうございます。
これで数字はつけることが出来ました。
しかし、文字をつけようとすると
'=' : 'const int ' から 'char ' へ切り詰めます。
と、エラーが出てしまうのですが、どうすればいいでしょうか?
度々申し訳ありません。
119ポイント を手に入れた。
|
|
|
|
|
Name: non ..プログラマー(31,398ポイント)
Date: 2009/01/20(火) 20:12
No:27237
|
|
Title: Re:質問です。
|
|
> しかし、文字をつけようとすると
>
> '=' : 'const int ' から 'char ' へ切り詰めます。
>
> と、エラーが出てしまうのですが、どうすればいいでしょうか?
意味がわかりません。プログラムを載せて下さい。
または、具体的にどの様な文字をつけたいのか書いて下さい。
26ポイント を手に入れた。
|
|
|
|
|
Name: へたれ ..ぴよぴよ(712ポイント)
Date: 2009/01/21(水) 17:17
No:27317
|
|
Title: Re:質問です。
|
|
説明不足で申し訳ありませんでした。
文字というのは
while(*s1!='\0'){
if(*s1=='.')
*s2++='1';
*s2++=*s1++;
の'1'の部分を's1'などにしたいのですが、上記のエラーが出てしまい
実行結果としてはs1はつかず、1だけついてしまうのですが…
131ポイント を手に入れた。
|
|
|
|
|
Name: non ..プログラマー(31,465ポイント)
Date: 2009/01/21(水) 17:24
No:27323
|
|
Title: Re:質問です。
|
|
元のファイル名が
test.txtの場合tests1.txtにしたいということでしょうか?
そうならこうなります。
while(*s1!='\0'){
if(*s1=='.'){
*s2++='s';
*s2++='1';
}
*s2++=*s1++;
67ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(43,791ポイント)
Date: 2009/01/21(水) 17:24
No:27324
|
|
Title: Re:質問です。
|
|
"s1"の場合、2文字ですからchar一個(1バイト)にはおさまりません。
入れるためには2バイト必要ですので以下のようにしてみるとか。
if(*s1=='.') {
*s2++='s';
*s2++='1';
}
78ポイント を手に入れた。
|
|
|
|
|
Name: フリオ ..プログラマー(29,015ポイント)
Date: 2009/01/21(水) 19:30
No:27378
|
|
Title: Re:質問です。
|
|
タイトルは、内容がわかるようにしてほしいです。
"sprintf"を使って、こんな感じでどうでしょうか。
#include <stdio.h>
#include <string.h>
void MakeFilename(char *s1, const char *s2, const char *s3)
{
int i = strlen(s2);
while(i --){
if(s2[i] == '.') break;
}
if(i < 0) sprintf(s1, "%s%s", s2, s3);
else sprintf(s1, "%.*s%s%s", i, s2, s3, s2 + i);
}
int main(void)
{
char s1[32], s2[32];
printf("File Name :");
scanf("%s", s2);
MakeFilename(s1, s2, "_out");
puts(s1);
return 0;
}
315ポイント を手に入れた。
|
|
|
|
|
Name: へたれ ..ぴよぴよ(877ポイント)
Date: 2009/01/22(木) 23:19
No:27513
| 解決!
|
Title: Re:質問です。
|
|
まずお返事が遅れたことを謝罪します。
そして、回答・アドバイスを提案してくれた
non様、Mist様、フリオ様本当にありがとうございます。
non様とMist様の方法も、フリオ様の方法も試してみたところ
プログラムを思い通りに実行する事ができました。
知識不足でお恥ずかしいのですが、自分で出来る限り努力してみて
疑問に思ったことがあれば今後もご教授のほどをお願い致します。
タイトルは今後気をつけます。
165ポイント を手に入れた。
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(957,844ポイント)
Date: 2009/01/20(火) 14:02
No:27207
|
|
Title: 関西周辺でオフ会?勉強会?しませんか?
|
|
トピ「Pthreadについて」で「関西で何かするなら参加するよ!」と言って下さった方が多かったので、トピ立ててみました^^
まだ開催するかどうかはわかりませんが、人数が集まったら本当に開催してみようかな?と思います^^
元々「勉強会」って事で話が始まったのですが、内容はどうします?
(1). マジで勉強会
(2). 勉強会もやり〜の、飲み会
(3). 普通に飲み会
(4). 勉強会でも飲み会でもない会 (皆さん共通で興味あるスポーツとかあればそういうのも?)
(5). ツーリンg・・(ry
参加希望の方はもし支障がなければ
(a). だいたいのお住まいの場所(例:「京都駅近くですよ」「奈良県北部ですよ」)
(b). だいたいの年齢(例:「20代後半ですよ」)
(c). 参加出来そうな日時(例:「土日ならOK」「普通日の夜がいい」「2月中旬なら暇」)
を添えて頂けると企画がしやすいかもしれません。
しかしオフ会ってやったことないんで、何してどういう流れでスケジュール組めばいいのかよくわからないです^^;
詳しい人いたら仕切ってくださいw
325ポイント を手に入れた。
|
|
|
|
Name: ま〜く ..初心者(8,397ポイント)
Date: 2009/01/20(火) 14:45
No:27211
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
なんで東京周辺じゃないの〜T_T
2倍のポイントを手に入れた! 32ポイント を手に入れた。
|
|
|
|
|
Name: 真等 ..ぴよぴよ(20ポイント)
Date: 2009/01/20(火) 15:13
No:27214
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
なんで東京ry
qさんが女装でもしていけば、スケジュールなんて無くても大丈夫かと。
20ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(43,392ポイント)
Date: 2009/01/20(火) 15:39
No:27215
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
> 元々「勉強会」って事で話が始まったのですが、内容はどうします?
> (1). マジで勉強会
> (2). 勉強会もやり〜の、飲み会
これをすると定期的な開催になるのでちと遠方の私は無理ですね〜。
場所の確保も難しいような〜。
飲み会は飲み屋の予約だけで住むけど、マジ勉強会は(参加人数によるけど)会議室的なものがいりますよね。
> (3). 普通に飲み会
まぁ、OFF会だったらこれでしょうか。懇親会って事で(^-^;
> (4). 勉強会でも飲み会でもない会 (皆さん共通で興味あるスポーツとかあればそういうのも?)
これは参加者が集まりにくくなりそう(--;
みんなで集まってWiiスp(ry
> (5). ツーリンg・・(ry
ママチャリですか?w
143ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) ..伝説なるハッカー(958,301ポイント)
Date: 2009/01/20(火) 15:52
No:27217
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
>>真等さん
なんで私が女装趣味なのをご存j・・(ry
・・いやありえませんからw
う〜ん、関西の方が多いのかと思いきや、やっぱ東京方面の方も多いですよね^^;
>>Mistさん
勉強会って・・これだけ専門家が集まって何を勉強するのだろうという気がしますが・・w
やったとしても討論系?
私は完全リスナー側で自重してますw
まぁ普通に(3)が無難ですかね?
あ、後からこのトピご覧になった方がご意見出しにくくならないよう、まだ決定しないでおきますので。
ただ、よくリアル懇親会するんですが、人数が多いと、飲み屋で4人テーブルとかにわかれてしまうと、
その4人しか結局話さないんですよね(´〜`;)
それならチーム戦でビリヤードとかやれば話も出来て・・いや、ないですよねw
案の一つとして項目に書いただけです^^;
>>みんなで集まってWiiスp(ry
こうなったら全員うちに集まって宴k・・、いや同好会のノリと間違いましたw
> (5). ツーリンg・・(ry
滋賀は3月でさようならなので、お別れに走っておきたいんですよねぇ(´〜`;)
琵琶湖の湖岸道路走ると爽快ですよ〜♪
滋賀は比叡山ドライブウェイとか奥琵琶湖パークウェイとか伊吹山ドライブウェイとかいいとこありまくりっす♪
396ポイント を手に入れた。
|
|
|
|
|
Name: BEMANI ..入門者(4,069ポイント)
Date: 2009/01/20(火) 16:10
No:27218
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
管理人さんは、女装して、ママチャリでツーリングするのが趣味なんですか><
凄いっす><
28ポイント を手に入れた。
|
|
|
|
|
Name: BEMANI ..入門者(4,095ポイント)
Date: 2009/01/20(火) 16:16
No:27220
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
女装も龍神級なんでしょうか;
この時期にツーリングという体力と根性は本当凄いと思います;
26ポイント を手に入れた。
|
|
|
|
|
Name: ムンバ ..上級者(22,973ポイント)
Date: 2009/01/20(火) 16:21
No:27222
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
(こんにちはっ!)
女装してママチャリで関西を走りまくるqさん・・・!<^0^>(メモメモ
24ポイント を手に入れた。
|
|
|
|
|
Name: YuO ..プログラマー(27,736ポイント)
Date: 2009/01/20(火) 16:57
No:27230
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
知っている勉強会が,わんくま同盟さんの勉強会くらいしかないのですが,一応数回,非登壇者側としてながら参加した立場から。
> 勉強会って・・これだけ専門家が集まって何を勉強するのだろうという気がしますが・・w
わんくま同盟さんの勉強会は,全体としては(2).のスタイルで,勉強会部分は登壇者が基本的には話をするスタイルでした。
# わんくま同盟さんには,C++標準化委員会に所属しているような専門家の方もいらっしゃいます。
そこでの経験からだと,
・専門の異なる分野の話を聞ける
私の場合,主にVB/C#, WinForms/WebApplication, SQL Serverの組み合わせで開発しているのですが,
JavaやOracle,さらにはLL関係の話が出てきたり,近くてもWPFの話が聞けたりなど,知らない分野は多い物です。
・懇親会ではさらに色々な話を聞ける
基本的にプログラムの勉強会ですから,その後の懇親会 (飲み会) の話題もそれが中心になります。
テーマの縛りがなくなるので,いろいろな話を聞けます。
# 去年のTech EDの後にあった某懇親会の後,帰りの湘南新宿ラインの中でも一緒になった方と話をし続けていた覚えが……。
・登壇側も勉強が必要
場合によっては,勉強してそれを発表するという強者も。
Text Services Frameworkについて発表していた方もいました。
# 資料がなくて大変だ,とか言われていました。後述のNyaruru氏のDiaryが異常に詳しいとか。
> まぁ、OFF会だったらこれでしょうか。懇親会って事で(^-^;
何のOFF会にするかでしょうね。
Nyaruruさん主催のXNAオフ会では,(2).形式でした。
# XNAに興味のある人のOFF会というえらく広い範囲のOFF会ということもあるでしょうが。
このときは,米MSからひにけにXNAの伊藤さんが来られて,セッション1つ担当していました。
一応,最初に却下されそうな条件を書いておきます。
> (c). 参加出来そうな日時(例:「土日ならOK」「普通日の夜がいい」「2月中旬なら暇」)
大晦日or正月3が日なら。
906ポイント を手に入れた。
|
|
|
|
|
Name: s-rush ..上級者(16,201ポイント)
Date: 2009/01/20(火) 16:57
No:27231
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
バイクの免許は持ってるんですけど、
バイク持ってないですorz
親に乗るな、と止められているので(涙
オフ会は単純に飲み会的なものでもいいのではないでしょうか??
52ポイント を落としてしまった。
|
|
|
|
|
Name: 組木紙織 [URL] ..熟練のプログラマー(68,732ポイント)
Date: 2009/01/20(火) 20:18
No:27238
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
私としては本気の勉強会をやってもらいたいと思うのですが、
色々と準備が大変そうなので今回は飲み会的なものでもいいかと。
(どのくらい人数集まるか分からないし)
(b)年齢は20代で、
(a)現在地は西日本の真ん中あたりよりちょっと東側です。
(c)日付が早めに決まればあけることは可能(だと思う)ので、いつでもいいです。
>琵琶湖の湖岸道路走ると爽快ですよ〜♪
>滋賀は比叡山ドライブウェイとか奥琵琶湖パークウェイとか伊吹山ドライブウェイとかいいとこありまくりっす♪
バイクでは走ったことはありませんが、あのあたりは景色が綺麗な場所ですよね。
#仕切りをする人が出てこないとこのまま流れてしまいそうです。
48ポイント を手に入れた。
|
|
|
|
|
Name: ムンバ ..上級者(23,122ポイント)
Date: 2009/01/20(火) 21:57
No:27242
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
こんばんはっ!(個人的な希望です。w)
(3). (最初は)普通に飲み会
(a). 位置:神奈川県 北東寄り
(b). 年齢:40代(既婚済み。たくさんの方々と知り合いたいだけです。^^)
(c). 参加出来そうな日時:土曜日とか、カレンダーで赤い日の前日です。
仕切るとかはできませんが、できれば皆さんとお目にかかりたいです。
149ポイント を手に入れた。
|
|
|
|
|
Name: s-rush ..上級者(16,297ポイント)
Date: 2009/01/20(火) 22:19
No:27243
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
私の情報をまだ言っていませんでしたね^^;
(a). 位置:平日は滋賀の南草津、土日は大阪のかなり奈良よりです。
(b). 年齢:21歳の大学生です。
(c). 参加出来そうな日時:バイトさえ入っていなければいつでも大丈夫です。
やっぱり初めてなので、最初は飲み会みたいなものでいいのではないでしょうか??
96ポイント を手に入れた。
|
|
|
|
|
Name: kazuoni [URL] ..熟練のプログラマー(50,341ポイント)
Date: 2009/01/20(火) 22:24
No:27244
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
(2)or(3)希望ですw
(a).イチローの故郷の愛知
(b).今年成人を迎えました
(c).ムンバさんと同じく赤い日ですね^^;
tkさんが最年少で自分がその次ぐらいですかね^^;
にしてもすごい流れで勉強会(という名の飲み会)のアンケートしてますねw
103ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(959,594ポイント)
Date: 2009/01/20(火) 23:35
No:27250
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
>>皆様
多分純粋に飲み会したい人と、純粋に勉強会したい人はきっと参加したい動機が異なると思うんですよね。
純粋な勉強会は学会っぽいような感じになるんじゃないかと思ってます。
その後懇親会になると思いますが純粋にワイワイやりたいだけだ!って人は前半退屈でしょうし、
趣旨をどっちにするかはっきり決めたほうがいいかもしれませんね。
「より知識を深めたい!専門的な勉強会をしたい」
なのか
「みんなと親睦を深めたい。飲んだり遊んだりしながら色んな人と話がしたい」
なのか、どっちにしましょう?
私は専門的な話も聞いてみたいし、親睦も深めたいので、どちらでも構わないです^^
>>YuOさん
お〜、プレゼンのように発表するような形式もあるんですね。
専門的な内容だし、なんか学会みたいですねw
学会も厳粛な雰囲気で発表→懇親会って流れですもんね。
自分の興味ある分野の専門的な話が聞けると面白いですね。
非定型な要求の分析手法的な発表とか聞いてみたいな・・。
後は、どうやれば美しい弾幕が作れるかという発p(ry
>大晦日or正月3が日なら。
1年後ってことですね^^;
まぁ今回開く会がよければまた開催してもいいんじゃないでしょうか?
>>s-rushさん
免許あるのに・・ですか^^;
親に内緒で買っちゃいましょw
それか、ニケツw
>南草津
めっちゃ近いじゃないですか!私は玉川高校の近く住んでますよw
>>組木紙織さん
何をテーマにした勉強会かですよね。
やっぱ専門的な話になってくると、かなり細分化されてくるでしょうし、
一口にソフトウェア開発といっても、営業的な仕事から要求分析、設計、運営まで幅広いでしょうし、
自分が専門としている部分も例えば同じ設計でも色々あるでしょうし。
自分が直接関わらない分野の勉強会でもいいんでしょうけど、やっぱ一番興味ある分野の勉強会したいですよね。
多分勉強会って、 誰かがプレゼン的に発表→みんなで討論 って感じじゃないと難しいんじゃないかな?
と思いますがどうでしょう・・。
突然会議室みたいなところでさぁ何か話しましょうってのも難しいですよね。
勉強会参加したことないんで、どうやってるのかわかりませんが^^;
Yuoさんが教えてくださった内容をもうちょっと詳しく調べてみようと思います。
>バイクでは走ったことはありませんが、あのあたりは景色が綺麗な場所ですよね。
いいですよ!是非機会があったらいらしてください〜♪
>>ムンバさん
あぁ、今回は関西周辺ということなので神奈川での開催はちょっと無理です、ごめんなさい。
>>kazuoniさん
西日本の方がいらっしゃるので、開催は大阪がいいかな?とか思ったりするんですが、
愛知から大丈夫ですかね?
京都の方がいいかな?
>年
全体からみたらそんなことないと思うんですが(アンケート結果からみても高校・大学で全体の6割位占めてる)、
質問者=若い
回答者=年配・・とまで言わないけど大人より
という傾向にあることと、
参加される方は後者に多め?じゃないかなと思うので、メンバーの中ではその可能性はあるかもしれませんね^^;
でも20も24も変わらないですよw
1,105ポイント を手に入れた。
|
|
|
|
|
Name: たかぎ [URL] ..比類無きプログラマー(80,198ポイント)
Date: 2009/01/21(水) 00:06
No:27258
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
かなり出遅れてしまいました。
> 後、たかぎさんの仰る勉強会ってどういうイメージでしょう?
最初からあまり頑張っても仕方がないので、懇親会でも良い気がしますが、普通は
> 多分勉強会って、 誰かがプレゼン的に発表→みんなで討論 って感じじゃないと難しいんじゃないかな?
> と思いますがどうでしょう・・。
これが一番やりやすいでしょうね。
といっても、資料を作るのも大変ですし、プロジェクタなどの機材が必要だったりと、それなりに準備の手間とコストもかかります。
あと、私の情報ですが...
(a). 大阪市のほぼ南端です。
(b). 40台
(c). できれば3月がよいのですが、それ以前でも何とか時間を空けます。
ただ、出張や会議や来客の予定が入っている日もある(土日でも!)ので、その日は無理です。
人数にもよりますが、大阪でやるなら(そして機材が不要なら)場所は何とかしますよ。
152ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(961,208ポイント)
Date: 2009/01/21(水) 00:17
No:27261
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
>>kazuoniさん
ありがとうございます^^
場所的に大阪がやりやすいですかね〜?
京都ならバイクでいくんですがw
>>たかぎさん
さすが社長!頼もしいです♪
すると場所はもしかして・・(御社の会議室とか?!)
こんなことなら就職先長野にするんじゃなかったですorz
最初は懇親会だけでもいいかもしれませんが、
やはりこれだけ専門家が集まると専門的な技術の紹介や、
自分こだわりのテクニックなどの発表聞いてみたいですね。
学会では発表されないようなマニアックな物とか、もっと身近なもの、現場ならではのものとか
そこでしか聞けないようなものもあっても面白いかもしれませんね。
う〜ん、4月以降も何か学会的に継続的に開催されるなら新幹線乗ってでも参加します!
そして発表を聞いて誰か有能な人物だと評価されたら社長から引き抜きのお誘いがあるかも・・w
掲示板毎日見てるわけじゃないって人も参加して下さるかもしれないので、
トピはもう少しこのまま雑談的な感じにしておきますね。
456ポイント を手に入れた。
|
|
|
|
|
Name: 藍 ..初心者(7,665ポイント)
Date: 2009/01/21(水) 01:27
No:27266
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
おっと何この楽しそうなイベント参加したいです!
(a). Dixqさんとあんま変わらない場所
(b). 22歳
(c).2月は最終週以外3月も最終週以外なら問題ないかと
4月以降は社会人になるのでまったく予定がわかりません。
Dixqさん宅近くで飲み会なら10〜15人ぐらいの人数なら入れる居酒屋とか予約とれますよっと
108ポイント を手に入れた。
|
|
|
|
|
Name: 藍 ..初心者(7,600ポイント)
Date: 2009/01/21(水) 01:40
No:27270
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
>>ただそこに集まれというのは結構酷な気がします・・w
ですよねー 駅も近くないから微妙に不便なんですよw
>>いつか個人的にお邪魔したいです^^
いつでもいってくださいよ!全然おkなんで!
65ポイント を落としてしまった。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(43,621ポイント)
Date: 2009/01/21(水) 10:32
No:27284
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
顔も合わせたことない人間同士で最初から本格的な勉強会は無理と思いますので、1回目は懇親会で(継続するのであれば)そのとき次回のテーマを決めるという流れでいいような。
もしくは、ここのHPの趣旨に沿ったところで誰かが作ったアプリケーション(ゲーム等々)の発表会とかなら1回目でもできるかもしれないですね。
しょぼくていいならプロジェクターは私が用意できます。
以下、私の情報
> (a). だいたいのお住まいの場所
近畿で一番南のど田舎県の県庁所在地です。
> (b). だいたいの年齢(例:「20代後半ですよ」)
アラ30
> (c). 参加出来そうな日時(例:「土日ならOK」「普通日の夜がいい」「2月中旬なら暇」)
出張とかも多いので平日はまず無理です。
開催日が1〜2週間まえぐらいに決定していれば土日は都合付けられると思います。
189ポイント を手に入れた。
|
|
|
|
|
Name: s-rush ..上級者(16,375ポイント)
Date: 2009/01/21(水) 11:06
No:27292
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
>あ〜、この業界に入ろうと志す学生達に、業界の暗黒面を永遠語りつくす会でもいいですお(w
少し興味あります(笑
やっぱり第一線で働いていらっしゃる方の話は学生にとってとても貴重だと思うので。
78ポイント を手に入れた。
|
|
|
|
|
Name: たいちう ..上級者(22,471ポイント)
Date: 2009/01/21(水) 12:43
No:27299
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
たいちうです。
情報処理関係の勉強会に何度か参加したことがあります。
公民館とかの会議室を1日借りて行いました。
自習がメインで、分からないところを上級者に聞くような感じ。
5時に会議室を追い出されてからは、食事会や飲み会になることが
多かったです。
さて今回の勉強会ですが、参加者の力量に大人と子供ほどの差があるんですよね。
自分の知らない話題がなかった、今の自分に理解できる話題がなかった、
というリスクを覚悟して参加する必要があるでしょう。
参加者の力量よりも大事なのが、勉強会のテーマです。
需要がありそうなのは、『シューティングゲームをメインとしたゲーム全般』、
『Cプログラミング初級講座』、『業界の暗黒面』等でしょうか?
第一回目ということですので、特に決めずに開催しても良いかもしれませんが。
内容を調整した30分程度の発表が3つ位あればベストかな。
プロジェクタがあれば色々便利ですが、
ない場合はPowerPointやソースコードのレジュメ。
最後に私の情報
(a) 滋賀県在住
(b) 30代後半
(c) 休日なら多分OK
246ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(963,521ポイント)
Date: 2009/01/21(水) 13:51
No:27307
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
>>>Mistさん
なるほど、作品の発表会だったら「難しすぎてわからない」ってこともなく、
誰もが気軽に参加出来そうですね。
よし、そうなら龍神録を紹k・・(え、いまさら?!)
第一回は先生的なポジションの方が見本をお見せになるというのもいいかも。
なんか、「C言語何でも質問学会」とでも命名して会の会長を決めたいところですねw
>あ〜、この業界に入ろうと志す学生達に、業界の暗黒面を永遠語りつくす会でもいいですお(w
おぉ興味ありますw 参考になりそうですw
>おそらく和歌山
・・となると京都開催は辛いですよね?
確か奈良を通ってまっすぐ北にあがる路線がなかったような・・。
関西開催なら大阪が無難ですかね〜?
>>>バグさん
バグさん色んな職種の色んな一面をご存知そうじゃないですかw
>>>たいちうさん
そうですよね。
ついこのまえCを始めた人から、骨の髄まで研究し尽くした人までいらっしゃるわけでしょうし・・。
集まるメンバーが常連・回答者が多いことを考えると・・、若干具体的なことを言っても大丈夫かも・・?
その時はプレゼンみたいな資料に前提知識の説明沢山いれて、なるべくみんなにわかりやすく説明する必要がありそうです。
>『シューティングゲームをメインとしたゲーム全般』『Cプログラミング初級講座』
あ〜なるほど。
アンケート見てもここに来る人のほとんどはゲーム制作目的のようですし、
そういうのも需要あるのかもしれませんね。
ただこういうテーマだと勉強会というより、「講義」的なイメージになりそうですね。
「何をテーマにするか」で呼びかける対象を変えればいいですかね。
完全に聞き手として参加する気満々でしたが、弾幕の作り方位なら・・w
まぁ一つの話題について少々時間を短くとって、色んな話題について話し合えば、
興味ある無い、の問題がちょっと軽減されるかも知れませんね。
488ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(43,886ポイント)
Date: 2009/01/21(水) 14:15
No:27309
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
> ・・となると京都開催は辛いですよね?
私のことは気にしてもらわなくても大丈夫ですよ。
平日の夜とかだと無理ですけど、土日だったら京都でも滋賀でもOKです。
草津ぐらいまでだったら電車で行っても3時間あれば余裕で着きますので。
> 確か奈良を通ってまっすぐ北にあがる路線がなかったような・・。
一応あります。
和歌山市から奈良へ行って最終的に草津線で草津駅に到着するというルートが。
ただ、ローカル線ばかりを通るのですごい時間がかかるらしいですけどw
地図でみると遠回りですが、和歌山→大阪→京都→大津/草津と行くほうが断然早いんですよね。
189ポイント を手に入れた。
|
|
|
|
|
Name: keichan ..プログラマー(30,756ポイント)
Date: 2009/01/21(水) 15:31
No:27312
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
#かなり乗り遅れた感が
関西でOFFがあるのであれば私も参加したいです。
(a). だいたいのお住まいの場所
大阪の北の方
(b). だいたいの年齢
20代後半
(c). 参加出来そうな日時
休日であれば参加できます。
113ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) ..伝説なるハッカー(963,564ポイント)
Date: 2009/01/21(水) 16:22
No:27314
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
>>>皆様
wikipediaで「学会」調べてみると
「
学会としての機能を持っていない団体・集団が「〜学会」と自称している場合もある。
(中略)
学会と名乗ることに対して規制や資格は存在しない。
」
特に決まりも無く、「学会とは科学的妥当性をオープンな場で検討論議する場である」とあるので、
今開こうとしている会合も学会と呼べるんですかね〜?
学会と名づけると堅苦しい感じがしますが、名称として付けても良さそうな気がしますね。
名前どうしましょう。
以前「電子情報通信学会ソフトウェアインタプライズモデリング研究会」に参加したことあるんですが、
これ名前長すぎですよね〜w
かといってうちのサイト名+学会とかサイト名+研究会、勉強会って名前じゃダサイ・・。
>>>keichanさん
ご参加ありがとうございます^^
やはり開催地は大阪が妥当ですかねぇ?
>>>Mistさん
電車で3時間?!
大阪で開いた方がよさそうですね^^;
う〜ん、是非関東の方ともご一緒したいですが、地理的な関係で無理そうですね・・。
中を取って名古屋にしたとしても、大阪から名古屋はまだしも、東京から名古屋は遠そうです;
となると開催場所を大阪、東京でかわりばんこにするとかでしょうか。
交通費大変そうだな〜^^;
45ポイント を落としてしまった。
|
|
|
|
|
Name: たかぎ [URL] ..比類無きプログラマー(80,554ポイント)
Date: 2009/01/21(水) 16:56
No:27316
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
名称について...
「学会」というのは、「株式会社」とか「非営利活動法人」とか「一般社団法人」なんかと違って、勝手に名乗ってもかまいません。
ただ、誤解をまねく表現なのは確かですので、「研究会」、「勉強会」、「同好会」、「委員会」程度の方がよいでしょう。
場所について...
仮に大阪で行うとした場合、大阪駅下車徒歩○分とか新大阪駅下車徒歩○分というわけにはいきません。
そこから、環状線なり地下鉄なりに10分〜30分乗って、下車○分になります。
単なる飲み会なら、大阪とか新大阪でもありでしょうけど。
京都の場合はまだ京都駅下車○分とか山科駅下車○分という場所も見つかる可能性があります。
最寄り駅はなるべく新快速が止まる駅にした方がよいでしょうね。
270ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(43,713ポイント)
Date: 2009/01/21(水) 17:18
No:27319
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
いや、だから全然気にしないで(^^;
他のみなさんの都合も考慮して京都や滋賀のほうが集まりやすいようならそれで全然かまいませんから。
社会人にとって3時間くらいは屁でもないのです。(私だけ!? でも、首都圏だと通勤時間2〜3時間は珍しくないんじゃないかな)
今は違うけど去年の春は仕事の都合で毎日京都まで通っていましたし。
北京や上海に行くことに比べれば近いですよ(マテ
東京でも関空から飛行機使えば3時間かからないし、最近は片道4〜5時間ないと遠くまでいった気がしないなぁ(汗
慣れって怖いね(TvT;
> 会の名前
ネーミングセンスナッシングなのでほかの方にお任せします。
173ポイント を落としてしまった。
|
|
|
|
|
Name: Dixq (管理人) ..伝説なるハッカー(963,988ポイント)
Date: 2009/01/21(水) 17:21
No:27321
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
>>>たかぎさん
そうですね、まずは「研究会」としておきましょう!
>仮に大阪で行うとした場合、大阪駅下車徒歩○分とか新大阪駅下車徒歩○分というわけにはいきません。
駅近くのホテルの会議室借りたらどうでしょう?
大阪に、どんなのがあるかなと思って「大阪 会議室」で検索すると、
わんさか貸し会議室出てきました。
試しにメルパルク見てみたら30人ほど入る会議室が2時間12000円で、手ごろでした。
http://www.mielparque.jp/osk/rooms/r12/index.html
・・が!プロジェクターレンタル3万とか・・^^;
新大阪から一番近いホテルの会議室
http://www.hso-plan.net/room.php?rid=3
この辺アクセスよさそうですね。
すごくたくさん貸し会議室ありそうなので、好きな条件で選べそうです。
>>>皆様
・・で、名前なんですが、適当に
・ソフトウェアプログラミング研究会
・HTソフトウェア開発研究会
・ソフトウェア技術研究会
・ソフトウェアハイテク技術研究会
・ハイテクプログラミング研究会
思いっきり語彙力が無いのバレバレですが、何か適当に考えてググって被ってないか確かめた奴並べてみました^^;
C言語何でも質問研究会とかじゃおかしいしなぁ・・w
う〜ん、、、。
375ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) ..伝説なるハッカー(964,876ポイント)
Date: 2009/01/21(水) 18:33
No:27351
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
せ、千円台とかやっす^^;
こんな所もあるんですね。
まぁ12000円かかったとしても15人集まれば一人800円ですね。
もしちょっと辺鄙なところにしかないようなら、環状線や地下鉄の料金、交通の便やキレイさを考えると、ホテルでもいいかも・・?とか思ったりもしますが・・・
案外クレオ大阪ってどこもわりと行き易い所にあるんですねw
157ポイント を手に入れた。
|
|
|
|
|
Name: array [URL] ..熟練のプログラマー(46,504ポイント)
Date: 2009/01/21(水) 18:50
No:27366
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
本当に開催できそうな勢いですね♪
私は九州在住なので無理なのですが、開催できたら後から感想や、集まってどんな事をしたのか報告があれば、参加できなかった側も嬉しいと思います。
なので、その際は是非写真なんかをw
名前募集中みたいなので、管理人さんからの候補からだと
ソフトウェア技術研究会が一番良いかな。と思いました。
自分的には、掲示板利用者の交流が目的にも思えたので
ソフトウェア技術交流会
これにも一票いれときますw(検索したら、高品質ソフトウェア技術交流会というのは既存してるみたいです)
2倍のポイントを手に入れた! 444ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(965,237ポイント)
Date: 2009/01/21(水) 22:33
No:27398
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
arrayさんにも是非出席して頂きたかったですが、残念です><
バグさんも四国だし、Mikanさんも四国ですね。
あ、そうだ、せっかくIT関係詳しい人達の集まりなんだから、
オンライン研究会であってもよさそうですねw
北九州・大阪・東京で開いてLive通信するとかw
発表内容や活動内容はHPに記載していこうとおもいます^^
今そのプロトタイプ作ってるところです!
名前の件、投票ありがとうございます^^
175ポイント を手に入れた。
|
|
|
|
|
Name: Mikan ..かけだし(1,568ポイント)
Date: 2009/01/22(木) 00:41
No:27408
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
>バグさんも四国だし、Mikanさんも四国ですね。
いつのまにか四国人になってるww
arrayさんと一緒の九州です^^
お酒が大好きなので(そっちかw)ぜひ参加したかったんですが、
やはり遠いので無理です( ;∀;)
arrayさんと関西方面に向かってカンパイだけ参加しますよw
95ポイント を落としてしまった。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(965,502ポイント)
Date: 2009/01/22(木) 01:15
No:27412
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
>>>tkさん
う〜ん、そうなんですかね。
社会勉強?というか新しい世界を見る勉強にもなるんではw
高校生以下は参加費半額とかいう学割的な設定してもいいですねw
>>Mikanさん
あ、「九州」って変換したら「吸収」になったんで、一回消したところまでは覚えているんですが、
何故か四国になってしまってたようです、すみません(T_T
う〜ん、九州、四国で開催すると人数集まりそうにないですね;
中を取って広島とか・・にしてもらえると出身地なのでありがたかったり・・w
全国同時のLive研究会なんてのも本気で考えてもいいかもしれません!
まずは第一回が成功するように頑張りますw
225ポイント を手に入れた。
|
|
|
|
|
Name: ようすけ ..入門者(3,192ポイント)
Date: 2009/01/22(木) 17:34
No:27479
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
久しぶりに覗いたら何かワイワイとおもしろい事になってますね。
私は埼玉なんで行けませんが、東京とかで開催してくれれば
行ってみたいです☆
25ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) ..伝説なるハッカー(968,383ポイント)
Date: 2009/01/22(木) 17:37
No:27480
|
|
Title: Re:関西周辺でオフ会?勉強会?しませんか?
|
|
お久しぶりです☆。
ご参加ありがとうございます。
関東地区でも、人数が集まったら開催しようと思っています。
「☆ソフトウェア技術研究会設立☆参加メンバー募集!! <飲み会のみも可>」トピの方に続き書いているので、
よければそちらご覧下さいm(_ _)m
続きのコメントをされる場合はそちらにお願いします。
55ポイント を落としてしまった。
|
|
|
|
Name: ざこ ..中級者(13,707ポイント)
Date: 2009/01/21(水) 18:53
No:27368
|
|
Title: MFC
|
|
MFCのダイアログサイズの変更の仕方がわかりません。
プログラムのときには端っこドラッグして引っ張れば大きくなったら小さくなったりできますが
ビルド→実行してからだとサイズが変更できないです。ウィンドウの大きさにあわせてダイアログ内のアイテムの位置が変わるようにしたいのですが調べてもわかりません。教えて下さい。
132ポイント を手に入れた。
|
|
|
|
Name: ま〜く ..初心者(8,701ポイント)
Date: 2009/01/21(水) 19:04
No:27372
|
|
Title: Re:MFC
|
|
ちょっと意味がわからないのですが、ダイアログのリソースでボーダーを「サイズ変更枠」にするのではなく、動的にサイズ変更可能にしたいのですか?
*リース作成時に変更可能とする場合
ダイアログのプロパティにボーダー属性があるので、それを「サイズ変更枠」にする
*動的に変更可能とする場合
ModifyStyle で WS_THICKFRAMEを指定
ただし、システムメニューに「サイズ変更」がない状態なので、必要であればメニューに
SC_SIZEを追加する。
ダイアログ内のコントロールを再配置する場合は、WM_SIZE等のメッセージハンドラ内で
コントロールを移動すればよいと思います。
MoveWindow、SetWindowPosなどで
304ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..中級者(13,833ポイント)
Date: 2009/01/21(水) 20:29
No:27381
|
|
Title: Re:MFC
|
|
まだその辺の単語うまく理解できてないんですが
ダイアログベースとかでプログラムを組みビルドして実行するとダイアログでてきますよね。
そのときにサイズ変更したいんです。プログラム内でサイズ変えるのではなくて実行してから画面の
端っこをひっぱりして変更したいのですができないのかな?もしかして。その可能性を考えてませんでした。
ModifyStyle で WS_THICKFRAMEはやってみたいんですけどどうもうまくいかなかったですね。
Mistさんの張られているHPも見たんですけどわからなかったです。
126ポイント を手に入れた。
|
|
|
|
|
Name: ま〜く ..初心者(8,770ポイント)
Date: 2009/01/21(水) 21:01
No:27384
|
|
Title: Re:MFC
|
|
とりあえず、リソースで設定しておきたいと判断します^^;
ダイアログのリソース編集ってわかりますか?
ダイアログにコントロールをぺたぺた貼り付けられる画面のことです。
(VCの中に出てくるやつです)
あ・・VCのバージョンはいくつですか?
69ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..中級者(13,917ポイント)
Date: 2009/01/21(水) 21:26
No:27391
|
|
Title: Re:MFC
|
|
多分mistさんのが正解だと思います。ちょっと試せる環境にないので明日試してみますね。
バージョンはVC++6.0です
そのペタペタのほうじゃなくて実際に動かしてみる時ですね。ペタペタはるときにダイアログを伸ばしたり
縮めたりするのはできるんですけどね。プログラムではなく手動です。
ありがとうございました。
84ポイント を手に入れた。
|
|
|
|
|
Name: ま〜く ..初心者(8,819ポイント)
Date: 2009/01/21(水) 22:31
No:27397
|
|
Title: Re:MFC
|
|
うわ><まだ理解できない僕って・・・
Mistさんの提示したURLを確認したんですけど、コモンダイアログの事ですか?
下のURLは最初にぼくが説明した感じだし・・・
49ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..中級者(14,001ポイント)
Date: 2009/01/21(水) 23:29
No:27404
|
|
Title: Re:MFC
|
|
いや私の説明が悪いんです。御二方共わかりずらそうでしたのでそうだと思います。
ま〜くさんに教えていただいたのとmistさんに教えていただいたのを検証して取り組んで見ます。
普通のダイアログの方かなとは思います。下の方のURLだったと思うのでま〜くさんに説明していただいたとおりかな?まぁ明日試してわからなかったら最後質問させていただきます。
84ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..中級者(14,045ポイント)
Date: 2009/01/22(木) 09:11
No:27441
|
|
Title: Re:MFC
|
|
上記のやり方でできました。ありがとうございました。
後はサイズ変更に伴ってボタンの位置も移動する方法ですがま〜くさんの意見やmistさんに貼り付けていただいたサイトがまさにこれっぽいので試して見ます。
44ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..中級者(14,311ポイント)
Date: 2009/01/22(木) 10:00
No:27445
|
|
Title: Re:MFC
|
|
お二方の意見を参考にしてとあるhpに
フォームのリサイズと同じ比率でコントロールをリサイズします
bool flg = false;//起動時にイベントが発生してサイズを変えると落ちるため、回避のためのフラグ
void CtestDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
// TODO: この位置にメッセージ ハンドラ用のコードを追加してください
if(flg) GetDlgItem(IDC_STATIC)->MoveWindow(cx/10,cy/10, cx/2,cy/2);//動的なサイズの変更
flg = true;
}
とやり方が載ってました。これかなと思って試した結果サイズを変更しようと端をドラッグすると
問題が発生しました。作業を終了します
となります。やり方がおかしいのでしょうか?
※上記のソースはdialogのクラスでWM_SIZEのメッセージを使ってます。
266ポイント を手に入れた。
|
|
|
|
|
Name: ま〜く ..初心者(8,888ポイント)
Date: 2009/01/22(木) 10:19
No:27446
|
|
Title: Re:MFC
|
|
できてよかったですね^^
問題はIDC_STATICにあると思います。
IDC_STATICではコントロールを特定できないので、
たとえば IDC_LABEL1 のように 別のIDをつけてみてください。
ちなみに flg による判定はうまくいくと思いますが、見た感じが微妙ですね^^;
69ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..中級者(14,965ポイント)
Date: 2009/01/22(木) 10:28
No:27447
|
|
Title: Re:MFC
|
|
とんでもないことに気づきました。そのままパクッて貼り付けたんですがSTATICをダイアログ内で使用してませんでした・・
それでif(flg) GetDlgItem(IDC_STATIC)->MoveWindow(cx/10,cy/10, cx/2,cy/2);//動的なサイズの変更を
if(flg) GetDlgItem(IDC_IDOK)->MoveWindow(cx/10,cy/10, cx/2,cy/2);//動的なサイズの変更
if(flg) GetDlgItem(IDC_CANCEL)->MoveWindow(cx/10,cy/10, cx/2,cy/2);//動的なサイズの変更
if(flg) GetDlgItem(IDC_LIST1)->MoveWindow(cx/10,cy/10, cx/2,cy/2);//動的なサイズの変更
にすると今度はドラッグする前、
詳しくは今SDIベースでメニューのとある欄を押すとダイアログが表示され、そのダイアログをいじくったりの作業を
今しています。それでメニューの所を押した時点で問題が発生しました。作業を終了します
とでます。何が問題なのかさっぱりです。
2倍のポイントを手に入れた! 654ポイント を手に入れた。
|
|
|
|
|
Name: バグ ..ハッカー(143,889ポイント)
Date: 2009/01/22(木) 10:33
No:27448
|
|
Title: Re:MFC
|
|
flg変数は、OnSize関数の中で毎回trueにしなくても、OnInitDialog関数の中で一度だけtrueにしてやればいいと思いますよ(^-^)
OnInitDialog関数の中でButtonやStaticなんかのコントロールの初期化を行っているようなので、この初期化が終了してしまわない内に、コントロールに対して何か操作しようとするとエラーが出るようです。
89ポイント を手に入れた。
|
|
|
|
|
Name: バグ ..ハッカー(143,984ポイント)
Date: 2009/01/22(木) 10:37
No:27450
|
|
Title: Re:MFC
|
|
あ、追記です。
前述のflg変数ですが、Dialogクラスにメンバ変数として追加しておいた方がよいですよ。
グローバル変数でも構わないといえばそうなのですが、Dialog内でしか使わないものですから、Dialog内でしか使えないようにしておいた方が、可読性の向上を考えると良いと思います。
95ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..上級者(15,154ポイント)
Date: 2009/01/22(木) 13:55
No:27460
|
|
Title: Re:MFC
|
|
なんとかできました。最後の作業なんですが1度起動してダイアログのサイズを変更して終了します。
次また起動したときに終了したサイズで始める。というプログラム取り入れたいんです。最初は一定の値いれといて終了時にウィンドウのサイズをどっかに入れ次回起動時にそのサイズではじめる という感じかなとは思いますが
プログラムって1回終了したらデータ失われますよね。失われず続きからできるなら上記の作業いらないのかな
とは思います。お手数ですが教えて下さい。
189ポイント を手に入れた。
|
|
|
|
|
Name: バグ ..ハッカー(144,060ポイント)
Date: 2009/01/22(木) 14:04
No:27462
|
|
Title: Re:MFC
|
|
ファイルにTop, Bottom, Left, Rightの値を保存しておくのがいいかと思います。
で、ダイアログを閉じる際のイベントハンドラ内(OnCloseとかOnDestroyかな?)で、値を更新保存する…というのでいけるんではないでしょうか?
76ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(44,721ポイント)
Date: 2009/01/22(木) 15:08
No:27466
|
|
Title: Re:MFC
|
|
勉強のために作られているソフトだったらいいんですけど、完成後他の人に使ってもらうことを考えておられるのであればなるべくレジストリは使わないほうがいいと思います。
(テキストファイルやバイナリファイルで十分な気もします)
理由は
1.レジストリに設定を残す(=レジストリを汚す)ソフトは嫌われる傾向にある
このソフトがレジストリを使用していることの銘記は必要になる
よほどのことがない限り大丈夫と思いますが、レジストリを破壊するようなことがあるとOS再インストールということになる
2.アンインストール時に、レジストリから情報を消す手段が必要になる
アンインストーラが必要になる
レジストリを使用していなければ実行ファイルのフォルダ丸ごと削除だけですむ
3.他のPCで同じソフトを使用したい場合に設定を引き継がせにくい
特にVistaだとUACの影響でレジストリが使えなかったり、仮想化されてXPとは違う動きになったりしますしね。
252ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..上級者(15,538ポイント)
Date: 2009/01/22(木) 16:03
No:27468
|
|
Title: Re:MFC
|
|
.iniファイルに保存する形式にしました。まず初期サイズ作ってたんです。
DialongクラスにOnInitDailog関数作ってそこで
CRect WinRect;
WinRect.left=AfxGetApp()->GetProfileInt("memo","left",200);
WinRect.top=AfxGetApp()->GetProfileInt("memo","top",200);
WinRect.left=AfxGetApp()->GetProfileInt("memo","right",622);
WinRect.bottom=AfxGetApp()->GetProfileInt("memo","bottom",310);
MoveWindow(WinRect);
としてたんです。これで初期設定は出来ていました。
それでその後にです。ダイアログが閉じるときにそのサイズを保存しようとして
ダイアログのクラスにOnDestroy関数つくりそこに
CRect WinRect;
WinRect.left=AfxGetApp()->WriteProfileInt("memo","left",WinRect.left);
WinRect.top=AfxGetApp()->WriteProfileInt("memo","top",WinRect.top);
WinRect.left=AfxGetApp()->WriteProfileInt("memo","right",WinRect.right);
WinRect.bottom=AfxGetApp()->WriteProfileInt("memo","bottom",WinRect.bottom);
MoveWindow(WinRect);
としたんです。すると意味不明なことに
メニューから【ダイアログ】←※メニューからダイアログを呼びだす場所
押すとプログラムが動かなく閉じることもできなくなります。再起動してDestroy関数を消去しても同じ結果になり
InitDialogの方消せば動かなくなるのは止まりました。何が悪いのでしょうか?
358ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..上級者(16,018ポイント)
Date: 2009/01/22(木) 16:25
No:27470
| 解決!
|
Title: Re:MFC
|
|
動かなくなるのは私のミスだと思います。ただ間違いはDestoy関数なはずなのに何故消去してもなるのかと・・
>>CRect WinRect;
WinRect.left=AfxGetApp()->WriteProfileInt("memo","left",WinRect.left);
WinRect.top=AfxGetApp()->WriteProfileInt("memo","top",WinRect.top);
WinRect.left=AfxGetApp()->WriteProfileInt("memo","right",WinRect.right);
WinRect.bottom=AfxGetApp()->WriteProfileInt("memo","bottom",WinRect.bottom);
MoveWindow(WinRect);
の部分を
CRect WinRect;
GetWindowRect(&WinRect);
AfxGetApp()->WriteProfileInt("memo","left",WinRect.left);
AfxGetApp()->WriteProfileInt("memo","top",WinRect.top);
AfxGetApp()->WriteProfileInt("memo","right",WinRect.right);
AfxGetApp()->WriteProfileInt("memo","bottom",WinRect.bottom);
にしました。するととりあえずおかしくなることはなくなりました。
>>WinRectに数値は入っているんですよね?
Destroyの中のWinRectの中を見るとちゃんとサイズ変更した値が入っていました。
ちゃんと起動しました。ありがとうございました。
480ポイント を手に入れた。
|
|
|
|
|
Name: バグ ..ハッカー(144,008ポイント)
Date: 2009/01/22(木) 16:42
No:27472
|
|
Title: Re:MFC
|
|
ソースの全体を見ていないので推測ですが、OnDestroyの中でMoveWindowを呼び出していたのが原因ではないかと思います。既に破棄されたWindowに対して、なんらかの処理を行おうとしたために暴走してしまったのではないでしょうか?
68ポイント を落としてしまった。
|
|
|
|
|
Name: バグ ..ハッカー(144,052ポイント)
Date: 2009/01/22(木) 16:57
No:27473
|
|
Title: Re:MFC
|
|
あと1つ気になったんですが、iniファイルに書き込むのって、WriteProfileIntでいいんでしたっけ?
WritePrivateProfileStringじゃなかったっかな?違ってたらすみません(^_^;)
44ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..上級者(16,061ポイント)
Date: 2009/01/22(木) 17:17
No:27477
|
|
Title: Re:MFC
|
|
これは"新VisualC++6.0 入門シニア偏"に載っていました。
その方法でもできるかもしれませんね。ありがとうございました。
43ポイント を手に入れた。
|
|
|
|
Name: にょろ ..ぴよぴよ(799ポイント)
Date: 2009/01/21(水) 21:24
No:27390
|
|
Title: Textureが表示できない
|
|
はじめまして
C#のManagedDirectXですがアドバイスいただければと思い質問させてください
シューティングゲームを作りたいと思い
最初はSpriteで描画していました。
速度的な問題がありDevice描画に変更しようと思い
ついでにその描画方法がどれほどの速度が出るか調べたかったのでベンチマークテストを作ろうと思ったのですが…
何故か(自分のせいなのは分かっています)テクスチャが描画されません。
(もしかしたら変なところに描画されているのかも…)
色々なサイトのソースを試したのですが…
関係ありそうなコードだけ下に(その他はFPS描画などです。)
どこかおかしいところ(修正するところ)はありませんか。
ここのFPS計算のソースもそのまま入ってますが
VC# XPです。
class Loop
{
Device device;
Texture tex;
//終了させて良いか?というフラグ
bool Cont = true;
public Bitmap bmp;
int width, height;
public Thread th;
public Loop(Device device)
{
this.device = device;
bmp = new Bitmap(@"C:\enemy.png");
SetTexture(out tex, bmp);
//テクスチャ初期設定[
vert = new VertexBuffer(typeof(CustomVertex.PositionTextured),
4, device, Usage.None, CustomVertex.PositionTextured.Format, Pool.Managed);
verts = new CustomVertex.PositionTextured[4];
th = new Thread(Run);
th.Start();
}
//Texture描画
void DrawTexture(Texture tex,int x,int y)
{
verts[0] = new CustomVertex.PositionTextured(x - width / 2, y - height / 2, 0.0f, 0.0f, 0.0f);
verts[1] = new CustomVertex.PositionTextured(x + width / 2, y - height / 2, 0.0f, 1.0f, 0.0f);
verts[2] = new CustomVertex.PositionTextured(x - width / 2, y + height / 2, 0.0f, 0.0f, 1.0f);
verts[3] = new CustomVertex.PositionTextured(x + width / 2, y + height / 2, 0.0f, 1.0f, 1.0f);
device.SetTexture(0, tex);
DrawRectPrim(verts);
}
void DrawRectPrim(CustomVertex.PositionTextured[] verts)
{
if (device == null) return;
GraphicsStream stm = vert.Lock(0, 0, 0);
stm.Write(verts);
vert.Unlock();
device.SetStreamSource(0,vert,0);
device.VertexFormat = CustomVertex.PositionTextured.Format;
device.DrawPrimitives(PrimitiveType.TriangleStrip, 0, 2);
}
public void Run()
{
while(true)
{
//デバイス消失の確認(省略)
//ループ
// 描画内容を単色でクリア
this.device.Clear(ClearFlags.Target, Color.White, 1.0f, 0);
device.BeginScene();
DrawTexture(tex, 200, 200);
device.EndScene();
device.Present();
Sleep();
}
}
void Sleep()
{
//省略
}
/// <summary>
/// テクスチャ生成
/// </summary>
/// <param name="img">貼り付けるBitMap</param>
protected void SetTexture(out Texture tex,Bitmap img)
{
int w = 1, h = 1;
width = img.Width;
height = img.Height;
while (w < width) { w = w * 2; }
while (h < height) { h = h * 2; }
width = w;
height = h;
//サイズを考慮したbitmapへ〜
Bitmap bmp = new Bitmap(w, h);
Graphics g = Graphics.FromImage(bmp);
g.Clear(Color.Transparent);
g.DrawImage(img, 0, 0);
g.Dispose();
tex = new Texture(device, w, h, 0, Usage.Dynamic, Format.A8R8G8B8, Pool.Default);
SurfaceDescription desc = tex.GetLevelDescription(0);
UInt32[,] buf = (UInt32[,])tex.LockRectangle(typeof(UInt32), 0,LockFlags.None, desc.Height, desc.Width);
//Bitmap→byte
BitmapData bmpdata = bmp.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadWrite,PixelFormat.Format32bppArgb);
IntPtr ptr = bmpdata.Scan0;
byte[] temp = new byte[bmpdata.Width * bmpdata.Height * 4];
//ptr→tempコピー
Marshal.Copy(ptr, temp, 0, bmpdata.Width * bmpdata.Height * 4);
//アンロック
bmp.UnlockBits(bmpdata);
for (int i = 0; i < bmpdata.Height; i++)
{
for (int j = 0; j < bmp.Width; j++)
{
//byte*4→UInt32
//縦横逆にする
buf[i, j] = (UInt32)temp[i * bmpdata.Width * 4 + j * 4]
+ (UInt32)temp[i * bmpdata.Width * 4 + j * 4 + 1] * 256
+ (UInt32)temp[i * bmpdata.Width * 4 + j * 4 + 2] * 256 * 256
+ (UInt32)temp[i * bmpdata.Width * 4 + j * 4 + 3] * 256 * 256 * 256;
}
}
tex.UnlockRectangle(0);
}
799ポイント を手に入れた。
|
|
|
|
Name: にょろ ..ぴよぴよ(763ポイント)
Date: 2009/01/22(木) 12:20
No:27456
| 解決!
|
Title: Re:Textureが表示できない
|
|
表示できましたので報告までに
PositionTextured→TransformedColoredTexturedでとりあえず
しかし何故?
36ポイント を落としてしまった。
|
|
|
|
Name: AC ..かけだし(2,021ポイント)
Date: 2009/01/21(水) 04:43
No:27278
|
|
Title: BitBlt()とWM_CLOSEメッセージ
|
|
ただいまWin32APIを勉強中なのですが、ちょっと原因不明なことが起きましたので質問させていただきます。
とりあえずソースから。ウィンドウプロシージャ部分です。
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
// ビットマップハンドル
static HBITMAP hBitmap, hPrevBitmap;
// デバイスコンテキストハンドル
static HDC hDC, hCompatDC;
switch(msg)
{
case WM_CREATE:
// ビットマップをファイルから読み込む
hBitmap = (HBITMAP)LoadImage(NULL, _T(".\\test.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
if(hBitmap == NULL)
{
MessageBox(hWnd, _T("読み込みエラー"), _T("警告"), MB_OK | MB_ICONWARNING);
break;
}
// ウィンドウのデバイスコンテキストハンドルを取得
hDC = GetDC(hWnd);
// メモリデバイスコンテキストを作成
hCompatDC = CreateCompatibleDC(hDC);
// ロードしたビットマップを選択
hPrevBitmap = (HBITMAP)SelectObject(hCompatDC, hBitmap);
break;
case WM_CLOSE:
if(MessageBox(hWnd, _T("終了しますか?"), _T("WM_CLOSE"), MB_YESNO | MB_ICONQUESTION) == IDYES)
{
// WM_DESTROYメッセージを送信
DestroyWindow(hWnd);
}
break;
case WM_DESTROY:
// 以前のビットマップに戻す
SelectObject(hCompatDC, hPrevBitmap);
// ロードしたビットマップを削除
DeleteObject(hBitmap);
// メモリデバイスコンテキストを削除
DeleteObject(hCompatDC);
// デバイスコンテキストハンドル削除
ReleaseDC(hWnd, hDC);
PostQuitMessage(0);
break;
case WM_PAINT:
// ビットマップをウィンドウに転送
BitBlt(hDC, 10, 10, 500, 500, hCompatDC, 0, 0, SRCCOPY);
break;
default:
return DefWindowProc(hWnd, msg, wp, lp);
}
return 0;
}
この結果画像は正常表示されて、上手くいったかのように思えたのですが、×ボタンを押すと固まってしまいます。
WM_CLOSEメッセージでメッセージボックスを表示し、終了確認するようにしているのですが、どうもこの処理が原因のようで、コメントアウトしたところ正常に動作しました。
あと、いろいろやってみた結果、理由は良く分からないのですが、固まっている時にAltキーを押すとメッセージボックスが表示されました。
また、固まっているときにスペースキー、エンターキーでプログラムが終了したので、固まっているときもメッセージボックスは表示されているつもり(?)なようです。
ということで、この現象の起きる原因のわかる方は、どうかご教授願います。
737ポイント を手に入れた。
|
|
|
|
Name: dic ..中級者(11,223ポイント)
Date: 2009/01/21(水) 04:58
No:27279
|
|
Title: Re:BitBlt()とWM_CLOSEメッセージ
|
|
WM_PAINT は BeginPaint(), で取得したデバイスコンキテストで描画しなければなりません
終了後 EndPaint() 関数で開放します
コートに示すと以下のようになります
// デバイスコンテキストハンドル
static HDC hDC, hCompatDC;
static HDC hdc2; // 追加
PAINTSTRUCT pt; // 追加
case WM_PAINT:
// ビットマップをウィンドウに転送
hdc2 = BeginPaint( hWnd, &pt );
BitBlt(hdc2, 10, 10, 500, 500, hCompatDC, 0, 0, SRCCOPY);
EndPaint( hWnd, &pt );
break;
14ポイント を手に入れた。
|
|
|
|
|
Name: AC ..入門者(2,522ポイント)
Date: 2009/01/21(水) 12:00
No:27295
| 解決!
|
Title: Re:BitBlt()とWM_CLOSEメッセージ
|
|
dicさん、解答ありがとうございます。
言われてみればそうでした。
画像表示されてたのですっかり失念していました。
以下のように訂正しました。
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
// ビットマップハンドル
static HBITMAP hBitmap;
switch(msg)
{
case WM_CREATE:
// ビットマップをファイルから読み込む
hBitmap = (HBITMAP)LoadImage(NULL, _T(".\\test.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
if(hBitmap == NULL)
{
MessageBox(hWnd, _T("読み込みエラー"), _T("警告"), MB_OK | MB_ICONWARNING);
break;
}
break;
case WM_CLOSE:
if(MessageBox(hWnd, _T("終了しますか?"), _T("WM_CLOSE"), MB_YESNO | MB_ICONQUESTION) == IDYES)
{
// WM_DESTROYメッセージを送信
DestroyWindow(hWnd);
}
break;
case WM_DESTROY:
// ロードしたビットマップを削除
DeleteObject(hBitmap);
PostQuitMessage(0);
break;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hDC = BeginPaint(hWnd, &ps);
// メモリデバイスコンテキストを作成
HDC hCompatDC = CreateCompatibleDC(hDC);
// ロードしたビットマップを選択
HBITMAP hPrevBitmap = (HBITMAP)SelectObject(hCompatDC, hBitmap);
// ビットマップをウィンドウに転送
BitBlt(hDC, 10, 10, 500, 500, hCompatDC, 0, 0, SRCCOPY);
// 以前のビットマップに戻す
SelectObject(hCompatDC, hPrevBitmap);
DeleteObject(hCompatDC);
EndPaint(hWnd, &ps);
}
break;
default:
return DefWindowProc(hWnd, msg, wp, lp);
}
return 0;
}
一応これで解決にしたしますが、何か他に間違いやコメント等があったら書いてくれると嬉しいです。
501ポイント を手に入れた。
|
|
|
|
|
Name: 御津凪 [URL] ..熟練のプログラマー(51,214ポイント)
Date: 2009/01/21(水) 12:27
No:27297
|
|
Title: Re:BitBlt()とWM_CLOSEメッセージ
|
|
通常、ウインドウをクローズすると、 WM_CLOSE メッセージが送られた後、
(そのメッセージでFALSEを返さなかった場合)
WM_DESTROY メッセージが呼ばれます。
上記のメッセージ処理だと、二重に WM_DESTROY が送られて、
異常終了になるか、デバッグ出力ウインドウに例外メッセージが表示されます。
また、上記メッセージボックスで「いいえ」を選択、またはメッセージボックスを×ボタンで閉じると、
そのままウインドウが閉じてしまいます。(こちら側は問題なく終了すると思います)
質問の表示されない問題ですが(既に解決していますが)、
dic さんの通りに HDC を取得しないといけませんね。
うまく描画されているようでも、必要の無い描画まで行うため、メッセージボックスの表示が
塗りつぶされてしまいます。
(BeginPaint で取得されたものは、必要の無い領域を描画しません)
256ポイント を手に入れた。
|
|
|
|
|
Name: AC ..入門者(2,965ポイント)
Date: 2009/01/22(木) 01:10
No:27411
|
|
Title: Re:BitBlt()とWM_CLOSEメッセージ
|
|
御津凪さん、補足ありがとうございます。
>通常、ウインドウをクローズすると、 WM_CLOSE メッセージが送られた後、
>(そのメッセージでFALSEを返さなかった場合)
>WM_DESTROY メッセージが呼ばれます。
>上記のメッセージ処理だと、二重に WM_DESTROY が送られて、
>異常終了になるか、デバッグ出力ウインドウに例外メッセージが表示されます。
とのことですが、WM_CLOSEメッセージでDefWindowProc()が呼ばれた場合、DestroyWindow()が実行されて、WM_DESTROYメッセージが送られるのではないのでしょうか?
ブレークポイントを↑のソースの
@if(MessageBox(hWnd, _T("終了しますか?"), _T("WM_CLOSE"), MB_YESNO | MB_ICONQUESTION) == IDYES)
ADestroyWindow(hWnd);
BDeleteObject(hBitmap);
に入れて調べたところ、
×ボタンを押すと@で停止。
そのまま続行してメッセージボックスが表示されNOを押すと何も起こらず、YESを押すとAで静止。
そのまま続行するとBで静止。
という流れでしたので、二重に WM_DESTROYが送られているということはないと思われます。
例外メッセージもなさそうですので。
443ポイント を手に入れた。
|
|
|
|
|
Name: 御津凪 [URL] ..熟練のプログラマー(52,148ポイント)
Date: 2009/01/22(木) 01:49
No:27416
|
|
Title: Re:BitBlt()とWM_CLOSEメッセージ
|
|
> WM_CLOSEメッセージでDefWindowProc()が呼ばれた場合、DestroyWindow()が実行されて、WM_DESTROYメッセージが送られるのではないのでしょうか?
DefWindowProc ()の位置を良く見てませんでした…。
すみません。
私はメッセージ処理に default を使わず、個々で return 処理をし、しなかった処理は DefWindowProc() を呼び出す、
という方法を用いていましたので。
71ポイント を手に入れた。
|
|
|
|
|
Name: AC ..入門者(3,145ポイント)
Date: 2009/01/22(木) 02:34
No:27422
|
|
Title: Re:BitBlt()とWM_CLOSEメッセージ
|
|
>私はメッセージ処理に default を使わず、個々で return 処理をし、しなかった処理は DefWindowProc() を呼び出す
なるほど、そういうことでしたか。確かにいろんなパターンありますからね。
とりあえず、自分の理解が間違ってなかったようでよかったです。
では以上を持って本当に解決ということにさせていだたきます。
回答してくださった皆さん、ありがとうございました。
180ポイント を手に入れた。
|
|
|
|
Name: JT ..ぴよぴよ(31ポイント)
Date: 2009/01/20(火) 13:40
No:27202
|
|
Title: 東京近辺での真面目な勉強会
|
|
一人で自社で勉強してもわからないことだらけです><どなたか東京近郊で一緒に勉強しませんか?
31ポイント を手に入れた。
|
|
|
|
Name: Haru ..上級者(22,527ポイント)
Date: 2009/01/20(火) 14:07
No:27208
|
|
Title: Re:東京近辺での真面目な勉強会
|
|
>>YuOさん
>>東京近郊なら,そもそも勉強会がすでにたくさんありますが……。
このようなものがあるんですね!!
ただ・・・どんなレベルの勉強会なんでしょう?(^^;
54ポイント を手に入れた。
|
|
|
|
|
Name: JT ..ぴよぴよ(416ポイント)
Date: 2009/01/20(火) 15:13
No:27213
|
|
Title: Re:東京近辺での真面目な勉強会
|
|
ま〜く さん、東京の勉強会ならこちらで>< 開催時間は夜7時以降です
30ポイント を落としてしまった。
|
|
|
|
|
Name: JT ..ぴよぴよ(51ポイント)
Date: 2009/01/21(水) 10:59
No:27289
|
|
Title: Re:東京近辺での真面目な勉強会
|
|
東京近郊では勉強会やりたい方いませんか?><
20ポイント を手に入れた。
|
|
|
|
|
Name: Haru ..上級者(22,730ポイント)
Date: 2009/01/21(水) 13:04
No:27301
|
|
Title: Re:東京近辺での真面目な勉強会
|
|
>>JTさん
>>東京近郊では勉強会やりたい方いませんか?><
純粋に勉強会って言うのはやはり難しいのかもしれませんね・・。
特に場所が・・・^^;
>>たかぎさん
>>わざわざ行くのは辛いので、何かのついでがあるときなら参加してもよいですよ。
たかぎさんが参加していただけるとしたら、普通に業界の世間話みたいな感じでも
勉強になりそうですね!!
ただ、きじねこの内容が少し難しくて、あまり理解できない私には
たかぎさんのいってることが理解できるのか心配です(^^;
203ポイント を手に入れた。
|
|
|
|
|
Name: Justy ..伝説なるハッカー(311,746ポイント)
Date: 2009/01/22(木) 01:37
No:27414
|
|
Title: Re:東京近辺での真面目な勉強会
|
|
>純粋に勉強会って言うのはやはり難しいのかもしれませんね・・。
そうですね。
ただの飲み会ならともかく、勉強会のテーマとか方針とかないと
なかなか参加表明し辛いのではないでしょうか。
場所は探せば貸し会議室とかがあると思うので、なんとかなるのかな、と。
東京横浜全国|TKP貸し会議室ネット
ttp://www.kashikaigishitsu.net/
202ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(965,330ポイント)
Date: 2009/01/22(木) 01:55
No:27417
|
|
Title: Re:東京近辺での真面目な勉強会
|
|
ソフトウェア技術研究会(仮)
可能なら大阪と東京で2回にわけて開催したいと思っています。
ただ、メインの趣旨としてはJTさんの想像されてる勉強会とはちょっと違うかもしれません。
JTさんはどっちかというと、わからない所を教えて欲しいって感じなんだと思いますが、
それが主体だとベテランの方が参加して下さる理由がなくなってしまうので・・。
メインとしては誰かがプレゼン→討論って形になるのでは無いかと思っています。
その後時間を作って何かお互いに教えあえることがあったら教えあえばいいと思います。
まだ全く内容が決まってないことなので、いくらでも変更や、やりたい企画の提案可能なんで、
ご意見があればお願いします。
新しい研究会についてはまた新しいトピを立てようと思います。
346ポイント を手に入れた。
|
|
|
|
Name: BEMANI ..入門者(3,320ポイント)
Date: 2009/01/19(月) 20:03
No:27170
|
|
Title: 同じプログラムを別のPCで実行すると。
|
|
前回ファイル読み込みの件で投稿させて頂きましたBEMANIです。
あれ以来、スコアのセーブが出来るようになり非常に助かりました。
本題なのですが、
デスクトップ・ノートとPCが二種類あり、現在デスクトップで作業しています。
デスクトップでは正常に起動し、思い通りの結果になるのですが
ノートになると画面が真っ黒になってしまいました。
動いていないのかな?と思ったのですが、効果音(音楽)は流れていました。
どうやら画像がうまく表示できていないのではないかと思うのですが
全く同じソースなので、なぜ真っ黒になるのか原因が解りません。
VC++2008 EEを使用し、OSはXPです。
PCに関しての知識が乏しいのでこのような質問でいいのか解りませんが、
何か原因が解る方いらっしゃらないでしょうか・・・。
346ポイント を手に入れた。
|
|
|
|
Name: BEMANI ..入門者(3,453ポイント)
Date: 2009/01/19(月) 20:36
No:27172
|
|
Title: Re:同じプログラムを別のPCで実行すると。
|
|
>>lbfuvabさん
今のプロジェクトより少し前に作成した物のバックアップがあったので
そちらを実行してみました所、正常に映りました。
また、全く違うプロジェクトで画像を描画するというものがあったので
そちらも実行してみました所、正常に映っておりました。
133ポイント を手に入れた。
|
|
|
|
|
Name: BEMANI ..入門者(3,454ポイント)
Date: 2009/01/19(月) 20:57
No:27174
|
|
Title: Re:同じプログラムを別のPCで実行すると。
|
|
>>Libraさん
ファイルパスが違う(「画像が存在しない」・「ファイル名が違う」)等で
正しく画像を格納することができなかった場合、
テクスチャを描画する段階でエラーが出てしまわないですか?
ロード時に使っている関数はD3DXCreateTextureFromFileAというものです。
パスは、ソリューションから見ての相対指定ですので間違っているとは考えにくいのです;
(念のため見直しましたが、間違ってはいませんでした。)
1ポイント を手に入れた。
|
|
|
|
|
Name: 御津凪 [URL] ..熟練のプログラマー(50,427ポイント)
Date: 2009/01/19(月) 22:36
No:27178
|
|
Title: Re:同じプログラムを別のPCで実行すると。
|
|
> ロード時に使っている関数はD3DXCreateTextureFromFileAというものです。
この関数の戻り値を確認してください。
何か問題があれば S_OK (0)以外の値が返ってくるはずです。
たとえ読み込めていなかったとしても、
変数が NULL である場合、たぶん問題なく描画をスルーします。
(結果、何も描画されない)
それとは別に注意があるので一応書いておきます。
ソリューションから起動する場合と、
直接起動する場合、
デフォルトの設定だとカレントディレクトリが違います。
ソリューションからデバッグ起動すると、ソリューションファイルの置かれているディレクトリが
カレントディレクトリになり、
直接起動すると、その実行ファイルの置かれているディレクトリが
カレントディレクトリになります。
通常、ビルドした実行ファイルは Debug 及び Release フォルダにあるので、
このようなディレクトリの違いがでます。
84ポイント を手に入れた。
|
|
|
|
|
Name: dic ..中級者(10,841ポイント)
Date: 2009/01/19(月) 22:39
No:27179
|
|
Title: Re:同じプログラムを別のPCで実行すると。
|
|
ロードする所のコード
描画する所のコードを書いてくれると返答の仕方が変わってくると思います
36ポイント を落としてしまった。
|
|
|
|
|
Name: BEMANI ..入門者(3,570ポイント)
Date: 2009/01/20(火) 00:03
No:27180
|
|
Title: Re:同じプログラムを別のPCで実行すると。
|
|
>>御津凪さん
ロード失敗時に、画像が読み込めなかったらメッセージウインドウで
「読み込み失敗」なるものを表示していますが、メッセージが出ないので読み込めていると思います。
念のためにロード関数を使った場所すべての戻り値を調べましたが、全てS_OKが返ってきました。
また、描画時に「デバイスオブジェクト->SetTexture(0, テクスチャ格納先);」
を使っていますが、テクスチャ格納先に画像がロード出来なかった場合、
0x4b6e799b でハンドルされていない例外が発生しました:
0xC0000005: 場所 0xcdcdcd7d に書き込み中にアクセス違反が発生しました。
値は皆さんと違うと思いますが、格納できていないというメッセージが出るため、
ファイルパスが間違っている・ファイル名が違う等があった場合は
このようなエラーメッセージが出力され起動ができません。
カレントディレクトリに関してですが、こちらは間違っていないと思います。
>>dicさん
D3DXCreateTextureFromFileAが長いのでLOAD_IMAGEにしています。
・ロードする所
LOAD_IMAGE(デバイスオブジェクト, "ファイル名", &画像格納先);
・描画する所
そのまま乗せても大丈夫なのでしょうか・・・。
(アニメーション・回転計算は抜いています)
//***********************************************************************************************
// オブジェクトを描画する
// 第一引数 : 描画するX座標
// 第二引数 : 描画するY座標
// 第三引数 : アニメーションするかどうか(TRUE:する FALSE:しない)
// 第四引数 : 回転するかどうか(TRUE:する FALSE:しない)
// 第五引数 : 回転する角度
// 第六引数 : 色指定
// 第七引数 : 表示する画像が格納されているポインタ
//***********************************************************************************************
void CPRINT::CDrawObj(float Xpos, float Ypos, bool AFlag, bool SFlag, float Angle, char Color, LPDIRECT3DTEXTURE9 Texture)
{
// 描画するテクスチャをセットする
CDevice->GetD3DDevice()->SetTexture(0, Texture);
vertex[0].rhw = vertex[1].rhw = vertex[2].rhw = vertex[3].rhw = 1.0f;
// Specularなし
vertex[0].specular = vertex[1].specular = vertex[2].specular = vertex[3].specular = D3DCOLOR_XRGB(0, 0, 0);
// 色指定
vertex[0].diffuse = vertex[1].diffuse = vertex[2].diffuse = vertex[3].diffuse = D3DCOLOR_RGBA(255, 255, 255, 255);
// Z値を0にする
vertex[0].z = vertex[1].z = vertex[2].z = vertex[3].z = 0.0f;
//-------------------------------------------------------------------------------
// ウインドウ内でのX, Y座標
//-------------------------------------------------------------------------------
vertex[0].x = Xpos;
vertex[0].y = Ypos;
vertex[1].x = Xpos + Rect.right;
vertex[1].y = Ypos;
vertex[2].x = Xpos + Rect.right;
vertex[2].y = Ypos + Rect.bottom;
vertex[3].x = Xpos;
vertex[3].y = Ypos + Rect.bottom;
//-------------------------------------------------------------------------------
// テクスチャ内でのX, Y座標
//-------------------------------------------------------------------------------
vertex[0].tx = (1/AParX) * Color;
vertex[0].ty = TYpos;
vertex[1].tx = (1/AParX) + vertex[0].tx;
vertex[1].ty = vertex[0].ty;
vertex[2].tx = vertex[1].tx;
vertex[2].ty = TYpos + Anime.bottom;
vertex[3].tx = vertex[0].tx;
vertex[3].ty = vertex[2].ty;
//-------------------------------------------------------------------------------
// ポリゴンの描画
//-------------------------------------------------------------------------------
CDevice->GetD3DDevice()->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, vertex, sizeof(TLVERTEX));
}
※送った引数を元に描画するというものです。
全く同じプロジェクトを学校のデスクトップに移して(3台目のPCで)起動しましたが
こちらでも正常に動きました。
また、ソースは全くいじってないです。
ノートだからいけない・・・ということはないですよね;
461ポイント を手に入れた。
|
|
|
|
|
Name: 御津凪 [URL] ..熟練のプログラマー(50,413ポイント)
Date: 2009/01/20(火) 00:22
No:27181
|
|
Title: Re:同じプログラムを別のPCで実行すると。
|
|
> ノートだからいけない・・・ということはないですよね;
もしかしたらということなのですが、
ノートPCのグラフィックボードがSpecular非対応だったりするかもしれません。
あと、FVF値はどのようにセットされていますか?
(一応、TLVERTEX 構造体の中身も)
14ポイント を落としてしまった。
|
|
|
|
|
Name: BEMANI ..入門者(3,763ポイント)
Date: 2009/01/20(火) 00:36
No:27182
|
|
Title: Re:同じプログラムを別のPCで実行すると。
|
|
>>御津凪さん
今問題となっているプロジェクトの、少し前のプロジェクトにも
描画の所で同じような表記がされていますが(Specular)、そちらでは正常に動作しております。
非対応ではないかと思います;
えー、FVF値はマクロ定義でこのように書きました。
#define FVF(D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1)
TLVERTEX構造体の中身です。
typedef struct _tlvertex
{
float x, y, z;
float rhw;
D3DCOLOR diffuse;
D3DCOLOR specular;
float tx, ty;
}TLVERTEX;
193ポイント を手に入れた。
|
|
|
|
|
Name: 御津凪 [URL] ..熟練のプログラマー(50,533ポイント)
Date: 2009/01/20(火) 03:28
No:27184
|
|
Title: Re:同じプログラムを別のPCで実行すると。
|
|
関係ないかもしれませんが、
D3DFVF_XYZRHW で座標を指定して描画するとき、
頂点がスクリーン表示範囲からずれた時に、
描画されなくなったり、描画がおかしくなることがあります。
まあ恐らく非対応のほうかもしれませんが、
一応、Direct3D SDK に付属している DirectX Caps Viewer で対応しているか
確認してみるといいと思います。
120ポイント を手に入れた。
|
|
|
|
|
Name: BEMANI ..入門者(4,041ポイント)
Date: 2009/01/20(火) 07:57
No:27185
|
|
Title: Re:同じプログラムを別のPCで実行すると。
|
|
>>御津凪さん
>D3DFVF_XYZRHW で座標を指定して描画するとき・・・
そんなことあるんですか;
はじめて聞きました;
>まあ恐らく非対応のほうかもしれませんが・・・
これは、元から入っているサンプルプログラムを実行して
映るかどうかを確認しよう ということですよね?
見当はずれなことを言っているかもしれませんが
ためしに、ShadowVolume.exeという名前の実行ファイルを起動してみました。
内容は、オブジェクトに対して1〜6個の光を選択して当てる(光源計算?)サンプルでした。
全部試してないですが、いくつか実行した結果全て映りました。
言うのが遅れたかもしれないのですが、家のデスク・学校のデスク・ノートの中では
ノートのスペックが一番低いです。(この辺りは関係ないんのですかね;)
278ポイント を手に入れた。
|
|
|
|
|
Name: 御津凪 [URL] ..熟練のプログラマー(50,819ポイント)
Date: 2009/01/20(火) 09:33
No:27187
|
|
Title: Re:同じプログラムを別のPCで実行すると。
|
|
> これは、元から入っているサンプルプログラムを実行して
> 映るかどうかを確認しよう ということですよね?
DirectX のほとんどのサンプルは、基本ハードで動作できない場合はダイアログか何か表示させた後、
リファレンスモード(描画処理等を全てCPU側で処理するモード)で起動するので、
まずは(どんなに時間がかかろうが必ず)表示されます。
(と、言うことは、リファレンスモードで実行するように変更すればノートでも表示されるかも)
上記に書いた DirectX Caps Viewer というのは、
パソコンのグラフィックボードの性能をチェックするツールです。
(利用できるテクスチャの最大サイズや、スクリーンモードでのカラーフォーマットの対応状況等)
このツールはチェック結果をテキストファイルに保存できるので、
ほかのPCと見比べて、何が違うのか調べてみるといいと思います。
(言い忘れていましたが、ノートPCにはDirectXの最新版は入っていますか?)
286ポイント を手に入れた。
|
|
|
|
|
Name: BEMANI ..入門者(4,222ポイント)
Date: 2009/01/20(火) 16:29
No:27223
|
|
Title: Re:同じプログラムを別のPCで実行すると。
|
|
>>御津凪さん
DirectXのバージョンは最新にしてあります!
何か色々と初めて聞く情報ばかりです;
グラフィックボードの性能をチェックできるツールだったんですね〜。
調べるのに結構時間かかりそうなので地道に調べていきます・・・。
ただ、並行して出来ないのが辛いですが;;
表示ができたら御報告に伺いたいと思います。
御津凪さん御親切にありがとうございます><
127ポイント を手に入れた。
|
|
|
|
|
Name: BEMANI ..初心者(5,197ポイント)
Date: 2009/01/21(水) 21:46
No:27393
| 解決!
|
Title: Re:同じプログラムを別のPCで実行すると。
|
|
とりあえず映るには映ったので報告に上がりました。
変更した場所は、CreateDevice(デバイスの作成)の第二引数なのですが、
D3DDEVTYPE_HAL と 書いていたものを D3DDEVTYPE_REF に変えてみました。
しかし、デスクトップと比べ画面の切り替わりや、
キャラクターの動き等、ゲーム自体の速度が極端に遅くなってしまっています。
そのあたりを今度調べていってみます。
一応、画面表示ができなかった・・・という問題はなくなりましたので
これにて解決とさせて頂きます。
そんなに処理が重いのかな;
御津凪さん、お付き合い頂きまして本当にありがとうございます><
79ポイント を手に入れた。
|
|
|
|
|
Name: 御津凪 [URL] ..熟練のプログラマー(51,845ポイント)
Date: 2009/01/21(水) 22:03
No:27395
|
|
Title: Re:同じプログラムを別のPCで実行すると。
|
|
> キャラクターの動き等、ゲーム自体の速度が極端に遅くなってしまっています。
まずゲームにはならないほどに遅くなります。
(描画も含め、全てをCPUで処理しているため)
それほどグラフィックカードでの計算が速いということです。
とりあえず映ったということは、ノートでは対応していない何かが関係しているわけですね。
がんばって原因を探してみてください。
114ポイント を手に入れた。
|
|
|
|
|
Name: BEMANI ..初心者(5,592ポイント)
Date: 2009/01/22(木) 00:00
No:27406
|
|
Title: Re:同じプログラムを別のPCで実行すると。
|
|
>>御津凪さん
気になったのでお友達の、自分よりかはスペックのいいノートPCで起動すると動きました。
やはり、なにかがダメなんですよね。
デスクトップで映るなら、先にゲームの方やってしまえばどうでしょう
と言われたのですが、ノートで映らないと作業時間が限られてしまうので本当に直さないとです。
>がんばって原因を探してみてください。
ありがとうございます><
頑張ってみます^^
もし、期待通りの動作になった時、報告に伺います!
206ポイント を手に入れた。
|
|
|
|
|
Name: BEMANI
Date: 2009/01/30(金) 19:53
No:271701233312796
| 解決!
|
Title: Re:同じプログラムを別のPCで実行すると。
|
|
正常に動作するようになりました〜。
これで、学校でも作業できます><
アドバイスを下さった方々、ありがとうございました!
|
|
|
|
Name: ぽにょ ..かけだし(1,321ポイント)
Date: 2009/01/19(月) 00:22
No:27113
|
|
Title: 質問です。
|
|
前回は色々とお世話になりました
また質問なのですが
入力した文字列(半角文字、最大20文字)を前後逆に入れ替え表示
入力した文字列の各文字の文字コードを前から順に10進数、16進数で表示
なのですが
私のアルゴリズムでは「配列[20]を用意し、文字列入力のメッセージを促す
fgetsで入力し、入れ替え、表示という感じで作成していこうと思っているのですが
これで大体いけそうな感じでしょうか?
また、入力した文字列の長さを調べるために
strlen関数を使ってみようと思っているのですが
これはヌル文字を除く長さを調べるということなのでしょうか?(本で調べてもよくわかりませんでした)
あと入力した文字列で、改行コードは表示、並び替えをしないためには
ヌル文字を入れればいいという考えでいいのでしょうか?
今のところ、考えはこれぐらいしかまとまっていませんが
助言の方よろしくお願いします。
404ポイント を手に入れた。
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(955,938ポイント)
Date: 2009/01/19(月) 00:34
No:27117
|
|
Title: Re:質問です。
|
|
手元にコンパイラはありますか?何のコンパイラをお使いですか?
後、わからないことはグーグルで調べるといいですよ。
例えばstrlenについて調べたいのなら単純にstrlenで検索すればいいです。
プログラムソースサンプルも出てきますし、解説も出てきます。
>これで大体いけそうな感じでしょうか?
いけそうだと思うなら、まず自分でコンパイルしてみましょう。
プログラムは人にきくよりまず自分でトライすることが大事です。
ただコードを完成させて、自分の思うとおりの動作をすることを確認したうえで、
あっているかどうかを聞くことは大事だと思います。
なお、エンター入力によって格納された改行コードを表示したくない場合で、そこまでを文字列としたいなら、
改行コードが入っている要素に終端記号を入れればいいです。
240ポイント を手に入れた。
|
|
|
|
|
Name: SCI ..初心者(6,398ポイント)
Date: 2009/01/19(月) 00:50
No:27121
|
|
Title: Re:質問です。
|
|
fgetsはgetsと違って改行文字も読むから注意が必要ですね。
最初はscanfを使って実装してもいいと思います。
もちろん、改行文字のとこに終端文字を入れるというのが最初から書ければそれで大丈夫です。
strlenは純粋に「文字数」を返します。終端文字は計算に入りません。
106ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(956,335ポイント)
Date: 2009/01/19(月) 00:56
No:27123
|
|
Title: Re:質問です。
|
|
後、本に載ってなかったり、ウェブの参考サイトを見つけることが出来なくても、
自分で書いて試してみたらいいのです。
#include<stdio.h>
#include<string.h>
int main(void){
char str[4];
str[0]='A';
str[1]='B';
str[2]='\n';
str[3]='\0';
printf("%sの文字数は%d個\n",str,strlen(str));
return 0;
}
実行結果
AB
の文字数は3個
190ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) [URL] ..伝説なるハッカー(956,476ポイント)
Date: 2009/01/19(月) 01:01
No:27124
|
|
Title: Re:質問です。
|
|
>>kazuoniさん
fが最初に付く関数は「入力先や出力先が指定出来る関数かな?」と思って調べるとだいたいあってることが多いです。
なお、「プログラムに詳しい人しか回答するな」的な雰囲気にはしたくないので、
これからも気軽にコメントして下さいね^^
多分先ほどのやり取りによってより読んでる人が、単なる質問に対するだけの回答より
わかりやすくなったりする場合もあると思うのでむしろ良い効果だと思います。
だいたい詳しい人しか回答出来ない掲示板だったら管理人が発言できn・・(ry
141ポイント を手に入れた。
|
|
|
|
|
Name: ぽにょ ..かけだし(1,400ポイント)
Date: 2009/01/21(水) 22:35
No:27399
| 解決!
|
Title: Re:質問です。
|
|
みなさん、ありがとうございました
今後は自分なりにコードを作成してから質問しようと思います
アルゴリズムがわからなかったらその時点で質問するかもしれませんが・・・
79ポイント を手に入れた。
|
|
|
|
Name: エムエム ..ぴよぴよ(113ポイント)
Date: 2009/01/21(水) 20:48
No:27382
|
|
Title: 13章で詰まっています
|
|
こんばんは
C言語のになれようと13章まで来ましたが
13章の説明文中に出てくるプログラムですが
あれが追加なのか変更なのか、はたまた只の
説明なのかが分からず、何度やってもコンパイルエラーが出ます。
かなり初歩の質問かとは思いますが、ヨロシクお願い致します。
113ポイント を手に入れた。
|
|
|
|
Name: box ..ハッカー(133,692ポイント)
Date: 2009/01/21(水) 20:55
No:27383
|
|
Title: Re:13章で詰まっています
|
|
> 13章の説明文中に出てくるプログラムですが
> あれが追加なのか変更なのか、はたまた只の
> 説明なのかが分からず、何度やってもコンパイルエラーが出ます。
この文面からでは、どういうソースコードをコンパイルしたときに
どんなエラーが出たのかが全くわかりません。
ソースコードやエラーメッセージを貼り付けるなどの方法で、
現在の状況をできるだけ詳しく教えてください。
82ポイント を手に入れた。
|
|
|
|
|
Name: yu ..初心者(6,364ポイント)
Date: 2009/01/21(水) 21:10
No:27387
|
|
Title: Re:13章で詰まっています
|
|
龍神録プログラミングの館の13章のことでしたら、
ダウンロードしたファイル内の13章のフォルダを開けば変更、追加された箇所が
龍神録の館で説明があった通りになっていますよ。
勘違いでしたらすみません;
89ポイント を手に入れた。
|
|
|
|
|
Name: エムエム ..ぴよぴよ(332ポイント)
Date: 2009/01/21(水) 21:11
No:27388
|
|
Title: Re:13章で詰まっています
|
|
早速のお返事、ありがとうございます
<enemy.cpp> の 赤字の部分の追加するのはわかるのですが、その後の
<define.h>、<struct.h>のプログラムは追加しましょうとは説明は無いのですが追加すべきなのか?
その後<shot.cpp>に関するプログラムが3つ出てくるのですがそれらは全て加えるべきか?
<music.cpp>も追加してみたのですが以下の様なエラーが出ます↓
1>c:\documents and settings\(ユーザー名)\デスクトップ\project\龍神録プロジェクト\1章\mydat\source\music.cpp(4) : error C2065: 'se_flag' : 定義されていない識別子です。
219ポイント を手に入れた。
|
|
|
|
|
Name: エムエム ..ぴよぴよ(365ポイント)
Date: 2009/01/21(水) 21:20
No:27389
|
|
Title: Re:13章で詰まっています
|
|
>yu様
その方法がありましたねw
あ、個人情報だだ漏れww管理人様、削除か編集お願いしますw
33ポイント を手に入れた。
|
|
|
|
Name: TT ..ぴよぴよ(16ポイント)
Date: 2009/01/21(水) 18:24
No:27345
|
|
Title: 無題
|
|
はじめまして。疑問があったので質問させていただきます。
#include <stdio.h>
int main(void){
int i;
int x;
i = 1;
int x = 2 * i;
printf("x = %d\n", x);
i = 2;
printf("x = %d\n", x);
return 0;
}
これを実行すると"x = 2 x = 2"となってしまいます。i = 2が代入されて"x = 2 x = 4"とはならないのでしょうか。
またこれを"printf("x = %d\n", 2 * i);"と記述する以外で実現するにはどうすればいいのでしょうか。
16ポイント を手に入れた。
|
|
|
|
Name: 御津凪 [URL] ..熟練のプログラマー(51,615ポイント)
Date: 2009/01/21(水) 18:37
No:27357
|
|
Title: Re:無題
|
|
ただの変数は他の変数の値の変更によって、値が変化することはありません。
(VBなどのプロパティではないので)
void update(int& x,int i){
x = 2 * i;
}
int main(void){
int i;
int x;
i = 1;
update(x,i);
printf("x = %d\n", x);
i = 2;
update(x,i);
printf("x = %d\n", x);
return 0;
}
これなら恐らく希望通りの動作になると思いますがどうでしょうか。
あと、 x が二度宣言されています。(警告出ていませんか?)
219ポイント を手に入れた。
|
|
|
|
|
Name: ざこ ..中級者(13,575ポイント)
Date: 2009/01/21(水) 18:42
No:27362
|
|
Title: Re:無題
|
|
プログラムは上から下にいってますから後からi=2としても代入されないのでは?
int main(void){
int i;
int x;
i = 1;
x = 2 * i;
printf("x = %d\n", x);
i = 2;
x = 2 * i;
printf("x = %d\n", x);
return 0;
}
にしたら2,4になりました。同じ文2回きてしまってるので御津さんのように関数使った方がいいですね。
191ポイント を手に入れた。
|
|
|
|
|
Name: kazuoni [URL] ..熟練のプログラマー(50,598ポイント)
Date: 2009/01/21(水) 18:43
No:27363
|
|
Title: Re:無題
|
|
>>御津凪さん
void update(int *x,int i){
*x = 2 * i;
}
int main(void){
int i;
int x;
i = 1;
update(&x,i);
printf("x = %d\n", x);
i = 2;
update(&x,i);
printf("x = %d\n", x);
return 0;
}
じゃないですか?
201ポイント を手に入れた。
|
|
|
|
|
Name: フリオ ..プログラマー(28,700ポイント)
Date: 2009/01/21(水) 19:22
No:27376
|
|
Title: Re:無題
|
|
>コードの後に変数宣言があったので、C++ のコードとして解釈しました。
>なのであのコードは C++ のコードです。
現行の"C"(C99)では、ブロックの途中で変数を宣言することが許されているので、
それだけで質問のコードが"C++"と解釈することは出来ないです。
むしろ、コード全体の様子を見ると、"C"と解釈する方が自然ではないでしょうか。
141ポイント を手に入れた。
|
|
|
|
|
Name: TT ..ぴよぴよ(145ポイント)
Date: 2009/01/21(水) 19:40
No:27379
| 解決!
|
Title: Re:無題
|
|
すいません。間違えたのを貼り付けてました。実行したのは宣言を一回に修正した後のものです。
printfでxの式が呼び出されるのだと思っていました。関数を作って使おうと思います。
お答えいただきありがとうございました。
あと勉強してるのはC++なんですが質問のためにCで書いたつもりです。混乱させてしまったようで申し訳ありません。
129ポイント を手に入れた。
|
|
|
|
Name: ひよこ ..中級者(9,745ポイント)
Date: 2009/01/21(水) 18:26
No:27348
|
|
Title: ただいまスーパーマリオブラザーズぽいものを
|
|
ただいまスーパーマリオブラザーズぽいものを作っているのですが。
DXライブラリのジャンプの改良で作っているのですが。
スーパーマリオブラザーズは穴があって上にいったら落ちるじゃないですか。
しかしおちるようなプログラムを書くと落ちてくる位置がちがったりしてうまくいきません。
どうすればいいでしょうか?私的にはif( 200<=PlayerX<=240 && PlayerY==355 ){PlayerY = 355 ;JumpPower = -1 ;}のところだと思っているのですが。PlayerYの値を変更したら落ちてくる位置がちがくなってしまうんです。どうすればいいでしょうか?
// ジャンプ
#include "DxLib.h"
int PlayerX , PlayerY ;
int JumpPower ;
int PlayerGraph ;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
ChangeWindowMode(TRUE);
if (DxLib_Init() == -1) return -1;
char Key[256];
SetGraphMode( 640,480,16 ) ;
// 描画先画面を裏画面にセット
SetDrawScreen( DX_SCREEN_BACK ) ;
// グラフィックのロード
PlayerGraph = LoadGraph( "star1.bmp" ) ;
// キャラクターの初期データをセット
PlayerX = 0 ;
PlayerY = 0 ;
JumpPower = 0 ;
int White;
White = GetColor( 255 , 255 , 255 ) ; // 白色の値を取得
// ループ
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE])
{
//↑メッセージ処理 ↑画面をクリア ↑キーボード入力状態取得 ↑ESCが押されていない
if (Key[KEY_INPUT_UP]== 1) PlayerY -= 3; // 上を押していたら上に進む
if (Key[KEY_INPUT_DOWN]== 1) PlayerY += 3 ; // 下を押していたら下に進む
if (Key[KEY_INPUT_RIGHT]== 1) PlayerX += 3 ; // 右を押していたら右に進む
if (Key[KEY_INPUT_LEFT]== 1) PlayerX -= 3 ; // 左を押していたら左に進む
PlayerY -= JumpPower ;// 落下処理
JumpPower -= 1 ;// 落下加速度を加える
// もし地面についていたら止まる
if( PlayerY > 355 )
{
PlayerY = 355 ;
JumpPower = 0 ;
}
if( 200<=PlayerX<=240 && PlayerY==355 )
{
PlayerY = 355 ;
JumpPower = -1 ;
}
// ジャンプボタンを押していて、地面についていたらジャンプ
if ((Key[KEY_INPUT_A]==1) && PlayerY == 355 ) JumpPower = 20 ;
ClearDrawScreen() ;// 画面を初期化する
DrawGraph( PlayerX , PlayerY , PlayerGraph , TRUE ) ;// プレイヤーを描画する
DrawBox ( 0 , 384 , 200 , 480 , White , TRUE ) ;
DrawBox ( 240, 384 , 640 , 480 , White , TRUE ) ;
// 裏画面の内容を表画面に反映させる
ScreenFlip() ;
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
よろしくお願いします。
728ポイント を落としてしまった。
|
|
|
|
Name: Mist ..熟練のプログラマー(43,898ポイント)
Date: 2009/01/21(水) 18:32
No:27350
|
|
Title: Re:ただいまスーパーマリオブラザーズぽいものを
|
|
いや、だからC言語の基本勉強しましょうよ。
> if( 200<=PlayerX<=240 && PlayerY==355 )
範囲を書きたいのなら
if (200<= PlayerX && PlayerX<=240 && PlayerY==355 )
だよ。
45ポイント を手に入れた。
|
|
|
|
|
Name: ひよこ ..中級者(9,869ポイント)
Date: 2009/01/21(水) 18:57
No:27370
|
|
Title: Re:ただいまスーパーマリオブラザーズぽいものを
|
|
おちるようにはなりましたが、処理が止まって→いきなり落下
これをゆっくりおとしていくにはどうすればいいでしょうか?
ソースはif( 200<=PlayerX<=240 && PlayerY==355 ){PlayerY = 355 ;JumpPower = -1 ;}から
if(200<= PlayerX && PlayerX<=240 && PlayerY==355 ) {for(PlayerY=355; PlayerY<=480;PlayerY-= 2);}
にしか変更していません。
119ポイント を手に入れた。
|
|
|
|
|
Name: Mist ..熟練のプログラマー(43,939ポイント)
Date: 2009/01/21(水) 19:07
No:27374
|
|
Title: Re:ただいまスーパーマリオブラザーズぽいものを
|
|
> for(PlayerY=355; PlayerY<=480;PlayerY-= 2)
この式理解出来てますか?
「PlayerYを355から始めて、PlayerYが480以下ならループを継続して、1ループごとにPlayerYから2を引く」
これはひよこさんが意図するものと合っていますか?
#
前にも言いましたがC言語の基礎を勉強して、元のプログラムがどのように処理しているのかをきちんと理解してからでないと、改造するのは無理です。
耳に痛い意見は聞こえない人っぽいけど。
19ポイント を手に入れた。
|
|
|
|
|
Name: ひよこ ..中級者(9,902ポイント)
Date: 2009/01/21(水) 19:16
No:27375
| 解決!
|
Title: Re:ただいまスーパーマリオブラザーズぽいものを
|
|
わかりました。1度勉強してきます。
答えてくださったみなさんありがとうございます。
33ポイント を手に入れた。
|
|
|
|
|
Name: s-rush ..上級者(16,633ポイント)
Date: 2009/01/21(水) 19:27
No:27377
|
|
Title: Re:ただいまスーパーマリオブラザーズぽいものを
|
|
見た感じ、あまり基本的なことを理解していないのではないですか??
という私もまだまだ未熟ですが^^;
スーパーマリオブラザーズっぽいゲームを作っていらっしゃるようですが、
まだ知識的にも手を出すのは早いような気がします。
今までひよこさんがどれだけ勉強してきたのかは分からないですが、
もうちょっと基本的なことをしっかりマスターしたうえで
ゲームを作るようにされた方がいいと思いますよ。
参考書に書かれているような課題からまず始めてみてはいかがでしょう?
前々から見ていて少し気になったので、一言だけ言わせていただきました。
258ポイント を手に入れた。
|
|
|
|
Name: a ..ぴよぴよ(40ポイント)
Date: 2009/01/18(日) 17:08
No:27058
|
|
Title: 無題
|
|
コンパイルしようとするとメモ帳が開くんですけど・・・
OSはVista preでボーランドC++使ってます。
40ポイント を手に入れた。
|
|
|
|
Name: a ..ぴよぴよ(181ポイント)
Date: 2009/01/18(日) 18:04
No:27064
|
|
Title: Re:無題
|
|
すいません。
最近C言語を勉強しようと、いろいろサイトなどを見に行ったりしてるんですが、
まだプログラムなどを作ったことがなかったので、「簡単なプログラムをまずは試しにやってみよう。」
と思い、サイトの説明などを見てソースをメモ帳にコピペして名前を「test.c」ファイルの種類を「すべてのファイル」で保存しました。
そしてコマンドプロンプトでコンパイラしようと思ったのですが、
サイトの説明通りに進めていっても、最終的にメモ帳が開いてしまいます。
言いたいこと
Cファイルと拡張子がなっているのにメモ帳で開ける。
141ポイント を手に入れた。
|
|
|
|
|
Name: jag ..ぴよぴよ(720ポイント)
Date: 2009/01/18(日) 18:14
No:27065
|
|
Title: Re:無題
|
|
拡張子が.cでも中身はテキストですからメモ帳でも開けるのは当然だと思います。
コンパイルについては詳しくないですが、windowsのコマンドプロンプトではCのコンパイルはできないんじゃないでしょうか。
別にコンパイラを用意する必要があるかと。
僕はgccを使ってコンパイルしています。
125ポイント を手に入れた。
|
|
|
|
|
Name: a ..ぴよぴよ(263ポイント)
Date: 2009/01/18(日) 18:26
No:27066
|
|
Title: Re:
|
|
わかりました。
ほかのコンパイラ使おうと思います。
ありがとうございましたm(_ _)m
2倍のポイントを手に入れた! 82ポイント を手に入れた。
|
|
|
|
|
Name: a ..ぴよぴよ(410ポイント)
Date: 2009/01/18(日) 20:23
No:27084
|
|
Title: Re:無題
|
|
VisualC++というのをインストロールしようとしたのですが、
インストロールに40分ぐらいかかって、その後に、「今すぐ再起動します」と「後で再起動します」
というウィンドウが出て、今すぐ再起動しますを選んだんですけど
プログラムが見つかりません><。
どうしたらいいでしょうか。
147ポイント を手に入れた。
|
|
|
|
|
Name: non ..プログラマー(30,854ポイント)
Date: 2009/01/18(日) 20:33
No:27090
|
|
Title: Re:無題
|
|
>プログラムが見つかりません><。
再起動はもちろんすると思いますが・・・
何のプログラムが見つからないのですか?
どうしてもうまくいかないなら、CDに1回落とした方がいいけどね。
雑誌の付録探すとか。
70ポイント を落としてしまった。
|
|
|
|
|
Name: a ..ぴよぴよ(473ポイント)
Date: 2009/01/20(火) 22:36
No:27245
|
|
Title: Re:無題
|
|
VisualC++がすべてのプログラムの中にありません><。
ちゃんと再起動したのになんででしょう?
2倍のポイントを手に入れた! 52ポイント を手に入れた。
|
|
|
|
|
Name: a ..ぴよぴよ(497ポイント)
Date: 2009/01/20(火) 23:23
No:27248
|
|
Title: Re:無題
|
|
再インストールしたらできました^^
このあとはどうすれば?
24ポイント を手に入れた。
|
|
|
|
|
Name: a ..ぴよぴよ(506ポイント)
Date: 2009/01/21(水) 17:19
No:27320
|
|
Title: Re:無題
|
|
とりあえず練習でもしたいんですが、
Vistaで使う場合は何か設定しておくことがあると聞いたのですが?
9ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) ..伝説なるハッカー(964,188ポイント)
Date: 2009/01/21(水) 17:28
No:27325
|
|
Title: Re:無題
|
|
Vistaでも特に設定の必要は無いと思いますが、
やりたいことによってはVistaに限らず設定が必要です。
まず完全に入門レベルなのでしたら
「C言語 入門」と検索して出てくる参考サイトを参考にしながら
ひたすらプログラムを書いてはコンパイルし、
色々得た知識を元に自分でプログラム書いて勉強していくことになるでしょう。
104ポイント を手に入れた。
|
|
|
|
|
Name: YuO ..プログラマー(27,894ポイント)
Date: 2009/01/21(水) 18:01
No:27334
|
|
Title: Re:無題
|
|
えーっと,Program Filesの下に保存するようなことはやめることが無難です。
昇格しないと書き込むことがそもそもできません。
# というか,どうやってtest.cを保存したのかが疑問……。
自分のドキュメントの下にプログラム用のフォルダを作って,そこにファイルを保存してください。
次に,エクスプローラで上記のフォルダをシフトを押しながら右クリック→パスとしてコピーしておき,
Visual Studio 2008 コマンド プロンプトを開きます。
さらに,cd と入力後,先にクリップボードに保存しておいたパスを貼り付け,Enterを押します。
# コマンドプロンプトのアイコンクリック→編集→貼り付け
これで,コンパイルができるはずです。
158ポイント を手に入れた。
|
|
|
|
|
Name: non ..プログラマー(31,745ポイント)
Date: 2009/01/21(水) 18:15
No:27339
|
|
Title: Re:無題
|
|
VisualC++っていりいろできるから、却って初心者にはわかりにくいですよね。
BC++を勧めたけど、VC++がよいなら、とりあえず次のようにやってみましょう。
1.VC++を起動します。
2.ファイル−新規作成−プロジェクト
3.空のCLRプロジェクトを選択し、プロジェクト名に例えば EX1 と入力する。
自動的にソリューション名も EX1になる。OKを押す
4.左端のソースファイルの上で右クリックし、追加−新しい項目を選ぶ。
5.カテゴリのコードを選び、テンプレートのC++ファイル選ぶ。ファイル名に Hello と入力。
追加ボタンを押す
6.プログラムを入力する。試しに次のように入力。
#include <stdio.h>
int main(void)
{
printf("Hello\n");
return 0;
}
7.デバッグ−デバッグなしで開始をクリック。
8.自動的にコンパイル、リンクがされて、エラーがなければ、DOS窓が開いて
Helloと表示されるはず。
ここまでできますか?
280ポイント を手に入れた。
|
|
|
|
|
Name: non ..プログラマー(31,816ポイント)
Date: 2009/01/21(水) 18:28
No:27349
|
|
Title: Re:無題
|
|
>3.空のCLRプロジェクトを選択し、プロジェクト名に例えば EX1 と入力する。
空のCLRといってますが・・・
ex2で再度作ってみてください。
51ポイント を手に入れた。
|
|
|
|
|
Name: non ..プログラマー(31,911ポイント)
Date: 2009/01/21(水) 18:40
No:27360
|
|
Title: Re:無題
|
|
それでいいです。それでは、後は、同じようにプロジェクトを作って試していくか、
ソースコードの部分を書き直すか、ソリューションのHello.cppを削除して、新しい
ソースファイルを作って入力するか、お好みで勉強していってください。
95ポイント を手に入れた。
|
|
|
|
|
Name: a ..ぴよぴよ(590ポイント)
Date: 2009/01/21(水) 18:42
No:27361
| 解決!
|
Title: Re:無題
|
|
はい。
わかりました。
色々ありがとうございました^^
6ポイント を手に入れた。
|
|
|
|
Name: みかんのかわ ..ぴよぴよ(570ポイント)
Date: 2009/01/21(水) 17:29
No:27326
|
|
Title: 無題
|
|
敵の行動パターンとして∞(8の字運動?)の動きを作ろうと考えています。
∞の中心からスタートし、円運動→1周したらy座標の動きを変えて再び円運動という流れにしようと考えています。
今円運動を実装するところまでできたのですが、1周した際に上手く角度を変える事
ができません。
まず一週したという条件をx,y座標でとろうとするとうまくできません。
通るときと通らないときがあるため、他の方法をさがそうと思うのですが思い付きません。
(このようなかんじで→if(enemy_x == centerX && enemy_y == centerY))
(1周する時間をはかり、その時間が来たら、という条件とかでもよいのかもしれませんが…)
次に、一周した時点でy座標を変えるところがよくわかっていません。
以下ソースの一部です。
よろしくお願いします。
// 円運動
float enemy_x = initX +
radius*cos( enemyAngleSpeed*time );
float enemy_y =initY +
radius*sin( enemyAngleSpeed*time );
333ポイント を手に入れた。
|
|
|
|
Name: Dixq (管理人) ..伝説なるハッカー(963,972ポイント)
Date: 2009/01/21(水) 17:37
No:27328
|
|
Title: Re:無題
|
|
DXライブラリのサンプルプログラムです。
#include "DxLib.h"
#include <math.h>
#define PI2 (3.1415926*2)
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode(TRUE);//ウィンドウモード
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
int t=0;
int x,y;
while(ProcessMessage()==0 && ClearDrawScreen()==0 && CheckHitKey(KEY_INPUT_ESCAPE)==0){
//↑メッセージ処理 ↑画面をクリア ↑ESCが押されていない
x = cos(PI2/120*(t%120))*200 +320;
y = sin(PI2/ 60*(t% 60))*100 +240;
DrawCircle(x,y,5,GetColor(255,255,255),TRUE);
t++;
ScreenFlip();
}
DxLib_End();
return 0;
}
230ポイント を落としてしまった。
|
|
|
|
|
Name: Dixq (管理人) ..伝説なるハッカー(964,459ポイント)
Date: 2009/01/21(水) 17:43
No:27330
|
|
Title: Re:無題
|
|
それともこんな感じでしょうか?
#include "DxLib.h"
#include <math.h>
#define PI2 (3.1415926*2)
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode(TRUE);//ウィンドウモード
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
int t=0;
int x,y;
while(ProcessMessage()==0 && ClearDrawScreen()==0 && CheckHitKey(KEY_INPUT_ESCAPE)==0){
//↑メッセージ処理 ↑画面をクリア ↑ESCが押されていない
x = (t/120)%2 ? cos(PI2/120*(t%120))*100+320-100 : -cos(PI2/120*(t%120))*100+320+100;
y = sin(PI2/120*(t%120))*100 +240;
DrawCircle(x,y,5,GetColor(255,255,255),TRUE);
t++;
ScreenFlip();
}
DxLib_End();
return 0;
}
487ポイント を手に入れた。
|
|
|
|
|
Name: Dixq (管理人) ..伝説なるハッカー(964,631ポイント)
Date: 2009/01/21(水) 17:51
No:27332
|
|
Title: Re:無題
|
|
上の計算何やってるかわからないかもしれないので、定義してみました。
#define T 120 //周期
#define XRANGE 100 //X方向の円の大きさ
#define YRANGE 100 //Y方向の円の大きさ
#define FDX 640 //横画面サイズ
#define FDY 480 //縦画面サイズ
x = (t/T)%2 ? cos(PI2/T*(t%T))*XRANGE+FDX/2-XRANGE : -cos(PI2/T*(t%T))*XRANGE+FDX/2+XRANGE;
y = sin(PI2/T*(t%T))*YRANGE +FDY/2;
なお、トピックにはわかりやすい名前を付けて下さい。
132ポイント を手に入れた。
|
|
|
|
|
Name: みかんのかわ ..ぴよぴよ(754ポイント)
Date: 2009/01/21(水) 18:14
No:27337
| 解決!
|
Title: Re:無題
|
|
>Dixq (管理人)さま
すばやい解答をありがとうございます。
2番目のレスを実行してみたところ∞の形にうごきました。
良く考えてみると、y=cosθ,y=sinθ(sin,cosのグラフ)の動きを合わせて
(というと語弊がありそうですが…)
作っていたのを思い出しました。
yの運動量がxの運動量の半分になる(というか運動量が等しくないと)
ときれいな円運動でなくなるのだと波打った形になるのですね。
解決しました、ありがとうございました。
トピックの件失礼しました。今後気を付けたいと思います。
184ポイント を手に入れた。
|
|
|
|
|
Name: みかんのかわ ..ぴよぴよ(910ポイント)
Date: 2009/01/21(水) 18:16
No:27340
|
|
Title: Re:無題
|
|
すみません。間違えました。
× 良く考えてみると、y=cosθ,y=sinθ(sin,cosのグラフ)の動きを合わせて
(というと語弊がありそうですが…)
作っていたのを思い出しました。
○ 良く考えてみると、円運動はy=cosθ,y=sinθ(sin,cosのグラフ)の動きを合わせて
(というと語弊がありそうですが…)
作っていたのを思い出しました。
それではありがとうございました。
156ポイント を手に入れた。
|
|
|
|
|