⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sunearth.c

📁 自己收集整理和调试OK的三个Game源代码
💻 C
字号:
/*
本程序利用动画方式展示了地球绕太阳旋转,月亮绕地球旋转的天文现象,其动画的实现方式为边画边擦。
*/

#include "gui.h"
#include "math.h"

double Earthx, Earthy, Circlex, Circley;  /*Earthx,Earthy)表示地球的当前圆心,(Circlex,Circley)表示运行物得当前圆心*/

void drawnrun( int x, int y, double i, int r, int runr, int color )  /*画星球*/
{
  GUI_SetColor( color );

  i = ( i * 1.74444 ) / 100;         /*3.14/180=1.74444e-2*/

  Circlex = runr * cos(i) + x;
  Circley = runr * sin(i) + y;

  GUI_FillEllipse( Circlex, Circley, r, r );
}

void eraserun( int x, int y, double i, int r, int runr )  /*擦除星球*/
{
  i = ( i * 1.74444 ) / 100;

  Circlex = runr * cos(i) + x;
  Circley = runr * sin(i) + y;

  GUI_SetColor( GUI_BLACK );
  GUI_FillEllipse( Circlex, Circley, r, r );
}

void putstar( void )            /*在天空画星星*/
{
  int i, j, dotx, doty, n = 1;

  for( i=0; i<320; i += n )
  {
  	for( j=0; j<240; j += n )
  	{
			if( n > 7 )
					n =1;
			else
					n += 2;

	    GUI_DrawPixel( i, j );
	  }
  }
}

void Earth( void )
{
  int Circlex1, Circley1, r;
  int i, j, k, ks;

  Circlex1 = 160;
  Circley1 = 120;

	GUI_SetBkColor( GUI_BLACK );
  GUI_SetColor( GUI_BLUE );
  GUI_Clear();

  GUI_DispStringAt( "Sun,Earth,Moon", 1, 1 );

	GUI_SetColor( GUI_YELLOW );
  GUI_FillEllipse( Circlex1, Circley1, 35, 35 );        /*画太阳*/

	GUI_SetBkColor( GUI_YELLOW );
  GUI_SetColor( GUI_RED );
  GUI_DispStringAt( "SUN", Circlex1-8, Circley1-8 );
  GUI_SetBkColor( GUI_BLACK );

  putstar();

	while( 1 )
  {
    ks = 0;

    for( i=0; i<=360; i++ )
    {
      drawnrun( Circlex1, Circley1, i, 20, 90, GUI_LIGHTBLUE );       /*画地球*/

      Earthx = Circlex;
      Earthy = Circley;

      for( k=1; k<12; k++ )
      {
        ks += 1;
        drawnrun( Earthx, Earthy, ks, 5, 30, GUI_WHITE );         /*画月亮*/
       	GUI_Delay( 15 );

        eraserun( Earthx, Earthy, ks, 5, 30 );       /*擦月亮*/
      }

      eraserun( Circlex1, Circley1, i, 20, 90 );    /*擦地球*/
    }
  }

}

/*
在编完以上程序后,我本想改一改,但遇上了一些困难,
如:如何让月亮周期盈亏;若加上其他行星,又如何处理他们的多卫星。。。。
希望有人给与帮助。
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -