首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

80行的经典C程序献给菜鸟

2013-03-21 
80行的经典C程序献给初学者如果你认为C但语言很难,请留步看看.如果你搞不清楚数学与编程的关系,请留步看看

80行的经典C程序献给初学者
如果你认为C但语言很难,请留步看看.
如果你搞不清楚数学与编程的关系,请留步看看
如果你认为基础不重要,请留步看看.

这是一个C语言的图形实例,但决不在程序语言的圈内打转.内容很简单也很老套:
地球围绕太阳转,月亮围绕太阳转,其他几颗星围绕太阳转,但速度各不相同.
方向键可以改变太阳的位置.太阳是在闪烁的.

在TC下调试通过, 在WIN TC下也调试通过.
我只想通过这个例子告诉那些初学的,学习和应用是两回事.
如果你刚开始学习选择了不恰当的操作系统和编译器,你就已经失去了获得编程思想的机会.
学习的时候,千万不要选择别人为你准备了很多功能的工具,真的于成长不利......

下面是全部程序,与你们分享:

#include "stdio.h"
#include "graphics.h"
#include "math.h"

void Draw(int color);

int t_x=320,t_y=240,t_r=40;  /* SUN太阳参数,圆心坐标及半径 */
int d_x,d_y,d_r=20;          /* D地球参数 */
int y_x,y_y,y_r=5;           /* Y月亮参数 */

int j_x,j_y,j_r=8;           /* J星参数 */
int m_x,m_y,m_r=10;          /* M星参数 */
int s_x,s_y,s_r=4;           /* S星参数 */

float th1=0,th2=0,th3=0,th4=0,th5=0;/* 各星相对太阳的角度 */

main()
{
   int gd=DETECT,gm;

   int key=0;                /* 保存键盘值?*/
   int i;
   float r;
   initgraph(&gd,&gm,"");

   Draw(12);                 /* 先画一个 */
   while(key!=0x11b)         /* 如果按键==ESC键则退出 */
   {
      Draw(0);               /* 用背景色把画好的图洗掉 */
      if(bioskey(1))                /* 如果有按键?*/
      {
         key=bioskey(0);            /* 取得按键的值 */
         if(key==0x4b00) t_x-=10;   /* 向上方向键 */
         if(key==0x4d00) t_x+=10;   /* 向下方向键 */
         if(key==0x4800) t_y-=10;   /* 向左方向键 */
         if(key==0x5000) t_y+=10;   /* 向右方向键 */
      }
      th1+=0.001256;               /* 各星按角度移动 */
      if(th1>=6.28) th1-=6.28;     /* 如果转了一圈,按0角度从新计算 */
      th2+=0.01256;
      if(th2>=6.28) th2-=6.28;
      th3+=0.002512;
      if(th3>=6.28) th3-=6.28;
      th4+=0.000314;
      if(th4>=6.28) th4-=6.28;
      th5+=0.00628;
      if(th5>=6.28) th5-=6.28;
      r+=0.5;                      /* 让太阳半径动态增加 */


      if(r>=40) r=20;              /* 增大40后用从20从新开始 */
      t_r=(int)r;
      Draw(12);                    /* 用颜色12画出图形 */
      delay(1000);                 /* 稍等1秒钟看一下结果 */
   }
   closegraph();
}

void Draw(int color)               /* 画图形 */
{
   setcolor(color);
   circle(t_x,t_y,t_r);            /* 画太阳?*/
   outtextxy(t_x-10,t_y-4,"SUN");  /* 显示太阳符号SUN */

   d_x=t_x+130*cos(th1);           /* 根据太阳位置计算地球位置X */
   d_y=t_y+130*sin(th1);           /* 根据太阳位置计算地球位置Y */
   circle(d_x,d_y,d_r);            /* 画地球 */
   outtextxy(d_x-4,d_y-4,"D");     /* 显示地球符号D */

   y_x=d_x+40*cos(th2);            /* 根据地球位置计算月亮位置X */
   y_y=d_y+40*sin(th2);            /* 根据地球位置计算月亮位置Y */
   circle(y_x,y_y,y_r);            /* 画月亮 */
   outtextxy(y_x-3,y_y-4,"Y");     /* 显示月亮符号Y */

   j_x=t_x+60*cos(th3);            /* 根据太阳位置计算J星位置X */
   j_y=t_y+60*sin(th3);            /* 根据太阳位置计算J星位置Y */
   circle(j_x,j_y,j_r);            /* 画J星 */
   outtextxy(j_x-4,j_y-4,"J");     /* 显示J星符号J */

   m_x=t_x+200*cos(th4);           /* 根据太阳位置计算M星位置X */
   m_y=t_y+200*sin(th4);           /* 根据太阳位置计算M星位置Y */
   circle(m_x,m_y,m_r);            /* 画M星 */
   outtextxy(m_x-4,m_y-4,"M");     /* 显示M星符号M */

   s_x=t_x+230*cos(th5);           /* 根据太阳位置计算S星位置X */
   s_y=t_y+230*sin(th5);           /* 根据太阳位置计算S星位置Y */
   circle(s_x,s_y,s_r);            /* 画S星,S星太小,所以没有显示符号 */
}


[解决办法]
TC小但不失强大
[解决办法]
TC。。。我真的还没用过呢。
明天上机去试试感觉
[解决办法]


我想说TC不失为一小巧的编译器;虽然他的界面不好看,操作也不方便,但它对新手来说是一个可以一用的编译器,除了不能跟踪内存;我还是想说他对新手不错,他的作用可以用快捷键来的,比如:运行CTRL + F9
单步运行:F8,还有变量跟踪(这个不记得了,^-^), 等等!用他的原因是因为他能让你多动手,能静下心来学习C。
[解决办法]
速度好快啊,SUN闪得不好看,色彩也不好,不过值得学习,


[解决办法]
这个画面还不错,值得学习
[解决办法]
定下TC

热点排行