c言語で動く点をたくさん出現させたい。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
moyappi

c言語で動く点をたくさん出現させたい。

#1

投稿記事 by moyappi » 5年前

動いている赤い点を増やしたんですが増やし方がわかりません。
どうすればいいでしょうか?
visial studio2010を使ってGnuplotでやっています。

#include<stdio.h>
#include<math.h>
#define N 5
#define M 5
void main(){
FILE* xy;
FILE* data=fopen("data","w");
FILE* script=fopen("script","w");
FILE* KUGI=fopen("KUGI","w");
FILE* basyo=fopen("basyo","w");
int time,TIME = 3000;
int k;
int n,m;//釘の数
double e=0.7;//跳ね返り係数0 < e <1
double x_KUGI[(N+1)*M+1],y_KUGI[(N+1)*M+1]; //釘の位置変数
double R=0.25/(N+1); //ボールの半径。釘の間隔の25%
double kyori,ex,ey,NAISEKI;
double x0=0.0,y0=1.0,x,y;
double vx=0.3,vy=-0.1;
double mg=3.0,f=-mg;
double dt = 0.01;
char filename[10000];
double teisu_u[2],teisu_k[3];
teisu_k[0]=0.5,teisu_k[1]=0.5,teisu_u[0]=0.0,teisu_u[1]=1.0;


/////////////////////////////////////////////////
// SCRIPTファイルへの自動実行コマンドを出力する
fprintf(script,"set xrange[0:1]\n");
fprintf(script,"set yrange[0:1]\n");
fprintf(script,"set nokey\n");
fprintf(script,"set noxtics\n");
fprintf(script,"set noytics\n");
fprintf(script,"set noborder\n");
for(time=0;time<TIME;time++){
fprintf(script,"plot '%d','KUGI' pt 5\n",time);
fprintf(script,"pause 0.01\n");
}
/////////////////////////////////////////////////
//釘の位置を蓄える
//
//fprintf(KUGI,"0.0 0.0\n");
//fprintf(KUGI,"0.0 1.0\n");
//fprintf(KUGI,"1.0 1.0\n");
//fprintf(KUGI,"1.0 0.0\n");
//fprintf(KUGI,"0.0 0.0\n");
//fprintf(KUGI," \n");

int l,L=0;

for(m=1;m<=M;m++){
if(m%2==1){
for(n=1;n<=N;n++){
L++;
x_KUGI[L]=1.0*n/(N+1),y_KUGI[L]=1.0*m/(M+1);
}}else{
for(n=0;n<=N;n++){
L++;
x_KUGI[L]=1.0*(n+0.5)/(N+1),y_KUGI[L]=1.0*m/(M+1);
}
}}





for(l=1; l<=L; l++)fprintf(KUGI,"%lf %lf\n",x_KUGI[l],y_KUGI[l]);

///////////////////////////////////////////////////


for(time=0;time<TIME;time++){
for(k=0;k<2;k++){
vy=vy + dt*teisu_u[k]*f;
x = x0 + vx*dt*teisu_k[k];
y = y0 + vy*dt*teisu_k[k];
}

if(x>1.0)vx=-vx;
if(x<0.0)vx=-vx;
if(y>1.0)vy=-vy;
if(y<0.0){
fprintf(basyo,"%lf\n",x);
break;

};
for(l=1;l<=L;l++){
ex= x_KUGI[l]-x;
ey= y_KUGI[l]-y;
kyori = sqrt(ex*ex + ey*ey);
if(kyori<R){// 衝突判定
ex = ex/kyori;
ey = ey/kyori;
NAISEKI = ex*vx + ey*vy;
vx = vx -(1.0+e)*ex*NAISEKI;
vy = vy -(1.0+e)*ey*NAISEKI;
x=x0,y=y0;
}}

sprintf(filename,"%d",time);
xy=fopen(filename,"w");
fprintf(xy,"%f %f\n",x,y);
fclose(xy);

fprintf(data,"%lf %lf\n",x,y);
x0=x,y0=y;
}}

アバター
夢幻ノ月夜
記事: 133
登録日時: 5年前
住所: Stens;Gate世界線

Re: c言語で動く点をたくさん出現させたい。

#2

投稿記事 by 夢幻ノ月夜 » 5年前

double e=0.7;//跳ね返り係数0 < e <1
double x_KUGI[(N+1)*M+1],y_KUGI[(N+1)*M+1]; //釘の位置変数
double R=0.25/(N+1); //ボールの半径。釘の間隔の25%
double kyori,ex,ey,NAISEKI;
double x0=0.0,y0=1.0,x,y;
double vx=0.3,vy=-0.1;
double mg=3.0,f=-mg;
double dt = 0.01;

この辺のやつを一つの構造体にして
配列変数を作って
for文でいっぺんに動かしたらどうですかね?
毎回ゲーム作ろうとするたびに壁にぶち当たる

閉鎖

“C言語何でも質問掲示板” へ戻る