C言語何でも質問掲示板


アンケートにご協力下さい → >> アンケートフォーム <<

規約と使い方

 
   2分探索木--トラバー ....   
     ・[13049] box 
     ・[13053] parapara 
     ・[13054] parapara 
   定積分の計算 パート ....   
     ・[13033] フリオ 
     ・[13034] 幻 
     ・[13037] 幻 
     ・[13041] 雷 
     ・[13044] box 
     ・[13048] 幻 
   構造体について   
     ・[12970] box 
     ・[13046] hum-king 
   テトリス作成   
     ・[12624] バグ 
     ・[12634] ひこ 
     ・[12645] ぜt 
     ・[12646] ひこ 
     ・[12647] バグ 
     ・[12650] ぜt 
     ・[12658] ぜt 
     ・[12662] ひこ 
     ・[12670] ぜt 
     ・[12671] バグ 
     ・[12672] ひこ 
     ・[12675] ぜt 
     ・[12763] ぜt 
     ・[12972] ぜt 
     ・[12974] tkmakwins15 
     ・[12981] ぜt 
     ・[12984] 管理人 
     ・[12987] tkmakwins15 
     ・[12990] ぜt 
     ・[13036] ぜt 
     ・[13039] 雷 
     ・[13042] tkmakwins15 
     ・[13045] ぜt 
     ・[126221200748394] ぜt 
     ・[126221200748690] ぜt 
   うまく円運動させられ ....   
     ・[13040] 雷 
     ・[13043] tkmakwins15 
   クラスのメンバの、構 ....   
     ・[12986] たかぎ 
     ・[12988] バグ 
     ・[13005] 木霊 
     ・[13009] バグ 
     ・[13020] 木霊 
     ・[13021] hoge 
     ・[13022] 木霊 
   定積分の計算   
     ・[13001] box 
     ・[13003] 幻 
     ・[13004] box 
     ・[13014] 幻 
     ・[13016] box 
     ・[13017] 幻 
     ・[13018] box 
     ・[13019] parapara 
   爆弾の爆発範囲につい ....   
     ・[12913] しりうす〜 
     ・[12922] いよかん 
     ・[13015] いよかん 
   4ビットのビットマップ ....   
     ・[12999] NIKE 
     ・[13010] JEX 
     ・[13013] NIKE 
   構造体の書き方   
     ・[13008] box 
     ・[13012] iz 
   助けてください!!!   
     ・[13006] 管理人 
     ・[13011] ultimagaweapon(wakka ver.) 
   繰り返し   
     ・[12996] やそ 
     ・[12997] Hermit 
   フラッシュ暗算   
     ・[12992] tkmakwins15 
     ・[12994] 風雨 
     ・[12995] tkmakwins15 
   回転   
     ・[12938] バグ 
     ・[12939] バグ 
     ・[12940] バグ 
     ・[12978] chunezu 
     ・[12982] tkmakwins15 
     ・[12989] バグ 
   ppmファイルからデータ ....   
     ・[12963] toyo 
     ・[12964] toyo 
     ・[12975] ナオ 
     ・[12976] 組木紙織 
     ・[12983] ナオ 
   もじぴったん   
     ・[12961] バグ 
     ・[12966] tkmakwins15 
     ・[12967] やそ 
     ・[12969] 管理人 
     ・[12971] 管理人 
     ・[12973] やそ 
     ・[12977] tkmakwins15 
     ・[12979] たかぎ 
     ・[12980] 通りすがり 
   「お待ちください」ウ ....   
     ・[12862] Hermit 
     ・[12863] YuO 
     ・[12866] ルファー 
     ・[12867] へろり 
     ・[12870] ルファー 
     ・[12878] YuO 
     ・[12954] ルファー 
     ・[12957] YuO 
     ・[12958] Hermit 
     ・[12965] ルファー 
   Hex→Float変換   
     ・[12952] box 
     ・[12953] Hermit 
     ・[12962] sato 
   セグメンテーション違 ....   
     ・[12930] Hermit 
     ・[12931] hum-king 
     ・[12932] Hermit 
     ・[12933] hum-king 
     ・[12934] フリオ 
     ・[12935] hum-king 
     ・[12936] box 
     ・[12960] hum-king 
   文字列の終端について ....   
     ・[12956] box 
   C言語、ファイル読み込 ....   
     ・[12950] box 
   画像をすばやく表示す ....   
     ・[12943] バグ 
     ・[12948] takk 
   無題   
     ・[12944] たかぎ 
     ・[12945] \n 
     ・[12946] VCユーザ 
   DirectXのジョイパッド ....   
     ・[12929] はね 
   vectorのpush_back()が ....   
     ・[12924] YuO 
     ・[12925] たかぎ 
     ・[12927] tkmakwins15 
   課題が出されています ....   
   空白文字について   
     ・[12909] keichan 
     ・[12910] keichan 
     ・[12911] k36t 
     ・[12919] たかぎ 
     ・[12920] 通りすがり 
   ウィンドウ、フルスク ....   
     ・[12917] 管理人 
     ・[12918] AAA 
   質問です。   
     ・[12907] やそ 
     ・[12908] 管理人 
   無題   
     ・[12900] tkmakwins15 
      
     ・[12891] miyaza 
     ・[12892] box 
     ・[12893] tkmakwins15 
     ・[12894] Lbfuvab 
     ・[12895] tkmakwins15 
     ・[12896] mt 
     ・[12897] 組木紙織 
     ・[12898] 組木紙織 
   わからない   
     ・[12887] Lbfuvab 
     ・[12889] 管理人 
   ウィンドにならない   
     ・[12888] 管理人 
   ゲームプログラミング ....   
     ・[12883] 管理人 
     ・[12886] ピエロ 
   C言語でのPICプロ ....   
     ・[12858] Hermit 
     ・[12872] 夕月 
     ・[12875] box 
     ・[12876] Hermit 
     ・[12877] box 
     ・[12881] 夕月 
   コンパイラー   
     ・[12854] 組木紙織 
     ・[12856] VOW 
     ・[12868] シン 
     ・[12869] バグ 
     ・[12880] たかぎ 
   リストから削除につい ....   
     ・[12873] box 
     ・[12874] parapara 
     ・[12879] parapara 
   グローバル変数?   
     ・[12864] たかぎ 
     ・[12865] tkmakwins15 
   多倍長演算   
     ・[12845] box 
     ・[12847] たかぎ 
     ・[12860] ぶたくん 
   チェスソフト   
   ループとキー入力   
     ・[12678] 管理人 
     ・[12699] link 
     ・[12701] 管理人 
     ・[12708] 管理人 
     ・[12851] link 
     ・[12852] link 
   レーザーのような弾の ....   
     ・[12849] はね 
     ・[12850] なよ 
   ソート   
     ・[12848] たかぎ 
   自機と敵の接触につい ....   
     ・[12836] やそ 
     ・[12838] AAA 
     ・[12839] GPGA 
     ・[12840] やそ 
     ・[12846] AAA 
   質問です。   
     ・[12805] 神奈川 
     ・[12806] tkmakwins15 
     ・[12808] 神奈川 
     ・[12809] tkmakwins15 
     ・[12810] 神奈川 
     ・[12811] tkmakwins15 
     ・[12812] 神奈川 
     ・[12813] tkmakwins15 
     ・[12815] 神奈川 
     ・[12824] tkmakwins15 
     ・[12842] マルチポスト 
   配列   
     ・[12828] Blue 
     ・[12830] なな 
     ・[12841] TT414 
   GetRand関数についての ....   
     ・[12803] tkmakwins15 
     ・[12821] カルディ  
     ・[12825] tkmakwins15 
     ・[12837] カルディ  
   最短経路問題の応用   
     ・[12829] 組木紙織 
     ・[12831] chip 
     ・[12833] hum-king 
   二段ジャンプについて   
   日本語入力   
     ・[12826] やそ 
   質問です!   
     ・[12766] バグ 
     ・[12767] つばさ 
     ・[12768] バグ 
     ・[12769] つばさ 
     ・[12770] バグ 
     ・[12771] つばさ 
     ・[12772] やそ 
     ・[12773] バグ 
     ・[12774] つばさ 
     ・[12775] box 
     ・[12776] バグ 
     ・[12777] つばさ 
     ・[12778] つばさ 
     ・[12779] バグ 
     ・[12780] つばさ 
     ・[12781] バグ 
     ・[12782] つばさ 
     ・[12786] box 
     ・[12791] フリオ 
     ・[12793] つばさ 
     ・[12794] tkmakwins15 
     ・[12795] つばさ 
     ・[12796] box 
     ・[12797] つばさ 
     ・[12798] box 
     ・[12799] つばさ 
     ・[12800] tkmakwins15 
     ・[12801] tkmakwins15 
     ・[12804] フリオ 
     ・[12807] つばさ 
     ・[12817] バグ 
     ・[12818] box 
     ・[12820] バグ 
     ・[12823] つばさ 
   決定性有限オートマト ....   
     ・[12566] フリオ 
     ・[12567] バグ 
     ・[12607] DDK 
     ・[12612] バグ 
     ・[12673] DDK 
     ・[12685] chip 
     ・[12734] kanata 
     ・[12735] chip 
     ・[12822] S大2年 
   改行文字   
     ・[12750] Hermit 
     ・[12752] 組木紙織 
     ・[12783] Hermit 
     ・[12819] 組木紙織 
   他言語   
     ・[12802] tkmakwins15 
     ・[12814] Blue 
     ・[12816] イー 
   再帰   
     ・[12649] box 
     ・[12655] うしくん 
     ・[12656] parapara 
     ・[12657] うしくん 
     ・[12659] フリオ 
     ・[12683] parapara 
     ・[12753] うしくん 
     ・[12754] フリオ 
     ・[12755] フリオ 
     ・[12756] フリオ 
     ・[12790] うしくん 

Name: parapara  ..上級者(15,760ポイント)   Date: 2008/01/02(水) 16:35   No:13047       
Title: 2分探索木--トラバーサルの非再帰版    

OS:XP-pro
開発環境:VC++.NET2002
トラバーサル(全て探索)の所が全く分かりません。
以下の//********の所です
何度もシミュレーションしてみたのですが・・・
#include<stdio.h>//2分探索木--トラバーサルの非再帰版
#include<string.h>
#include<stdlib.h>
#define MaxSize 256
struct tnode{
struct tnode *left;
char name[20];
struct tnode *right;
}*temp1,*temp2,*head,*w[128];
struct tnode *gentree(struct tnode *a,struct tnode *temp2);
void search(char *key,struct tnode *a);
void disp(struct tnode *a);
void _free(struct tnode *a);
int main(void){
temp1=(struct tnode *)malloc(sizeof(struct tnode));
temp1->right=temp1->left=NULL;temp1->name[0]='\0';
head=temp1;
disp(head);
while(1){
temp2=(struct tnode *)malloc(sizeof(struct tnode));
temp2->left=temp2->right=NULL;
printf("追加したい名前>>");
if(fscanf(stdin,"%s",temp2->name)==EOF)break;
rewind(stdin);
gentree(head,temp2);
disp(head);
}
while(1){
printf("探したい人の名前を入力して下さい>>");
if(fscanf(stdin,"%s",temp2->name)==EOF)break;
rewind(stdin);
search(temp2->name,head);
disp(head);
}
free(temp2);
_free(head);
return(0);
}
struct tnode *gentree(struct tnode *head,struct tnode *temp2){
struct tnode *i=head;
if(i==NULL)return(temp2);
if(strcmp(i->name,temp2->name)>0)i->left=gentree(i->left,temp2);
else if(strcmp(i->name,temp2->name)<0)i->right=gentree(i->right,temp2);
else printf("名前:%sは既にいますので追加できません\n",temp2->name);
return(i);
}
void search(char *key,struct tnode *head){
struct tnode *i=head;
if(i==NULL){
printf("名前:%sはいません\n",key);
return;
}
if(strcmp(i->name,key)>0)search(key,i->left);
else if(strcmp(i->name,key)<0)search(key,i->right);
else{
printf("名前:%sは見つかりました\n",i->name);
printf("%10p%10s%10p\n",i->left,i->name,i->right);
}
}
void disp(struct tnode *head){
int sp=0;
struct tnode *temp1=head->right;
while(!(sp==0&&temp1==NULL)){ //****************************
while(temp1!=NULL){ //****************************
w[sp++]=temp1; //****************************
temp1=temp1->left; //****************************
} //****************************
sp--; //****************************
printf("%s\n",w[sp]->name); //****************************
temp1=w[sp]->right; //****************************
} //****************************
}
void _free(struct tnode *a){
struct tnode *temp1=a;
if(temp1==NULL)return;
disp(temp1->left);
disp(temp1->right);
free(temp1);
}




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


Name: box  ..ハッカー(102,286ポイント)   Date: 2008/01/02(水) 21:59   No:13049     
Title: Re:2分探索木--トラバーサルの非再帰版    
> トラバーサル(全て探索)の所が全く分かりません。

二分木をどのようにたどるかは、二分木をどのように組み立てるかと
密接に関係します。

gentree関数の動きは把握されていますね?


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

Name: parapara  ..上級者(15,792ポイント)   Date: 2008/01/03(木) 09:38   No:13053     
Title: Re:2分探索木--トラバーサルの非再帰版    
box様のヒントでひらめきました。
なんか解決できそうです。


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

Name: parapara  ..上級者(15,811ポイント)   Date: 2008/01/03(木) 13:27   No:13054 解決!     
Title: Re:2分探索木--トラバーサルの非再帰版    
無事解決できました。box様毎度ながら、ありがとうございます。
本の解説が間違ってました。この本いくつ間違いがあるんだろう?もう5箇所くらい。


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



Name:  ..初心者(5,849ポイント)   Date: 2008/01/01(火) 15:10   No:13032       
Title: 定積分の計算 パート2    
こんにちは、幻です。
前回もありがとうございました。
その前回に続き、再び実行結果が上手くいかない状況になりました。

今回は前回の『定積分の計算』スレで出来たプログラムにおいて、
read_file関数内で、配列用の記憶領域を動的に割り当てるというものです。

作ってみたソースです。


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

//ファイル名を入力させる関数

void file_input(char *fn)
{
printf("ファイル名を入力--> ");
gets(fn);
}

//ファイルから入力データを読み込む関数

void read_file(FILE *fp, char *fn, double *x, double *y, int *n)
{
int i;

if ((fp = fopen(fn, "r")) == NULL) {
printf("ファイルをオープンできません.\n");
exit(1);
}
fscanf(fp, "%d", n);

x = (double *)malloc(sizeof(double) * (*n));
y = (double *)malloc(sizeof(double) * (*n));

if (x == NULL || y == NULL) {
perror("メモリの確保に失敗しました.\n");
exit(1);
}

for (i = 0; i < *n; i++)
fscanf(fp, "%lf%lf", &x[i], &y[i]);

free(x);
free(y);
fclose(fp);
}

//定積分をする関数

double integrate(double *x, double *y, int n)
{
int i;
double ss = 0.0;

for (i = 0; i < n -1; i++)
ss = ss + (y[i] + y[i+1]) * (x[i+1] - x[i]) / 2.0;

return ss;
}

//結果を出力する関数

void output(double S)
{
printf("面積 ≒ %f\n", S);
}

//以下、main関数

int main(void)
{
FILE *fp;
char fn[32];
int n;
double *x, *y, S;

file_input(fn);
read_file(fp, fn, x, y, &n);
S = integrate(x, y, n);
output(S);

return 0;
}


結果は

面積 ≒ -NAN

という具合に表示されます。
何回も見直しているのですが原因が分かりません。
もしかして、xとy2つ同時に記憶領域の動的確保は無理なのでしょうか?

ご教授お願いします。

※読み込むファイルを再度添付しておきますね。


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


Name: フリオ  ..上級者(20,957ポイント)   Date: 2008/01/01(火) 16:03   No:13033     
Title: Re:定積分の計算 パート2    
 
  "main"関数内で"double へのポインタ型"として宣言された変数 x、y を、
呼び出した"read_file"関数内で値を変更し、それを"main"関数に反映させるには、
変数 x、y へのポインタ、つまり、"double へのポインタ型"へのポインタ を
"read_file"関数に渡してやる必要があります。
 


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

Name:  ..初心者(5,868ポイント)   Date: 2008/01/01(火) 17:29   No:13034     
Title: Re:定積分の計算 パート2    
>フリオさん
返信ありがとうございます。

ポインタのポインタを使うということですよね。
ちょっと考えてみますね。

あと前々から感じていたのですがポインタのポインタの使いどころやメリット
がイマイチ理解できません。
よく名前は聞いてはいたのですが、使うのは今回が初めてになるので…
出来れば、分かりやすい例で説明して頂けるとうれしいです。


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

Name:  ..初心者(6,369ポイント)   Date: 2008/01/01(火) 22:21   No:13037     
Title: Re:定積分の計算 パート2    
どうも、幻です。
取り合えずポインタのポインタを使って(つもり?)、ソースを書き直してみました。


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

//ファイル名を入力させる関数

void file_input(char *fn)
{
printf("ファイル名を入力--> ");
gets(fn);
}

//ファイルから入力データを読み込む関数

void read_file(FILE *fp, char *fn, double **x, double **y, int *n)
{
int i;

if ((fp = fopen(fn, "r")) == NULL) {
printf("ファイルをオープンできません.\n");
exit(1);
}
fscanf(fp, "%d", n);

x = (double **)malloc(sizeof(double *) * (*n));
y = (double **)malloc(sizeof(double *) * (*n));

if (x == NULL || y == NULL) {
perror("メモリの確保に失敗しました.\n");
exit(1);
}

for (i = 0; i < *n; i++)
fscanf(fp, "%lf%lf", &x[i], &y[i]);

free(x);
free(y);
fclose(fp);
}

//定積分をする関数

double integrate(double *x, double *y, int n)
{
int i;
double ss = 0.0;

for (i = 0; i < n -1; i++)
ss = ss + (y[i] + y[i+1]) * (x[i+1] - x[i]) / 2.0;

return ss;
}

//結果を出力する関数

void output(double S)
{
printf("面積 ≒ %f\n", S);
}

//以下、main関数

int main(void)
{
FILE *fp;
char fn[32];
int n;
double **x, **y, S;

file_input(fn);
read_file(fp, fn, x, y, &n);
S = integrate(*x, *y, n);
output(S);

return 0;
}


色々なサイトのポインタのポインタを使った例題を見ながら手を加えてみたのですが、
やはり不備があるようで、
コンパイルは通りますが、実行時にエラー報告が出てしまいます。
かなりのお手上げ状態です。
どこが誤っているのかご指摘お願いします。


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

Name:  ..上級者(19,594ポイント)   Date: 2008/01/02(水) 00:48   No:13041     
Title: Re:定積分の計算 パート2    
ほとんど質問なのですが、、、

mallocで動的にメモリを確保してますが、それを配列で使用できるのですか?
インクリメントしているのは見かけたのですが、配列は見かけなかったので・・・
開放時にポインタが必要になるので、利用するのかな?と思いましたがどうでしょうか?

また、開放した時その後にアクセスをするとエラーとなるようです。
開放が早すぎると思いますがどうでしょうか?

参考URL:
http://www.geocities.co.jp/SiliconValley/6071/technic/12.html
http://wisdom.sakura.ne.jp/programming/c/c25.html
http://ja.wikipedia.org/wiki/Malloc

今までの質問をほぼ無視して…(integrateをread_fileに突っ込んだ)
変更してみた。(一番上のを
面積 ≒ 3.101569

が回答となった。いいのかな?
ポインタのポインタなんて使ってないけど…w



#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
//定積分をする関数

double integrate(double *x, double *y, int n)
{
int i;
double ss = 0.0;

for (i = 0; i < n -1; i++)
ss = ss + (y[i] + y[i+1]) * (x[i+1] - x[i]) / 2.0;

return ss;
}

//ファイル名を入力させる関数
/*
void file_input(char *fn)
{
printf("ファイル名を入力--> ");
gets(fn);
}
*/
//ファイルから入力データを読み込む関数

double read_file(FILE *fp, char *fn, double *x, double *y, int *n)
{
int i;
double ss;

if ((fp = fopen(fn, "r")) == NULL) {
printf("ファイルをオープンできません.\n");
exit(1);
}
fscanf(fp, "%d", n);

x = (double *)malloc(sizeof(double) * (*n));
y = (double *)malloc(sizeof(double) * (*n));

if (x == NULL || y == NULL) {
perror("メモリの確保に失敗しました.\n");
exit(1);
}

for (i = 0; i < *n; i++)
fscanf(fp, "%lf%lf", &x[i], &y[i]);

ss = integrate(x,y,*n);

free(x);
free(y);
fclose(fp);

return ss;
}


//結果を出力する関数

void output(double S)
{
printf("面積 ≒ %f\n", S);
}

//以下、main関数

int main(void)
{
FILE *fp;
char fn[32]="test_1.txt";
int n;
double *x, *y, S;

//file_input(fn);
S = read_file(fp, fn, x, y, &n);
output(S);

return 0;
}




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

Name: box  ..ハッカー(102,224ポイント)   Date: 2008/01/02(水) 08:27   No:13044     
Title: Re:定積分の計算 パート2    
> mallocで動的にメモリを確保してますが、それを配列で使用できるのですか?

提示なさったコードでも使われていますよね。
ただし、配列で、というよりは、あたかも配列であるかのように、
の方が正確です。

動的に確保した領域の先頭アドレスをpとして、
そこからiだけ離れた領域の内容を取得する際
*(p+i)
と書きますが、これは
p[i]
とも書けます(シンタックスシュガー:糖衣構文)。後者は、配列と同じ書き方ですね。


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

Name:  ..初心者(6,456ポイント)   Date: 2008/01/02(水) 17:59   No:13048 解決!     
Title: Re:定積分の計算 パート2    
>雷さん
>boxさん

返信が遅れてしまい申し訳ありません。
お二方、返信ありがとうございます。

ご指摘を参考にもう少し自分で吟味してみたいと思います。
また分からない事が出てくるとは思いますが、その時はまた宜しくお願いします。



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



Name: hum-king  ..入門者(4,679ポイント)   Date: 2007/12/28(金) 14:42   No:12968       
Title: 構造体について    
前はお世話になりました。以前の続きのようなくだらない質問かもしれませんが、すいません。

typedef struct tag_NODEGROUP{

int nNodeNum;
char **ppNode;
}NODEGROUP, *PNODEGROUP;


main関数内部で

NODEGROUP pNodeGroup[ファイルの数];


上のような構造体を宣言し、以下のようなファイルを読み込むとします。

・ファイル1

emacs
vi
cd

・ファイル2

cp
cd
mount

・ファイル3

mv
cd
cp

・ファイル4

emacs
cd
cp


以前は各ファイルの単語数を表示させるということで

pNodeGroup[i].nNodeNum;


というような変数に単語数を格納して表示させていましたが、ファイル内の単語を格納する場合に

pNodeGroup[i].ppNode[j];


のような変数に格納することはできるのでしょうか?

訳の分からない質問だったらすいません・・・

表示結果としては

ファイル1
単語数
単語

ファイル2
単語数
単語

というように表示させたいのですが。。。


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


Name: box  ..ハッカー(100,926ポイント)   Date: 2007/12/28(金) 15:06   No:12970     
Title: Re:構造体について    

> pNodeGroup[i].ppNode[j];
>
> のような変数に格納することはできるのでしょうか?

できます。
ppNodeのために、適切に領域を割り当てていれば。



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

Name: hum-king  ..入門者(4,718ポイント)   Date: 2008/01/02(水) 11:45   No:13046 解決!     
Title: Re:構造体について    
返事遅れて申し訳ありませんでした><

なんとかできそうです。ありがとうございました。


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



Name: ぜt  ..ぴよぴよ(75ポイント)   Date: 2007/12/16(日) 00:15   No:12622       
Title: テトリス作成    
vc++でdxライブラリをつかってテトリスを作成しようとおもうのですが
このサイトには参考にできるソースはありますか?

すいませんよくわからなくて・・・


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


Name: バグ  ..比類無きプログラマー(66,140ポイント)   Date: 2007/12/16(日) 00:50   No:12624     
Title: Re:テトリス作成    
DxLibを使用していませんが、下記のURLのページはテトリスを作るのに参考になると思います。ただ、Windowsプログラムの仕組みを知っておかないとピンとこないかもしれません。

http://codezine.jp/a/article/aid/207.aspx


下記の本にはWin32APIでのテトリス作成の方法が解説付きで載っています。個人的にはこちらのソースの方が好きですね。

http://www.amazon.co.jp/Windows%E3%82%B2%E3%83%BC%E3%83%A0%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-Game-developer-%E8%B5%A4%E5%9D%82-%E7%8E%B2%E9%9F%B3/dp/4797325453


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

Name: ひこ  ..ぴよぴよ(44ポイント)   Date: 2007/12/16(日) 11:11   No:12634     
Title: Re:テトリス作成    
私も今テトリスをDXライブラリを使って作っています。(まだ途中ですが・・・)

私が参考にしているのは下記のサイトです。
ライブラリは使っていませんがわかりやすいと思います。

http://www.nhk.or.tv/kow/program/index.php


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

Name: ぜt  ..ぴよぴよ(38ポイント)   Date: 2007/12/16(日) 13:56   No:12645     
Title: Re:テトリス作成    
ひこさんに質問なんですが?
紹介サイトのテトリスは
DXライブラリはどういうところに使えばいいんですか?


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

Name: ひこ  ..ぴよぴよ(124ポイント)   Date: 2007/12/16(日) 14:56   No:12646     
Title: Re:テトリス作成    
実は私もまだDrawBoxぐらいしか使ってません。

私はC言語&DXライブラリの初心者なので
「テトリスを作ってプログラミングに慣れよう」って感じでテトリスを作り始めました。

ですのでDXライブラリをどこで使えば有効なのかなどは自分でもわかっていません。
参考にならないレスですいません^^;


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

Name: バグ  ..比類無きプログラマー(66,379ポイント)   Date: 2007/12/16(日) 15:42   No:12647     
Title: Re:テトリス作成    
画像描画、音楽再生、キー入力判定くらいじゃないでしょうか?

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

Name: ぜt  ..ぴよぴよ(38ポイント)   Date: 2007/12/16(日) 16:42   No:12650     
Title: Re:テトリス作成    
ありがとうございます。
記述方法DXライブラリ以外の記述方法も変えないといけないんでしょうか?
おしえてください


Name: ぜt  ..ぴよぴよ(124ポイント)   Date: 2007/12/16(日) 20:40   No:12658     
Title: Re:テトリス作成    
すいませんさっきの文章がおかしかったので書き直します。
http://www.nhk.or.tv/kow/program/index.php
をDxライブラリをもちいてテトリスを作成するとき、
画像描画、音楽再生、キー入力判定以外で記述方法を変えるところはありますか?
おしえてください。



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

Name: ひこ  ..ぴよぴよ(37ポイント)   Date: 2007/12/16(日) 23:14   No:12662     
Title: Re:テトリス作成    
>バグさん
補足どうもありがとうございます。

>ぜtさん
記述方法を変えるところはほぼないと思います・・・(たぶん

私はそのサイトに書いてあるコードを見て自分が理解できたと思ったら
自分なりにコードをアレンジしながら作成していますよ。


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

Name: ぜt  ..ぴよぴよ(76ポイント)   Date: 2007/12/17(月) 09:20   No:12670     
Title: Re:テトリス作成    
http://www.nhk.or.tv/kow/program/program_125.php
のkbhit()はDXライブラリの関数は何を使えばいいんでしょうか?


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

Name: バグ  ..比類無きプログラマー(66,865ポイント)   Date: 2007/12/17(月) 09:51   No:12671     
Title: Re:テトリス作成    
kbhit関数はキーが押されたかどうかの判定をする関数です。
ですから、DxLibで同じような事をさせようと思ったら、GetHitKeyStateAll関数が良いのではないでしょうか?
勿論、そのまま置き換えただけでは動きませんので、下記のリファレンスを参考にして自分の都合の良いように書き換えて下さい。

http://homepage2.nifty.com/natupaji/DxLib/dxfunc.html


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

Name: ひこ  ..ぴよぴよ(69ポイント)   Date: 2007/12/17(月) 10:40   No:12672     
Title: Re:テトリス作成    
バグさんのおっしゃる通りです。
私もGetHitKeyStateAll関数を使って判定しています。


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

Name: ぜt  ..ぴよぴよ(97ポイント)   Date: 2007/12/17(月) 12:02   No:12675     
Title: Re:テトリス作成    
ありがとうございました。
僕もその関数を使って作ってみます。


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

Name: ぜt  ..ぴよぴよ(144ポイント)   Date: 2007/12/19(水) 15:46   No:12763     
Title: Re:テトリス作成    
たびたびすいません。
c言語でsystem("cls");はDxライブラリではどんな関数をつかえばいいんでしょうか?


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

Name: ぜt  ..ぴよぴよ(202ポイント)   Date: 2007/12/28(金) 16:41   No:12972     
Title: Re:テトリス作成    
http://www.nhk.or.tv/kow/program/program_124.php
をDXライブラリを使ってvc++で作ってみたのですが
ブロックが瞬間移動する感じで落下して行きます。
本当はどう上のサイトだとどう動くんでしょうか?


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

Name: tkmakwins15 [URL]  ..熟練のプログラマー(47,012ポイント)   Date: 2007/12/28(金) 18:43   No:12974     
Title: Re:テトリス作成    
system("cls");の代わりになるのはClearDrawScreen();でよいと思います。

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

Name: ぜt  ..ぴよぴよ(272ポイント)   Date: 2007/12/28(金) 23:38   No:12981     
Title: Re:テトリス作成    
栄光のプログラマーさんありがとうございました。
ところで私が質問した瞬間移動のけんですが解決しました。

ちゃんとブロックが残像ありで落ちてきたんですがなんか処理中に画面が
ちらつくんですがどうすればいいですか?



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

Name: 管理人 [URL]  ..伝説のハッカー(468,690ポイント)   Date: 2007/12/29(土) 01:56   No:12984     
Title: Re:テトリス作成    
>ぜtさん
tkmakwins15さんのお名前は栄光のプログラマーではありません。
名前は「Name:」の直後に書かれています。仰っているのは掲示板ランクで、書き込みを沢山するほどポイントが上がっていく仕組みになっています。

そして、解らない事があるたびに掲示板で聞くよりも、調べたり勉強した方が早いと思いますので、
一通りゲームプログラミングの館に目を通していただいて、
http://dixq.net/g/
わからない関数については一先ずリファレンスページを見ていただいて
http://homepage2.nifty.com/natupaji/DxLib/dxfunc.html

それでもわからなければ質問していただいた方が解決が早いかと思います。
そして、仰るちらつきについてですが、裏画面処理をしていないからではないでしょうか。
ゲームプログラミングの館の12,13章をお読みください。



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

Name: tkmakwins15 [URL]  ..熟練のプログラマー(47,276ポイント)   Date: 2007/12/29(土) 10:28   No:12987     
Title: Re:テトリス作成    
ゲームは高速な描画が行われるため、そのまま画面上に直接描画すると、次の画面を作成する過程を見せるという状態になります。
それだと、画面がかなり高速で描画されるために、ちらつきが見えるようになります。
そこで、2つの画面を作り、それを入れ替えながら描画するという方法を取る事になります。
使う関数は、
SetDrawScreen();
(引数はDX_SCREEN_BACKで)
ScreenFlip();
です。


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

Name: ぜt  ..ぴよぴよ(299ポイント)   Date: 2007/12/29(土) 11:24   No:12990     
Title: Re:テトリス作成    
tkamakwins15さんありがとうございました。
早速使ってみます。


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

Name: ぜt  ..ぴよぴよ(277ポイント)   Date: 2008/01/01(火) 21:53   No:13036     
Title: Re:テトリス作成    
http://www.nhk.or.tv/kow/program/program_127.php

srand((unsigned)time(NULL));
  block_type = rand() % 7;
というところはDXライブラリに どうなおせばいいんですか?

すいません調べてみたけどちょっとわからなかったのでお願いします。


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

Name:  ..上級者(18,774ポイント)   Date: 2008/01/01(火) 23:01   No:13039     
Title: Re:テトリス作成    
srand
で調べてみましょう。

そこで、何をしているか分かりますか?
ここはこうなると思うのですが、やり方がわかりません。
などと質問された方が、指摘しやすいかと思います。
やっていることがわからなければ、プログラムをしている意味が無いと思いますので^^;


一行目が、乱数の設定
二行目が、ブロックタイプの設定
(読めば分かりますがw

DXライブラリは主に表示関係だったと思うので、DXライブラリに直す理由が分かりません^^;
(もしかしたら、あるのかもしれませんが…


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

Name: tkmakwins15 [URL]  ..熟練のプログラマー(47,431ポイント)   Date: 2008/01/02(水) 01:22   No:13042     
Title: Re:テトリス作成    
無理に直すとしたら、
srand((unsigned)time(NULL));
は削除して、
rand()%7;

GetRand(6);
に直すくらいでしょうか。


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

Name: ぜt  ..ぴよぴよ(302ポイント)   Date: 2008/01/02(水) 08:40   No:13045     
Title: Re:テトリス作成    
ありがとうございます。
早速試してみたいと思います。


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

Name: ぜt   Date: 2008/01/19(土) 22:13   No:126221200748394     
Title: Re:テトリス作成    
http://www.nhk.or.tv/kow/program/program_128.php
//画面表示
void ShowGameField()・・・・・
で落下していくブロックを表示するときに
for(i=0;i<21;i++)
{
for(j=0;j<12;j++)
{
for(field[i][j] == 1)
{
DrawExtendGraph(x,y,x,y,画像名,TRUE);
}
}
}
とブロックを表示しているのですが、これだと全種類のブロックが
同じ画像になります。
ブロックの種類ごとに色を変えたいと思っているのですが全く思いつきません
考え方だけでもご教授いただけないでしょうか。お願いいたします。


Name: ぜt   Date: 2008/01/19(土) 22:18   No:126221200748690     
Title: Re:テトリス作成    
また トピック作成します