質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

1回答

1821閲覧

このプログラムからもう一つ花火を出す方法を知りたいです。

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2021/09/28 08:15

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <libgg.h>
#pragma comment( lib , "libgg.lib" )
#define HNUM 50
#define TCNT 100
void hoshi( pGC gw , int sx , int sy , int V , int ang , int hsz , COLORREF c , double t );
int main( void )
{
pGC gw;
int x , y;
int i , j;
int sx[HNUM],sy[HNUM],v[HNUM],ang[HNUM],hsz[HNUM];
double t;
srand( time(NULL) );
for ( i=0 ; i<HNUM ; i++ ) {
sx[i] = 300;
sy[i] = 450;
switch ( i % 3 ) {
case 0: v[i] = 10 + rand()%3; break;
case 1: v[i] = 5 + rand()%3; break;
case 2: v[i] = 3 + rand()%3; break;
}
ang[i] = 360 / HNUM * i + rand()%5 -2;
hsz[i] = 2 + rand()%2;
}

GGSTART( gw , "花火の打ち上げ" , 800 , 600 , 0 , 0 ); gg_RsetBackColor( gw , RGB(0,0,0) ); x = 300; for ( i = 0 ; i < 450 ; i+=5 ) { int x2; x2 = x + rand()%8 - 4; y = 590 - i; gg_DrawStart( gw ); gg_clrScr( gw ); gg_drawFillCircle( gw , x2 , y , (int)(i*0.01+3) , RGB(0,200,255) ); gg_DrawEnd( gw ); Sleep( 10 ); } for ( i=0 ; i<TCNT ; i++ ) { t = 0.02 * i; gg_DrawStart( gw ); gg_clrScr( gw ); for ( j=0 ; j<HNUM ; j++ ) hoshi( gw , sx[j] , sy[j] , v[j] , ang[j] , hsz[j] , RGB(0-i*0/TCNT , 200-i*200/TCNT,255-i*255/TCNT) , t ); gg_DrawEnd( gw ); Sleep( 100 ); } gg_clrScrEW( gw ); gg_pause; return 0;

}

#define XMAG 20
#define YMAG 20

void hoshi( pGC gw , int sx , int sy , int V , int ang , int hsz , COLORREF c , double t )
{
int u , v;
double x , y;
double g = 9.8;
double vx , vy , theta;
theta = ang * 3.14159265 / 180.0;
vx = (double)V * cos( theta );
vy = (double)V * sin( theta );

y = vy*t - g*t*t/2.0; y = -y; x = vx*t; u = sx + XMAG * x; v = -sy + YMAG * y + 600; gg_drawFillCircle( gw , u , v , hsz , c );

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2021/09/28 08:21

このままではコードが読みづらいので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
y_waiwai

2021/09/28 08:22

で、しつもんはなんでしょうか
episteme

2021/09/28 11:10

んでもって退会。「花火を出す方法を知りたい」と花火が申しておりましたwww
guest

回答1

0

よくわからんけど,現状のコードで「花火」とやらが1回出るのであれば,
「現状の main の名前を別名に変えて,それを2回呼ぶmainを書く」
というのが,最も単純な作業方針となるのではないかと.

C

1//元々mainだったものをXXXにしたとして 2int XXX( void ) 3{ 4 /*元のまま or 何か必要があれば修正しましょう*/ 5} 6 7// 8int main( void ) 9{ 10 XXX(); //1回目 11 XXX(); //2回目 12 return 0; 13}

投稿2021/09/28 08:31

fana

総合スコア11996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問