百科问答小站 logo
百科问答小站 font logo



为什么学了一个学期的c语言,感觉一直都是在用代码去做一些简单的数学题,没有什么实际用途? 第1页

  

user avatar   DBinary 网友的相关建议: 
      

C语言如果要用,一样可以用的又快又好

前几天我在写一个关于贝塞尔曲线的科普回答时,就是使用C语言来制作科普动图的

并且C语言的可移植性可以做到非常好,这个代码可以直接移植到Android上使用,用纯C编写一个Android Application,一样的代码不需要改一个字

最重要的是,代码也不长

       #include "PainterEngine_Application.h"  PX_Application App;  px_void PX_ApplicationOnButtonClear(PX_Object *pObject,PX_Object_Event e,px_void *ptr) {  PX_Application *pApp=(PX_Application *)ptr;  pApp->status=PX_APPLICATION_STATUS_STOP;  pApp->pt_count=0;  pApp->t=0;  }  px_void PX_ApplicationOnButtonPlay(PX_Object *pObject,PX_Object_Event e,px_void *ptr) {  PX_Application *pApp=(PX_Application *)ptr;  if (pApp->pt_count<2)  {   return;  }  pApp->status=PX_APPLICATION_STATUS_PLAYING;  pApp->t=0;  }   px_void PX_ApplicationDrawBezierCurve(px_surface *rendersurface,px_point pt[],px_int pt_count,px_float t,px_int linewidth,px_color clr) {  px_int i;   if (pt_count<=0)  {   return;  }   if (pt_count==1)  {   if(rendersurface)    PX_GeoDrawPenCircle(rendersurface,pt[0].x,pt[0].y,5,clr);   return;  }   if (linewidth<1)  {   linewidth=1;  }   //draw path  if(rendersurface)  {   for (i=0;i<pt_count-1;i++)   {    PX_GeoDrawCircle(rendersurface,(px_int)pt[i].x,(px_int)pt[i].y,8,1,clr);    PX_GeoDrawLine(rendersurface,(px_int)pt[i].x,(px_int)pt[i].y,(px_int)pt[i+1].x,(px_int)pt[i+1].y,linewidth,clr);   }   PX_GeoDrawCircle(rendersurface,(px_int)pt[i].x,(px_int)pt[i].y,5,1,clr);  }     //update path  for (i=0;i<pt_count-1;i++)  {   px_point vector_unit=PX_PointUnit(PX_PointSub(pt[i+1],pt[i]));   px_float distance=PX_PointMod(PX_PointSub(pt[i+1],pt[i]));    pt[i]=PX_PointAdd(pt[i],PX_PointMul(vector_unit,distance*t));  }    PX_ApplicationDrawBezierCurve(rendersurface,pt,pt_count-1,t,linewidth-1,PX_COLOR(96,PX_randEx(pt_count)%255,PX_randEx(pt_count+1)%255,PX_randEx(pt_count+2)%255)); }   px_bool PX_ApplicationInitialize(PX_Application *pApp,px_int screen_width,px_int screen_height) {  PX_ApplicationInitializeDefault(&pApp->runtime, screen_width, screen_height);  pApp->ui_root=PX_ObjectCreate(&pApp->runtime.mp_ui,0,0,0,0,0,0,0);  pApp->btn_play=PX_Object_PushButtonCreate(&pApp->runtime.mp_ui,pApp->ui_root,0,0,64,24,"Play",PX_NULL,PX_COLOR(255,0,64,255));  pApp->btn_clear=PX_Object_PushButtonCreate(&pApp->runtime.mp_ui,pApp->ui_root,0,0,64,24,"Clear",PX_NULL,PX_COLOR(255,0,64,255));  pApp->pt_count=0;  pApp->status=PX_APPLICATION_STATUS_STOP;  pApp->t=0;    PX_ObjectRegisterEvent(pApp->btn_clear,PX_OBJECT_EVENT_EXECUTE,PX_ApplicationOnButtonClear,pApp);  PX_ObjectRegisterEvent(pApp->btn_play,PX_OBJECT_EVENT_EXECUTE,PX_ApplicationOnButtonPlay,pApp);  return PX_TRUE; }  px_void PX_ApplicationUpdate(PX_Application *pApp,px_dword elpased) {  px_float x=(px_float)pApp->runtime.RenderSurface.width;   if (pApp->status==PX_APPLICATION_STATUS_PLAYING)  {   pApp->t+=elpased/5000.0f;   if (pApp->t>1)   {    pApp->t=1;   }  }   pApp->btn_clear->x=x-pApp->btn_clear->Width;  x-=pApp->btn_clear->Width;    pApp->btn_play->x=x-pApp->btn_play->Width;  x-=pApp->btn_play->Width;     PX_ObjectUpdate(pApp->ui_root,elpased); }  px_void PX_ApplicationRender(PX_Application *pApp,px_dword elpased) {  px_int i;  px_char content[16];    px_surface *pRenderSurface=&pApp->runtime.RenderSurface;  PX_RuntimeRenderClear(&pApp->runtime,PX_COLOR(255,255,255,255));     //points texts  for (i=0;i<pApp->pt_count;i++)  {   PX_sprintf1(content,sizeof(content),"P%1",PX_STRINGFORMAT_INT(i));   PX_FontDrawText(pRenderSurface,(px_int)pApp->pt[i].x,(px_int)pApp->pt[i].y-8,PX_FONT_ALIGN_MIDBOTTOM,content,PX_COLOR(255,0,0,192));  }    switch(pApp->status)  {  case PX_APPLICATION_STATUS_STOP:   {    for (i=0;i<pApp->pt_count-1;i++)    {     PX_GeoDrawCircle(pRenderSurface,(px_int)pApp->pt[i].x,(px_int)pApp->pt[i].y,5,1,PX_COLOR(255,0,0,192));     PX_GeoDrawLine(pRenderSurface,(px_int)pApp->pt[i].x,(px_int)pApp->pt[i].y,(px_int)pApp->pt[i+1].x,(px_int)pApp->pt[i+1].y,6,PX_COLOR(255,0,0,192));    }    if(pApp->pt_count)     PX_GeoDrawSolidCircle(pRenderSurface,(px_int)pApp->pt[i].x,(px_int)pApp->pt[i].y,5,PX_COLOR(255,0,0,192));   }   break;  case PX_APPLICATION_STATUS_PLAYING:   {    px_point path[201];    px_point pt[PX_APPLICATION_MAX_POINT];    px_int pathCount=(px_int)(pApp->t/0.005f);     PX_memcpy(pt,pApp->pt,sizeof(px_point)*pApp->pt_count);    PX_ApplicationDrawBezierCurve(pRenderSurface,pt,pApp->pt_count,pApp->t,6,PX_COLOR(128,0,0,192));     path[0]=pApp->pt[0];    for (i=1;i<=pathCount;i++)    {     PX_memcpy(pt,pApp->pt,sizeof(px_point)*pApp->pt_count);     PX_ApplicationDrawBezierCurve(PX_NULL,pt,pApp->pt_count,i*0.005f,1,PX_COLOR(0,0,0,0));     path[i]=pt[0];    }    PX_GeoDrawPath(pRenderSurface,path,pathCount+1,8,PX_COLOR(128,255,0,0));     //last pt    PX_GeoDrawPenCircle(pRenderSurface,path[pathCount].x,path[pathCount].y,8,PX_COLOR(255,255,0,0));     //t    {     px_char t[8];     PX_sprintf1(t,sizeof(t),"t=%1.2",PX_STRINGFORMAT_FLOAT(pApp->t));     PX_FontDrawText(pRenderSurface,path[pathCount].x,path[pathCount].y-10,PX_FONT_ALIGN_MIDBOTTOM,t,PX_COLOR(255,255,0,0));    }    }   break;  }   PX_ObjectRender(pRenderSurface,pApp->ui_root,elpased); }  px_void PX_ApplicationPostEvent(PX_Application *pApp,PX_Object_Event e) {  PX_ApplicationEventDefault(&pApp->runtime, e);   if (e.Event==PX_OBJECT_EVENT_CURSORDOWN)  {   if (PX_Object_Event_GetCursorY(e)<24)   {    PX_ObjectPostEvent(pApp->ui_root,e);   }   else   {    if (pApp->status==PX_APPLICATION_STATUS_STOP&&pApp->pt_count<PX_COUNTOF(pApp->pt))    {     pApp->pt[pApp->pt_count].x=PX_Object_Event_GetCursorX(e);     pApp->pt[pApp->pt_count].y=PX_Object_Event_GetCursorY(e);     pApp->pt[pApp->pt_count].z=0;     pApp->pt_count++;    }   }  }  else  {   PX_ObjectPostEvent(pApp->ui_root,e);  }  }       

不是不实用,你缺的,只是一个图形库而已

当然,重要的是你还需要一个能够白嫖的交流平台


user avatar   leon-3-75 网友的相关建议: 
      

这居然有人来问??现在的孩子都怎么了?

第一,你倒是喜欢人家,人家喜欢你吗?

第二,你倒是跟他上了一个高中。那到大学怎么办?万一他没考上大学,你是不是要跟他一起辍学?如果他考一个不好的大学,你是不是要放弃更好的大学跟他在一起?

第三,你跟他在一个高中又有什么意义?中学生就算你们互相喜欢,还不是分手。你们还能外面买套房去登记吗?年纪也不够啊。那既然大概率是三年以后就要分手,那你现在跟他在一个高中又有什么意义呢?就为了上学放学能够一起走?

第四,你看看你爸你妈差几岁。等你真的到了结婚的年纪,能和你结婚的女生现在估计还在上小学。世界那么大,出去多看看,一般来说大学毕业那年回过头去,你会发现当初的自己是多么幼稚。




  

相关话题

  开始慢慢抄代码敲对自己编程提高有用吗? 
  教育部:将编程教育等纳入中小学相关课程,对此你怎么看? 
  程序在地址空间中的位置是何时,以及如何决定的? 
  初中数学底子不是很好的人能否通过不断刷题超过有天赋的人? 
  如何看待大学的贫困生制度? 
  失眠之后会干嘛?? 
  如何看待中大今年砸 200 亿,却在 2021 年软科中国大学排名中跌出前十? 
  CPU 的运行速度受光速影响吗? 
  如何看待北航封校政策? 
  不想随大流,怎么选择有个性的操作系统? 

前一个讨论
转专业面试可能会问到哪些问题?
下一个讨论
群面的无领导小组讨论中应该怎样表现好呢?





© 2024-11-24 - tinynew.org. All Rights Reserved.
© 2024-11-24 - tinynew.org. 保留所有权利